- From: Richard Wordingham <richard.wordingham@ntlworld.com>
- Date: Fri, 14 Aug 2015 20:21:20 +0100
- To: "public-i18n-mongolian@w3.org" <public-i18n-mongolian@w3.org>
On Fri, 14 Aug 2015 11:54:09 +0100 Andrew West <andrewcwest@gmail.com> wrote: > On 14 August 2015 at 11:10, Greg Eck <greck@postone.net> wrote: > > > > 2.) I am not sure I would say "normally". What I wrote, "This is normally implemented via the cmap table in OpenType fonts.", is literally true. Perhaps someone can find a less misunderstandable way of saying one normally uses the 'cmap' table in OpenType fonts. One might do it via a 'cmap' in an AAT font, or conceivably via some Type 1 font mechanism. > > Baiti and probably most > > of the other fonts use direct OT substitutions. The 'cmap' table is used to generate the input for the substitutions. > > I have experimented > > with the Type 14 Encoding Table successfully, but don't know that > > it is needed in every case. I didn't say that it was needed. Paragraph 2 says, "The result of using a font should be the same as if the font followed the scheme." That clearly needs greater emphasis. When testing the HarfBuzz implementation of Mongolian shaping, Behdad Esfahbod was surprised that Type 14 look-ups weren't being used. > Personally, I do not think it makes much sense to use the Format 14 > subtable for Mongolian FVS. As the final glyph is determined by > context, you would have to substitute a special temporary glyph (one > unique glyph for each base character + FVS combination) in the Format > 14 table, and still apply all the contextual substitution rules in the > GSUB table to transform the temporary glyph to the correct glyph. > Adding the Format 14 table has no advantages that I can see, and > seriously complicates the process (having implemented Format 14 for my > Phags-pa fonts I can say that I really loathe Format 14, and think it > was an awful mistake). I think it simplifies the expressions of the rules. Having worked out the sequence of susbstitutions, one can then merge glyph identities. How easy that is depends on one's font compiler. Mine allows synonyms for glyphs. For example, one could express the transforms applied to U+1820 A as follows. First, note that prior to the stage at which obligatory ligatures are considered, U+1820 has 8 glyphs, which we may name gA0s gA0i gA0m gA0f gA1s gA1i gA1m gA1f (s = solitary / i*s*olated, i = *i*nitial, m = *m*edial, f = *f*inal) I believe that we should not invalidate displays containing <ZWJ, A, FVS2, ZWJ>, so I would support that combination and set up a synonym gA2m of the gA1i. For Stage B: For the cmap, I would have the mapping: 1820 180B > gA1m 1820 180C > gA2m # As Unicode 8.0.0. Remember that gA2m = gA1i 1820 180D > gA0s # Invalid variation selector. Redundant 1820 > gA0s # Show the expected shape to character pickers For Stage C: The isol feature would implement: gA1m > gA1s gA2m > gA0s # Invalid variation selector The init feature would implement gA0s > gA0i gA1m > gA1i # For Unicode 8.0.0, this should be to gA0i gA2m > gA0i # Invalid VS The medi feature would implement: gA0s > gA0m # The price of a nice pick-list. The fini feature would implement: gA0s > gA0f gA1m > gA1f gA2m > gA0f # Invalid VS Stage D: Some invoked feature (perhaps rclt) would implement: gA0s > gA1f / gMVS _ I can use gA1f in the Stage D rule because it will not be further modified in Stage D. I don't think any of these glyphs can be called temporary. A test input to ponder is <MVS, A, FVS1>. How should that be rendered? Unicode 8.0.0 calls for <gMVS, gA1s>. U+1829 ANG would not be mentioned in the Type 14 table; it does not take variation selectors. > I seem to recall that Peter Constable once (on the unicore list?) > stated that Format 14 was not intended for use with Mongolian (and > certainly Microsoft has not implemented Format 14 for its Mongolian > font), but I cannot find this email any longer. Nor, alas, can I. Richard.
Received on Friday, 14 August 2015 19:21:55 UTC