The generation of Arabic typefaces

There are errors in the generation of Arabic typefaces
This is the correct way


Very unfortunate not to receive a reply from you

Can you send your .glyphs file to support at this domain?

I do not really understand what you mean. Can you explain a bit more? I think that you mean the glyphs made from the wrong components? It would be more helpfull if you write it like this
SomeBaseGlyph+someMark=SomeGlyph

Yes, this is what I mean Sir George ا have made the first model as I was asked But the second model needs to be some clarification there are marks have no Unicode and name, but we designed it beside basic glyph

hah-ar+dotbelow-ar=jeem-ar
hah-ar.fina+dotbelow-ar=jeem-ar.fina
hah-ar.medi+dotbelow-ar=jeem-ar.medi
hah-ar.init+dotbelow-ar=jeem-ar.init

hah-ar+dotabove-ar=khah-ar
hah-ar.fina+dotabove-ar=khah-ar.fina
hah-ar.medi+dotabove-ar=khah-ar.medi
hah-ar.init+dotabove-ar=khah-ar.init

hah-ar+twodotshorizontalbelow-ar=nyeh-ar
hah-ar.fina+twodotshorizontalbelow-ar=nyeh-ar.fina
hah-ar.medi+twodotshorizontalbelow-ar=nyeh-ar.medi
hah-ar.init+twodotshorizontalbelow-ar=nyeh-ar.init

hah-ar+twodotsverticalbelow-ar=dyeh-ar
hah-ar.fina+twodotsverticalbelow-ar=dyeh-ar.fina
hah-ar.medi+twodotsverticalbelow-ar=dyeh-ar.medi
hah-ar.init+twodotsverticalbelow-ar=dyeh-ar.init

hah-ar+threedotsupbelow-ar=hahThreedotspointingupbelow-ar
hah-ar.fina+threedotsupbelow-ar=hahThreedotspointingupbelow-ar.fina
hah-ar.medi+threedotsupbelow-ar=hahThreedotspointingupbelow-ar.medi
hah-ar.init+threedotsupbelow-ar=hahThreedotspointingupbelow-ar.init

hah-ar+threedotsdownbelow-ar=tcheh-ar
hah-ar.fina+threedotsdownbelow-ar=tcheh-ar.fina
hah-ar.medi+threedotsdownbelow-ar=tcheh-ar.medi
hah-ar.init+threedotsdownbelow-ar=tcheh-ar.init

hah-ar+threedotsupabove-ar=hahThreedots-ar
hah-ar.fina+threedotsupabove-ar=hahThreedots-ar.fina
hah-ar.medi+threedotsupabove-ar=hahThreedots-ar.medi
hah-ar.init+threedotsupabove-ar=hahThreedots-ar.init

hah-ar+twodotsverticalabove-ar=hahTwodotsvertical-ar
hah-ar.fina+twodotsverticalabove-ar=hahTwodotsvertical-ar.fina
hah-ar.medi+twodotsverticalabove-ar=hahTwodotsvertical-ar.medi
hah-ar.init+twodotsverticalabove-ar=hahTwodotsvertical-ar.init

hah-ar+dotabove-ar+threedotsdownbelow-ar=tchehDot-ar
hah-ar.fina+dotabove-ar+threedotsdownbelow-ar=tchehDot-ar.fina
hah-ar.medi+dotabove-ar+threedotsdownbelow-ar=tchehDot-ar.medi
hah-ar.init+dotabove-ar+threedotsdownbelow-ar=tchehDot-ar.init

hah-ar+fourdotsbelow-ar=tcheheh-ar
hah-ar.fina+fourdotsbelow-ar=tcheheh-ar.fina
hah-ar.medi+fourdotsbelow-ar=tcheheh-ar.medi
hah-ar.init+fourdotsbelow-ar=tcheheh-ar.init

hah-ar+hamzaabove-ar=hahHamzaabove-ar
hah-ar.fina+hamzaabove-ar=hahHamzaabove-ar.fina
hah-ar.medi+hamzaabove-ar=hahHamzaabove-ar.medi
hah-ar.init+hamzaabove-ar=hahHamzaabove-ar.init

kaf-ar.medi=keheh-ar.medi
kaf-ar.init=keheh-ar.init

