35#define EXTENDED_HANGUL
38#define PUA_START 0xE000
40#define MAX_GLYPHS (PUA_END - PUA_START + 1)
50#define CHO_UNICODE_START 0x1100
51#define CHO_UNICODE_END 0x115E
52#define CHO_EXTA_UNICODE_START 0xA960
53#define CHO_EXTA_UNICODE_END 0xA97C
55#define JUNG_UNICODE_START 0x1161
56#define JUNG_UNICODE_END 0x11A7
57#define JUNG_EXTB_UNICODE_START 0xD7B0
58#define JUNG_EXTB_UNICODE_END 0xD7C6
60#define JONG_UNICODE_START 0x11A8
61#define JONG_UNICODE_END 0x11FF
62#define JONG_EXTB_UNICODE_START 0xD7CB
63#define JONG_EXTB_UNICODE_END 0xD7FB
70#define NCHO_ANCIENT 76
72#define NCHO_EXTA_RSRVD 3
74#define NJUNG_MODERN 21
75#define NJUNG_ANCIENT 50
77#define NJUNG_EXTB_RSRVD 4
79#define NJONG_MODERN 27
80#define NJONG_ANCIENT 61
82#define NJONG_EXTB_RSRVD 4
88#define CHO_VARIATIONS 6
89#define JUNG_VARIATIONS 3
90#define JONG_VARIATIONS 1
99#define CHO_ANCIENT_HEX (CHO_HEX + CHO_VARIATIONS * NCHO_MODERN)
102#define CHO_EXTA_HEX (CHO_ANCIENT_HEX + CHO_VARIATIONS * NCHO_ANCIENT)
105#define CHO_LAST_HEX (CHO_EXTA_HEX + CHO_VARIATIONS * (NCHO_EXTA + NCHO_EXTA_RSRVD) - 1)
108#define JUNG_HEX (CHO_LAST_HEX + 1)
111#define JUNG_ANCIENT_HEX (JUNG_HEX + JUNG_VARIATIONS * NJUNG_MODERN)
114#define JUNG_EXTB_HEX (JUNG_ANCIENT_HEX + JUNG_VARIATIONS * NJUNG_ANCIENT)
117#define JUNG_LAST_HEX (JUNG_EXTB_HEX + JUNG_VARIATIONS * (NJUNG_EXTB + NJUNG_EXTB_RSRVD) - 1)
120#define JONG_HEX (JUNG_LAST_HEX + 1)
123#define JONG_ANCIENT_HEX (JONG_HEX + JONG_VARIATIONS * NJONG_MODERN)
126#define JONG_EXTB_HEX (JONG_ANCIENT_HEX + JONG_VARIATIONS * NJONG_ANCIENT)
129#define JONG_LAST_HEX (JONG_EXTB_HEX + JONG_VARIATIONS * (NJONG_EXTB + NJONG_EXTB_RSRVD) - 1)
132#define JAMO_HEX 0x0500
133#define JAMO_END 0x05FF
136#define JAMO_EXTA_HEX 0x0600
137#define JAMO_EXTA_END 0x061F
140#define JAMO_EXTB_HEX 0x0620
141#define JAMO_EXTB_END 0x066F
148#ifdef EXTENDED_HANGUL
150#define TOTAL_CHO (NCHO_MODERN + NCHO_ANCIENT + NCHO_EXTA )
151#define TOTAL_JUNG (NJUNG_MODERN + NJUNG_ANCIENT + NJUNG_EXTB)
152#define TOTAL_JONG (NJONG_MODERN + NJONG_ANCIENT + NJONG_EXTB)
156#define TOTAL_CHO (NCHO_MODERN + NCHO_ANCIENT )
157#define TOTAL_JUNG (NJUNG_MODERN + NJUNG_ANCIENT)
158#define TOTAL_JONG (NJONG_MODERN + NJONG_ANCIENT)
171 int *initial,
int *medial,
int *
final);
175 int *cho_index,
int *jung_index,
int *jong_index);
177 int *cho_var,
int *jung_var,
int *jong_var);
179int cho_variation (
int choseong,
int jungseong,
int jongseong);
184 unsigned char hangul_base[][32],
unsigned char *syllable);
187 unsigned *combined_glyph);
188void one_jamo (
unsigned glyph_table [MAX_GLYPHS][16],
189 unsigned jamo,
unsigned *jamo_glyph);
191 unsigned cho,
unsigned jung,
unsigned jong,
192 unsigned *combined_glyph);
void print_glyph_hex(FILE *fp, unsigned codept, unsigned *this_glyph)
Print one glyph in Unifont hexdraw hexadecimal string style.
void one_jamo(unsigned glyph_table[MAX_GLYPHS][16], unsigned jamo, unsigned *jamo_glyph)
Convert Hangul Jamo choseong, jungseong, and jongseong into a glyph.
void combined_jamo(unsigned glyph_table[MAX_GLYPHS][16], unsigned cho, unsigned jung, unsigned jong, unsigned *combined_glyph)
Convert Hangul Jamo choseong, jungseong, and jongseong into a glyph.
void print_glyph_txt(FILE *fp, unsigned codept, unsigned *this_glyph)
Print one glyph in Unifont hexdraw plain text style.
unsigned hangul_read_base8(FILE *infp, unsigned char base[][32])
Read hangul-base.hex file into a unsigned char array.
int is_wide_vowel(int vowel)
Whether vowel has rightmost vertical stroke to the right.
void hangul_hex_indices(int choseong, int jungseong, int jongseong, int *cho_index, int *jung_index, int *jong_index)
Determine index values to the bitmaps for a syllable's components.
void hangul_decompose(unsigned codept, int *initial, int *medial, int *final)
Decompose a Hangul Syllables code point into three letters.
int glyph_overlap(unsigned *glyph1, unsigned *glyph2)
See if two glyphs overlap.
void hangul_variations(int choseong, int jungseong, int jongseong, int *cho_var, int *jung_var, int *jong_var)
Determine the variations of each letter in a Hangul syllable.
void combine_glyphs(unsigned *glyph1, unsigned *glyph2, unsigned *combined_glyph)
Combine two glyphs into one glyph.
int jong_variation(int choseong, int jungseong, int jongseong)
Return the Johab 6/3/1 jongseong variation.
int cho_variation(int choseong, int jungseong, int jongseong)
Return the Johab 6/3/1 choseong variation for a syllable.
int jung_variation(int choseong, int jungseong, int jongseong)
Return the Johab 6/3/1 jungseong variation.
void hangul_syllable(int choseong, int jungseong, int jongseong, unsigned char hangul_base[][32], unsigned char *syllable)
Given letters in a Hangul syllable, return a glyph.
unsigned hangul_compose(int initial, int medial, int final)
Compose a Hangul syllable into a code point, or 0 if none exists.
unsigned hangul_read_base16(FILE *infp, unsigned base[][16])
Read hangul-base.hex file into a unsigned array.