Opentype is the most common rendering engine which has facilitated implementing Arabic script and so many other non latin writing systems in computer. But apparently there are many shortcomings in opentype and tools which are used to develop arabic/persian fonts using opentype. Part of these problems stems from the fact that the geniuses who have created the tools were not familiar with the nature of arabic script, so they have tried to solve the problems using the ideas they have learned while they were trying to implement latin script in computer. Other problems comes from the restrictions in opentype language, which is developed to be understood very easily and it made opentype an inflexible computer language. Opentype is a great invention and maybe there is a way to overcome these problems and a discussion about this might bring new ideas and help the developers and other people whom are trying to use opentype for rendering arabic script in computer to solve their issues.
I start with a topic here but it will not end here:
Positive kerning between connected letters is not straight forward. We don't have proper tools to implement it and some tools which are developed for this purpose have problems. In this example which I'm showing a sample of Adobe Arabic font, you can see that when a short kashida is inserted between two letters in order to avoid collision of dots and diacritics; mark positioning breaks on the first letter. Problem here is not critical but what if a designer wants to use dots as diacritics when he is developing a font? in that situation he will not be able to use positive kerning in this situation (actually there is project and one of my colleagues has this problem).
So far I haven't found any solution to this. First I thought reordering of features might help, but apparently mark positioning is placed after contextual alternative feature in VOLT, and I couldn't find any GSUB feature that could be placed after mark positioning. I think solution would be a flag to ignore certain glyphs in mark positioning lookup. In opentype we have a flag to ignore marks but we don't have a flag to ignore some glyphs like this short kashida. What do you think?