基本上,分解韩文 LVT 或 LV 音节的算法是:
- 从代码点的标量值中减去 0xAC00(在 U+AC00 和 U+D7A3 之间,而不是您所说的 U+D7AF),
- 将之前的差除以 28,然后:
- 如果第一个休止符为 0,则没有 T jamo;
- 否则将 0x11A7 添加到第一个休止符(1 到 27 之间)以获得最终的 T jamo(U+11A8 和 U+11C2 之间);
- 将前一个商除以 21,然后:
- 将 0x1161 添加到第二个休止符(0 到 20 之间)以获得中间(或最终)V jamo(在 U+1161 和 U+1175 之间);
- 将 0x1100 添加到第二个商(介于 0 和 17 之间)以获得领先的 L jamo(介于 U+1100 和 U+1112 之间);
其他韩文字母(在 U+1113 和 U+11F9 范围内,不包括上面返回的 3 个范围内的简单 L、V 和 T jamos,或在 U+3131 到 U+318E 范围内的扩展 jamos)可分解为简单 jamos 对的可通过小型表查找(取自包含韩文规范分解对的主 UCD 表)进行处理。
该算法在 Unicode 中标准化,只是为了避免在 UCD 表中将 10,584 个韩文预组合字符(即预组合韩文 LV 或 LVT 音节)规范分解为三元组(L、V、T 简单 jamos),禁止在 UCD 中,或成对(L,V simple jamo)或成对(LV 音节,T simple jamo)。
因此,UCD 表只列出了第一个和最后一个预组合的 LV 或 LVT 字符,这些字符可通过算法分解;并且它们具有所有相同的字符属性(除了它们的“L/V/T/LV/LVT”类型,它列在 UCD 的辅助表中,特定于韩文)
请注意,某些 LL 或 TT 预组合辅音被视为简单的 jamos 并且不可分解。这是韩语中双辅音的传统(“SANG” jamos),但这在 jamo 字母表的主要排序顺序中可见,其中双辅音在单个辅音之后排序,所有 L 或 LL jamos 在所有 V 之前排序jamos,所有 V jamos 都排在 T 和 TT jamos 之前。
通常在格式良好的韩语音节中,V jamo(或元音)只能出现在 L 前导 jamo(辅音)之后,而 T 尾随 jamo(辅音)只能出现在 V jamo(元音)之后。
但是有一些例外情况可以强制使用格式良好的韩文音节:如果您插入前导韩文 V 填充符(未渲染的控件),缺失的 L jamo(在孤立的 V jamo 之前)可能会变得格式良好,而缺失的 V jamo (如果您插入一个前导的 Hangul V 填充符(未渲染的控件),则在孤立的 T jamo 之前)可以变得良好。这有时用于音译一些以元音开头的非韩语单词,但通常韩语使用(并呈现)其字母表的最后一个辅音(IOSEUNG,前导或尾随)来表示缺失的 L jamo。
最后,(L*, V*, T*) 格式良好的韩文音节后面可以跟一些音标(写在音节右侧的点呈现在一个正方形中)。 (L*, V*, T*)音节方块的布局顺序在韩语中是标准的:所有L*水平对齐,所有V*水平对齐,所有T*水平对齐,然后L*块到左边部分正方形,右侧的 V* 块,以及 (L*, V*) 块下方的最终 T* 块。音标分别添加到包含相同音节的所有jamos的(L *,V *,T *)韩文方格的右侧。
韩文也有字母的“半角”变体,它们不是严格意义上的“韩文”。半角字母仅包括 L 或 LV “半音节”,没有 T “半音节(它们被 L 半音节代替):这些半角字母不会呈现在韩文方块中,它们可以以任何顺序出现,就像拉丁字母一样。半角 LV 音节也可以分解为半角 L 和半角 V 音节,但是因为这会扩大它们的呈现方式,所以这种分解不是规范等价的(半角 LV 音节被认为是牢不可破的连字,类似于拉丁语中的 AE 或 IJ 连字;这种分解仅用于在韩语排序规则中对它们进行排序,这在韩语字母表的主要排序顺序中可见)。这些半角字母被编码用于旧终端或旧打字机上必须限制字符集(因为不可能呈现所有可能的韩文方块)。