Arabic-style script with initial, medial etc. forms

Hi everybody.

I’ve made the following alphabet for a language I’ve created (I’ll gladly tell you all about it in case anyone is interested) and now I’m trying to turn it into a font, make it typeable, so to speak.
Hg50xvT.png
It works very much like Arabic (the visual influence should also be obvious) in that it’s cursive, with most letters changing their shape depending on their position. Differently from Arabic, there are six forms (isolated, initial, medial, final, pausal, isolated pausal) and it is left-to-right.

Now, I’ve bought FontCreator precisely because I read it offers a way to make this font work, and I have heard that OpenType and contextual substitution features exist, but I’m afraid I’ve absolutely no clue where to start. The six glyph variants are all there, made as SVGs in Inkscape, and I succeeded in importing at least the isolated forms into FontCreator and mapping them to glyphs, but how do I go from there? How do I arrive at typing indvidual letters and getting something like this?
RjBmvZj.png
I’ve had a rummage around this site and saw a bunch of examples with ligatures, lookups and a bit of code, but that didn’t help me much. Not that writing code to get this done would be a problem.

Thanks in advance!

David

You may have to work out the code on your own as most of us don’t use Arabic scripts.

This thread on creating a fraction feature demonstrates contextual substitutions.

Shaping engines will automatically perform init, medi, and fina features if it detects Arabic and other scripts that use these features.

Since you have invented your own “Script”, it won’t automatically work. You need to add custom OpenType layout features.

This forum topic is a good start:
How to make a contextual cursive font

Thank you, that does already help somewhat.

Looking at the code, I think I get the basic workflow… it’s basically like:

  1. Add all my glyphs to the font (via “Insert glyph”?) and name them in accordance with their position
  2. Put them into classes in the script
  3. Activate the feature “ContextualAlternates”
  4. Define lookups inside the feature
  5. Define substitutions inside the lookups.

Anything I missed?

I’ll try this out as soon as I have the chance. It’s almost guaranteed that I’ll be back :slight_smile:

What is pausal? Is it “before punctuation that indicates a pause” such as comma, stop etc?

https://en.wikipedia.org/wiki/Pausa
Basically, it’s the form of the letter used at the end of a sentence, rather than just at the end of a word.