아이디어!2010. 9. 8. 09:13
현재 유니"코드"를 사용하고 완성형으로 사용하며,
폰트역시 완성형으로 사용을 하는 세상에 우리는 살고있다.

그런 이유로, 한글 폰트를 만드려면 최대 11172자, 최소 3000여 자는 만들어야 한다.
다르게 말하자면, 폰트 만드는것 자체도 엄청난 노가다이며, 이러한 폰트는 엄청난 용량을 차지할수 밖에 없다.

하.지.만 우리가 사용하는 한글 폰트 자체의 표준을 조합형으로 바꾸면 어떨까?
그러면 개인들이 폰트를 많이 만들어서 외국처럼 이쁜 글꼴도 많아질텐데 말이다.
그리고 용량도 줄어들테고 말이다.

물론, 완성형 폰트라고 해서 제작방식 자체를 조합형으로 바꾸지 못하는 건 아니지만,
폰트 렌더링시에 조합형으로 하는게 약간의 오버헤드는 생기겠지만, 충분히 타협할 만한 수준이라고 생각이 되는데 음...

[링크 : http://juno.springnote.com/pages/58618.xhtml]
[링크 : http://jooks8051.com.ne.kr/ksx1001.htm]

자음은 초성용과 종성용으로 구분하고
모음은 종성이 있는 것과 없는 것으로 구분

종성용 복자음(ㄳ ㄻ ㄼ 이런것들)은 초성의 단자음을 조합하고
모양이 다를경우 복자음용 폰트를 별도로 구성하여 조합하도록 하면 자소단위 글꼴을 만들어
더 많은 무료글꼴과 더 이뻐진 글꼴들을 만날수 있을텐데 아쉬움이 든다.

이러한 방법으로 비트맵 글꼴 뿐만 아니라 벡터 글꼴에도 적용한다면 좋을텐데..


ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅍ ㅎ
ㄲ     ㄸ         ㅃ ㅆ

ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ
ㅐ ㅒ ㅔ ㅖ ㅚ     ㅟ     ㅢ

('가' 로 시작하는 종성만 참조)


[링크 : http://uncyclopedia.kr/wiki/%EB%8F%84%EC%9B%80%EB%A7%90:%EC%98%9B%ED%95%9C%EA%B8%80/%EC%98%9B%ED%95%9C%EA%B8%80_%EC%A2%85%EC%84%B1_%EB%AA%A9%EB%A1%9D]
Posted by 구차니

댓글을 달아 주세요

  1. 한글폰트에 많은 비용과 노력이 필요하긴 한 것 같더라구요.

    2010.09.08 12:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 예전에 하던 일중에 하나가 폰트 렌더러 만드는거라.. 한글쪽을 보면서 참 답답한 마음이 많이 들더라구요. 유니코드쪽은 조합형에 근접하게 코드가 정리되서 이제는 좀 나아졌지만, 폰트 렌더링 아직 갈길이 멀다고 생각이 됩니다.

      2010.09.08 14:16 신고 [ ADDR : EDIT/ DEL ]
  2. 이 글처럼 폰트도 그렇고 한글의 과학성에서도 조합형이 빛을 냅니다.
    http://cafe.naver.com/mixcode 완성형 한글 코드 퇴출과 조합형 한글 코드 표준화를 위해 가입 부탁드립니다~!

    2011.05.01 16:13 [ ADDR : EDIT/ DEL : REPLY ]
  3. shin

    완성형 코드를 사용하면서 조합형 폰트를 사용할수 있나요? 설명 좀 해주셨으면 좋겠습니다. 궁금한데 이쪽분야는 잘 몰라서....

    2013.02.22 15:07 [ ADDR : EDIT/ DEL : REPLY ]
    • 코드와 폰트는 별개입니다.
      일단 코드는 초성/중성/종성으로 unicode에 계산하에 빼낼수가 있으며
      이 코드를 기반하여 초성의 폰트 중성의 폰트 종성의 폰트를 찾아서
      렌더링 하면되죠.

      현재의 완성형 폰트는, 가 각 갹 이런식으로 각각의 코드에 대해서 만들어져야 하는데
      조합형 폰트가 되면
      가 겨 고 교 구 이런식으로 종성에 따라 달라지는 몇가지 변형형의
      초성을 저장하면 자동으로 폰트를 생성해 내는 원리가 되겠죠.
      저도 구상만 하고 있고, 과거 한글도깨비 같은게 조합형 폰트라고 들었는데 이렇게 까지 만들어진건진 모르겠습니다.

      2013.02.22 17:33 신고 [ ADDR : EDIT/ DEL ]
  4. shin

    아, 그렇군요. 알려주셔서 감사합니다 ㅎㅎㅎ
    그나저나 조합형 폰트를 사용한다면 폰트 만들기가 훨씬 간단해 질텐데....
    예전에 폰트 만들려고 폰트 편집가능한 프로그램으로 폰트 파일을 여니 만개가 넘는 음절들이 나와서 완전 당황했었죠.... 그뒤로 조합형에 대해 알아보기 시작했고요...ㅎㅎ

    2013.02.22 18:56 [ ADDR : EDIT/ DEL : REPLY ]
    • 영어의 경우 알파벳 하나하나 총 54개만 하면 되지만
      국문의 경우에는 조합별로 해야해서
      표준에 따르면 16000자 였나.. 다 만들어야 하고
      최소한 1600자 정도를 만들어야 하는걸로 알고 있습니다.

      하지만 조합형 폰트가 표준이 된다면, 개인이 조합에 따라
      몇가지 자소만 만들어 자동으로 조합을 해주니
      한글 폰트도 많이 많이 만들어 질텐데 아쉽죠 ㅠ.ㅠ

      아니면 폰트 생성기를 조합형으로 만들고
      결과를 완성형 폰트로 해도 될테지만요 ^^;

      2013.02.22 22:26 신고 [ ADDR : EDIT/ DEL ]
  5. shin

    궁금한 점이 또다시 생겨 다시 질문을 해봅니다...
    유니코드는 만자가 넘는 모든 조합가능한 현대한글을 다 포함하고 있기에 간단한 계산 만으로 초성,중성,.종성 값을 뽑아낼 수 있어 완성형 코드이지만 조합형 폰트를 쓰기 매우 쉽겠지만,
    KSC 5601같이 한글 낱자 2천여자 정도 밖에 없는 완성형 코드에는 어떻게 조합형 폰트를 써야할까요?
    제가 알기로는 KSC 5601에 경우 (입력시) 먼저 키보드로 입력을 하면 조합형 코드를 만들고 이를 완성형 코드로 변환하여 저장한다고 알고 있는데, 문자 화면 표시 때도 조합형 코드로 변환을 하는지는 잘 모르겠으나, 만약 문자 화면 표시할 때는 조합형 코드로 변환을 하지 않고 바로 그 코드로 폰트를 불러오는 형식이라면 조합형 폰트를 쓰면 화면 표시 때도 조합형 코드로 변환을 해야해서 속도가 더 안나온다던지, 완성형 폰트를 쓸때와 성능차이가 날 수 있지않나요?
    얘기가 길었는데, 정리하자면
    1.KSC 5601같은 것은 문자를 화면에 표시 할 때도 조합형 코드로 변환해서 표시하나요, 아니면 바로 완성형 코드로 완성형 폰트를 불러오나요?
    2.만약 조합형 코드로 변환해서 폰트를 불러온다면 굳이 그럴 필요가 없어보인는데 어째서 그러나요?
    3. 만약 조합형 코드로 변환하지 않는다면, 조합형 폰트를 사용하기 위해선 조합형 코드 변환 과정을 거쳐야 되는데, 이게 완성형 폰트때와 비교해서 성능차이를 유발하지는 않나요?
    궁금합니다....

    2013.02.25 18:40 [ ADDR : EDIT/ DEL : REPLY ]
    • 위에서도 설명 드렸지만, 코드와 폰트는 별개입니다.
      코드를 통해서 표현된 것을 폰트에서 찾아서 폰트 렌더링을 한뒤
      bitmap으로 만들어서 뿌려주는거니까요.

      그리고 원칙적으로 조합형 폰트로 하면 계속 계산을 해야 하지만
      요즘 cpu에는 티도 안날테고, 만약 티가 난다고 한다면
      폰트 제작을 조합형으로 자소 단위로 만들고 결과물을 완성형 폰트로 내주면 되니까요. 큰 문제는 아니라고 봅니다.

      한글 폰트가 다양하지 못한 이유가 바로 제작과정이 힘들기 때문인데
      이를 해결하기 위한 방법으로서 조합형 폰트를 이야기 한거라서요.

      2013.02.25 22:51 신고 [ ADDR : EDIT/ DEL ]
  6. shin

    한글코드에 관심은 있는데 아는게 없어서 실레지만 또 질문을 하네요....
    기존의 완성형은 2350여자 밖에없어서 조합형 코드를 완성형으로 변환해서 저장하는 것읈 알고있습니다. 그런데 여기서 궁금한 점이 '가'라고 입력을 하면 조합형 코드 'ㄱ+ㅏ'가 완성형 '가'로 변환되는 것인데, 그 뒤에 ㄴ을 치면 다시 완성형 '간'으로 변환되는 것입니더. 이는 ㄱ+ㅏ+ㄴ이라는 조합형코드가 있어야되는데 이미 ㄱ+ㅏ는 '가'라는 완성형 코드로 변해있습니다.
    혹시 이는 완성형으로 변환되어도 당분간 ㄱ+ㅏ 조합형을 당분간 보관하는 것인가요 아니면 완성형 가를 다시 조합형 ㄱ+ㅏ로 변환하고 그 뒤에 ㄴ을 붙이는 건가요???

    2013.08.11 12:33 [ ADDR : EDIT/ DEL : REPLY ]
    • 오토마타 구성이 따라 다르겠지만
      이전의 상태가 '가'이고 거기에 'ㄴ'이 들어오면
      간으로 상태를 전이하면 되겠죠.
      물론 간+'ㅏ'가 온다면 이전 데이터를 '가'로 바꾸고 '나'로 변환해야 하구요

      어떻게 보면 정방향 오토마타는 아니고
      앞뒤로 보면서 구현해야 하는 녀석이라 조금 지저분하게 코드가 나올것 같네요

      참고 내용으로 파싱쪽을 보시면 될것 같습니다.
      파싱을 할때 어떤방향으로 데이터를 보냐가 중요한데
      대개는 앞에서 뒤로 본다거나
      뒤에서 앞으로 보는 식으로 구성이 됩니다.

      하지만 한글 특성상 조합을 해야 하기 때문에
      뒤를 보는걸 기본으로 하되 약간의 예외사항으로 일부 입력에 대해서는 상당한 빈도로 앞 데이터를 변경해야 하는 변칙적인 방법을 써야 할겁니다.

      2013.08.12 09:18 신고 [ ADDR : EDIT/ DEL ]