bugFree UCS Outline Fonts - Bugs: bug #50982, Diacritics interrupt lam alif...


bug #50982: Diacritics interrupt lam alif ligature

Submitted by:  David Corbett <dscorbett>
Submitted on:  Tue 09 May 2017 03:30:42 PM UTC  
Category: individual character(s)Severity: 3 - Normal
Item Group: glyph(s) incorrectStatus: Need info
Privacy: PublicAssigned to: Steve White <Stevan_White>
Open/Closed: OpenRelease: development

Add a New Comment(Rich Markup)

You are not logged in

Please log in, so followups can be emailed to you.


(Jump to the original submission Jump to the original submission)

Tue 23 May 2017 06:55:20 PM UTC, comment #7:

You can read about IgnoreMarks and other flags in the OpenType spec. https://www.microsoft.com/typography/otspec/chapter2.htm says, “For example, in Arabic text, a character string might have the pattern base mark base. That string could be converted into a ligature composed of two components, one for each base character, with the combining mark glyph over the first component. To produce this ligature, the font developer would set the IgnoreMarks bit of the ligature substitution lookup to tell the client to ignore the mark, substitute the ligature glyph first, and then position the mark glyph over the in a subsequent GPOS lookup.” The spec is often unclear, but this is one of the well-written parts.

I found https://sourceforge.net/p/fontforge/mailman/message/6164906/ helpful when making a proof of concept in FontForge.

https://github.com/search?utf8=%E2%9C%93&q=baselig+extension%3Asfd provides plenty of examples of what the SFD should look like.

That’s basically all you have to do: read the spec and consult prior art.

David Corbett <dscorbett>
Tue 23 May 2017 04:02:37 PM UTC, comment #6:

David, who are you who are so wise in the ways of fonts?

You know, I've spent a lot of time experimenting with the IgnoreMarks (etc) flags. The Fontforge doc and the MS Typography sites are unhelpful as to how it's supposed to work -- the Fontforge doc lauds its usefulness for Arabic, but really says nothing about how it's supposed to work.

And I have thought those things might be useful in other scripts, but so far, I have seen them do only useless things. I don't get it.

Where do we read about this?

Steve White <Stevan_White>
Project AdministratorIn charge of this item.
Tue 23 May 2017 02:41:42 PM UTC, comment #5:

Here is how to make this work. On the lookup that creates the lam+alif ligature, set the IgnoreMarks flag. Create a MarkToLigature GPOS table. For every Arabic anchor, e.g. "arab-above", define a MarkToLigature counterpart, e.g. "arab-above-lig". Define "baselig" anchor points for these new anchors on lam+alif; since that ligature has two components, that means two anchor points above and two anchor points below. Define "mark" anchor points for these new anchors on mark glyphs; for example, any mark glyph with an "arab-above" anchor point should have an "arab-above-lig" anchor point at the same coordinates.

David Corbett <dscorbett>
Tue 23 May 2017 05:39:03 AM UTC, comment #4:

Update: I haven't even figured out how it is possible to implement the feature as stated in the standard. Changing the order of glyphs is a very tricky business in OpenType, which, as far as I know, can be done only on a case-by-case basis.

Steve White <Stevan_White>
Project AdministratorIn charge of this item.
Tue 23 May 2017 01:31:32 AM UTC, comment #3:

This bug does not just apply to lam+alif, though that is the most important case: it applies to all Arabic ligatures. For example, in FreeSerif, ⟨تم⟩ uses the ligature glyph teh_meemisol.lig, but adding a vowel mark as in ⟨تَم⟩ breaks the ligature.

David Corbett <dscorbett>
Mon 15 May 2017 04:45:56 PM UTC, comment #2:

See The Unicode Standard 9.0, chapter 9, section “Ligature Rules”, rule L1.

David Corbett <dscorbett>
Mon 15 May 2017 02:40:01 PM UTC, comment #1:

I am surprissed that it is correct to put diacritics between two letters to be ligated. Where do I read about that?

Steve White <Stevan_White>
Project AdministratorIn charge of this item.
Tue 09 May 2017 03:30:42 PM UTC, original submission:

In FreeMono and FreeSerif, Regular and Bold, diacritics prevent a lam and an alif from ligating.

data:text/html;charset=utf-8,<div style="font: 300px FreeSerif">%D9%84%D9%8E%D9%91%D8%A7

David Corbett <dscorbett>


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by Stevan_White (Posted a comment)
  • -unavailable- added by dscorbett (Submitted the item)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.


    Please enter the title of George Orwell's famous dystopian book (it's a date):



    Follow 2 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon 15 May 2017 02:40:01 PM UTCStevan_WhiteStatusNone=>Need info
      Assigned toNone=>Stevan_White

    Back to the top

    Powered by Savane 3.1-cleanup1