typedef enum {
HANGUL_JAMO, // 한글자모
HANGUL_COMPAT_JAMO, // 호환용한글자모
HANGUL_JAMO_EXT_A, // 한글자모확장-A
HANGUL_SYLLABLES, // 한글음절 (흔히들얘기하는 유니코드한글)
HANGUL_JAMO_EXT_B, // 한글자모확장-B
HANGUL_JOHAB, // 조합형
HANGUL_KSC5601, // 완성형
HANGUL_EUCKR = HANGULE_KSC5601, // 완성형
HANGUL_CP949, // 윈도우 완성형
ENGLISH_ASCII // 아스키 영문
} chartype;
if ( str[0] < 0x80 )
type = ENGLISH_ASCII;
else
if ( str[0] >= 0x11 && str[1] >= 0x00 && str[0] <= 0x11 && str[1] <= 0xFF )
type = HANGUL_JAMO;
else
if ( str[0] >= 0x31 && str[1] >= 0x30 && str[0] <= 0x31 && str[1] <= 0x8F )
type = HANGUL_COMPAT_JAMO;
else
if ( str[0] >= 0xA9 && str[1] >= 0x60 && str[0] <= 0xA9 && str[1] <= 0x7F )
type = HANGUL_JAMO_EXT_A;
else
if ( str[0] >= 0xAC && str[1] >= 0x00 && str[0] <= 0xD7 && str[1] <= 0xA3 )
type = HANGUL_SYLLABLES;
else
if ( str[0] >= 0xD7 && str[1] >= 0xB0 && str[0] <= 0xD7 && str[1] <= 0xFF )
type = HANGUL_JAMO_EXT_B;
// --- 여기까지는 유니코드
else
if ( str[0] >= 0xB0 && str[1] >= 0xA1 && str[0] <= 0xC8 && str[1] <= 0xFE )
type = HANGUL_KSC5601; // or HANGUL_EUC_KR
/* ==== 확인이 필요
else
//if ( str[0] >= 0x84 && str[0] <= 0xD3 && ((str[1] >= 0x41 && str[1] <= 0x7E) || (str[1] >=0x81 && str[1] <= 0xFE)) )
if ( str[0] >= 0x84 && (str[1] >= 0x41 || str[1] >=0x81) && str[0] <= 0xD3 && (str[1] <= 0x7E || str[1] <= 0xFE) )
type = HANGUL_JOHAB;
0x8861 ~ 0xD3B7
*/
else
if ( str[0] >= 0x81 && str[1] >= 0x41 && str[0] <= 0xC8 && str[1] <= 0xFe )
type = HANGUL_CP949;
'프로그래밍 > 폰트_문자열_인코딩' 카테고리의 다른 글
libhangul (0) | 2014.03.16 |
---|---|
각종 한글 코드표 (0) | 2014.01.21 |
일단 한글 표준 코드에 관한 읽을만한 글 (0) | 2014.01.21 |
헷갈리는 한글판단 in utf-8, unicode, euc-kr (0) | 2014.01.21 |
조합형 폰트 출력 (0) | 2011.04.14 |