<p dir="ltr">Hi Richard,</p>
<p dir="ltr">I don't know what OT featurez you are using in your font, but Tai Tham would be an undefined script in Unis ribe so it would need to limit itself to features fhat can be used by default shaper.</p>
<p dir="ltr">Essentially, rlig, mark, mkmk, optionally liga and clig.</p>
<p dir="ltr">If your font is using anyother feature fod Tai Tham rendering yoh will not get what you expect.</p>
<p dir="ltr">Andrew</p>
<div class="gmail_quote">On 17/06/2013 3:35 AM, "Richard Wordingham" <<a href="mailto:richard.wordingham@ntlworld.com">richard.wordingham@ntlworld.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Thu, 13 Jun 2013 17:17:49 -0400<br>
Behdad Esfahbod <<a href="mailto:behdad@behdad.org">behdad@behdad.org</a>> wrote:<br>
<br>
> On 13-06-09 07:36 AM, Richard Wordingham wrote:<br>
<br>
> Looks to me like a HarfBuzz bug. Can you send me a test font and test<br>
> sequence? Can you test the attached patch?<br>
<br>
I'm sending an untrimmed test font off-list as I assume most people<br>
don't want it.<br>
<br>
I've tested the patch and found that it removes the deviation from the<br>
specification of the lookup. FWIW, the patch causes no problems known<br>
to me. Unfortunately, my font doesn't seem to trigger any feature use in<br>
Microsoft products, and Firefox 19.0.2 on Windows seems to use<br>
HarfBuzz, so my attempts to compare with Uniscribe have failed.<br>
<br>
As a test, I have tried three methods of moving the glyph for TAI THAM<br>
SIGN MAI KANG LAI from immediately following one base consonant to<br>
immediately following the next. In each method, there are three<br>
contexts to consider - mai kang lai and the next consonant separated by<br>
nothing, by one preposed character (a vowel or MEDIAL RA), or by two<br>
preposed characters (a vowel and MEDIAL RA). The scheme works by:<br>
<br>
(a) Deleting the original mai kang lai by a ligature lookup merging it<br>
with the following glyph, and<br>
<br>
(b) Creating a new mai kang lai by a multiple lookup acting on the<br>
following base consonant.<br>
<br>
My test font contains the three schemes as lookups 21, 22 and 23. The<br>
one used should be the first lookup in the abvs feature. The font I am<br>
submitting uses Scheme B - font name 'Da Lekh B'. The font is by no<br>
means complete - there are still many missing basic glyphs.<br>
<br>
The results before and after are attached as files a/b/c_pre/post.png.<br>
The test sequence, which consists of two Tai Tham words starting with<br>
the Tai Tham letter HIGH SA, is ᩈᩘᨥᩈᩘᨥᩮᩣ <U+1A48 TAI THAM LETTER HIGH<br>
SA, U+1A58 TAI THAM SIGN MAI KANG LAI, U+1A25 TAI THAM LETTER LOW KHA,<br>
U+1A48, U+1A58, U+1A25, U+1A6E TAI THAM VOWEL SIGN E, U+1A63 TAI THAM<br>
VOWEL SIGN AA> (Thai transliteration สังฆะสังโฆ). The patch does not<br>
correct the rendering of the first word. Only the files c_pre.png and<br>
c_post.png show the correct rendering of both words.<br>
<br>
Before the patch, Scheme A works with HarfBuzz 0.9.18 for the second<br>
word, but the sequence indices do not accord with the specification.<br>
Scheme B accords with the specification, but does not work with the<br>
specification. The patch switches success and failure. Failure is<br>
manifested by the disappearance of mai kang lai.<br>
<br>
The failure with word 1 results from the HarfBuzz constraint on<br>
sequence index. One ends up with zero or two mai kang lais in the<br>
word. Using the old input character positions, i.e.<br>
<br>
| mkl_mkl mkl_cons |<br>
0 mkl_vanish_1<br>
1 mkl_append<br>
<br>
('Scheme D') fails on word 1 both before and after the patch.<br>
<br>
My notation for the three schemes and three contexts are:<br>
<br>
Scheme A: (lookup 21)<br>
<br>
lookup shift_mkl_pt1a<br>
| mkl_mkl mkl_cons |<br>
1 mkl_append<br>
0 mkl_vanish_1<br>
| mkl_mkl mkl_pre mkl_cons |<br>
0 mkl_vanish_1<br>
2 mkl_append<br>
| mkl_mkl mkl_pre mkl_pre mkl_cons |<br>
0 mkl_vanish_1<br>
3 mkl_append<br>
end lookup<br>
<br>
Scheme B: (lookup 22)<br>
<br>
lookup shift_mkl_pt1b<br>
| mkl_mkl mkl_cons |<br>
0 mkl_vanish_1<br>
0 mkl_append<br>
| mkl_mkl mkl_pre mkl_cons |<br>
0 mkl_vanish_1<br>
1 mkl_append<br>
| mkl_mkl mkl_pre mkl_pre mkl_cons |<br>
0 mkl_vanish_1<br>
2 mkl_append -- Input #3 has become #2<br>
end lookup<br>
<br>
Scheme C: (lookup 23)<br>
lookup shift_mkl_pt1c<br>
| mkl_mkl mkl_cons |<br>
0 condemn<br>
1 mkl_append<br>
| mkl_mkl mkl_pre mkl_cons |<br>
0 condemn<br>
2 mkl_append<br>
| mkl_mkl mkl_pre mkl_pre mkl_cons |<br>
0 condemn<br>
3 mkl_append<br>
end lookup<br>
<br>
Lookup mkl_append converts a consonant to consonant plus mai kang lai,<br>
while lookup mkl_vanish_1 merges mai kang lai with the following glyph.<br>
Lookup condemn converts mai kang lai to a special glyph, which is then<br>
merged with the following glyph by a subsequent lookup. Scheme C uses<br>
only this two-lookup process, and works both with and without the patch.<br>
<br>
Richard.<br>
<br>_______________________________________________<br>
HarfBuzz mailing list<br>
<a href="mailto:HarfBuzz@lists.freedesktop.org">HarfBuzz@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/harfbuzz" target="_blank">http://lists.freedesktop.org/mailman/listinfo/harfbuzz</a><br>
<br></blockquote></div>