diff options
Diffstat (limited to 'Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea')
-rw-r--r-- | Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea | 147 |
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 |