Problem with contextual positioning of (multiple) arabic characters with VOLT

Hello everybody,

I am wondering if anyone could help me solve this (dump?) problem with contextual positioning of a sequense Arabic characters with VOLT,

I am making a calligraphic Arabic font. After completing the work in Fontlab, I am now implementing the opentype features using MS VOLT.

The problem is that, according to the Arabic style I am designing, all the initial and medial Arabic forms attached BEFORE “hah medial” (the same is true for "jeem medial" and "khah medial") have to “rise” above the base line. That is; the presence of "hah medial" makes a cascading word!

I don’t know the proper feature that allows me to achieve this result, I tried with “cursive positioning <curs>” but it works only with the immediate adjacent (previous) character, the rest of the sequence stays on the base line (see pic), the same with kerning!!

Can anyone help with this? Thanks in advance!  :)
1.jpg 46.3K

Comments

  • John HudsonJohn Hudson Posts: 2,955
    The trick with {curs} is that if you want to use it anywhere, you have to apply it to all the joining glyphs, not just the ones that require a raised connection. So you have to define the cursive attachment point on all the connections. Think of cursive attachment as like gluing the glyphs together: if you raise one, than you need to glue the other joining letters to it, otherwise they won't know that they also need to be raised.
  • thank you John! I’ll apply that tip; I hope to do so in the right way. I’ll inform u about the result.
  • Hello again,

    Problem solved…maybe in a silly way but it works nonetheless!

    I tried the cursive attachment to no avail!! (maybe I didn’t applied it in the right way)

    This is the way it worked for me:  

    1-      In the font I created a duplicate of all initial and medial glyphs positioned above the baseline in the appropriate elevation relative to “hah”, “jeem” and “khah” medials.

    2-      In VOLT I created a group for the three medial letters : <hah_jeem_khah_medials>.

    3-      I created two groups for initial letters : <initials0> and <initials1>, the first being simply that of all the initial letters in their normal position on the baseline, the second that of the elevated glyphs.

    4-      I created also 10 groups (yes 10 groups!!) of medial forms (excepting “hah”, “jeem” and “khah” of course) : <medials0>, <medials1>, <medial2>, <medial3>…and so on! <medials0> grouping medial forms in their standard position on the base line, whilst the others are repetitive groups of the elevated medial forms!

    5-      To the Contextual Alternates <calt> I assigned the following series of distinct features:

    ·         Context before <hah_jeem_khah_medials>: <initials0> -> <initials1> and <medials0> -> <medials1>

    ·         Context before <medials1> <hah_jeem_khah_medials>: <initials0> -> <initials1> and <medials0> -> <medials2>

    ·         Context before <medials2> <medials1><hah_jeem_khah_medials>: <initials0> -> <initials1> and <medials0> -> <medials3>

    ·         Context before <medials3> <medials2> <medials1> <hah_jeem_khah_medials>: <initials0> -> <initials1> and <medials0> -> <medials4>

    ·         …and so on in the same logic until the 9th group!

    Remarks:

    -          This technique naturally doubled the number of initial and medial glyphs.

    -          Linguistically talking, the longest sequence of characters attached before hah, jeem or khah medials I can conceive of is 6. However I made possible the proper attachment of 10 characters…just in case…   

    -          The groups must include also any existing ligatures of initial and medial glyphs in both positions.

    -          The groups of medial glyphs must also include the tatweel form (uni0640).


    Thank you again !

  • John HudsonJohn Hudson Posts: 2,955
    edited January 2016
    What happens if you get a double-step up in a lettergroup, e.g. two jeems? Or do you prevent that from happening?

    The method you describe works for a mostly flat design such as yours, but as you note requires a separate joining glyph for each height step: very inefficient and not very flexible.

    In case it helps, here is a screenshot of a VOLT cursive attachment lookup for Arabic.


    The glyphs are designed so that to 0,0 coordinate on the first (right) glyph is where the attachment happens, so the attachment coordinate is simply defined as a dx,dy offset on the second (left) glyph.
  • i completely agree!
    i hope i could apply it the right way!
    thank you again!

  • done! :)
    thank you so much John for your patience with me!
  • Georg SeifertGeorg Seifert Posts: 669
    edited January 2016
    You could try Glyphs (www.glyphsapp.com) (I'm its developer). It makes the setup of cursive attachment very easy. You only need to add some anchors and you get a five preview. 
  • Is the issue resolved?  Try Reverse Chaining in the Substitution lookup.  I had the same issue many years ago, when I was developing Nastaleeq font.  It required substitution and connections many times.  Good Luck!
Sign In or Register to comment.