Arabic script 'base glyphs' and character representation

Hello!

It has been a while since I encountered some issues with the use of ‘base glyph’ and character representation in Glyphs, but I never got a chance to go through them and make a list. Mostly because this did not affect my design decisions, and I could easily fix them manually. However, I see that these issues are increasingly misleading for my students and designers who use Glyphs to design their first Arabic typeface.

The first issue concerns the ‘base glyph’, which is automatically inserted as a component in some glyphs. I understand this is to speed up the design process, but several of these are incorrect (or incorrectly used as default). There are also instances where the use of base glyph could be beneficial but not currently implemented. I, therefore, decided to prepare a list of glyphs in which the base glyph may be used as a component and a few instances where it should not. This is based on ‘Basic shapes’, ‘Basic’, ‘Persian’ and ‘Urdu’, which you have listed under Arabic in the app.

Allowed:

  1. Base glyph (alef-ar) in (alefHamzaabove-ar+hamzaabove-ar), (alefHamzabelow-ar+hamzabelow-ar), (alefMadda-ar+madda-ar), (alefWasla-ar+wasla-ar)

  2. Base glyph (alef-ar.fina) in (alefHamzaabove-ar.fina+hamzaabove-ar), (alefHamzabelow-ar.fina+hamzabelow-ar), (alefMadda-ar.fina+madda-ar), (alefWasla-ar.fina+wasla-ar)

  3. Base glyph (behDotless-ar.init) in (beh-ar.init+dotbelow-ar), (peh-ar.init+threedotsdownbelow-ar), (teh-ar.init+twodotshorizontalabove-ar), (theh-ar.init+threedotsupabove-ar), (tteh-ar.init+tahabove-ar), (noon-ar.init+dotabove-ar), (yeh-ar.init+twodotshorizontalbelow-ar), (yehFarsi-ar.init+twodotshorizontalbelow-ar), (yehHamzaabove-ar.init+hamzaabove-ar)

  4. Base glyph (behDotless-ar.medi) in (beh-ar.medi+dotbelow-ar), (peh-ar.medi+threedotsdownbelow-ar), (teh-ar.medi+twodotshorizontalabove-ar), (theh-ar.medi+threedotsupabove-ar), (tteh-ar.medi+tahabove-ar), (noon-ar.medi+dotabove-ar), (yeh-ar.medi+twodotshorizontalbelow-ar), (yehFarsi-ar.medi+twodotshorizontalbelow-ar), (yehHamzaabove-ar.medi+hamzaabove-ar)

  5. Base glyph (behDotless-ar.fina) in (beh-ar.fina+dotbelow-ar), (peh-ar.fina+threedotsdownbelow-ar), (teh-ar.fina+twodotshorizontalabove-ar), (theh-ar.fina+threedotsupabove-ar), (tteh-ar.fina+tahabove-ar)

  6. Base glyph (behDotless-ar) in (beh-ar+dotbelow-ar), (peh-ar+threedotsdownbelow-ar), (teh-ar+twodotshorizontalabove-ar), (theh-ar+threedotsupabove-ar), (tteh-ar+tahabove-ar)

  7. Base glyph (hah-ar.init) in (jeem-ar.init+dotbelow-ar), (tcheh-ar.init+threedotsdownbelow-ar), (khah-ar.init+dotabove-ar)

  8. Base glyph (hah-ar.medi) in (jeem-ar.medi+dotbelow-ar), (tcheh-ar.medi+threedotsdownbelow-ar), (khah-ar.medi+dotabove-ar)

  9. Base glyph (hah-ar.fina) in (jeem-ar.fina+dotcenter-ar), (tcheh-ar.fina+threedotsdowncenter-ar), (khah-ar.fina+dotabove-ar)

  10. Base glyph (hah-ar) in (jeem-ar+dotcenter-ar), (tcheh-ar+threedotsdowncenter-ar), (khah-ar+dotabove-ar)

  11. Base glyph (dal-ar.fina) in (thal-ar.fina+dotabove-ar), (ddal-ar.fina+tahabove-ar)

  12. Base glyph (dal-ar) in (thal-ar+dotabove-ar), (ddal-ar+tahabove-ar)

  13. Base glyph (reh-ar.fina) in (zain-ar.fina+dotabove-ar), (jeh-ar.fina+threedotsupabove-ar), (rreh-ar.fina+tahabove-ar)

  14. Base glyph (reh-ar) in (zain-ar+dotabove-ar), (jeh-ar+threedotsupabove-ar), (rreh-ar+tahabove-ar)

  15. Base glyphs (seen-ar.init, seen-ar.medi, seen-ar.fina, seen-ar) in (sheen-ar.init, sheen-ar.medi, sheen-ar.fina, sheen-ar) + threedotsupabove-ar in all four sheen glyphs

  16. Base glyphs (sad-ar.init, sad-ar.medi, sad-ar.fina, sad-ar) in (dad-ar.init, dad-ar.medi, dad-ar.fina, dad-ar) + dotabove-ar in all four dad glyphs

  17. Base glyphs (tah-ar.init, tah-ar.medi, tah-ar.fina, tah-ar) in (zah-ar.init, zah-ar.medi, zah-ar.fina, zah-ar) + dotabove-ar in all four zah glyphs

  18. Base glyphs (ain-ar.init, ain-ar.medi, ain-ar.fina, ain-ar) in (ghain-ar.init, ghain-ar.medi, ghain-ar.fina, ghain-ar) + dotabove-ar in all four ghain glyphs

  19. Base glyph (fehDotless-ar.init) in (feh-ar.init+dotabove-ar), (veh-ar.init+threedotsupabove-ar), (qaf-ar.init+twodotshorizontalabove-ar)

  20. Base glyph (fehDotless-ar.medi) in (feh-ar.medi+dotabove-ar), (veh-ar.medi+threedotsupabove-ar), (qaf-ar.medi+twodotshorizontalabove-ar)

  21. Base glyph (fehDotless-ar.fina) in (feh-ar.fina+dotabove-ar), (veh-ar.fina+threedotsupabove-ar)

  22. Base glyph (fehDotless-ar) in (feh-ar+dotabove-ar), (veh-ar+threedotsupabove-ar)

  23. Base glyphs (qafDotless-ar.fina, qafDotless-ar) in (qaf-ar.fina, qaf-ar) + twodotshorizontalabove-ar in both qaf glyphs

  24. Base glyphs (kaf-ar.init, kaf-ar.medi) in (keheh-ar.init, keheh-ar.medi), (gaf-ar.init, gaf-ar.medi) + gafsarkashabove-ar in both gaf glyphs

  25. Base glyphs (keheh-ar.fina, keheh-ar) in (gaf-ar.fina, gaf-ar) + gafsarkashabove-ar in both gaf glyphs

  26. Base glyphs (noonghunna-ar.fina, noonghunna-ar) in (noon-ar.fina, noon-ar) + dotabove-ar in both noon glyphs

  27. Base glyph (heh-ar.fina) in (tehMarbuta-ar.fina+twodotshorizontalabove-ar), (hehHamzaabove-ar.fina+hamzaabove-ar)

  28. Base glyph (heh-ar) in (tehMarbuta-ar+twodotshorizontalabove-ar), (hehHamzaabove-ar+hamzaabove-ar), (hehgoal-ar), (hehgoalHamzaabove-ar+hamzaabove-ar), (tehMarbutagoal-ar+twodotshorizontalabove-ar)

  29. Base glyphs (waw-ar.fina, waw-ar) in (wawHamzaabove-ar.fina, wawHamzaabove-ar) + hamzaabove-ar in both wawHamzaabove glyphs

  30. Base glyph (alefMaksura-ar.fina) in (yeh-ar.fina+twodotshorizontalbelow-ar), (yehFarsi-ar.fina), (yehHamzaabove-ar.fina+hamzaabove-ar)

  31. Base glyph (alefMaksura-ar) in (yeh-ar+twodotshorizontalbelow-ar), (yehFarsi-ar), (yehHamzaabove-ar+hamzaabove-ar)

  32. Base glyphs (yehbarree-ar.fina, yehbarree-ar) in (yehbarreeHamzaabove-ar.fina, yehbarreeHamzaabove-ar) + hamzaabove-ar in both yehbarreeHamzaabove glyphs

  33. Base glyphs (lam_alef-ar.fina) in (lam_alefHamzaabove-ar.fina+hamzaabove-ar.2), (lam_alefHamzabelow-ar.fina+hamzabelow-ar.2), (lam_alefMadda-ar.fina+madda-ar.2), (lam_alefWasla-ar.fina+wasla-ar.2)

  34. Base glyphs (lam_alef-ar) in (lam_alefHamzaabove-ar+hamzaabove-ar.2), (lam_alefHamzabelow-ar+hamzabelow-ar.2), (lam_alefMadda-ar+madda-ar.2), (lam_alefWasla-ar+wasla-ar.2)

  35. Base glyphs (one-ar, two-ar, three-ar, seven-ar, eight-ar, nine-ar), in (oneFarsi-ar, twoFarsi-ar, threeFarsi-ar, sevenFarsi-ar, eightFarsi-ar, nineFarsi-ar)

