freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ft-devel] [OpenType] Question about LookupFlag (fwd)


From: Behdad Esfahbod
Subject: [ft-devel] [OpenType] Question about LookupFlag (fwd)
Date: Mon, 4 Apr 2005 03:50:53 -0400 (EDT)

I sent this message two times to OpenType list, with no response.
Maybe people here can help?

Thanks,

--behdad

---------- Forwarded message ----------
Date: Tue, 22 Mar 2005 03:47:07 -0500
From:   Behdad Esfahbod <behdad>
Reply-To: address@hidden
To: Multiple recipients of opentype <address@hidden>
Subject: [OpenType] Question about LookupFlag

OpenType list address: address@hidden

Hi,

I'm all confused about how one is supposed to handle LookupFlag.
The OpenType spec once says [1]: "The LookupFlag specifies lookup
qualifiers that assist a text-processing client in substituting
or positioning glyphs."  and the LookupFlag bit enumeration
defines:

0x0002  IgnoreBaseGlyphs        If set, skips over base glyphs
0x0004  IgnoreLigatures         If set, skips over ligatures
0x0008  IgnoreMarks             If set, skips over combining marks

The Arabic example following the table suggests that one is
supposed to skip some glyphs when matching lookups, which is what
one would expect, but then how one justifies these:


  * In Example 4 in the same page, a fictional implementation of
the ffi and fi ligatures, sets LookupFlag to 0x000C =
IgnoreLigatures, IgnoreMarks.  What does it mean to
IgnoreLigatures here?  Does it mean if a ligatures comes in
between an "f" and an "i", the "fi" ligature should be used?
IgnoreLigatures would mean that following the Arabic example
mentioned above.

  * In the page on GSUB [2], it says: "When a string of glyphs
can be replaced with a single ligature glyph, the first glyph is
substituted with the ligature. The remaining glyphs in the string
are deleted, this includes those glyphs that are skipped as a
result of lookup flags."  Is it true?  So for example if one maps
LAM+ALEF to LAM-ALEF LIGATURE and sets LookupFlags to
IgnoreMarks, then the marks will be lost?  I'm pretty sure the
current implementations do not follow this.

  * Tahoma sets LookupFlag to 7 = RightToLeft, IgnoreBaseGlyphs,
IgnoreLigatures for its mark ligatures.  Isn't it wrong?  For
example, a sequence of <Meem, Shadda, Noon, Fatha> should result
in two different harakat on Meem and Noon, while an
implementation (Pango) currently renders it with a Shadda+Fatha
ligature on Meem, followed by Noon [3].  If following the
deletion note above, the conforming rendering should be a
Shadda+Fatha ligature followed by Noon, since the Meem is between
two components of a ligature and should be deleted!


Thanks in advance,
--behdad
http://behdad.org/

[1] http://www.microsoft.com/OpenType/OTSpec/chapter2.htm
[2] http://www.microsoft.com/OpenType/OTSpec/GSUB.htm
[3] http://bugzilla.gnome.org/show_bug.cgi?id=170180

Subscribe: address@hidden
Unsubscribe: address@hidden
Set list to inactive: address@hidden
Set list to active: address@hidden
Message mode: address@hidden
Digest mode: address@hidden







reply via email to

[Prev in Thread] Current Thread [Next in Thread]