keheh-ar+dotabove-ar=kehehDotabove-ar
keheh-ar.fina+dotabove-ar=kehehDotabove-ar.fina
kaf-ar.medi+dotabove-ar=kehehDotabove-ar.medi
kaf-ar.init+dotabove-ar=kehehDotabove-ar.init

keheh-ar+threedotsupabove-ar=kehehThreedotsabove-ar
keheh-ar.fina+threedotsupabove-ar=kehehThreedotsabove-ar.fina
kaf-ar.medi+threedotsupabove-ar= kehehThreedotsabove-ar.medi
kaf-ar.init+threedotsupabove-ar=kehehThreedotsabove-ar.init

keheh-ar+threedotsupbelow-ar=kehehThreedotsupbelow-ar
keheh-ar.fina+threedotsupbelow-ar=kehehThreedotsupbelow-ar.fina
kaf-ar.medi+threedotsupbelow-ar=kehehThreedotsupbelow-ar.medi
kaf-ar.init+threedotsupbelow-ar=kehehThreedotsupbelow-ar.init

keheh-ar=kafring-ar
keheh-ar.fina=kafring-ar.fina
kaf-ar.medi=kafring-ar.medi
kaf-ar.init=kafring-ar.init

keheh-ar=gaf-ar
keheh-ar.fina=gaf-ar.fina
kaf-ar.medi=gaf-ar.medi
kaf-ar.init=gaf-ar.init

gaf-ar+twodotshorizontalabove-ar=ngoeh-ar
gaf-ar+finatwodotshorizontalabove-ar=ngoeh-ar.fina
gaf-ar+meditwodotshorizontalabove-ar=ngoeh-ar.medi
gaf-ar+inittwodotshorizontalabove-ar=ngoeh-ar.init

gaf-ar+twodotshorizontalbelow-ar=gafTwodotsbelow-ar
gaf-ar+finatwodotshorizontalbelow-ar=gafTwodotsbelow-ar.fina
gaf-ar+meditwodotshorizontalabove-ar=gafTwodotsbelow-ar.medi
gaf-ar+inittwodotshorizontalabove-ar=gafTwodotsbelow-ar.init

gaf-ar+twodotsverticalbelow-ar=gueh-ar
gaf-ar+twodotsverticalbelow-ar=gueh-ar.fina
gaf-ar+twodotsverticalbelow-ar=gueh-ar.medi
gaf-ar+twodotsverticalbelow-ar=gueh-ar.init

gaf-ar+threedotsupabove-ar=gafThreedots-ar
gaf-ar+threedotsupabove-ar=gafThreedots-ar.fina
gaf-ar+threedotsupabove-ar=gafThreedots-ar.medi
gaf-ar+threedotsupabove-ar=gafThreedots-ar.init

gaf-ar=gafRing-ar
gaf-ar=gafRing-ar.fina
gaf-ar=gafRing-ar.medi
gaf-ar=gafRing-ar.init

I will have a look at this tomorrow.

I’m waiting Mr. George

What exactly do you want us to do? Change the default compositions? We will have to go through this, and it will take time until the next update.

But you can use these recipes in Glyphs already now. All you need to make sure, is that all the components are in your font and contain appropriate anchors (like top and _top). For instance, if you want to make gafRing-ar, you can do these steps:

  • add glyph “gaf-ar”
  • add anchor “ring” to gaf-ar
  • add glyph “ring-ar”
  • add anchor “_ring” to ring-ar
  • choose Font > Add Glyphs with this recipe:
    gaf-ar+ring-ar=gafRing-ar

This works.

Currently, gafRing-ar takes the Latin mark ring as default. I suppose this is what you want us to fix. Changing these defaults takes time, but if you are in a hurry, you can edit the defaults yourself by making your own GlyphData.xml: http://www.glyphsapp.com/tutorials/roll-your-own-glyph-data

I do not know why you describe the errors as a default setting

All that said here is the point of a sea of errors that exist in the application in relation to the Arabic fonts

I got bored of the large number of errors corrected manually I’ve also grown bored of the transfer of these errors to the support page

The inclusion of inquiries here like a carrier pigeon was sent to die dove in the way before it reaches the house of Mr. George!

I know that there is no one here knows a lot about arabic fonts

That’s why I used the models in all thematic illustrations here I have dealt seriously with the threads here, but on the other end there is only a little attention

I have a lot of things I would like to inquire about But the lack of attention forced me to stop for inquiry

