Need Help with contextual susbstitution

moiz217's picture


I'm developing an Arabic font.

I want to achieve a substitution like the one shown in the attached image.

I want "be" to change to "be.alt" when it is before "noon", then I want to change the "noon" to change to "noon.alt" when it comes after "be.alt".

I know that this has something to do with Contextual Substitution.

My question is how to write the lookups, and in which order the lookups should be placed?

Thanks and regards.

contextual substitution.jpg602.99 KB
guifa's picture

Which program are you using?

mk2's picture

I've never designed an Arabic font, but as far as I know you can use Arabic OpenType feature tags like 'isol', 'fina', 'medi', 'init', etc to help your substitution.

Hope this links help:

moiz217's picture

Which program are you using?

I'm using Fontlab and MS VOLT. I prefer doing all the OT related work in VOLT.

الخط هندسة روحانية ظهرت بآلة جسمانية

Atif's picture

Dear معز

These Microsoft tutorials will be a good starting point.
Developing OpenType Fonts for Arabic Script (1 of 3): Introduction


Creating and supporting OpenType fonts for the Arabic script

You can also download some freely available (with open VOLT project) fonts from

Best regards,

John Hudson's picture

You will need two separate lookups for this, and you will need to apply them in sequence. The normal layout feature to use for such lookups with be Contextual Alternates 'calt'.

Lookup 1, using VOLT syntax, will be like this

be -> be.alt

with the context string

| noon

Lookup 2 will be like this

noon -> noon.alt

with the context string

be.alt |

Note that you can foolproof the first lookup by putting both noon forms in the context like this:

| {noon, noon.alt}

Syndicate content Syndicate content