Combing jamos rendering (was RE: IDS rendering and IDS analysis ( was RE: Problems/Issues with)

From: Marco.Cimarosti@icl.com
Date: Wed Apr 12 2000 - 06:38:15 EDT


Jungshik Shin:
> By the way, even a very primitive X11 rendering engine
> of bitmap fonts can emulate 'the effect'(generating glyphs on-the-fly)
> fed by justaposing a set of zero-width/negative-width(non-advancing)
> glyphs and final advancing glyph.
> [...]
> it should be
> certainly possible for Korean Hangul(as we have done in many
> occasions).

Does the X11 rendering engine do this for Hangul? It may be primitive, but
it sound goods to me; do you have any web references to know more about it?

Follows a longish description of how I imagine such an architecture (I
suggest everybody to use your "delete" button now). I'd be curious to check
whether my speculations match the X11 engine.

Each syllable may be composed with two jamos (leading consonant + vowel) or
three (leading consonant + vowel + trailing consonant). A barely-readable
Hangul jamos rendering would require the following contextual shapes:

Trailing consonants: 1 shape, non-spacing.
- T. The glyph occupies the lower part of the character cell, the rest of
the cell is blank to accommodate the non-spacing leading consonant and
vowel.

Vowels: 2 contextual shapes, non-spacing.
- V1 (no trailing consonant). The glyph occupies the right or bottom part of
the cell, or even both. The rest of the cell is empty to accommodate the
leading consonant.
- V2 (trailing consonant). The glyph is the same as in V1, but it is
squeezed vertically to leave the bottom part of the cell empty, in order to
accommodate the trailing consonant.

Leading consonants: 6 contextual shapes, spacing.
- L1 (no trailing consonant, right vowel). The glyph occupies the left part
of the cell; the right part is blank to accommodate the vowel.
- L2 (no trailing consonant, bottom vowel). The glyph occupies the top part
of the cell; the bottom part is blank to accommodate the vowel.
- L3 (no trailing consonant, enclosing vowel). The glyph occupies the
top-left corner of the cell; the rest is blank to accommodate a vowel that
occupies both the bottom and right parts.
- L4 .. L6 (trailing consonants). The glyphs are the same as for cases L1 ..
L3 but they are squeezed vertically in order to leave the bottom part of the
cell empty, to accommodate the trailing consonant.

So, the minimal number of glyphs for (barely readable!) combining Hangul
should be:

        85 + 67 * 2 + 91 * 6 = 795
      T V L

However, the possible combinations of Hangul jamos (U+1100..U+11FF) is a
closed set that can be anticipated. The set is in fact encoded in Unicode as
pre-composed characters (U+AC00..U+D79F), and there are well defined
algorithms to map sequences of jamos to/from precomposed syllables.

So, the best approach for a typographic level rendering is, in this case, to
draw the composed glyphs in advance and store them in a font.

_ Marco



This archive was generated by hypermail 2.1.2 : Tue Jul 10 2001 - 17:21:01 EDT