I think he simply wants decomposition recipe in the default XML; there seems to be none at present. I had looked through the XML but there is no decomposition written in the glyphs mentioned above. I tried building those glyphs from components but it didn’t happen automatically.

We value input like yours a lot, and we have already implemented suggestions of yours in the past. Please be aware that we are also busy with other requests, and we first have to review them, sometimes ask for clarification, and then find the time to implement the changes, and eventually release an update. Our beta update cycles are usually between a few days and a few weeks, and compared to the industry average, that is pretty quick.

I’m halfway through the list. I fixed several entries. But I think there are some problems with your list. The glyphs that have a hah-ar or hah-ar.fina should use the “center” dots instead of the below because the dots actually sit inside the loop and it is easier to position them with a center anchor.

Points in Arabic Fonts be at the top or bottom only, But in some Glyphs we change the size of the dots less than the overall size of the shape in order to be acceptable … as ( چ )

we called it small or Center

I will put all the errors in the generation of GLYPHS here to be the subject as a reference point

heh-ar=hehgoal-ar

heh-ar=ae-ar
hehgoal-ar.fina=ae-ar.init

heh-ar+twodotshorizontalabove-ar=tehMarbuta-ar
heh-ar.fina+twodotshorizontalabove-ar=tehMarbuta-ar.fina

heh-ar+hamzaabove-ar=hehHamzaabove-ar
heh-ar.fina+hamzaabove-ar=hehHamzaabove-ar.fina

hehHamzaabove-ar= hehgoalHamzaabove-ar
hehgoal-ar.fina+hamzaabove-ar=hehgoalHamzaabove-ar.fina

tehMarbuta-ar=tehMarbutagoal-ar
hehgoal-ar.fina+twodotshorizontalabove-ar=tehMarbutagoal-ar.fina

hehDoachashmee-ar+invertedvvowelabove-ar= hehInvertedv-ar
hehDoachashmee-ar.fina+invertedvvowelabove-ar= hehInvertedv-ar.fina
hehDoachashmee-ar.medi+invertedvvowelabove-ar= hehInvertedv-ar.medi
hehDoachashmee-ar.init+invertedvvowelabove-ar= hehInvertedv-ar.init

dotlessbeh-ar.medi=alefMaksura-ar.medi
dotlessbeh-ar.init=alefMaksura-ar.init

alefMaksura-ar+hamzaabove-ar=yehHamzaabove-ar
alefMaksura-ar.fina+hamzaabove-ar=yehHamzaabove-ar.fina
dotlessbeh-ar.medi+hamzaabove-ar=yehHamzaabove-ar.medi
dotlessbeh-ar.init+hamzaabove-ar=yehHamzaabove-ar.init

alefMaksura-ar=yeh-farsi
alefMaksura-ar.fina=yeh-farsi.fina
yeh-ar.medi=yeh-farsi.medi
yeh-ar.init=yeh-farsi.init

alefMaksura-ar+twodotshorizontalbelow-ar=yeh-ar
alefMaksura-ar.fina+twodotshorizontalbelow-ar=yeh-ar.fina
dotlessbeh-ar.medi+twodotshorizontalbelow-ar=yeh-ar.medi
dotlessbeh-ar.init+twodotshorizontalbelow-ar=yeh-ar.init

alefMaksura-ar+vvowelabove-ar=yehv-ar
alefMaksura-ar.fina+vvowelabove-ar=yehv-ar.fina
yeh-ar.medi+vvowelabove-ar=yehv-ar.medi
yeh-ar.init+vvowelabove-ar=yehv-ar.init

alefMaksura-ar+twodotsverticalbelow-ar=e-ar
alefMaksura-ar.fina+twodotsverticalbelow-ar=e-ar.fina
beeh-ar.medi=e-ar.medi
beeh-ar.init=e-ar.init

alefMaksura-ar+threedotsdownbelow-ar=yehThreedotsbelow-ar
alefMaksura-ar.fina+threedotsdownbelow-ar=yehThreedotsbelow-ar.fina
peh-ar.medi=yehThreedotsbelow-ar.medi
peh-ar.init=yehThreedotsbelow-ar.init

alefMaksura-ar+invertedvvowelabove-ar=yehInvertedv-farsi
alefMaksura-ar.fina+invertedvvowelabove-ar=yehInvertedv-farsi.fina
dotlessbeh-ar.medi+invertedvvowelabove-ar=yehInvertedv-farsi.medi
dotlessbeh-ar.init+invertedvvowelabove-ar=yehInvertedv-farsi.init

