-
Korean Hangul can be represented in Unicode either as precomposed Hangul syllables, or as sequences of alphabetic components called Jamo. Jamo at U+1100..U+11FF, U+A960..U+A97F, U+D7B0..U+D7FF have conjoining behavior, a sequence of Jamo for Leading Consonants, Vowels, and (optionally) Trailing Consonants, in that order, conjoins into a syllable block, (i.e. a sequence L+V+T*, where + and * have their typical regex meaning). To represent a Jamo in isolation, there are several options: - Use non-conjoining Jamo from U+3130..U+318F (or the halfwidth forms at U+FFA0..U+FFDF. These blocks covers all Jamo used in modern Korean, but not all Jamo used in Old Korean. - Use the fillers at U+115F and U+1160 to substitute for non-existing Leading Consonants, and Vowels. Fonts may stretch Jamo into a corner. - Use Jamo from U+1100..U+11FF, U+A960..U+A97F, U+D7B0..U+D7FF, and separate them with non-Korean characters. Unicode recommends U+200B ZERO WIDTH SPACE and U+2060 WORD JOINER for this purpose. Previously, Konsole treated conjoining Jamo as combining marks which could apply to any previous character. This commit makes conjoining Jamo only join when previous Jamo when they form (the beginning) of a proper L+V+T* syllable. It also fixes the width reported when they cannot join previous characters, which should now be 2, instead of 0.
346e50ca