Several marks are composed of two base glyphs. In those cases, having the base glyphs automatically inserted would be good. For example, hamzaaboveDamma-ar, hamzaaboveDammatan-ar, hamzaaboveFatha-ar, hamzaaboveFathatan-ar, hamzaaboveSukun-ar, hamzabelowKasra-ar, hamzabelowKasratan-ar, shaddaFathatan-ar, shaddaDammatan-ar, shaddaKasratan-ar, shaddaFatha-ar, shaddaDamma-ar, shaddaKasra-ar, shaddaAlefabove-ar

fathatan-ar & kasratan-ar are also composed of two fatha-ar & kasra-ar respectively.

Based on the above list, I suggest removing the base glyph in the following glyphs.
This is because the final forms of these characters should be constructed differently, not by merely adding a connecting stroke. Number 3 (below) is particularly misleading.

  1. Base glyph (dal-ar) in (dal-ar.fina)

  2. Base glyph (seen-ar) in (seen-ar.fina)

  3. Base glyphs (lam-ar.medi+alef-ar.fina) in (lam_alef-ar.fina)

The final point concerns the system fonts used as the default for character representation inside glyphs. For instance, on my system (macOS Ventura); qafDotless-ar.fina and qafDotless-ar are represented by qafDotless-ar; and fehDotless-ar.fina and fehDotless-ar are represented by fehDotless-ar which is incorrect. I find these very misleading, especially in the context of Urdu characters which are very often misrepresented or distorted in system fonts. Is it possible to choose a fixed character model for the Arabic script to be used in the app instead? If so, I am happy to suggest alternatives.

