53
// Hangul Syllables
54
if (code >= 0xAC00 && code <= 0xD7A3) {
55
>
const hangulIndex = code - 0xAC00;
korean.ts
56
>
const vowelAndFinalConsonantProduct = hangulIndex % 588;
57
>
58
>
// 0-based starting at 0x1100
59
>
const initialConsonantIndex = Math.floor(hangulIndex / 588);
60
>
// 0-based starting at 0x1161
61
>
const vowelIndex = Math.floor(vowelAndFinalConsonantProduct / 28);
62
>
// 0-based starting at 0x11A8
63
>
// Subtract 1 as the standard algorithm uses the 0 index to represent no
64
>
// final consonant
65
>
const finalConsonantIndex = vowelAndFinalConsonantProduct % 28 - 1;
66
>
67
>
if (initialConsonantIndex < modernConsonants.length) {
68
>
getCodesFromArray(initialConsonantIndex, modernConsonants, 0);
69
>
} else if (HangulRangeStartCode.InitialConsonant + initialConsonantIndex - HangulRangeStartCode.CompatibilityJamo < compatibilityJamo.length) {
70
getCodesFromArray(HangulRangeStartCode.InitialConsonant + initialConsonantIndex, compatibilityJamo, HangulRangeStartCode.CompatibilityJamo);
71
}
73
>
if (vowelIndex < modernVowels.length) {
74
>
getCodesFromArray(vowelIndex, modernVowels, 0);
75
>
} else if (HangulRangeStartCode.Vowel + vowelIndex - HangulRangeStartCode.CompatibilityJamo < compatibilityJamo.length) {
76
getCodesFromArray(HangulRangeStartCode.Vowel + vowelIndex - HangulRangeStartCode.CompatibilityJamo, compatibilityJamo, HangulRangeStartCode.CompatibilityJamo);
77
}
79
>
if (finalConsonantIndex >= 0) {
80
>
if (finalConsonantIndex < modernFinalConsonants.length) {
81
>
getCodesFromArray(finalConsonantIndex, modernFinalConsonants, 0);
82
>
} else if (HangulRangeStartCode.FinalConsonant + finalConsonantIndex - HangulRangeStartCode.CompatibilityJamo < compatibilityJamo.length) {
83
getCodesFromArray(HangulRangeStartCode.FinalConsonant + finalConsonantIndex - HangulRangeStartCode.CompatibilityJamo, compatibilityJamo, HangulRangeStartCode.CompatibilityJamo);
84
}
86
>
87
>
if (codeBufferLength > 0) {
88
>
return codeBuffer.subarray(0, codeBufferLength);
89
>
}
90
>
}
91
return undefined;
92
}