summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea')
-rw-r--r--Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea147
1 files changed, 116 insertions, 31 deletions
diff --git a/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea b/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea
index 288ad37bb91..1e921e2400b 100644
--- a/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea
+++ b/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea
@@ -1,7 +1,7 @@
// replace tashkil following shadda by smaller alternates
-@ShaddaTashkil = [uni064E uni064B uni064C uni064F uni08F0 uni08F1];
-@ShaddaTashkil.small = [uni064E.small uni064B.small uni064C.small uni064F.small uni08F0.small uni08F1.small];
+@ShaddaTashkil = [uni064E uni064B uni064C uni064F uni08F0 uni08F1 uni0657];
+@ShaddaTashkil.small = [uni064E.small uni064B.small uni064C.small uni064F.small uni08F0.small uni08F1.small uni0657.small];
lookup SamallTashkil {
sub @ShaddaTashkil by @ShaddaTashkil.small;
@@ -22,6 +22,7 @@ lookup TashkilShaddaHack {
sub uni064F by uni06EC uni064F.small;
sub uni08F0 by uni06EC uni08F0.small;
sub uni08F1 by uni06EC uni08F1.small;
+ sub uni0657 by uni06EC uni0657.small;
} TashkilShaddaHack;
feature calt {
@@ -65,6 +66,16 @@ feature calt {
sub [uni0647 uni06D5 uni06C1 uni0647.fina uni06D5.fina uni06C1.fina] [uni0654]' by hamza.above;
} calt;
+lookup BaaInitWide {
+ sub @aBaa.init by @aBaa.init_Wide;
+} BaaInitWide;
+
+feature calt {
+ sub @aBaa.init' lookup BaaInitWide @Tashkil.above' [@aGaf.medi @aGaf.fina]';
+ sub @aBaa.init' lookup BaaInitWide @Tashkil.above' @Tashkil.above' [@aGaf.medi @aGaf.fina]';
+ sub @aBaa.init' lookup BaaInitWide @Tashkil.above' @Tashkil.above' @Tashkil.above' [@aGaf.medi @aGaf.fina]';
+} calt;
+
lookup AboveHaaInit {
sub @aBaa.init by @aBaa.init_BaaHaaInit;
sub @aHaa.medi by @aHaa.medi_SadHaaInit;
@@ -326,6 +337,7 @@ lookup LamLamInit {
sub @aLam.medi by @aLam.medi_LamLamInit;
sub @aLam.fina by @aLam.fina_LamLamIsol;
sub @aKaf.fina by @aKaf.fina_LamKafIsol;
+ sub @aGaf.alt.fina by @aGaf.fina_LamKafIsol;
sub @aLam.medi_LamAlfFina by @aLam.medi_LamLamAlfIsol;
sub @LamLamFoo by [@aLam.medi_LamLamMemInit @aLam.medi_LamLamHehIsol @aLam.medi_LamLamYaaIsol];
} LamLamInit;
@@ -334,6 +346,7 @@ lookup LamLamMedi {
sub @aLam.medi by @aLam.medi_LamLamMedi2;
sub @aLam.fina by @aLam.fina_LamLamFina;
sub @aKaf.fina by @aKaf.fina_LamKafFina;
+ sub @aGaf.alt.fina by @aGaf.fina_LamKafFina;
sub @aLam.medi_LamAlfFina by @aLam.medi_LamLamAlefFina;
sub @LamLamFoo by [@aLam.medi_LamLamMemMedi @aLam.medi_LamLamHehFina @aLam.medi_LamLamYaaFina];
} LamLamMedi;
@@ -454,6 +467,7 @@ lookup KafLam {
sub @aKaf.init by @aKaf.init_KafLam;
sub @aKaf.medi by @aKaf.medi_KafLam;
sub @aKaf.fina by @aKaf.fina_KafKafFina;
+ sub @aGaf.alt.fina by @aGaf.fina_KafKafFina;
sub @aLam.medi by @aLam.medi_KafLam;
sub @aLam.fina by @aLam.fina_KafLam;
sub @aAlf.fina by @aAlf.fina_KafAlf;
@@ -888,46 +902,68 @@ feature calt {
[@aYaa.fina @aRaa.fina]' lookup SenYaaFina;
} calt;
-lookup ToothYaaBarree {
- sub @aSen.init by @aSen.init_YaaBarree;
- sub @aSad.init by @aSad.init_YaaBarree;
- sub @aYaaBarree.fina by @aYaaBarree.fina_PostTooth;
-} ToothYaaBarree;
+lookup ToothYaaBari {
+ sub @aSen.init by @aSen.init_YaaBari;
+ sub @aSad.init by @aSad.init_YaaBari;
+ sub @aYaaBari.fina by @aYaaBari.fina_PostTooth;
+} ToothYaaBari;
+
+feature calt {
+ lookupflag IgnoreMarks;
+ sub [@aSen.init @aSad.init]' lookup ToothYaaBari
+ [@aYaaBari.fina]' lookup ToothYaaBari;
+} calt;
+
+lookup ToothYaaBariFina {
+ sub @aBaa.medi by @aBaa.medi_YaaBari;
+ sub @aBaa.init_BaaBaaIsol by @aBaa.init_BaaBaaYaaBari;
+ sub @aBaa.medi_BaaBaaInit by @aBaa.medi_YaaBari;
+ sub @aHaa.init_DotBelow by @aHaa.init_BaaYaaBari;
+ sub @aYaaBari.fina by @aYaaBari.fina_PostToothFina;
+} ToothYaaBariFina;
feature calt {
lookupflag IgnoreMarks;
- sub [@aSen.init @aSad.init]' lookup ToothYaaBarree
- [@aYaaBarree.fina]' lookup ToothYaaBarree;
+ sub [@aHaa.init_DotBelow]' lookup ToothYaaBariFina
+ [@aBaa.medi]' lookup ToothYaaBariFina
+ [@aYaaBari.fina]' lookup ToothYaaBariFina;
+
+ sub [@aBaa.medi]' lookup ToothYaaBariFina
+ [@aYaaBari.fina]' lookup ToothYaaBariFina;
+
+ sub [@aBaa.init_BaaBaaIsol]' lookup ToothYaaBariFina
+ [@aBaa.medi_BaaBaaInit]' lookup ToothYaaBariFina
+ [@aYaaBari.fina]' lookup ToothYaaBariFina;
} calt;
-lookup AscenderYaaBarree {
- sub @aBaa.init by @aBaa.init_YaaBarree;
- sub @aFaa.init by @aFaa.init_YaaBarree;
- sub @aLam.init by @aLam.init_YaaBarree;
- sub @aKaf.init by @aKaf.init_YaaBarree;
- sub @aYaaBarree.fina by @aYaaBarree.fina_PostAscender;
-} AscenderYaaBarree;
+lookup AscenderYaaBari {
+ sub @aBaa.init by @aBaa.init_YaaBari;
+ sub @aFaa.init by @aFaa.init_YaaBari;
+ sub @aLam.init by @aLam.init_YaaBari;
+ sub @aKaf.init by @aKaf.init_YaaBari;
+ sub @aYaaBari.fina by @aYaaBari.fina_PostAscender;
+} AscenderYaaBari;
feature calt {
lookupflag IgnoreMarks;
- sub [@aBaa.init @aFaa.init @aLam.init @aKaf.init]' lookup AscenderYaaBarree
- [@aYaaBarree.fina]' lookup AscenderYaaBarree;
+ sub [@aBaa.init @aFaa.init @aLam.init @aKaf.init]' lookup AscenderYaaBari
+ [@aYaaBari.fina]' lookup AscenderYaaBari;
} calt;
-lookup AynYaaBarree {
- sub @aHaa.init by @aHaa.init_YaaBarree;
- sub @aHeh.init by @aHeh.init_YaaBarree;
- sub uni06BE.init by uni06BE.init_YaaBarree;
- sub @aAyn.init by @aAyn.init_YaaBarree;
- sub @aTaa.init by @aTaa.init_YaaBarree;
- sub @aMem.init_dots by @aMem.init_YaaBarree;
- sub @aYaaBarree.fina by @aYaaBarree.fina_PostAyn;
-} AynYaaBarree;
+lookup AynYaaBari {
+ sub @aHaa.init by @aHaa.init_YaaBari;
+ sub @aHeh.init by @aHeh.init_YaaBari;
+ sub uni06BE.init by uni06BE.init_YaaBari;
+ sub @aAyn.init by @aAyn.init_YaaBari;
+ sub @aTaa.init by @aTaa.init_YaaBari;
+ sub @aMem.init_dots by @aMem.init_YaaBari;
+ sub @aYaaBari.fina by @aYaaBari.fina_PostAyn;
+} AynYaaBari;
feature calt {
lookupflag IgnoreMarks;
- sub [@aHaa.init @aHeh.init @aAyn.init @aTaa.init @aMem.init_dots uni06BE.init]' lookup AynYaaBarree
- @aYaaBarree.fina' lookup AynYaaBarree;
+ sub [@aHaa.init @aHeh.init @aAyn.init @aTaa.init @aMem.init_dots uni06BE.init]' lookup AynYaaBari
+ @aYaaBari.fina' lookup AynYaaBari;
} calt;
// default Faa.init+Mem.medi ligature is too narrow leading to mark clash of
@@ -1117,7 +1153,7 @@ feature calt {
sub [@aLam.init @aLam.medi @aLam.medi_KafLam @aLam.medi_KafMemLam
@aLam.medi_LamLamInit @aMem.medi_LamMemInit]' lookup LamKafInit
[@aKaf.medi @aKaf.medi_KafHeh @aKaf.medi_KafMemFina @aKaf.medi_KafRaaFina
- @aKaf.medi_KafYaaFina @aKaf.medi_KafMemAlf];
+ @aKaf.medi_KafYaaFina @aKaf.medi_KafMemAlf @aGaf.fina];
} calt;
lookup LamAynTatweel {
@@ -1235,12 +1271,61 @@ feature calt {
[@aKaf.medi_KafHeh @aKaf.medi_KafMemFina @aKaf.medi_KafRaaFina @aKaf.medi_KafYaaFina];
} calt;
+// insert tatweel between ح and ت in [بمسصف]حت[رن]
+lookup AboveHaaTatweel {
+// XXX: sync with classes.fea
+//sub @aHaa.medi_FaaHaaInit by @aHaa.medi_FaaHaaInit uni0640.05;
+ sub uni062E.medi_FaaHaaInit by uni062E.medi_FaaHaaInit uni0640.05;
+ sub uni062D.medi_FaaHaaInit by uni062D.medi_FaaHaaInit uni0640.05;
+ sub uni0681.medi_FaaHaaInit by uni0681.medi_FaaHaaInit uni0640.05;
+ sub uni0687.medi_FaaHaaInit by uni0687.medi_FaaHaaInit uni0640.05;
+ sub uni0685.medi_FaaHaaInit by uni0685.medi_FaaHaaInit uni0640.05;
+ sub uni062C.medi_FaaHaaInit by uni062C.medi_FaaHaaInit uni0640.05;
+ sub uni0682.medi_FaaHaaInit by uni0682.medi_FaaHaaInit uni0640.05;
+ sub uni0757.medi_FaaHaaInit by uni0757.medi_FaaHaaInit uni0640.05;
+ sub uni0684.medi_FaaHaaInit by uni0684.medi_FaaHaaInit uni0640.05;
+ sub uni076F.medi_FaaHaaInit by uni076F.medi_FaaHaaInit uni0640.05;
+ sub uni076E.medi_FaaHaaInit by uni076E.medi_FaaHaaInit uni0640.05;
+ sub uni0683.medi_FaaHaaInit by uni0683.medi_FaaHaaInit uni0640.05;
+ sub uni06BF.medi_FaaHaaInit by uni06BF.medi_FaaHaaInit uni0640.05;
+ sub uni077C.medi_FaaHaaInit by uni077C.medi_FaaHaaInit uni0640.05;
+ sub uni0758.medi_FaaHaaInit by uni0758.medi_FaaHaaInit uni0640.05;
+ sub uni0772.medi_FaaHaaInit by uni0772.medi_FaaHaaInit uni0640.05;
+ sub uni0686.medi_FaaHaaInit by uni0686.medi_FaaHaaInit uni0640.05;
+
+//sub @aHaa.medi_SadHaaInit by @aHaa.medi_SadHaaInit uni0640.05;
+ sub uni062E.medi_SadHaaInit by uni062E.medi_SadHaaInit uni0640.05;
+ sub uni062D.medi_SadHaaInit by uni062D.medi_SadHaaInit uni0640.05;
+ sub uni0681.medi_SadHaaInit by uni0681.medi_SadHaaInit uni0640.05;
+ sub uni0687.medi_SadHaaInit by uni0687.medi_SadHaaInit uni0640.05;
+ sub uni0685.medi_SadHaaInit by uni0685.medi_SadHaaInit uni0640.05;
+ sub uni062C.medi_SadHaaInit by uni062C.medi_SadHaaInit uni0640.05;
+ sub uni0682.medi_SadHaaInit by uni0682.medi_SadHaaInit uni0640.05;
+ sub uni0757.medi_SadHaaInit by uni0757.medi_SadHaaInit uni0640.05;
+ sub uni0684.medi_SadHaaInit by uni0684.medi_SadHaaInit uni0640.05;
+ sub uni076F.medi_SadHaaInit by uni076F.medi_SadHaaInit uni0640.05;
+ sub uni076E.medi_SadHaaInit by uni076E.medi_SadHaaInit uni0640.05;
+ sub uni0683.medi_SadHaaInit by uni0683.medi_SadHaaInit uni0640.05;
+ sub uni06BF.medi_SadHaaInit by uni06BF.medi_SadHaaInit uni0640.05;
+ sub uni077C.medi_SadHaaInit by uni077C.medi_SadHaaInit uni0640.05;
+ sub uni0758.medi_SadHaaInit by uni0758.medi_SadHaaInit uni0640.05;
+ sub uni0772.medi_SadHaaInit by uni0772.medi_SadHaaInit uni0640.05;
+ sub uni0686.medi_SadHaaInit by uni0686.medi_SadHaaInit uni0640.05;
+} AboveHaaTatweel;
+
+feature calt {
+ lookupflag IgnoreMarks;
+ sub [@aHaa.medi_FaaHaaInit @aHaa.medi_SadHaaInit]' lookup AboveHaaTatweel
+ [@aBaa.medi_BaaNonFina @aBaa.medi_BaaRaaFina];
+} calt;
+
+
// When an initial Baa is followed by Alef, the dot clashes with the Hamza below
// Alef, Also the marks above the Baa clash with the Alef, so we replace the Baa
// with a wider variant.
feature calt {
lookupflag IgnoreMarks;
- sub [@aBaa.init]' [@aAlf.fina] by [@aBaa.init_Wide];
+ sub @aBaa.init' lookup BaaInitWide @aAlf.fina;
} calt;
// If the Alef has no Hamza below, or there is no marks above the Baa, revert to