diff options
Diffstat (limited to 'Build/source/texk/upmendex/fwrite.c')
-rw-r--r-- | Build/source/texk/upmendex/fwrite.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Build/source/texk/upmendex/fwrite.c b/Build/source/texk/upmendex/fwrite.c index 6736f56e5a2..380e1cbf37a 100644 --- a/Build/source/texk/upmendex/fwrite.c +++ b/Build/source/texk/upmendex/fwrite.c @@ -649,6 +649,7 @@ static void index_normalize(UChar *istr, UChar *ini, int *chset) { int k, len, hi, lo, mi; UChar ch,src[2],dest[8],strX[4],strY[4],strZ[4]; + UChar32 c32; UErrorCode perr; UCollationResult order; static int hanzi_mode=0; @@ -668,8 +669,22 @@ static void index_normalize(UChar *istr, UChar *ini, int *chset) ini[0]=extkanatable[ch-EXKANATOP]; return; } - else if (ch==0x309F) { ini[0]=0x30E8; return; } /* HIRAGANA YORI */ - else if (ch==0x30FF) { ini[0]=0x30B3; return; } /* KATAKANA KOTO */ + else if (ch==0x309F) { ini[0]=0x30E8; return; } /* HIRAGANA YORI -> ヨ */ + else if (ch==0x30FF) { ini[0]=0x30B3; return; } /* KATAKANA KOTO -> コ */ + else if (is_jpn_kana(istr)==2) { + c32=U16_GET_SUPPLEMENTARY(istr[0],istr[1]); + switch (c32) { + case 0x1B150: case 0x1B164: + ini[0]=0x30F0; break; /* ヰ */ + case 0x1B151: case 0x1B165: + ini[0]=0x30F1; break; /* ヱ */ + case 0x1B152: case 0x1B166: + ini[0]=0x30F2; break; /* ヲ */ + case 0x1B167: default: + ini[0]=0x30F3; break; /* ン */ + } + return; + } else if (is_kor_hngl(&ch)) { if ((ch>=0xAC00)&&(ch<=0xD7AF)) { /* Hangul Syllables */ ch=(ch-0xAC00)/(21*28)+CHOSEONG_KIYEOK; /* convert to Hangul Jamo, Initial consonants */ |