Cheers,
Borna

Thanks for the list. Would it be possible to reduce the first list to the ones that are not handled like this right now?

Hi Georg. Thank you for the quick reply.
As far as I could see here they are

  1. Base glyph (alef-ar) in (alefHamzaabove-ar+hamzaabove-ar), (alefHamzabelow-ar+hamzabelow-ar), (alefMadda-ar+madda-ar), (alefWasla-ar+wasla-ar)

  2. Base glyph (alef-ar.fina) in (alefHamzaabove-ar.fina+hamzaabove-ar), (alefHamzabelow-ar.fina+hamzabelow-ar), (alefMadda-ar.fina+madda-ar), (alefWasla-ar.fina+wasla-ar)

  3. Base glyph (behDotless-ar.init) in (tteh-ar.init+tahabove-ar), (yehHamzaabove-ar.init+hamzaabove-ar)

  4. Base glyph (behDotless-ar.medi) in (tteh-ar.medi+tahabove-ar), (yehHamzaabove-ar.medi+hamzaabove-ar)

  5. Base glyph (behDotless-ar.fina) in (tteh-ar.fina+tahabove-ar)

  6. Base glyph (behDotless-ar) in (tteh-ar+tahabove-ar)

  7. Base glyph (dal-ar.fina) in (ddal-ar.fina+tahabove-ar)

  8. Base glyph (dal-ar) in (ddal-ar+tahabove-ar)

  9. Base glyph (reh-ar.fina) in (rreh-ar.fina+tahabove-ar)

  10. Base glyph (reh-ar) in (rreh-ar+tahabove-ar)

  11. Base glyphs (keheh-ar.fina, keheh-ar) in (gaf-ar.fina, gaf-ar) + gafsarkashabove-ar in both gaf glyphs

  12. Base glyph (heh-ar) in (tehMarbuta-ar+twodotshorizontalabove-ar), (hehHamzaabove-ar+hamzaabove-ar)

  13. Base glyphs (waw-ar.fina, waw-ar) in (wawHamzaabove-ar.fina, wawHamzaabove-ar) + hamzaabove-ar in both wawHamzaabove glyphs

  14. Base glyph (alefMaksura-ar.fina) in (yehHamzaabove-ar.fina+hamzaabove-ar)

  15. Base glyph (alefMaksura-ar) in (yehHamzaabove-ar+hamzaabove-ar)

  16. Base glyphs (yehbarree-ar.fina, yehbarree-ar) in (yehbarreeHamzaabove-ar.fina, yehbarreeHamzaabove-ar) + hamzaabove-ar in both yehbarreeHamzaabove glyphs

  17. Base glyphs (lam_alef-ar.fina) in (lam_alefHamzaabove-ar.fina+hamzaabove-ar.2), (lam_alefHamzabelow-ar.fina+hamzabelow-ar.2), (lam_alefMadda-ar.fina+madda-ar.2), (lam_alefWasla-ar.fina+wasla-ar.2)

  18. Base glyphs (lam_alef-ar) in (lam_alefHamzaabove-ar+hamzaabove-ar.2), (lam_alefHamzabelow-ar+hamzabelow-ar.2), (lam_alefMadda-ar+madda-ar.2), (lam_alefWasla-ar+wasla-ar.2)

  19. Base glyphs (one-ar, two-ar, three-ar), in (oneFarsi-ar, twoFarsi-ar, threeFarsi-ar)

Marks:
hamzaaboveDamma-ar, hamzaaboveDammatan-ar, hamzaaboveFatha-ar, hamzaaboveFathatan-ar, hamzaaboveSukun-ar, hamzabelowKasra-ar, hamzabelowKasratan-ar, shaddaFathatan-ar, shaddaDammatan-ar, shaddaKasratan-ar, shaddaFatha-ar, shaddaDamma-ar, shaddaKasra-ar, shaddaAlefabove-ar

fathatan-ar & kasratan-ar are also composed of two fatha-ar & kasra-ar respectively

1 Like