35 #define EXTENDED_HANGUL  
   38 #define PUA_START   0xE000 
   39 #define PUA_END     0xE8FF 
   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   
   69 #define NCHO_MODERN  19  
   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    
   96 #define CHO_HEX      0x0001 
   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);
 
  179 int  cho_variation (
int choseong, 
int jungseong, 
int jongseong);
 
  184                       unsigned char hangul_base[][32], 
unsigned char *syllable);
 
  187                      unsigned *combined_glyph);
 
  189                unsigned jamo, 
unsigned *jamo_glyph);
 
  191                     unsigned cho, 
unsigned jung, 
unsigned jong,
 
  192                     unsigned *combined_glyph);
 
  193 void print_glyph_txt (FILE *fp, 
unsigned codept, 
unsigned *this_glyph);
 
  194 void print_glyph_hex (FILE *fp, 
unsigned codept, 
unsigned *this_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.
#define MAX_GLYPHS
An OpenType font has at most 65536 glyphs.