alefMaksura-ar+twodotshorizontalabove-ar=yehTwodotsabove-farsi
alefMaksura-ar.fina+twodotshorizontalabove-ar=yehTwodotsabove-farsi.fina
teh-ar.medi=yehTwodotsabove-farsi.medi
teh-ar.init=yehTwodotsabove-farsi.init

alefMaksura-ar+threedotsupabove-ar=yehThreedotsabove-farsi
alefMaksura-ar.fina+threedotsupabove-ar=yehThreedotsabove-farsi.fina
theh-ar.medi=yehThreedotsabove-farsi.medi
theh-ar.init=yehThreedotsabove-farsi.init

alefMaksura-ar+twosuperior-persian=yehTwoabove-farsi
alefMaksura-ar.fina+twosuperior-persian=yehTwoabove-farsi.fina
dotlessbeh-ar.medi+twosuperior-persian=yehTwoabove-farsi.medi
dotlessbeh-ar.init+twosuperior-persian=yehTwoabove-farsi.init

alefMaksura-ar+threesuperior-persian=yehThreeabove-farsi
alefMaksura-ar.fina+threesuperior-persian=yehThreeabove-farsi.fina
dotlessbeh-ar.medi+threesuperior-persian=yehThreeabove-farsi.medi
dotlessbeh-ar.init+threesuperior-persian=yehThreeabove-farsi.init

alefMaksura-ar+foursuperior-persian=yehFourbelow-farsi
alefMaksura-ar.fina+foursuperior-persian=yehFourbelow-farsi.fina
dotlessbeh-ar.medi+foursuperior-persian=yehFourbelow-farsi.medi
dotlessbeh-ar.init+foursuperior-persian=yehFourbelow-farsi.init

yehBarree-ar+hamzaabove-ar=yehBarreeHamzaabove-ar
yehBarree-ar.fina+hamzaabove-ar=yehBarreeHamzaabove-ar.fina

yehBarree-ar+twosuperior-ar=yehbarreeTwoabove-ar
yehBarree-ar.fina+twosuperior-ar=yehbarreeTwoabove-ar.fina

yehBarree-ar+threesuperior-ar=yehbarreeThreeabove-ar
yehBarree-ar.fina+threesuperior-ar=yehbarreeThreeabove-ar.fina

dal-ar+dotabove-ar=thal-ar
dal-ar.fina+dotabove-ar=thal-ar.fina

dal-ar+tahabove-ar=ddal-ar
dal-ar.fina+tahabove-ar=ddal-ar.fina

dal-ar=dalRing-ar
dal-ar.fina=dalRing-ar.fina

dal-ar+dotbelow-ar=dalDotbelow-ar
dal-ar.fina+dotbelow-ar=dalDotbelow-ar.fina

dalDotbelow-ar+tahabove-ar=dalDotbelowTah-ar
dalDotbelow-ar.fina+tahabove-ar=dalDotbelowTah-ar.fina

dal-ar+twodotshorizontalabove-ar=dahal-ar
dal-ar.fina+twodotshorizontalabove-ar=dahal-ar.fina

dal-ar+twodotshorizontalbelow-ar=ddahal-ar
dal-ar.fina+twodotshorizontalbelow-ar=ddahal-ar.fina

dal-ar+threedotsupabove-ar=dul-ar
dal-ar.fina+threedotsupabove-ar=dul-ar.fina

dal-ar+threedotsupbelow-ar=dalthreedotsupbelow-ar
dal-ar.fina+threedotsupbelow-ar=dalthreedotsupbelow-ar.fina

dal-ar+fourdotsabove-ar=dalfourdots-ar
dal-ar.fina+fourdotsabove-ar=dalfourdots-ar.fina

ddal-ar+twodotsverticalbelow-ar=daltwodotsverticalbelowtah-ar
ddal-ar.fina+twodotsverticalbelow-ar=daltwodotsverticalbelowtah-ar.fina

dal-ar+invertedvvowelabove-ar=dalInvertedvbelow-ar
dal-ar.fina+invertedvvowelabove-ar=dalInvertedvbelow-ar.fina

Mr. George I think you need to revisit the names of glyphs even fit with the basic glyph