{
.appVersion = "3246";
.formatVersion = 3;
axes = (
{
name = Weight;
tag = wght;
}
);
classes = (
{
automatic = 1;
code = "hamza-ar highhamza-ar alef-ar alef-ar.fina alef-ar.fina.lam alefHamzaabove-ar alefHamzabelow-ar alefMadda-ar alefWasla-ar behDotless-ar behDotless-ar.jalt behDotless-ar.fina behDotless-ar.fina.jalt behDotless-ar.medi behDotless-ar.medi.ain behDotless-ar.medi.dal behDotless-ar.medi.feh behDotless-ar.medi.hah behDotless-ar.medi.heh behDotless-ar.medi.high behDotless-ar.medi.high2 behDotless-ar.medi.meem behDotless-ar.medi.noon behDotless-ar.medi.ragaa behDotless-ar.medi.reh behDotless-ar.medi.sad behDotless-ar.medi.yeh behDotless-ar.init behDotless-ar.init.ain behDotless-ar.init.ascend behDotless-ar.init.dal behDotless-ar.init.feh behDotless-ar.init.hah behDotless-ar.init.heh behDotless-ar.init.meem behDotless-ar.init.ragaa behDotless-ar.init.reh behDotless-ar.init.sad behDotless-ar.init.yeh beh-ar peh-ar teh-ar theh-ar tteh-ar jeem-ar tcheh-ar hah-ar hah-ar.fina hah-ar.medi hah-ar.medi.ain hah-ar.medi.dal hah-ar.medi.feh hah-ar.medi.hah hah-ar.medi.heh hah-ar.medi.heh.ragaa hah-ar.medi.meem hah-ar.medi.ragaa hah-ar.medi.reh hah-ar.medi.sad hah-ar.medi.yeh hah-ar.init hah-ar.init.ain hah-ar.init.dal hah-ar.init.feh hah-ar.init.hah hah-ar.init.heh hah-ar.init.heh.ragaa hah-ar.init.meem hah-ar.init.ragaa hah-ar.init.reh hah-ar.init.sad hah-ar.init.yeh khah-ar dal-ar dal-ar.fina thal-ar ddal-ar dul-ar reh-ar reh-ar.fina zain-ar rreh-ar rehVbelow-ar jeh-ar seen-ar seen-ar.jalt seen-ar.fina seen-ar.fina.jalt seen-ar.medi seen-ar.medi.ain seen-ar.medi.dal seen-ar.medi.feh seen-ar.medi.hah seen-ar.medi.heh seen-ar.medi.meem seen-ar.medi.ragaa seen-ar.medi.reh seen-ar.medi.sad seen-ar.medi.yeh seen-ar.init seen-ar.init.ain seen-ar.init.dal seen-ar.init.feh seen-ar.init.hah seen-ar.init.heh seen-ar.init.meem seen-ar.init.ragaa seen-ar.init.reh seen-ar.init.sad seen-ar.init.yeh sheen-ar sad-ar sad-ar.jalt sad-ar.fina sad-ar.fina.jalt sad-ar.medi sad-ar.medi.ain sad-ar.medi.dal sad-ar.medi.feh sad-ar.medi.hah sad-ar.medi.heh sad-ar.medi.meem sad-ar.medi.postsad sad-ar.medi.qantara sad-ar.medi.ragaa sad-ar.medi.reh sad-ar.medi.sad sad-ar.medi.yeh sad-ar.init sad-ar.init.ain sad-ar.init.dal sad-ar.init.feh sad-ar.init.hah sad-ar.init.heh sad-ar.init.meem sad-ar.init.qantara sad-ar.init.ragaa sad-ar.init.reh sad-ar.init.sad sad-ar.init.yeh dad-ar tah-ar tah-ar.fina tah-ar.medi tah-ar.medi.ain tah-ar.medi.dal tah-ar.medi.feh tah-ar.medi.hah tah-ar.medi.heh tah-ar.medi.kaf tah-ar.medi.meem tah-ar.medi.postsad tah-ar.medi.qantara tah-ar.medi.ragaa tah-ar.medi.reh tah-ar.medi.sad tah-ar.medi.yeh tah-ar.init tah-ar.init.ain tah-ar.init.dal tah-ar.init.feh tah-ar.init.hah tah-ar.init.heh tah-ar.init.kaf tah-ar.init.meem tah-ar.init.qantara tah-ar.init.ragaa tah-ar.init.reh tah-ar.init.sad tah-ar.init.yeh zah-ar ain-ar ain-ar.fina ain-ar.medi ain-ar.medi.ain ain-ar.medi.dal ain-ar.medi.feh ain-ar.medi.hah ain-ar.medi.heh ain-ar.medi.meem ain-ar.medi.ragaa ain-ar.medi.reh ain-ar.medi.sad ain-ar.medi.yeh ain-ar.init ain-ar.init.ain ain-ar.init.dal ain-ar.init.feh ain-ar.init.hah ain-ar.init.heh ain-ar.init.meem ain-ar.init.ragaa ain-ar.init.reh ain-ar.init.sad ain-ar.init.yeh ainThreedots-ar ghain-ar feh-ar veh-ar fehDotless-ar fehDotless-ar.jalt fehDotless-ar.fina fehDotless-ar.fina.jalt fehDotless-ar.medi fehDotless-ar.medi.ain fehDotless-ar.medi.dal fehDotless-ar.medi.feh fehDotless-ar.medi.hah fehDotless-ar.medi.heh fehDotless-ar.medi.meem fehDotless-ar.medi.ragaa fehDotless-ar.medi.reh fehDotless-ar.medi.sad fehDotless-ar.medi.yeh fehDotless-ar.init fehDotless-ar.init.ain fehDotless-ar.init.dal fehDotless-ar.init.feh fehDotless-ar.init.hah fehDotless-ar.init.heh fehDotless-ar.init.meem fehDotless-ar.init.ragaa fehDotless-ar.init.reh fehDotless-ar.init.sad fehDotless-ar.init.yeh qafDotless-ar qafDotless-ar.jalt qafDotless-ar.fina qafDotless-ar.fina.jalt qaf-ar qaf-ar.fina kaf-ar kaf-ar.jalt kaf-ar.fina kaf-ar.fina.jalt kaf-ar.medi kaf-ar.medi.ain kaf-ar.medi.dal kaf-ar.medi.feh kaf-ar.medi.hah kaf-ar.medi.heh kaf-ar.medi.kaf kaf-ar.medi.meem kaf-ar.medi.ragaa kaf-ar.medi.reh kaf-ar.medi.sad kaf-ar.medi.yeh kaf-ar.init kaf-ar.init.ain kaf-ar.init.alef kaf-ar.init.alef.loop kaf-ar.init.dal kaf-ar.init.feh kaf-ar.init.hah kaf-ar.init.heh kaf-ar.init.meem kaf-ar.init.ragaa kaf-ar.init.reh kaf-ar.init.sad kaf-ar.init.yeh keheh-ar keheh-ar.jalt keheh-ar.fina keheh-ar.fina.jalt kehehDotabove-ar gaf-ar kafDotabove-ar lam-ar lam-ar.jalt lam-ar.fina lam-ar.fina.jalt lam-ar.medi lam-ar.medi.ain lam-ar.medi.alef lam-ar.medi.dal lam-ar.medi.feh lam-ar.medi.hah lam-ar.medi.heh lam-ar.medi.kaf lam-ar.medi.meem lam-ar.medi.ragaa lam-ar.medi.reh lam-ar.medi.sad lam-ar.medi.yeh lam-ar.init lam-ar.init.ain lam-ar.init.alef lam-ar.init.dal lam-ar.init.feh lam-ar.init.hah lam-ar.init.heh lam-ar.init.kaf lam-ar.init.meem lam-ar.init.ragaa lam-ar.init.reh lam-ar.init.sad lam-ar.init.yeh lamVabove-ar meem-ar meem-ar.fina meem-ar.medi meem-ar.medi.ain meem-ar.medi.dal meem-ar.medi.feh meem-ar.medi.hah meem-ar.medi.heh meem-ar.medi.meem meem-ar.medi.ragaa meem-ar.medi.reh meem-ar.medi.sad meem-ar.medi.yeh meem-ar.init meem-ar.init.ain meem-ar.init.dal meem-ar.init.feh meem-ar.init.hah meem-ar.init.heh meem-ar.init.meem meem-ar.init.ragaa meem-ar.init.reh meem-ar.init.sad meem-ar.init.yeh noon-ar noon-ar.tail noon-ar.fina noon-ar.fina.tail noonghunna-ar noonghunna-ar.jalt noonghunna-ar.fina rnoon-ar noonThreedotsabove-ar heh-ar heh-ar.fina heh-ar.medi heh-ar.medi.ain heh-ar.medi.dal heh-ar.medi.feh heh-ar.medi.hah heh-ar.medi.heh heh-ar.medi.meem heh-ar.medi.ragaa heh-ar.medi.reh heh-ar.medi.sad heh-ar.medi.yeh heh-ar.init heh-ar.init.ain heh-ar.init.dal heh-ar.init.feh heh-ar.init.hah heh-ar.init.heh heh-ar.init.meem heh-ar.init.ragaa heh-ar.init.reh heh-ar.init.sad heh-ar.init.yeh hehHamzaabove-ar hehgoal-ar hehgoal-ar.fina hehgoal-ar.init hehgoal-ar.init.ain hehgoal-ar.init.dal hehgoal-ar.init.feh hehgoal-ar.init.hah hehgoal-ar.init.heh hehgoal-ar.init.meem hehgoal-ar.init.ragaa hehgoal-ar.init.reh hehgoal-ar.init.sad hehgoal-ar.init.yeh hehDoachashmee-ar hehDoachashmee-ar.fina hehDoachashmee-ar.medi hehDoachashmee-ar.medi.ain hehDoachashmee-ar.medi.dal hehDoachashmee-ar.medi.feh hehDoachashmee-ar.medi.hah hehDoachashmee-ar.medi.heh hehDoachashmee-ar.medi.meem hehDoachashmee-ar.medi.ragaa hehDoachashmee-ar.medi.reh hehDoachashmee-ar.medi.sad hehDoachashmee-ar.medi.yeh tehMarbuta-ar waw-ar waw-ar.fina wawDotabove-ar wawHamzaabove-ar oe-ar alefMaksura-ar alefMaksura-ar.jalt alefMaksura-ar.fina alefMaksura-ar.fina.jalt alefMaksura-ar.fina.yeh alefMaksura-ar.fina.yeh.jalt yeh-ar yehHamzaabove-ar yehVabove-ar yeh-farsi yehbarree-ar yehbarree-ar.fina yehbarreeHamzaabove-ar ae-ar";
name = ArabicLetters;
},
{
code = "behDotless-ar.init
hah-ar.init
seen-ar.init
sad-ar.init
tah-ar.init
ain-ar.init
fehDotless-ar.init
kaf-ar.init
lam-ar.init
meem-ar.init
heh-ar.init
";
name = init;
},
{
code = "behDotless-ar.medi
hah-ar.medi
seen-ar.medi
sad-ar.medi
tah-ar.medi
ain-ar.medi
fehDotless-ar.medi
kaf-ar.medi
lam-ar.medi
meem-ar.medi
hehDoachashmee-ar.medi
";
name = medi;
},
{
code = "behDotless-ar.init
behDotless-ar.medi
hah-ar.init
hah-ar.medi
seen-ar.init
seen-ar.medi
sad-ar.init
sad-ar.medi
tah-ar.init
tah-ar.medi
ain-ar.init
ain-ar.medi
fehDotless-ar.init
fehDotless-ar.medi
kaf-ar.init
kaf-ar.medi
lam-ar.init
lam-ar.medi
meem-ar.init
meem-ar.medi
heh-ar.init
hehDoachashmee-ar.medi
heh-ar.medi
hehgoal-ar.init
";
name = init_medi;
},
{
code = "behDotless-ar.init.ain
behDotless-ar.medi.ain
hah-ar.init.ain
hah-ar.medi.ain
seen-ar.init.ain
seen-ar.medi.ain
sad-ar.init.ain
sad-ar.medi.ain
tah-ar.init.ain
tah-ar.medi.ain
ain-ar.init.ain
ain-ar.medi.ain
fehDotless-ar.init.ain
fehDotless-ar.medi.ain
kaf-ar.init.ain
kaf-ar.medi.ain
lam-ar.init.ain
lam-ar.medi.ain
meem-ar.init.ain
meem-ar.medi.ain
heh-ar.init.ain
hehDoachashmee-ar.medi.ain
heh-ar.medi.ain
hehgoal-ar.init.ain
";
name = init_medi.ain;
},
{
code = "behDotless-ar.init.dal
behDotless-ar.medi.dal
hah-ar.init.dal
hah-ar.medi.dal
seen-ar.init.dal
seen-ar.medi.dal
sad-ar.init.dal
sad-ar.medi.dal
tah-ar.init.dal
tah-ar.medi.dal
ain-ar.init.dal
ain-ar.medi.dal
fehDotless-ar.init.dal
fehDotless-ar.medi.dal
kaf-ar.init.dal
kaf-ar.medi.dal
lam-ar.init.dal
lam-ar.medi.dal
meem-ar.init.dal
meem-ar.medi.dal
heh-ar.init.dal
hehDoachashmee-ar.medi.dal
heh-ar.medi.dal
hehgoal-ar.init.dal
";
name = init_medi.dal;
},
{
code = "behDotless-ar.init.feh
behDotless-ar.medi.feh
hah-ar.init.feh
hah-ar.medi.feh
seen-ar.init.feh
seen-ar.medi.feh
sad-ar.init.feh
sad-ar.medi.feh
tah-ar.init.feh
tah-ar.medi.feh
ain-ar.init.feh
ain-ar.medi.feh
fehDotless-ar.init.feh
fehDotless-ar.medi.feh
kaf-ar.init.feh
kaf-ar.medi.feh
lam-ar.init.feh
lam-ar.medi.feh
meem-ar.init.feh
meem-ar.medi.feh
heh-ar.init.feh
hehDoachashmee-ar.medi.feh
heh-ar.medi.feh
hehgoal-ar.init.feh
";
name = init_medi.feh;
},
{
code = "behDotless-ar.init.hah
behDotless-ar.medi.hah
hah-ar.init.hah
hah-ar.medi.hah
seen-ar.init.hah
seen-ar.medi.hah
sad-ar.init.hah
sad-ar.medi.hah
tah-ar.init.hah
tah-ar.medi.hah
ain-ar.init.hah
ain-ar.medi.hah
fehDotless-ar.init.hah
fehDotless-ar.medi.hah
kaf-ar.init.hah
kaf-ar.medi.hah
lam-ar.init.hah
lam-ar.medi.hah
meem-ar.init.hah
meem-ar.medi.hah
heh-ar.init.hah
hehDoachashmee-ar.medi.hah
heh-ar.medi.hah
hehgoal-ar.init.hah";
name = init_medi.hah;
},
{
code = "behDotless-ar.init.heh
behDotless-ar.medi.heh
hah-ar.init.heh
hah-ar.medi.heh
seen-ar.init.heh
seen-ar.medi.heh
sad-ar.init.heh
sad-ar.medi.heh
tah-ar.init.heh
tah-ar.medi.heh
ain-ar.init.heh
ain-ar.medi.heh
fehDotless-ar.init.heh
fehDotless-ar.medi.heh
kaf-ar.init.heh
kaf-ar.medi.heh
lam-ar.init.heh
lam-ar.medi.heh
meem-ar.init.heh
meem-ar.medi.heh
heh-ar.init.heh
hehDoachashmee-ar.medi.heh
heh-ar.medi.heh
hehgoal-ar.init.heh
";
name = init_medi.heh;
},
{
code = "behDotless-ar.init.meem
behDotless-ar.medi.meem
hah-ar.init.meem
hah-ar.medi.meem
seen-ar.init.meem
seen-ar.medi.meem
sad-ar.init.meem
sad-ar.medi.meem
tah-ar.init.meem
tah-ar.medi.meem
ain-ar.init.meem
ain-ar.medi.meem
fehDotless-ar.init.meem
fehDotless-ar.medi.meem
kaf-ar.init.meem
kaf-ar.medi.meem
lam-ar.init.meem
lam-ar.medi.meem
meem-ar.init.meem
meem-ar.medi.meem
heh-ar.init.meem
hehDoachashmee-ar.medi.meem
heh-ar.medi.meem
hehgoal-ar.init.meem
";
name = init_medi.meem;
},
{
code = "behDotless-ar.init.reh
behDotless-ar.medi.reh
hah-ar.init.reh
hah-ar.medi.reh
seen-ar.init.reh
seen-ar.medi.reh
sad-ar.init.reh
sad-ar.medi.reh
tah-ar.init.reh
tah-ar.medi.reh
ain-ar.init.reh
ain-ar.medi.reh
fehDotless-ar.init.reh
fehDotless-ar.medi.reh
kaf-ar.init.reh
kaf-ar.medi.reh
lam-ar.init.reh
lam-ar.medi.reh
meem-ar.init.reh
meem-ar.medi.reh
heh-ar.init.reh
hehDoachashmee-ar.medi.reh
heh-ar.medi.reh
hehgoal-ar.init.reh
";
name = init_medi.reh;
},
{
code = "behDotless-ar.init.sad
behDotless-ar.medi.sad
hah-ar.init.sad
hah-ar.medi.sad
seen-ar.init.sad
seen-ar.medi.sad
sad-ar.init.qantara
sad-ar.medi.qantara
tah-ar.init.qantara
tah-ar.medi.qantara
ain-ar.init.sad
ain-ar.medi.sad
fehDotless-ar.init.sad
fehDotless-ar.medi.sad
kaf-ar.init.sad
kaf-ar.medi.sad
lam-ar.init.sad
lam-ar.medi.sad
meem-ar.init.sad
meem-ar.medi.sad
heh-ar.init.sad
hehDoachashmee-ar.medi.sad
heh-ar.medi.sad
hehgoal-ar.init.sad
";
name = init_medi.sad;
},
{
code = "behDotless-ar.init.yeh
behDotless-ar.medi.yeh
hah-ar.init.yeh
hah-ar.medi.yeh
seen-ar.init.yeh
seen-ar.medi.yeh
sad-ar.init.yeh
sad-ar.medi.yeh
tah-ar.init.yeh
tah-ar.medi.yeh
ain-ar.init.yeh
ain-ar.medi.yeh
fehDotless-ar.init.yeh
fehDotless-ar.medi.yeh
kaf-ar.init.yeh
kaf-ar.medi.yeh
lam-ar.init.yeh
lam-ar.medi.yeh
meem-ar.init.yeh
meem-ar.medi.yeh
heh-ar.init.yeh
hehDoachashmee-ar.medi.yeh
heh-ar.medi.yeh
hehgoal-ar.init.yeh
";
name = init_medi.yeh;
},
{
code = "behDotless-ar.init.ragaa
behDotless-ar.medi.ragaa
hah-ar.init.ragaa
hah-ar.medi.ragaa
seen-ar.init.ragaa
seen-ar.medi.ragaa
sad-ar.init.ragaa
sad-ar.medi.ragaa
tah-ar.init.ragaa
tah-ar.medi.ragaa
ain-ar.init.ragaa
ain-ar.medi.ragaa
fehDotless-ar.init.ragaa
fehDotless-ar.medi.ragaa
kaf-ar.init.ragaa
kaf-ar.medi.ragaa
lam-ar.init.ragaa
lam-ar.medi.ragaa
meem-ar.init.ragaa
meem-ar.medi.ragaa
heh-ar.init.ragaa
hehDoachashmee-ar.medi.ragaa
heh-ar.medi.ragaa
hehgoal-ar.init.ragaa
";
name = init_medi.ragaa;
}
);
customParameters = (
{
name = hheaAscender;
value = 1221;
},
{
name = hheaDescender;
value = -244;
},
{
name = hheaLineGap;
value = 98;
},
{
name = typoAscender;
value = 1221;
},
{
name = typoDescender;
value = -244;
},
{
name = typoLineGap;
value = 98;
},
{
name = winAscent;
value = 1221;
},
{
name = winDescent;
value = 439;
},
{
name = underlinePosition;
value = -32;
},
{
name = underlineThickness;
value = 73;
},
{
name = strikeoutSize;
value = 49;
},
{
name = strikeoutPosition;
value = 258;
},
{
name = subscriptXSize;
value = 650;
},
{
name = subscriptYSize;
value = 700;
},
{
name = subscriptXOffset;
value = 47;
},
{
name = subscriptYOffset;
value = 140;
},
{
name = superscriptXSize;
value = 650;
},
{
name = superscriptYSize;
value = 700;
},
{
name = superscriptXOffset;
value = -164;
},
{
name = superscriptYOffset;
value = 480;
},
{
name = fsType;
value = (
);
},
{
name = "gasp Table";
value = {
"65535" = 2;
};
},
{
name = "Use Typo Metrics";
value = 1;
},
{
name = "Enforce Compatibility Check";
value = 0;
},
{
name = "Write lastChange";
value = 0;
},
{
name = "Write DisplayStrings";
value = 0;
},
{
name = "Use Line Breaks";
value = 1;
},
{
name = "Propagate Anchors";
value = 0;
}
);
date = "2015-03-07 21:19:41 +0000";
familyName = "Aref Ruqaa";
featurePrefixes = (
{
code = "languagesystem arab dflt;
#languagesystem arab ARA;
#languagesystem arab FAR;
languagesystem arab URD;
languagesystem arab KSH;
languagesystem arab SND;
languagesystem arab MLY;

feature ccmp {
    sub alefMadda-ar            by alef-ar madda-ar;
    sub alefHamzaabove-ar       by alef-ar hamzaabove-ar;
    sub wawHamzaabove-ar        by waw-ar hamzaabove-ar;
    sub alefHamzabelow-ar       by alef-ar hamzabelow-ar;
    sub yehHamzaabove-ar        by alefMaksura-ar hamzaabove-ar;
    sub beh-ar                  by behDotless-ar dotbelow-ar;
    sub teh-ar                  by behDotless-ar twodotshorizontalabove-ar;
    sub theh-ar                 by behDotless-ar threedotsupabove-ar;
    sub jeem-ar                 by hah-ar dotbelow-ar;
    sub khah-ar                 by hah-ar dotabove-ar;
    sub thal-ar                 by dal-ar dotabove-ar;
    sub zain-ar                 by reh-ar dotabove-ar;
    sub sheen-ar                by seen-ar threedotsupabove-ar;
    sub dad-ar                  by sad-ar dotabove-ar;
    sub zah-ar                  by tah-ar dotabove-ar;
    sub ghain-ar                by ain-ar dotabove-ar;
    sub feh-ar                  by fehDotless-ar dotabove-ar;
    sub yeh-ar                  by alefMaksura-ar twodotshorizontalbelow-ar;
    sub alefWasla-ar            by alef-ar wasla-ar;
    sub tteh-ar                 by behDotless-ar tahabove-ar;
    sub peh-ar                  by behDotless-ar threedotsdownbelow-ar;
    sub tcheh-ar                by hah-ar threedotsdownbelow-ar;
    sub ddal-ar                 by dal-ar tahabove-ar;
    sub dul-ar                  by dal-ar threedotsupabove-ar;
    sub rreh-ar                 by reh-ar tahabove-ar;
    sub rehVbelow-ar            by reh-ar vbelow-ar;
    sub jeh-ar                  by reh-ar threedotsupabove-ar;
    sub ainThreedots-ar         by ain-ar threedotsupabove-ar;
    sub veh-ar                  by fehDotless-ar threedotsupabove-ar;
    sub kafDotabove-ar          by kaf-ar dotabove-ar;
    sub ng-ar                   by kaf-ar threedotsupabove-ar;
    sub gaf-ar                  by keheh-ar gafsarkashabove-ar;
    sub lamVabove-ar            by lam-ar vabove-ar;
    sub rnoon-ar                by noonghunna-ar tahabove-ar;
    sub tehMarbuta-ar           by ae-ar twodotshorizontalabove-ar;
    sub hehHamzaabove-ar        by heh-ar hamzaabove-ar;
    sub oe-ar                   by waw-ar vabove-ar;
    sub yehVabove-ar            by yeh-farsi vabove-ar;
    sub wawDotabove-ar          by waw-ar dotabove-ar;
    sub yehbarreeHamzaabove-ar  by yehbarree-ar hamzaabove-ar;
    sub kehehDotabove-ar        by keheh-ar dotabove-ar;
} ccmp;

feature isol {
    sub noonThreedotsabove-ar   by noonghunna-ar threedotsupabove-ar;
    sub hehgoal-ar              by heh-ar;
    sub yeh-farsi               by alefMaksura-ar;
} isol;

feature init {
    sub hah-ar                  by hah-ar.init;
    sub seen-ar                 by seen-ar.init;
    sub sad-ar                  by sad-ar.init;
    sub tah-ar                  by tah-ar.init;
    sub ain-ar                  by ain-ar.init;
    sub qaf-ar                  by fehDotless-ar.init twodotshorizontalabove-ar;
    sub kaf-ar                  by kaf-ar.init;
    sub lam-ar                  by lam-ar.init;
    sub meem-ar                 by meem-ar.init;
    sub noon-ar                 by behDotless-ar.init dotabove-ar;
    sub heh-ar                  by heh-ar.init;
    sub alefMaksura-ar          by behDotless-ar.init;
    sub behDotless-ar           by behDotless-ar.init;
    sub qafDotless-ar           by fehDotless-ar.init;
    sub fehDotless-ar           by fehDotless-ar.init;
    sub keheh-ar                by kaf-ar.init;
    sub noonghunna-ar           by behDotless-ar.init;
    sub noonThreedotsabove-ar   by behDotless-ar.init threedotsdownbelow-ar;
    sub hehDoachashmee-ar       by heh-ar.init;
    sub hehgoal-ar              by hehgoal-ar.init;
    sub yeh-farsi               by behDotless-ar.init twodotshorizontalbelow-ar;
} init;

feature medi {
    sub hah-ar                  by hah-ar.medi;
    sub seen-ar                 by seen-ar.medi;
    sub sad-ar                  by sad-ar.medi;
    sub tah-ar                  by tah-ar.medi;
    sub ain-ar                  by ain-ar.medi;
    sub qaf-ar                  by fehDotless-ar.medi twodotshorizontalabove-ar;
    sub kaf-ar                  by kaf-ar.medi;
    sub lam-ar                  by lam-ar.medi;
    sub meem-ar                 by meem-ar.medi;
    sub noon-ar                 by behDotless-ar.medi dotabove-ar;
    sub heh-ar                  by heh-ar.medi;
    sub alefMaksura-ar          by behDotless-ar.medi;
    sub behDotless-ar           by behDotless-ar.medi;
    sub qafDotless-ar           by fehDotless-ar.medi;
    sub fehDotless-ar           by fehDotless-ar.medi;
    sub keheh-ar                by kaf-ar.medi;
    sub noonghunna-ar           by behDotless-ar.medi;
    sub noonThreedotsabove-ar   by behDotless-ar.medi threedotsdownbelow-ar;
    sub hehDoachashmee-ar       by hehDoachashmee-ar.medi;
    sub hehgoal-ar              by heh-ar.medi;
    sub yeh-farsi               by behDotless-ar.medi twodotshorizontalbelow-ar;
} medi;

feature fina {
    sub alef-ar                 by alef-ar.fina;
    sub hah-ar                  by hah-ar.fina;
    sub dal-ar                  by dal-ar.fina;
    sub reh-ar                  by reh-ar.fina;
    sub seen-ar                 by seen-ar.fina;
    sub sad-ar                  by sad-ar.fina;
    sub tah-ar                  by tah-ar.fina;
    sub ain-ar                  by ain-ar.fina;
    sub qaf-ar                  by qaf-ar.fina;
    sub kaf-ar                  by kaf-ar.fina;
    sub lam-ar                  by lam-ar.fina;
    sub meem-ar                 by meem-ar.fina;
    sub noon-ar                 by noon-ar.fina;
    sub heh-ar                  by heh-ar.fina;
    sub ae-ar                   by heh-ar.fina;
    sub waw-ar                  by waw-ar.fina;
    sub alefMaksura-ar          by alefMaksura-ar.fina;
    sub behDotless-ar           by behDotless-ar.fina;
    sub qafDotless-ar           by qafDotless-ar.fina;
    sub fehDotless-ar           by fehDotless-ar.fina;
    sub keheh-ar                by keheh-ar.fina;
    sub noonghunna-ar           by noonghunna-ar.fina;
    sub noonThreedotsabove-ar   by noonghunna-ar.fina threedotsupabove-ar;
    sub hehDoachashmee-ar       by hehDoachashmee-ar.fina;
    sub hehgoal-ar              by hehgoal-ar.fina;
    sub yeh-farsi               by alefMaksura-ar.fina;
    sub yehbarree-ar            by yehbarree-ar.fina;
} fina;

feature locl {
  script arab;

  language URD  exclude_dflt;
    sub dammainverted-ar by dammainverted-ar.urd;
    sub four-persian by four-persian.urd;
    sub six-persian by six-ar;
    sub seven-persian by seven-persian.urd;

  language KSH  exclude_dflt;
    sub four-persian by four-persian.urd;
    sub six-persian by six-ar;
    sub seven-persian by seven-persian.urd;

  language SND  exclude_dflt;
    sub six-persian by six-ar;
    sub seven-persian by seven-persian.urd;

  language MLY  exclude_dflt;
    sub comma-ar by comma-ar.alt;
    sub semicolon-ar by semicolon-ar.alt;
} locl;

feature rlig {
  lookupflag IgnoreMarks;
    ignore sub @ArabicLetters heh-ar';
    sub heh-ar' by hehDoachashmee-ar;
} rlig;

@context_hah = [hah-ar.fina hah-ar.medi hah-ar.medi.hah hah-ar.medi.dal hah-ar.medi.reh
                hah-ar.medi.sad hah-ar.medi.ain hah-ar.medi.feh hah-ar.medi.meem hah-ar.medi.heh
                hah-ar.medi.yeh hah-ar.medi.ragaa];
lookup rlig_hah {
  lookupflag IgnoreMarks;
    sub @init_medi' @context_hah by @init_medi.hah;
} rlig_hah;

lookup rlig_dal {
  lookupflag IgnoreMarks;
    sub @init_medi' [dal-ar.fina] by @init_medi.dal;
} rlig_dal;

lookup rlig_reh {
  lookupflag IgnoreMarks;
    sub @init_medi' [reh-ar.fina] by @init_medi.reh;
} rlig_reh;

@context_sad = [sad-ar.fina sad-ar.medi tah-ar.fina tah-ar.medi sad-ar.medi.hah tah-ar.medi.hah
                sad-ar.medi.dal tah-ar.medi.dal sad-ar.medi.reh tah-ar.medi.reh sad-ar.medi.qantara
                tah-ar.medi.qantara sad-ar.medi.ain tah-ar.medi.ain sad-ar.medi.feh tah-ar.medi.feh
                sad-ar.medi.meem tah-ar.medi.meem sad-ar.medi.heh tah-ar.medi.heh sad-ar.medi.yeh
                tah-ar.medi.yeh sad-ar.fina.jalt tah-ar.medi.kaf];
lookup rlig_sad {
  lookupflag IgnoreMarks;
    sub @init_medi' @context_sad by @init_medi.sad;
} rlig_sad;

@context_ain = [ain-ar.fina ain-ar.medi ain-ar.medi.hah ain-ar.medi.dal ain-ar.medi.reh
                ain-ar.medi.sad ain-ar.medi.ain ain-ar.medi.feh ain-ar.medi.meem ain-ar.medi.heh
                ain-ar.medi.yeh ain-ar.medi.ragaa];
lookup rlig_ain {
  lookupflag IgnoreMarks;
    sub @init_medi' @context_ain by @init_medi.ain;
} rlig_ain;

@context_feh = [fehDotless-ar.fina fehDotless-ar.medi fehDotless-ar.medi.hah fehDotless-ar.medi.dal fehDotless-ar.medi.reh
                fehDotless-ar.medi.sad fehDotless-ar.medi.ain fehDotless-ar.medi.feh fehDotless-ar.medi.meem fehDotless-ar.medi.heh
                fehDotless-ar.medi.yeh fehDotless-ar.fina.jalt qafDotless-ar.fina.jalt fehDotless-ar.medi.ragaa];
lookup rlig_feh {
  lookupflag IgnoreMarks;
    sub @init_medi' @context_feh by @init_medi.feh;
} rlig_feh;

lookup rlig_heh_2 {
    lookupflag IgnoreMarks;
    sub heh-ar.medi heh-ar.medi' heh-ar.medi by hehDoachashmee-ar.medi;
    sub heh-ar.medi' heh-ar.medi heh-ar.fina by hehDoachashmee-ar.medi;
} rlig_heh_2;

@context_meem = [meem-ar.fina meem-ar.medi meem-ar.medi.hah meem-ar.medi.dal meem-ar.medi.reh
                 meem-ar.medi.sad meem-ar.medi.ain meem-ar.medi.feh meem-ar.medi.meem meem-ar.medi.heh
                 meem-ar.medi.yeh meem-ar.medi.ragaa
                 hehDoachashmee-ar.medi hehDoachashmee-ar.fina hehDoachashmee-ar.medi.hah hehDoachashmee-ar.medi.dal hehDoachashmee-ar.medi.reh
                 hehDoachashmee-ar.medi.sad hehDoachashmee-ar.medi.ain hehDoachashmee-ar.medi.feh hehDoachashmee-ar.medi.meem hehDoachashmee-ar.medi.heh
                 hehDoachashmee-ar.medi.yeh hehDoachashmee-ar.medi.ragaa];
lookup rlig_meem_heh {
  lookupflag IgnoreMarks;
    sub @init_medi' @context_meem by @init_medi.meem;
} rlig_meem_heh;

@context_heh = [heh-ar.medi heh-ar.medi.hah heh-ar.medi.dal heh-ar.medi.reh heh-ar.medi.sad
                heh-ar.medi.ain heh-ar.medi.feh heh-ar.medi.meem heh-ar.medi.heh heh-ar.medi.yeh];
lookup rlig_heh_1 {
    lookupflag IgnoreMarks;
    sub behDotless-ar.init' @context_heh by behDotless-ar.init.heh;
    sub hah-ar.init' @context_heh by hah-ar.init.heh;
    sub seen-ar.init' @context_heh by seen-ar.init.heh;
    sub sad-ar.init' @context_heh by sad-ar.init.heh;
    sub tah-ar.init' @context_heh by tah-ar.init.heh;
    sub ain-ar.init' @context_heh by ain-ar.init.heh;
    sub fehDotless-ar.init' @context_heh by fehDotless-ar.init.heh;
    sub kaf-ar.init' @context_heh by kaf-ar.init.heh;
    sub lam-ar.init' @context_heh by lam-ar.init.heh;
    sub meem-ar.init' @context_heh by meem-ar.init.heh;
    sub heh-ar.init' @context_heh by heh-ar.init.heh;
    sub hehgoal-ar.init' @context_heh by hehgoal-ar.init.heh;
    sub behDotless-ar.medi' @context_heh by behDotless-ar.medi.heh;
    sub hah-ar.medi' @context_heh by hah-ar.medi.heh;
    sub seen-ar.medi' @context_heh by seen-ar.medi.heh;
    sub sad-ar.medi' @context_heh by sad-ar.medi.heh;
    sub tah-ar.medi' @context_heh by tah-ar.medi.heh;
    sub ain-ar.medi' @context_heh by ain-ar.medi.heh;
    sub fehDotless-ar.medi' @context_heh by fehDotless-ar.medi.heh;
    sub kaf-ar.medi' @context_heh by kaf-ar.medi.heh;
    sub lam-ar.medi' @context_heh by lam-ar.medi.heh;
    sub meem-ar.medi' @context_heh by meem-ar.medi.heh;
    sub hehDoachashmee-ar.medi' @context_heh by hehDoachashmee-ar.medi.heh;
    sub heh-ar.medi' @context_heh by heh-ar.medi.heh;
} rlig_heh_1;

lookup rlig_heh_3 {
    lookupflag IgnoreMarks;
    sub heh-ar.medi.meem hehDoachashmee-ar.medi.meem' by hehDoachashmee-ar.medi.heh;
    sub heh-ar.medi.heh' hehDoachashmee-ar.medi.heh by heh-ar.medi.meem;
    sub heh-ar.init.heh' hehDoachashmee-ar.medi.heh by heh-ar.init.hah;
    sub hehDoachashmee-ar.medi.heh heh-ar.medi.heh' hehDoachashmee-ar.medi by heh-ar.medi.meem;
    sub hehDoachashmee-ar.medi.heh heh-ar.init.heh' hehDoachashmee-ar.medi by heh-ar.init.hah;
} rlig_heh_3;

lookup rlig_heh_4 {
    lookupflag IgnoreMarks;
    sub hehDoachashmee-ar.medi.heh hehDoachashmee-ar.medi.heh heh-ar.medi' by hehDoachashmee-ar.medi;
} rlig_heh_4;

lookup rlig_heh_5 {
    lookupflag IgnoreMarks;
    sub hehDoachashmee-ar.medi.heh hehDoachashmee-ar.medi.heh' hehDoachashmee-ar.medi by heh-ar.medi.meem;
} rlig_heh_5;

lookup rlig_yeh {
  lookupflag IgnoreMarks;
    sub @init_medi' [alefMaksura-ar.fina] by @init_medi.yeh;
} rlig_yeh;

@context_yeh_by_yeh = [behDotless-ar.init.yeh fehDotless-ar.init.yeh kaf-ar.init.yeh lam-ar.init.yeh];
lookup rlig_yeh_by_yeh {
  lookupflag IgnoreMarks;
    sub @context_yeh_by_yeh [alefMaksura-ar.fina]' by [alefMaksura-ar.fina.yeh];
} rlig_yeh_by_yeh;

@context_kaf_alef = [alef-ar.fina kaf-ar.fina kaf-ar.medi lam-ar.fina lam-ar.medi lam-ar.medi.alef
                     keheh-ar.fina kaf-ar.medi.hah lam-ar.medi.hah kaf-ar.medi.dal lam-ar.medi.dal
                     kaf-ar.medi.reh lam-ar.medi.reh kaf-ar.medi.sad lam-ar.medi.sad kaf-ar.medi.ain
                     lam-ar.medi.ain kaf-ar.medi.feh lam-ar.medi.feh kaf-ar.medi.meem lam-ar.medi.meem
                     kaf-ar.medi.heh lam-ar.medi.heh kaf-ar.medi.yeh lam-ar.medi.yeh lam-ar.fina.jalt
                     keheh-ar.fina.jalt kaf-ar.medi.ragaa lam-ar.medi.ragaa];
lookup rlig_kaf_alef {
  lookupflag IgnoreMarks;
    sub [kaf-ar.init]' @context_kaf_alef by [kaf-ar.init.alef];
} rlig_kaf_alef;

lookup rlig_kaf_kaf_kaf {
  lookupflag IgnoreMarks;
    sub [kaf-ar.init.alef] [kaf-ar.init.alef]' @context_kaf_alef by [kaf-ar.medi];
} rlig_kaf_kaf_kaf;

lookup rlig_kaf_init_medi {
  lookupflag IgnoreMarks;
    sub [@init @medi] [kaf-ar.medi]' @context_kaf_alef by [kaf-ar.init.alef];
} rlig_kaf_init_medi;

lookup rlig_lamalef {
  lookupflag IgnoreMarks;
    sub [lam-ar.init lam-ar.medi]' [alef-ar.fina] by [lam-ar.init.alef lam-ar.medi.alef];
} rlig_lamalef;

lookup rlig_alef {
  lookupflag IgnoreMarks;
    sub [lam-ar.init.alef lam-ar.medi.alef] [alef-ar.fina]' by [alef-ar.fina.lam];
} rlig_alef;

lookup rlig_beh_1 {
  lookupflag IgnoreMarks;
    sub [behDotless-ar.medi]' [noon-ar.fina noonghunna-ar.fina noonghunna-ar.jalt] by [behDotless-ar.medi.noon];
} rlig_beh_1;

@context_beh_2 = [alef-ar.fina behDotless-ar.fina behDotless-ar.medi kaf-ar.fina kaf-ar.medi
		  lam-ar.fina lam-ar.medi noon-ar.fina lam-ar.medi.alef keheh-ar.fina
		  noonghunna-ar.fina behDotless-ar.medi.hah kaf-ar.medi.hah lam-ar.medi.hah
		  behDotless-ar.medi.dal kaf-ar.medi.dal lam-ar.medi.dal behDotless-ar.medi.reh
		  kaf-ar.medi.reh lam-ar.medi.reh behDotless-ar.medi.sad kaf-ar.medi.sad
		  lam-ar.medi.sad behDotless-ar.medi.ain kaf-ar.medi.ain lam-ar.medi.ain
		  behDotless-ar.medi.feh kaf-ar.medi.feh lam-ar.medi.feh behDotless-ar.medi.meem
		  kaf-ar.medi.meem lam-ar.medi.meem behDotless-ar.medi.heh kaf-ar.medi.heh
		  lam-ar.medi.heh behDotless-ar.medi.yeh kaf-ar.medi.yeh lam-ar.medi.yeh
		  kaf-ar.init.alef behDotless-ar.fina.jalt lam-ar.fina.jalt
                  keheh-ar.fina.jalt];
lookup rlig_beh_2 {
  lookupflag IgnoreMarks;
    sub [behDotless-ar.init]' @context_beh_2 by [behDotless-ar.init.ascend];
} rlig_beh_2;

lookup rlig_beh_3 {
  lookupflag IgnoreMarks;
    sub [behDotless-ar.init.ascend] [behDotless-ar.medi]' [behDotless-ar.medi behDotless-ar.fina behDotless-ar.fina.jalt] by [behDotless-ar.medi.high];
} rlig_beh_3;

lookup high_beh {
  lookupflag 0;
    sub behDotless-ar.medi by behDotless-ar.medi.high2;
} high_beh;

@kantara  = [behDotless-ar.medi.hah behDotless-ar.medi.reh behDotless-ar.medi.sad behDotless-ar.medi.ain behDotless-ar.medi.feh
             behDotless-ar.medi.meem behDotless-ar.medi.heh behDotless-ar.medi.yeh];
@seen_all = [seen-ar.fina seen-ar.medi seen-ar.medi.hah seen-ar.medi.dal seen-ar.medi.reh
             seen-ar.medi.sad seen-ar.medi.ain seen-ar.medi.feh seen-ar.medi.meem seen-ar.medi.heh
             seen-ar.medi.yeh seen-ar.fina.jalt seen-ar.medi.ragaa];
lookup rlig_beh_4 {
  lookupflag IgnoreMarks;
    sub [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi];
    sub [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi.dal];
    sub [behDotless-ar.init.ascend] [behDotless-ar.medi.high] [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh;
    sub [behDotless-ar.init.ascend] [behDotless-ar.medi.high] [behDotless-ar.medi] [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh;
    sub [behDotless-ar.medi]'lookup high_beh @seen_all;
    sub [behDotless-ar.init.ascend] [behDotless-ar.medi]'lookup high_beh @kantara;
    sub [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh @kantara;
    sub [seen-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.fina];
    sub [sad-ar.init] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi];
    sub [sad-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi];
} rlig_beh_4;

lookup rlig_beh_5 {
  lookupflag IgnoreMarks;
    sub [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi];
    sub [behDotless-ar.init.ascend] [behDotless-ar.medi.high] [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh;
    sub [behDotless-ar.init.ascend] [behDotless-ar.medi.high] [behDotless-ar.medi] [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh;
    sub [behDotless-ar.medi]'lookup high_beh @seen_all;
    sub [behDotless-ar.init.ascend] [behDotless-ar.medi]'lookup high_beh @kantara;
    sub [behDotless-ar.medi] [behDotless-ar.medi]'lookup high_beh @kantara;
    sub [seen-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.fina];
    sub [sad-ar.init] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi];
    sub [sad-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi];
    sub [seen-ar.medi] [behDotless-ar.medi]'lookup high_beh [behDotless-ar.medi.sad];
} rlig_beh_5;

lookup rlig_beh_6 {
  lookupflag IgnoreMarks;
    sub [behDotless-ar.medi.high2] [behDotless-ar.medi.high2]' by [behDotless-ar.medi];
} rlig_beh_6;

lookup kaf_lam_tah {
  lookupflag 0;
    sub tah-ar.init by tah-ar.init.kaf;
    sub tah-ar.medi by tah-ar.medi.kaf;
    sub kaf-ar.medi by kaf-ar.medi.kaf;
    sub lam-ar.init by lam-ar.init.kaf;
    sub lam-ar.medi by lam-ar.medi.kaf;
} kaf_lam_tah;

lookup rlig_kaf_lam_tah {
  lookupflag IgnoreMarks;
    sub [tah-ar.init tah-ar.medi kaf-ar.medi lam-ar.init lam-ar.medi]'lookup kaf_lam_tah  [kaf-ar.init.alef];
    sub [kaf-ar.init.alef] [tah-ar.init tah-ar.medi kaf-ar.medi lam-ar.init lam-ar.medi]'lookup kaf_lam_tah  [kaf-ar.init.alef];
} rlig_kaf_lam_tah;

lookup rlig_yeh_ragaa {
  lookupflag IgnoreMarks;
    sub @init_medi' [yehbarree-ar.fina] by @init_medi.ragaa;
    sub [behDotless-ar.medi.high2]' [yehbarree-ar.fina] by [behDotless-ar.medi.ragaa];
} rlig_yeh_ragaa;

lookup rlig_hah_yeh_ragaa {
  lookupflag IgnoreMarks;
    sub [hah-ar.init.heh hah-ar.medi.heh]' [heh-ar.medi.ragaa] by [hah-ar.init.heh.ragaa hah-ar.medi.heh.ragaa];
} rlig_hah_yeh_ragaa;

lookup rlig_sad_ragaa {
  lookupflag IgnoreMarks;
    sub @init_medi.sad' [sad-ar.medi.ragaa tah-ar.medi.ragaa] by @init_medi;
} rlig_sad_ragaa;

lookup rlig_looped_kaf_1 {
  lookupflag IgnoreMarks;
    sub [fehDotless-ar.init] [kaf-ar.init.alef]' by [kaf-ar.init.alef.loop];
    sub [lam-ar.init.meem] meem-ar.medi [kaf-ar.init.alef]' by [kaf-ar.init.alef.loop];
} rlig_looped_kaf_1;

@marks_looped_kaf = [dotabove-ar twodotshorizontalbelow-ar threedotsupabove-ar];
lookup rlig_looped_kaf_2 {
  lookupflag UseMarkFilteringSet @marks_looped_kaf;
    sub ain-ar.init @marks_looped_kaf kaf-ar.init.alef' by kaf-ar.init.alef.loop;
} rlig_looped_kaf_2;

lookup rlig_postsad {
  lookupflag IgnoreMarks;
    sub @init_medi.sad [sad-ar.medi tah-ar.medi]' by [sad-ar.medi.postsad tah-ar.medi.postsad];
} rlig_postsad;

lookup rlig_alefabove {
  sub space' alefabove-ar' by alefabove-ar.isol;
  sub kashida-ar' alefabove-ar' by alefabove-ar.medi;
} rlig_alefabove;

lookup rlig_color {
  lookupflag IgnoreMarks;
    sub [meem-ar.init meem-ar.medi]'
        [alef-ar.fina
         behDotless-ar.medi behDotless-ar.medi.ain behDotless-ar.medi.dal behDotless-ar.medi.feh]
     by [meem-ar.init.altC meem-ar.medi.altC];
} rlig_color;


feature rlig {
    lookup rlig_hah;
    lookup rlig_dal;
    lookup rlig_reh;
    lookup rlig_sad;
    lookup rlig_ain;
    lookup rlig_feh;
    lookup rlig_meem_heh;
    lookup rlig_heh_1;
    lookup rlig_heh_2;
    lookup rlig_heh_3;
    lookup rlig_heh_4;
    lookup rlig_heh_5;
    lookup rlig_yeh;
    lookup rlig_yeh_by_yeh;
    lookup rlig_kaf_alef;
    lookup rlig_kaf_kaf_kaf;
    lookup rlig_kaf_init_medi;
    lookup rlig_lamalef;
    lookup rlig_alef;
    lookup rlig_beh_1;
    lookup rlig_beh_2;
    lookup rlig_beh_3;
    lookup rlig_beh_4;
    lookup rlig_beh_5;
    lookup rlig_beh_6;
    lookup rlig_kaf_lam_tah;
    lookup rlig_yeh_ragaa;
    lookup rlig_hah_yeh_ragaa;
    lookup rlig_sad_ragaa;
    lookup rlig_looped_kaf_1;
    lookup rlig_looped_kaf_2;
    lookup rlig_postsad;
    lookup rlig_alefabove;
    lookup rlig_color;
} rlig;

feature jalt {
  lookupflag IgnoreMarks;
    sub behDotless-ar by behDotless-ar.jalt;
    sub behDotless-ar.fina by behDotless-ar.fina.jalt;
    sub seen-ar by seen-ar.jalt;
    sub seen-ar.fina by seen-ar.fina.jalt;
    sub sad-ar by sad-ar.jalt;
    sub sad-ar.fina by sad-ar.fina.jalt;
    sub fehDotless-ar by fehDotless-ar.jalt;
    sub fehDotless-ar.fina by fehDotless-ar.fina.jalt;
    sub qafDotless-ar by qafDotless-ar.jalt;
    sub qafDotless-ar.fina by qafDotless-ar.fina.jalt;
    sub qaf-ar by qafDotless-ar.jalt twodotshorizontalabove-ar;
    sub qaf-ar.fina by qafDotless-ar.fina.jalt twodotshorizontalabove-ar;
    sub kaf-ar by kaf-ar.jalt;
    sub kaf-ar.fina by kaf-ar.fina.jalt;
    sub lam-ar by lam-ar.jalt;
    sub lam-ar.fina by lam-ar.fina.jalt;
    sub noonghunna-ar by noonghunna-ar.jalt;
    sub noonghunna-ar.fina by noonghunna-ar.jalt;
    sub noon-ar by noonghunna-ar.jalt dotabove-ar;
    sub noon-ar.fina by noonghunna-ar.jalt dotabove-ar;
    sub alefMaksura-ar by alefMaksura-ar.jalt;
    sub alefMaksura-ar.fina by alefMaksura-ar.fina.jalt;
    sub keheh-ar by keheh-ar.jalt;
    sub keheh-ar.fina by keheh-ar.fina.jalt;
    sub alefMaksura-ar.fina.yeh by alefMaksura-ar.fina.yeh.jalt;
} jalt;

feature ss01 {
  featureNames {
    name \"Looped medial Heh\";
  };

  lookupflag IgnoreMarks;
    sub seen-ar.init by seen-ar.medi;
    sub heh-ar.medi by hehDoachashmee-ar.medi;
    sub heh-ar.medi.hah by hehDoachashmee-ar.medi.hah;
    sub heh-ar.medi.dal by hehDoachashmee-ar.medi.dal;
    sub heh-ar.medi.reh by hehDoachashmee-ar.medi.reh;
    sub heh-ar.medi.sad by hehDoachashmee-ar.medi.sad;
    sub heh-ar.medi.ain by hehDoachashmee-ar.medi.ain;
    sub heh-ar.medi.feh by hehDoachashmee-ar.medi.feh;
    sub heh-ar.medi.meem by hehDoachashmee-ar.medi.meem;
    sub behDotless-ar.init.heh by behDotless-ar.init.meem;
    sub hah-ar.init.heh by hah-ar.init.meem;
    sub seen-ar.init.heh by seen-ar.init.meem;
    sub sad-ar.init.heh by sad-ar.init.meem;
    sub tah-ar.init.heh by tah-ar.init.meem;
    sub ain-ar.init.heh by ain-ar.init.meem;
    sub fehDotless-ar.init.heh by fehDotless-ar.init.meem;
    sub kaf-ar.init.heh by kaf-ar.init.meem;
    sub lam-ar.init.heh by lam-ar.init.meem;
    sub meem-ar.init.heh by meem-ar.init.meem;
    sub heh-ar.init.heh by heh-ar.init.meem;
    sub hehgoal-ar.init.heh by hehgoal-ar.init.meem;
    sub behDotless-ar.medi.heh by behDotless-ar.medi.meem;
    sub hah-ar.medi.heh by hah-ar.medi.meem;
    sub seen-ar.medi.heh by seen-ar.medi.meem;
    sub sad-ar.medi.heh by sad-ar.medi.meem;
    sub tah-ar.medi.heh by tah-ar.medi.meem;
    sub ain-ar.medi.heh by ain-ar.medi.meem;
    sub fehDotless-ar.medi.heh by fehDotless-ar.medi.meem;
    sub kaf-ar.medi.heh by kaf-ar.medi.meem;
    sub lam-ar.medi.heh by lam-ar.medi.meem;
    sub meem-ar.medi.heh by meem-ar.medi.meem;
    sub hehDoachashmee-ar.medi.heh by hehDoachashmee-ar.medi.meem;
    sub heh-ar.medi.heh by hehDoachashmee-ar.medi.heh;
    sub heh-ar.medi.yeh by hehDoachashmee-ar.medi.yeh;
} ss01;

feature ss02 {
  featureNames {
    name \"Open final Heh\";
  };

  lookupflag IgnoreMarks;
    sub heh-ar.fina by hehgoal-ar.fina;
} ss02;

feature ss03 {
  featureNames {
    name \"Tailed Noon\";
  };

  lookupflag IgnoreMarks;
    sub noon-ar by noon-ar.tail;
    sub noon-ar.fina by noon-ar.fina.tail;
} ss03;

feature ss04 {
  featureNames {
    name \"Looped initial Kaf\";
  };

  lookupflag IgnoreMarks;
    sub kaf-ar.init.alef by kaf-ar.init.alef.loop;
} ss04;

feature ss05 {
  featureNames {
    name \"Alternate Arabic digit two\";
  };

  lookupflag IgnoreMarks;
    sub two-ar by two-persian;
    sub two-persian by two-ar;
} ss05;

feature ss06 {
  featureNames {
    name \"Tailed Sheen\";
  };

  sub seen-ar threedotsupabove-ar by sheen-ar;
} ss06;

feature ss07 {
  featureNames {
    name \"Alternate Sad-Tah/Tah-Sad\";
  };

  lookupflag IgnoreMarks;
    sub sad-ar.init.qantara by sad-ar.init.sad;
    sub sad-ar.medi.qantara by sad-ar.medi.sad;
    sub tah-ar.init.qantara by tah-ar.init.sad;
    sub tah-ar.medi.qantara by tah-ar.medi.sad;
} ss07;

feature ss08 {
  featureNames {
    name \"Alternate Sukun\";
  };

  lookupflag 0;
    sub sukun-ar by sukun-ar.alt;
} ss08;

feature numr {
  sub zero-ar by zero-ar.numr;
  sub one-ar by one-ar.numr;
  sub two-ar by two-ar.numr;
  sub three-ar by three-ar.numr;
  sub four-ar by four-ar.numr;
  sub five-ar by five-ar.numr;
  sub six-ar by six-ar.numr;
  sub seven-ar by seven-ar.numr;
  sub eight-ar by eight-ar.numr;
  sub nine-ar by nine-ar.numr;
  sub two-persian by two-persian.numr;
  sub four-persian by four-persian.numr;
  sub five-persian by five-persian.numr;
  sub six-persian by six-persian.numr;
  sub seven-persian by seven-ar.numr;
  sub four-persian.urd by four-persian.urd.numr;
  sub seven-persian.urd by seven-persian.urd.numr;
} numr;

feature dnom {
  sub zero-ar by zero-ar.dnom;
  sub one-ar by one-ar.dnom;
  sub two-ar by two-ar.dnom;
  sub three-ar by three-ar.dnom;
  sub four-ar by four-ar.dnom;
  sub five-ar by five-ar.dnom;
  sub six-ar by six-ar.dnom;
  sub seven-ar by seven-ar.dnom;
  sub eight-ar by eight-ar.dnom;
  sub nine-ar by nine-ar.dnom;
  sub two-persian by two-persian.dnom;
  sub four-persian by four-persian.dnom;
  sub five-persian by five-persian.dnom;
  sub six-persian by six-persian.dnom;
  sub seven-persian by seven-ar.dnom;
  sub four-persian.urd by four-persian.urd.dnom;
  sub seven-persian.urd by seven-persian.urd.dnom;
} dnom;

# GPOS

feature curs {
    # Automatic Code
} curs;

feature mark {
    # Automatic Code
} mark;

@noqta_below = [dotbelow-ar twodotshorizontalbelow-ar threedotsdownbelow-ar];

feature mark {
  lookupflag 0;
    pos [behDotless-ar.init.ascend] @noqta_below' <98  -146 0 0> [behDotless-ar.medi.ragaa];
    pos [behDotless-ar.init.ascend] @noqta_below' <0   -186 0 0> [kaf-ar.medi.ragaa lam-ar.medi.ragaa];

    pos [behDotless-ar.medi.high]   @noqta_below' <0   -146 0 0> [behDotless-ar.medi.ragaa];
    pos [behDotless-ar.medi]        @noqta_below' <42  -146 0 0> [behDotless-ar.medi.ragaa];
    pos [behDotless-ar.medi]        @noqta_below' <0   -146 0 0> [kaf-ar.medi.ragaa lam-ar.medi.ragaa];

    pos [behDotless-ar.init.feh]    @noqta_below' <0   -73  0 0> [fehDotless-ar.medi.ragaa];

    pos [hah-ar.init]               @noqta_below' <24  -122 0 0> [behDotless-ar.medi.ragaa];
    pos [hah-ar.init]               @noqta_below' <0   -146 0 0> [kaf-ar.medi.ragaa lam-ar.medi.ragaa];
} mark;

feature mkmk {
    # Automatic Code
} mkmk;

feature kern {
  @dal     = [dal-ar dal-ar.fina];
  @waw     = [reh-ar reh-ar.fina waw-ar waw-ar.fina];
  @dal_waw = [@dal @waw];
  @lam     = [lam-ar.init.dal lam-ar.init.reh lam-ar.init.sad lam-ar.init.meem lam-ar.init.heh lam-ar.init.alef];
  @low_fina= [alef-ar.fina heh-ar.fina hehgoal-ar.fina behDotless-ar.fina lam-ar.medi.alef kaf-ar.fina];
  @beh_feh = [behDotless-ar fehDotless-ar];
  @qaf_noon= [qaf-ar qafDotless-ar noon-ar noonghunna-ar];
  lookupflag IgnoreMarks;
    pos alef-ar.fina     <-193 0 -193 0> hah-ar <NULL>;
    pos alef-ar.fina.lam <-195 0 -195 0> hah-ar <NULL>;

    pos @dal_waw'  <-244 0 -244 0> [ain-ar sad-ar seen-ar hah-ar hah-ar.init.meem];
    pos @dal_waw'  <-146 0 -146 0> [alef-ar meem-ar];
    pos @dal_waw'  <-146 0 -146 0> heh-ar' <0 146 0 0>;
    pos @dal_waw'  <-264 0 -264 0> tah-ar' <0 215 0 0>;
    pos @dal_waw'  <-134 0 -134 0> @qaf_noon'     <0 85  0 0>;

    pos @dal_waw'  <-37  0 -37  0> [seen-ar.init sad-ar.init] [behDotless-ar.medi.sad] tah-ar.fina;
    pos @dal_waw'  <-37  0 -37  0> [seen-ar.init sad-ar.init] @low_fina;
    pos @dal_waw'  <-49  0 -49  0> heh-ar.init @low_fina;
    pos @dal_waw'  <-195 0 -195 0> [seen-ar.init sad-ar.init sad-ar.init.ain heh-ar.init heh-ar.init.meem
                                    heh-ar.init.yeh ain-ar.init.yeh kaf-ar.init.alef];

    pos @dal_waw'  <-73 0 -73 0> @beh_feh;

    pos alef-ar.fina.lam' <-98 0 -98 0> [@beh_feh @qaf_noon];

    # XXX: need to extend the ignore rule
    ignore pos @dal_waw' lam-ar.init.sad sad-ar.medi.heh heh-ar.medi;
    pos @waw'      <-146 0 -146 0> @lam;
    pos @dal'      <-98  0 -98  0> @lam;

    pos @dal_waw   lam-ar.init.meem meem-ar.medi alef-ar.fina' <0 98 0 0>;

    pos @dal_waw'  <-49  0 -49  0> lam-ar.init @low_fina;
    pos @waw'      <-244 0 -244 0> lam-ar.init;
    pos @dal'      <-146 0 -146 0> lam-ar.init;

    pos @waw'      <-122 0 -122 0> [lam-ar.init.yeh lam-ar.init.ragaa];
    pos @dal'      <-73  0 -73  0> [lam-ar.init.yeh lam-ar.init.ragaa];

    pos @waw'      <-98  0 -98  0> lam-ar;
    pos @dal'      <-49  0 -49  0> lam-ar;

    pos @dal_waw'  <-98  0 -98  0> fehDotless-ar.init.ain;

    pos [ain-ar.init fehDotless-ar.init]'   <59 0 59 0> kaf-ar.init.alef.loop;
    pos [alef-ar alef-ar.fina]' <98 0 98 0> lam-ar.init.hah hah-ar.fina;
    pos [alef-ar alef-ar.fina]' <49 0 49 0> lam-ar.init.hah;

    pos [alefMaksura-ar.fina alefMaksura-ar.fina.jalt alefMaksura-ar.fina.yeh alefMaksura-ar.fina.yeh.jalt] hamza-ar' <0 195 0 0>;
} kern;
";
name = Features;
}
);
fontMaster = (
{
axesValues = (
400
);
customParameters = (
{
name = panose;
value = (
2,
0,
5,
3,
0,
0,
0,
0,
0,
0
);
}
);
id = "1467EB51-6BD4-4CFC-AEAA-3E4EB1A95CFA";
metricValues = (
{
pos = 800;
},
{
pos = 683;
},
{
pos = 462;
},
{
},
{
pos = -200;
},
{
}
);
name = Regular;
},
{
axesValues = (
700
);
customParameters = (
{
name = panose;
value = (
2,
0,
8,
3,
0,
0,
0,
0,
0,
0
);
},
{
name = weightClass;
value = 700;
}
);
iconName = Bold;
id = "EF321139-F770-433D-B2B6-C3EFA1B16465";
metricValues = (
{
pos = 800;
},
{
pos = 692;
},
{
pos = 485;
},
{
},
{
pos = -200;
},
{
}
);
name = Bold;
userData = {
GSOffsetAutoStroke = 1;
GSOffsetHorizontal = -8;
GSOffsetKeepCompatible = 1;
GSOffsetProportional = 1;
GSOffsetVertical = 10;
};
}
);
instances = (
{
axesValues = (
400
);
customParameters = (
{
name = panose;
value = (
2,
0,
5,
3,
0,
0,
0,
0,
0,
0
);
}
);
instanceInterpolations = {
"1467EB51-6BD4-4CFC-AEAA-3E4EB1A95CFA" = 1;
};
name = Regular;
},
{
axesValues = (
700
);
customParameters = (
{
name = panose;
value = (
2,
0,
8,
3,
0,
0,
0,
0,
0,
0
);
}
);
instanceInterpolations = {
"EF321139-F770-433D-B2B6-C3EFA1B16465" = 1;
};
isBold = 1;
linkStyle = Regular;
name = Bold;
weightClass = 700;
}
);
metrics = (
{
type = ascender;
},
{
type = "cap height";
},
{
type = "x-height";
},
{
type = baseline;
},
{
type = descender;
},
{
type = "italic angle";
}
);
properties = (
{
key = copyrights;
values = (
{
language = dflt;
value = "Copyright 2015-2022 The Aref Ruqaa Project Authors (https://github.com/aliftype/aref-ruqaa), with Reserved Font Name EURM10.";
}
);
},
{
key = descriptions;
values = (
{
language = dflt;
value = "Aref Ruqaa is an Arabic typeface that aspires to capture the essence of the classical Ruqaa calligraphic style.";
}
);
},
{
key = designers;
values = (
{
language = dflt;
value = "Abdullah Aref";
}
);
},
{
key = licenses;
values = (
{
language = dflt;
value = "This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL";
}
);
},
{
key = licenseURL;
value = "https://scripts.sil.org/OFL";
},
{
key = sampleTexts;
values = (
{
language = dflt;
value = "الحب سماء لا تمطر غير الأحلام";
}
);
},
{
key = vendorID;
value = ALIF;
}
);
settings = {
disablesAutomaticAlignment = 1;
};
unitsPerEm = 1000;
versionMajor = 1;
versionMinor = 0;
}
