본문 바로가기
프로그래밍/임베디드

[GLCD] 한글 사용법

by JR2 2021. 1. 5.

한글에는 영어와 다르게 자음, 모음, 받침이 있다.

 

한글은 19개의 초성, 21개의 중성, 28개의 종성을 사용하고 있다.

아래의 링크로 한글의 모든 경우의 수를 알 수 있다.

hyun222.tistory.com/11

 

[GLCD] 한글의 모든 조합

보기 쉽도록 5개 마다 콤마(,)로 구분을 했다. 초성 : ㄱ ㄲ ㄴ ㄷ ㄸ , ㄹ ㅁ ㅂ ㅃ ㅅ , ㅆ ㅇ ㅈ ㅉ ㅊ , ㅋ ㅌ ㅍ ㅎ (19개) 중성 : ㅏ ㅐ ㅑ ㅒ ㅓ , ㅔ ㅕ ㅖ ㅗ ㅘ , ㅙ ㅚ ㅛ ㅜ ㅝ , ㅞ ㅟ ㅠ ㅡ ㅢ ,

hyun222.tistory.com

 

우리는 초성, 중성, 종성을 조합해 11172개의 한글을 나타낼 수 있다. (19*21*28=11172)

 

11,172개의 글자 중 자주 사용되는 글자는 매우 적다고 한다.

따라서 사용 빈도가 있는 2,350글자만을 1:1 대칭시킨 완성형과,

초성, 중성, 종성을 이용하여 글자를 조합하여 사용하는 조합형으로 나눌 수 있다.

 

한글을 나타내기엔 최소 16X16의 Pixel이 있어야 한다.

16X16은 32Byte이다.

(8bit = 1byte, 2byte*16 = 32byte)

 

따라서 완성형은 2350 * 32Byte = 75200Byte가 필요하다.

반면에

조합형은 (20 * 8) + (22 * 4) + (28 * 4) * 32 = 11520Byte가 필요하다.

 

조합형의 필요 Byte는 차후 설명하도록 하겠다.

 

아래의 표는 초성, 중성, 종성에 대한 조합형 코드표이다.

조합형 코드표

비어있는 칸은 "Space" 값으로 채워넣는다.

 

초성, 중성, 종성은 각각 5비트를 사용하고, 부호비트인 MSB가 1비트를 사용하여

총 16비트로 구성되어있다.

 

부호비트는 항상 1로 해주어야 ASCII 코드표와 간섭이 없게 된다.

ASCII 코드는 7비트이다. 0~127까지라 부호비트가 0이 되면 ASCII코드로 사용하게된다.

 

'각' 이라는 글자로 예를 들어보자.

1 00010 00011 00010  =>  0x8862

MSB와 초성,중성,종성을 조합해 0x8862가 나오는것을 알 수 있다.

 

언뜻 생각해보면, 초성 19개, 중성 21개, 종성 27개 총 67개로 모든 한글을 표시 할 수 있다고 생각된다.

 

하지만 '곰' - '감' , '가' - '감'  ... 등

같은 초성,중성이지만 다른 생김새가 존재한다.

(종성은 왜 벌이 있는지 잘 모르겠다.)

 

이를 우리는 '벌'이라고 부른다.

그럼 다시 위의 (20 * 8) + (22 * 4) + (28 * 4) * 32 = 11520Byte 이 식이 이해가 될것이다.

 

그리고 배열선언 순서는 아래와 같다.

 

초성1, 초성2, ...초성8,           중성1, 중성2, ...중성4,          종성1, 종성2, ...종성4

 

초성 'ㅁ'의 선언 위치는

추가로 불의 종류에 대해서, 소스구현방법

댓글