I am Creating a Ligature Base Quran Font, estimated around 22000 Glyphs. Most of the Art work is done. I am using FontLab and VOLT to create this single Font File.
I just use one OTF feature which is simple substitution method to avoid Platform & Application issues. My Ligature Length starts from 2 characters and the maximum length is 21.
I include all characters and Aeraab in my Substitution Method.
I tried this Font on Windows 7, and its working perfect on it and also try it in MS Office, Adobe, & CorelDraw, working fine. Only one issue happens in windows 7 that all Words having a length of "16 Characters" are not substituting, and showing break characters, so I change the length of all 16 characters Words to 17 length by adding a "Kashida" in it so the length goes to "17" and it works fine, so in Windows 7 All the words of length from 2 to 21 are working fine except the length of "16" characters.
Now I try my Font on windows 10, and got upset to see the result, My all Words having length from 2 to 15 are substituting fine, but all words having length of more than 16 or more are disturbing my data. Sometimes they don't substitute correctly, and sometime it substitute correctly but it disturb some other words in that Line.
Attached the Image of comparison, Words with more than 15 length are circled red, and also circle the disturbing shapes.
Any suggestion.
Comments
Also, are the above actually the same text? Your Win7 sample looks like it begins with a qaf and lam, but these appear to be cut off in your Win10 sample. Also, I see a small square superimposed upon the first lam in the Win10 text. Is that a .notdef character, or is it something else?
If you could post a few examples of the substitutions from your code it would probably help.
Finally, make sure you have read the following document:
https://docs.microsoft.com/en-us/typography/script-development/arabic
That will clarify which features are applied early by the shaping engine. You need to take that ordering into account.
[DISCLAIMER: I don't read Arabic]
I do recommend consulting http://maryamsoft.com/QuranPrinting/. They make what I consider the best OpenType format Quranic font, in terms of both design and technical capability as elaborated in the attached QB-English.pdf and here https://ahmedgraf.com/1568-2/ .
https://fonts.qurancomplex.gov.sa/
Respected, Bahman Eslami & André G. Isaak, Here I am attaching some more Screenshots to understand the Idea, I am Just using Required Ligature (rlig) feature alongwith Init, Medi, & Final forms of Arabic Unicode Set. I also assigned all unicode standard to my characters and Diacritics.. The only problem is the Words having length of less than 16 characters are working fine, but Words having more than 16 characters having issue only in Windows X, working fine in Windows 7.
I would not be surprised to learn that some implementations have a limit on the number of glyphs that can feed into a ligature.
I can see why you *might* need so many ligatures in a Nastaleeq font, but not in Naskh. Splitting these up would certainly simplify coding and minimize ordering issues, and would help to overcome the sorts of length-limitations on ligatures which Thomas hints at (if any).
I've never been able to get VOLT to run successfully on a Mac, so I'm not familiar with exactly how it works. I know that AFDKO automatically orders ligature substitutions from longest to shortest, but I don't know how VOLT deals with this. Are you *sure* that your ligature substitutions are actually all in a single lookup? To me, that sounds like a very large lookup and it's possible that VOLT breaks this into separate lookups. In this case, there may be some sort of ordering problem with the lookups.
If you open the final font in OTMaster you might be able to get an idea of how many lookups are actually involved which might provide you with some leads (or you could open the final font in FontLab — FL's decompiled code is generally more readable than OTMaster's, but it isn't necessarily as faithful to the original. It should, however, still display the number of lookups and their ordering correctly).
Are you *sure* that your ligature substitutions are actually all in a single lookup?
I create around 20 Lookups to add 22000 Ligatures, almost each lookup have approx 1000 - 1500 Substitutions in one Lookup. In same lookup there are multiple combinations of characters, like having mix length Words, like same Lookup have 4character, 6character, 10 character, 20character, etc. etc... Ligatures having less than 16 length working fine, but length more than 16 showing error..
Anyhow I will create a small font and will upload it with VOLT Code, if this forum let me to add TTF Font, otherwise if you can send me ur email, I will send you in mail. Becoz I am new in this Forum...
Sorry -- I'm not sure where I got the idea you had a single lookup. I think I was thinking back to where you said you had a single feature. You can either PM me or contact me at agisaak (at) gmail (dot) com.
Ashfaq: I'd strongly recommend installing Harfbuzz and using its testing tools. Download a Windows build here: harfbuzz-2.5.3-win32.zip and then use the
hb-shape
tool in a terminal. It allows you to see the substitutions that are being made by different shaping engines and that may reveal where the problem is. You can use the same text in Uniscribe, DirectWrite, and Harfbuzz's own OpenType implementation and compare the results: