Skip to content
  • Luis Javier Merino's avatar
    Improve support for isolated Hangul Jamo · 346e50ca
    Luis Javier Merino authored and Tomaz  Canabrava's avatar Tomaz Canabrava committed
    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