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