[HarfBuzz] Tai Tham NGA, SAKOT is not Kinzi

Theppitak Karoonboonyanan thep at linux.thai.net
Tue Apr 30 00:31:29 PDT 2013


On Sun, Apr 28, 2013 at 12:45 PM, Theppitak Karoonboonyanan
<thep at linux.thai.net> wrote:
> On Fri, Apr 26, 2013 at 2:06 AM, Richard Wordingham
> <richard.wordingham at ntlworld.com> wrote:
>> Having slept on the idea, I think 'pref' would be a more appropriate.
>> As this is for items *before* the base consonant, it makes sense to
>> exclude adjustments to MAI KANG LAI from that feature unless it is in
>> some sense coming from before the base consonant.  Also, 'pref' is the
>> first feature applied after rearrangement.
>>
>> The necessary condition for re-ordering would be the presence of the MAI
>> KANG LAI glyph (as defined by the cmap table) in the initial character
>> coverage for the 'pref' feature in GSUB.  I'm not sure if it is
>> sufficient, or whether the lookup might have to be a single
>> substitution.
>
> It may looks quite tricky for a font feature to exist just for signalling
> purpose without explicit definition.
>
>> A bigger design change would be to require it in the
>> 'rphf' feature, used for kinzi in the Myanmar script.  While this would
>> be even better, at present the SEA shaper ignores the 'rphf' feature.
>
> OK. I finally learn what 'rphf' is for from [1]. This looks more elegant.
> I like it.
>
>   [1] http://www.microsoft.com/typography/OpenTypeDev/myanmar/intro.htm

So, assuming we choose the SAKOT-less encoding scheme, let me
summarize the issue for Behdad:

U+1A58 TAI THAM SIGN MAI KANG LAI has a special property.
There are two styles of rendering.

1. In Lao Tham and traditional Lanna, it's placed on the next base
consonant, like Myanmar Kinzi. So, the word "ᩈᩘᨥᩮᩣ" <U+1A48 HIGH SA,
U+1A58 MAI KANG LAI, U+1A25 LOW KHA, U+1A6E VOWEL E,
U+1A63 VOWEL AA> should be rendered as:

<HIGH SA, VOWEL E, LOW KHA, MAI KANG LAI, VOWEL AA>

2. In Khuen and modern Lanna, it's placed on the first base consonant,
although a little bit shifted to the right. So, the same word above should be
rendered as:

<HIGH SA, MAI KANG LAI, VOWEL E, LOW KHA, VOWEL AA>

That is, only the leading vowel is reordered.

Therefore, we need rendering engine to reorder MAI KANG LAI when
certain feature exists in the font. Richard suggests two choices: 'pref'
and 'rphf'.

The reordering should be similar to Myanmar Kinzi. The substituted Kinzi
glyph should be place next to the next base consonant, or a dotted circle
if no valid base consonant exists. The reordering may take place before
the leading vowel is reordered.

However, it may require extra check so that the reordering should not
happen if there is an upper vowel on the next base consonant, for proper
rendering of words like "ᩋᩘᨠᩕᩥ᩠ᩈ"
<A, MAI KANG LAI, HIGH KA, MEDIAL RA, VOWEL I, SAKOT, HIGH SA>
in Tai Khuen.

As a side note, another choice which is not favored by the majority is to
encode the different spellings differently, by using SAKOT after MAI KANG
LAI when it requires the reordering. So, the shifting version of the sample
word avobe would be:
<HIGH SA, MAI KANG LAI, SAKOT, LOW KHA, VOWEL E, VOWEL AA>
while the non-shifting version would be:
<HIGH SA, MAI KANG LAI, LOW KHA, VOWEL E, VOWEL AA>.
Just FYI, it's not chosen by the majority, though.

Regards,
--
Theppitak Karoonboonyanan
http://linux.thai.net/~thep/



More information about the HarfBuzz mailing list