Liga property in Arabic

I designed Fonts Arabic and Latin
In my design for Latin Fonts I find ease in programming
But in programming the Arabic Fonts I’m having difficulties such as
When I do the following
The result is
But when I do it on the Arab side
The result is nothing!! Why not develop this feature for Arabic?!

What about “reh_noon-ar.liga”?

Hi iSkyFalConS,

reh_noon-ar is not a ligature, it’s a alternate form of the reh in a given context.

I would recommend to use calt (contextual alternate) instead:

lookup rehnarrow{
lookupflag IgnoreMarks RightToLeft;
sub reh-ar’ noon-ar by RehSmall-ar;

Illogical solution … Presumably when you collect a number of Glyphs that are directly add table “cat” and add the code to the glyphs as case with the Latin glyphs

For example when added this glyph for the glyphs Panel
Is basically a Two glyphs
“Reh-ar and noon-ar”
So it will compile code in the “cat”
“sub reh-ar noon-ar by reh_noon-ar”
This applies to the rest of the Arabic glyphs

Also another problem: in case of three glyphs in one glyph, as is the case with this glyph

How I will use the marks here?!

By default when you use the marks for any glyph in table (dlig) the glyph returns to the normal case.

So I deleted this code (lookupflag IgnoreMarks RightToLeft;) Of programming but not works correctly if the marks on the last glyph

For ligatures, you need to specify its position. reh_noon-ar will be considered as isolated and constructed as the ligature of initial reh and final noon. Likewise, reh_noon-ar.init will ligate initial reh with medial noon, etc.

The anchors in ligatures need to be called top_1, top_2, top_3, etc. The number refers to the number of the character in the ligature. In your example, top in lam will become top_1 in the ligature glyph; top_2 will be the top for meem, etc. Then, the application can build the feature that repositions the marks.

If you delete the IgnoreMarks rule, the ligature will not work as soon as there are marks.


I’m not sure if I understood you well.
the calt features works fine and I don’t see anything illogical…

It works fine with my fonts.

Speaking of font properties … You cannot put the marks on it where the property (dlig) so where are the marks? Do you stack up?! Must return the glyph to its natural form to be able to put the marks above or below it, how would it?

In case : the glyph includes two glyphs Or two letters
Are the glyphs App has the ability to know The first glyph and the second glyph Through the name of the two glyphs,
Then find the programming code to them, as the case with the Latin font?
This will shorten a lot of time … It will also be a good point in favor of the glyph App .
See the number of glyphs here and the number of codes that I added manually … every time I will do it ?

You cannot preview mark2liga (this is what it is called) inside Glyphs. You will have to preview in InDesign, it works there. And you do not need to type it differently for a ligature to work. Because characters and glyphs are different things:

I am not sure I understand the ligatures you propose (why do you ligate a final followed by an initial?), but if you want them in the app, you can put them all in a list filter, and generate them for every font. Select your ligatures and click on the gear menu in the lower left corner, and choose Add List Filter.

Ah, I think now I understand. And I believe what sylvain meant was that you do not need to build those ligatures if all that changes is just the reh. Yes, reh_noon would be a ligature, but I think he meant to suggest ‘rehSmall (or reh.small) as a contextual alternate’.

Telling from what I see in your last screenshot, I would also rather go the contextual alternate way.

I think I need to go to a psychiatrist

Can you send us the .glyphs file to support at this domain please? We’ll have a look.

This is an old Arabic font I found it in the Internet and programmed to clarify what I want

Do you want (1) automatic decomposition of ligatures as soon as marks are typed, or (2) correct mark positioning on the ligature?

If (1): in theory, you would just need to move the ligature into lookup without the IgnoreMarks rule.

If (2): this works with anchors top_1, top_2, etc. and with the IgnoreMarks rule.

Yes, this is what I want Did you explain to me over?

In you rlig, dlig or liga feature, you create two lookups, one for (1) decompose, one for (2) mark2liga. The only difference should be the lookupflag line. If you put your sub … by …; line into (1) it will decompose as soon as you put a mark in between. If you move it into (2), it will make the ligature regardless of the marks:

lookup decompose {
lookupflag RightToLeft;
sub …
} decompose;

lookup mark2liga {
lookupflag IgnoreMarks, RightToLeft;
sub …
} mark2liga;

Can you apply this method to this file?

I want to see it

It works. I went into dlig and removed this line:
sub beh-ar.init yeh-ar.fina by beh_yeh-ar;

Then put this AT THE BEGINNING of dlig:

lookup dlig_RTL1 {
lookupflag RightToLeft;
sub beh-ar.init yeh-ar.fina by beh_yeh-ar;
} dlig_RTL1;

This is what it looks like in InD:

You see, on the left side there is no ligature because I put the mark on the beh.

Did you try this method on this?

sub lam-ar.init meem-ar.medi jeem-ar.medi by lam_meem_jeem-ar.init;

Yes, same thing. The only problem is, this only works for marks BETWEEN the letters, not if only the last letter (jeem in your example) has a mark.

You can fix this with an ignore statement before the dlig substitution rule:
ignore lam-ar’ meem-ar’ jeem-ar’ @marks;

In the class @marks, of course, you would put all possible marks.