FW: [OpenType] Feedback on the OT spec from a fresh implementation

Levantovsky, Vladimir vladimir.levantovsky at monotypeimaging.com
Thu Dec 9 16:48:38 CET 2010


All,

I am forwarding the email from Behdad Esfahbod that was sent earlier in June to the OpenType list.

I suggest to consider adding the issues Behdad outlined in his email to the proposed OFF amendment. Please provide your comments and suggestions on how this could be addressed/fixed in the current spec.

Thank you,
Vladimir


-----Original Message-----
From: listmaster at indx.co.uk [mailto:listmaster at indx.co.uk] On Behalf Of Behdad Esfahbod 
Sent: Monday, June 01, 2009 10:28 PM
To: multiple recipients of OpenType - sent by
Subject: [OpenType] Feedback on the OT spec from a fresh implementation

Message from OpenType list:


Hi,

I've been rewriting my OpenType Layout engine implementation and in the 
process have been reading the spec a lot.  I found a bunch of issues that I 
hope to document in this message.  With no further ado:

   - In http://www.microsoft.com/typography/otspec/GSUB.htm, the first figure 
in the page does not include Reverse Chaining Context Single Subst.

   - In http://www.microsoft.com/typography/otspec/GDEF.htm, I don't find any 
mention that mark filtering sets where introduced in OpenType 1.6 / GDEF 
0x00010002.  How are implementers supposed to know that?

   - In http://www.microsoft.com/typography/otspec/os2.htm, under usMaxContext 
it is said that "For chaining contextual lookups, the length of the string 
(covered glyph) + (input sequence) + (lookahead sequence) should be 
considered.", however, that ignores the fact that LookupFlags may cause an 
unbounded number of glyphs to be skipped.  Right?

   - LookupFlags.  I find these the most underdocumented part of the spec. 
 From what I understand, from reading the spec and various previous discussions:

     * LookupFlags are used to skip glyphs when deciding whether to apply a 
lookup to a glyph

     * LookupFlags are also used to skip glyphs when finding the previous 
glyph in MarkToBase, MarkToLigature, and MarkToMark GPOS lookups but never 
jumping over a non-mark glyph

     * What's not clear is whether any non-mark glyphs are allowed to be 
skipped over when finding context, etc, glyphs in any other kind of lookups 
(GPOS or GSUB).  My understanding is that it is *not* allowed.  For example 
the mark-mark ligating lookup in Tahoma has IgnoreBaseGlyphs set, which makes 
sense because it speeds up finding the first mark to ligate, but we certainly 
don't marks of two different bases to ligate.  This assumption is specified 
nowhere in the spec.  I've heard that this assumption is incorrect in some 
Indic languages though, so I'm asking for clarification.  Another limitation 
of this assumption is that if skipping over non-mark glyphs *is* allowed, that 
can be useful in contextual matching.  For example, that would allow an Arabic 
font to match a context of <mark,base,mark>, and then ligate or position the 
two marks in a lookup.  Assuming no non-mark skipping however disables that. 
How do others implement this?

   - In Contextual and ChainContextual lookups, the matching is allowed to 
skip glyphs.  I assume it also means that when applying the sublookups to 
individual positions, those positions also use the same skipping, right?


That's it for now.  For those interested, here is my work in progress:

   http://git.gnome.org/cgit/pango/tree/?h=harfbuzz-ng


Cheers,
behdad


subscribe: opentype-migration-sub at indx.co.uk
unsubscribe: opentype-migration-unsub at indx.co.uk
messages: opentype-migration-list at indx.co.uk




More information about the mpeg-otspec mailing list