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 | 1357 |
1 files changed, 0 insertions, 1357 deletions
diff --git a/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea b/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea deleted file mode 100644 index 99b2e80263b..00000000000 --- a/Master/texmf-dist/doc/fonts/amiri/sources/contextuals.fea +++ /dev/null @@ -1,1357 +0,0 @@ -// replace tashkil following shadda by smaller alternates - -@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; -} SamallTashkil; - -feature calt { - sub [uni0651 uni06EC] @ShaddaTashkil' lookup SamallTashkil; -} calt; - -#ifdef QURAN -// a rather ugly hack for the brain dead Unicode canonical reordering of some -// Arabic combining marks - -lookup TashkilShaddaHack { - sub uni064E by uni06EC uni064E.small; - sub uni064B by uni06EC uni064B.small; - sub uni064C by uni06EC uni064C.small; - 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 { - sub @ShaddaTashkil [uni06EC]' by dummy1; -} calt; - -feature calt { - sub @ShaddaTashkil' lookup TashkilShaddaHack dummy1; -} calt; - -// non-hack -feature calt { - sub [uni065C] [uni0650]' by [uni0650.small2]; -} calt; - -// hack -feature calt { - sub [uni0650] [uni065C]' by dummy2; -} calt; - -lookup uni065cHack { - sub uni0650 by uni065C uni0650.small2; -} uni065cHack; - -feature calt { - sub [uni0650]' lookup uni065cHack dummy2; -} calt; - -#endif - -// replace tashkil following hamza by smaller alternates -feature calt { - sub @AlefHamzaAbove [uni064E uni064F uni0652]' by [uni064E.small2 uni064F.small uni0652.small2]; - sub @AlefHamzaBelow [uni0650]' by [uni0650.small2]; - sub [uni0655] [uni0650]' by [uni0650.small2]; -} calt; - -// replace hamza mark when following a final heh by a glyph that only have a -// HamzaAbove mark so it will be positioned correctly -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; - sub @aHeh.init by @aHeh.init_HehHaaInit; - sub @aMem.init by @aMem.init_MemHaaInit; - sub @aSad.init by @aSad.init_SadHaaInit; - sub @aSen.init by @aSen.init_SenHaaInit; -} AboveHaaInit; - -feature calt { - lookupflag IgnoreMarks; - sub [@aBaa.init @aHeh.init @aMem.init @aSad.init @aSen.init]' lookup AboveHaaInit - [@aHaa.medi]' lookup AboveHaaInit; -} calt; - -lookup BaaRaaFina { - sub @aBaa.medi by @aBaa.medi_BaaRaaFina; - sub @aRaa.fina by @aRaa.fina_BaaRaaFina; -} BaaRaaFina; - -feature calt { - lookupflag IgnoreMarks; - sub [@aBaa.medi]' lookup BaaRaaFina - [@aRaa.fina]' lookup BaaRaaFina; -} calt; - -lookup BaaNonFina { - sub @aBaa.medi by @aBaa.medi_BaaNonFina; - sub @aNon.fina by @aNon.fina_BaaNonFina; -} BaaNonFina; - -feature calt { - lookupflag IgnoreMarks; - sub [@aBaa.medi]' lookup BaaNonFina - [@aNon.fina]' lookup BaaNonFina; -} calt; - -lookup BaaMemFina { - sub @aBaa.medi by @aBaa.medi_BaaMemFina; - sub @aMem.fina by @aMem.fina_BaaMemFina; -} BaaMemFina; - -feature calt { - lookupflag IgnoreMarks; - sub [@aBaa.medi]' lookup BaaMemFina - [@aMem.fina]' lookup BaaMemFina; -} calt; - -lookup KafBaaAlfIsol { - sub @aBaa.medi by @aBaa.medi_KafBaaInit; - sub @aKaf.init by @aKaf.init_KafBaaInit; -} KafBaaAlfIsol; - -lookup KafBaaAlfFina { - sub @aBaa.medi by @aBaa.medi_KafBaaMedi; - sub @aKaf.medi by @aKaf.medi_KafBaaMedi; -} KafBaaAlfFina; - -feature calt { - lookupflag IgnoreMarks; - sub [@aKaf.init]' lookup KafBaaAlfIsol - [@aBaa.medi]' lookup KafBaaAlfIsol - [@aAlf.fina @aLam.medi @aLam.fina]; - - sub [@aKaf.medi]' lookup KafBaaAlfFina - [@aBaa.medi]' lookup KafBaaAlfFina - [@aAlf.fina @aLam.medi @aLam.fina]; -} calt; - -lookup BaaBaa { - sub @aBaa.medi by @aBaa.medi_BaaBaaInit; - sub @aBaa.fina by @aBaa.fina_BaaBaaIsol; - sub @aBaa.init by @aBaa.init_BaaBaaIsol; -} BaaBaa; - -lookup HighBaa { - sub @aBaa.init by @aBaa.init_High; - sub @aBaa.medi by @aBaa.medi_High; -} HighBaa; - -feature calt { - lookupflag IgnoreMarks; - // hack to prevent double high baa in سببس and likes - sub [@aSen.init @aSen.medi]' - [@aBaa.medi]' - [@aBaa.medi]' lookup HighBaa - [@aSen.medi @aSen.fina]'; - - // جرينتش - sub [@aBaa.init]' lookup BaaBaa - [@aBaa.medi]' lookup BaaBaa - [@aBaa.medi]' lookup HighBaa - [@aSen.fina @aSen.medi @aSen.medi_PreYaa]; - - sub [@aBaa.medi @aSad.init @aSad.medi @aSen.init @aSen.medi @aBaa.medi_BaaBaaInit] - [@aBaa.medi]' lookup HighBaa - [@aBaa.fina @aBaa.medi @aSen.fina @aBaa.medi_BaaHehMedi @aSen.medi @aSen.medi_PreYaa]; - - sub [@aBaa.medi]' lookup HighBaa - [@aSen.fina @aSen.medi @aSen.medi_PreYaa]; - - sub [@aBaa.init]' lookup HighBaa - [@aBaa.medi]' lookup HighBaa - [@aBaa.medi @aBaa.fina @aSen.medi @aSen.fina]; -} calt; - -lookup BaaHeh { - sub @aBaa.init by @aBaa.init_BaaHehInit; - sub @aMem.init_dots by @aMem.init_MemHehInit; - sub @aBaa.medi by @aBaa.medi_BaaHehMedi; - sub @aHeh.medi by @aHeh.medi_BaaHehMedi; -} BaaHeh; - -feature calt { - lookupflag IgnoreMarks; - sub [@aBaa.init @aBaa.medi @aMem.init_dots]' lookup BaaHeh - [@aHeh.medi]' lookup BaaHeh; -} calt; - -lookup BaaBaaHeh { - sub @aBaa.init by @aBaa.init_BaaBaaHeh; -} BaaBaaHeh; - -feature calt { - lookupflag IgnoreMarks; - sub @aBaa.init' lookup BaaBaaHeh - @aBaa.medi_BaaHehMedi; -} calt; - -lookup LamAlfFina { - sub @aAlf.fina by @aAlf.fina_LamAlfFina; - sub @aLam.medi by @aLam.medi_LamAlfFina; -} LamAlfFina; - -feature calt { - lookupflag IgnoreMarks; - sub [@aLam.medi]' lookup LamAlfFina - [@aAlf.fina]' lookup LamAlfFina; -} calt; - -lookup KafLamHeh { - sub @aLam.medi by @aLam.medi_KafLamHehIsol; -} KafLamHeh; - -lookup BaaSenAltInit { - sub @aBaa.init by @aBaa.init_BaaSenAltInit; - sub @aRaa.fina by @aRaa.fina_PostTooth; - sub @aSen.medi by @aSen.medi_BaaSenAltInit; - sub @aHeh.medi by @aHeh.medi_PostTooth; - sub @aYaa.fina by @aYaa.fina_PostTooth; - sub @aMem.fina by @aMem.fina_PostTooth; -} BaaSenAltInit; - -lookup LamHaaHaaInit { - sub @aHaa.medi by @aHaa.medi_1LamHaaHaaInit; - sub @aLam.init by @aLam.init_LamHaaHaaInit; -} LamHaaHaaInit; - -lookup LamHaaHaaInit2 { - sub @aHaa.medi by @aHaa.medi_2LamHaaHaaInit; -} LamHaaHaaInit2; - -lookup KafHeh { - sub @aKaf.init by @aKaf.init_KafHeh; - sub @aKaf.medi by @aKaf.medi_KafHeh; - sub @aHeh.fina by @aHeh.fina_KafHeh; - sub @aDal.fina by @aDal.fina_KafDal; -} KafHeh; - -lookup LamMemFina { - sub @aLam.medi by @aLam.medi_LamMemFina; - sub @aMem.fina by @aMem.fina_LamMemFina; -} LamMemFina; - -lookup SenMemInit { - sub @aSen.init by @aSen.init_SenMemInit; - sub @aSad.init by @aSad.init_SadMemInit; - sub @aMem.init by @aMem.init_MemMemInit; - sub @aMem.medi by @aMem.medi_SenMemInit; -} SenMemInit; - -lookup AllYaaIsol { - sub @aKaf.init by @aKaf.init_KafYaaIsol; - sub @aBaa.init by @aBaa.init_BaaYaaIsol; - sub @aFaa.init by @aFaa.init_FaaYaaIsol; - sub @aLam.init by @aLam.init_LamYaaIsol; - sub @aAyn.init by @aAyn.init_AynYaaIsol; - sub @aHaa.init by @aHaa.init_HaaYaaIsol; - sub @aHeh.init by @aHeh.init_HehYaaIsol; - sub @aMem.init_dots by @aMem.init_MemYaaIsol; - sub @aYaa.fina by @aYaa.fina_KafYaaIsol; -} AllYaaIsol; - -lookup BaaRaaIsol { - sub @aBaa.init by @aBaa.init_BaaRaaIsol; - sub @aRaa.fina by @aRaa.fina_BaaRaaIsol; -} BaaRaaIsol; - -lookup LamHehIsol { - sub @aLam.init by @aLam.init_LamHeh; - sub @aLam.medi by @aLam.medi_LamHeh; - sub @aLam.medi_LamLamInit by @aLam.medi_LamLamHehIsol; - sub @aHeh.fina by @aHeh.fina_LamHeh; - sub @aDal.fina by @aDal.fina_LamDal; -} LamHehIsol; - -lookup LamWawFina { - sub @aLam.medi by @aLam.medi_LamWawFina; - sub @aWaw.fina by @aWaw.fina_LamWawFina; -} LamWawFina; - -lookup FaaYaaFina { - sub @aFaa.medi by @aFaa.medi_FaaYaaFina; - sub @aYaa.fina by @aYaa.fina_FaaYaaFina; -} FaaYaaFina; - -lookup LamLamHaaInit { - sub @aHaa.medi by @aHaa.medi_LamLamHaaInit; - sub @aLam.init by @aLam.init_LamLamHaaInit; - sub @aLam.medi by @aLam.medi_LamLamHaaInit; -} LamLamHaaInit; - -lookup LamBaaMemInit { - sub @aBaa.medi by @aBaa.medi_LamBaaMemInit; - sub @aLam.init by @aLam.init_LamBaaMemInit; - sub @aMem.medi by @aMem.medi_LamBaaMemInit; -} LamBaaMemInit; - -lookup KafLamMemMedi { - sub @aLam.medi by @aLam.medi_KafLamMemMedi; -} KafLamMemMedi; - -lookup KafLamMemFina { - sub @aLam.medi by @aLam.medi_KafLamMemFina; - sub @aLam.medi_LamMemFina by @aLam.medi_KafLamMemFina; -} KafLamMemFina; - -lookup BaaDalIsol { - sub @aBaa.init by @aBaa.init_BaaDal; - sub @aDal.fina by @aDal.fina_BaaDal; -} BaaDalIsol; - -lookup BaaMemHaaInit { - sub @aBaa.init by @aBaa.init_BaaMemHaaInit; - sub @aHaa.medi by @aHaa.medi_BaaMemHaaInit; - sub @aMem.medi by @aMem.medi_BaaMemHaaInit; -} BaaMemHaaInit; - -lookup BaaBaaYaa { - sub @aBaa.init by @aBaa.init_BaaBaaYaa; - sub @aBaa.medi by @aBaa.medi_BaaBaaYaa; - sub @aYaa.fina by @aYaa.fina_BaaBaaYaa; -} BaaBaaYaa; - -@LamLamFoo = [@aLam.medi_LamMemMedi @aLam.medi_LamHeh @aLam.medi_LamYaaFina]; - -lookup LamLamInit { - sub @aLam.init by @aLam.init_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; - -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; - -lookup LamLamMedi2 { - sub @aLam.medi by @aLam.medi_LamLamMedi; -} LamLamMedi2; - -lookup LamYaaFina { - sub @aLam.medi by @aLam.medi_LamYaaFina; - sub @aYaa.fina by @aYaa.fina_LamYaaFina; -} LamYaaFina; - -lookup LamMemHaaInit { - sub @aHaa.medi by @aHaa.medi_LamMemHaaInit; - sub @aLam.init by @aLam.init_LamMemHaaInit; - sub @aMem.medi by @aMem.medi_LamMemHaaInit; -} LamMemHaaInit; - -#ifndef QURAN -lookup LamMemInit { - sub @aLam.init by @aLam.init_LamMemInit; - sub @aMem.medi by @aMem.medi_LamMemInit; -} LamMemInit; -#endif - -lookup LamAlfIsol { - sub @aAlf.fina by @aAlf.fina_LamAlfIsol; - sub @aLam.init by @aLam.init_LamAlfIsol; -} LamAlfIsol; - -#ifndef QURAN -lookup LamHaaMemInit { - sub @aHaa.medi by @aHaa.medi_LamHaaMemInit; - sub @aLam.init by @aLam.init_LamHaaMemInit; - sub @aMem.medi by @aMem.medi_LamHaaMemInit; -} LamHaaMemInit; -#endif - -lookup BaaBaaMemInit { - sub @aBaa.init by @aBaa.init_BaaBaaMemInit; - sub @aBaa.medi by @aBaa.medi_BaaBaaMemInit; - sub @aMem.medi by @aMem.medi_BaaBaaMemInit; -} BaaBaaMemInit; - -lookup BaaBaaHaaInit { - sub @aBaa.init by @aBaa.init_BaaBaaHaaInit; - sub @aBaa.medi by @aBaa.medi_BaaBaaHaaInit; - sub @aHaa.medi by @aHaa.medi_BaaBaaHaaInit; -} BaaBaaHaaInit; - -lookup MemRaaIsol { - sub @aMem.init by @aMem.init_MemRaaIsol; - sub @aRaa.fina by @aRaa.fina_MemRaaIsol; -} MemRaaIsol; - -lookup HaaHaaInit { - sub @aHaa.init by @aHaa.init_HaaHaaInit; - sub @aHaa.medi by @aHaa.medi_HaaHaaInit; -} HaaHaaInit; - -lookup KafMemIsol { - sub @aKaf.init by @aKaf.init_KafMemIsol; - sub @aLam.init by @aLam.init_LamMemIsol; - sub @aBaa.init by @aBaa.init_BaaMemIsol; - sub @aMem.fina by @aMem.fina_KafMemIsol; -} KafMemIsol; - -lookup LamQafFina { - sub @aLam.medi by @aLam.medi_LamQafFina; - sub @aQaf.fina by @aQaf.fina_LamQafFina; -} LamQafFina; - -lookup MemHaaMemInit { - sub @aHaa.medi by @aHaa.medi_MemHaaMemInit; - sub @aMem.init by @aMem.init_MemHaaMemInit; - sub @aMem.init_MemHaaInit by @aMem.init_MemHaaMemInit; - sub @aHaa.medi_SadHaaInit by @aHaa.medi_MemHaaMemInit; -} MemHaaMemInit; - -lookup BaaNonIsol { - sub @aBaa.init by @aBaa.init_BaaNonIsol; - sub @aNon.fina by @aNon.fina_BaaNonIsol; -} BaaNonIsol; - -lookup KafMemFina { - sub @aKaf.medi by @aKaf.medi_KafMemFina; - sub @aMem.fina by @aMem.fina_KafMemFina; -} KafMemFina; - -lookup KafLamAlf { - sub @aLam.medi by @aLam.medi_KafLamAlf; - sub @aLam.medi_LamAlfFina by @aLam.medi_KafLamAlf; -} KafLamAlf; - -lookup BaaSenInit { - sub @aBaa.init by @aBaa.init_BaaSenInit; - sub @aSen.fina by @aSen.fina_BaaSen; - sub @aSen.medi by @aSen.medi_BaaSenInit; -} BaaSenInit; - -lookup KafRaaFina { - sub @aKaf.medi by @aKaf.medi_KafRaaFina; - sub @aRaa.fina by @aRaa.fina_KafRaaFina; -} KafRaaFina; - -lookup LamHehInit { - sub @aHeh.medi by @aHeh.medi_LamHehInit; - sub @aLam.init by @aLam.init_LamHehInit; -} LamHehInit; - -lookup BaaMemInit { - sub @aBaa.init by @aBaa.init_BaaMemInit; - sub @aMem.medi by @aMem.medi_BaaMemInit; -} BaaMemInit; - -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; -} KafLam; - -lookup KafRaaIsol { - sub @aKaf.init by @aKaf.init_KafRaaIsol; - sub @aRaa.fina by @aRaa.fina_KafRaaIsol; -} KafRaaIsol; - -lookup AynHaaInit { - sub @aAyn.init by @aAyn.init_AynHaaInit; - sub @aHaa.medi by @aHaa.medi_AynHaaInit; -} AynHaaInit; - -lookup KafYaaFina { - sub @aKaf.medi by @aKaf.medi_KafYaaFina; - sub @aAyn.medi by @aAyn.medi_AynYaaFina; - sub @aYaa.fina by @aYaa.fina_KafYaaFina; -} KafYaaFina; - -lookup LamMemMedi { - sub @aLam.medi by @aLam.medi_LamMemMedi; - sub @aMem.medi_dots by @aMem.medi_LamMemMedi; -} LamMemMedi; - -lookup SenBaaMemInit { - sub @aSen.init by @aSen.init_SenBaaMemInit; - sub @aSad.init by @aSad.init_SenBaaMemInit; - sub @aBaa.medi by @aBaa.medi_SenBaaMemInit; - sub @aMem.medi by @aMem.medi_SenBaaMemInit; -} SenBaaMemInit; - -lookup HaaRaaIsol { - sub @aHaa.init by @aHaa.init_HaaRaaIsol; - sub @aRaa.fina by @aRaa.fina_HaaRaaIsol; -} HaaRaaIsol; - -lookup LamRaaIsol { - sub @aLam.init by @aLam.init_LamRaaIsol; - sub @aRaa.fina by @aRaa.fina_LamRaaIsol; -} LamRaaIsol; - -lookup KafMemAlf { - sub @aKaf.medi by @aKaf.medi_KafMemAlf; - sub @aKaf.init by @aKaf.init_KafMemAlf; - sub @aMem.medi by @aMem.medi_KafMemAlf; - sub @aAlf.fina by @aAlf.fina_KafMemAlf; - sub @aLam.fina by @aLam.fina_KafMemLam; - sub @aLam.medi by @aLam.medi_KafMemLam; -} KafMemAlf; - -lookup BaaHaaMemInit { - sub @aBaa.init by @aBaa.init_BaaHaaMemInit; - sub @aHaa.medi by @aHaa.medi_BaaHaaMemInit; - sub @aHaa.medi_SadHaaInit by @aHaa.medi_BaaHaaMemInit; - sub @aBaa.init_BaaHaaInit by @aBaa.init_BaaHaaMemInit; -} BaaHaaMemInit; - -lookup AboveHaaIsol { - sub @aAyn.init by @aAyn.init_AboveHaa; - sub @aBaa.init by @aBaa.init_AboveHaa; - sub @aFaa.init by @aFaa.init_FaaHaaInit; - sub @aHaa.init by @aHaa.init_AboveHaa; - sub @aHeh.init by @aHeh.init_AboveHaa; - sub @aKaf.init by @aKaf.init_AboveHaa; - sub @aLam.init by @aLam.init_LamHaaInit; - sub @aMem.init by @aMem.init_AboveHaa; - sub @aSad.init by @aSad.init_AboveHaa; - sub @aSen.init by @aSen.init_AboveHaa; - sub @aHaa.fina by @aHaa.fina_AboveHaaIsol; -} AboveHaaIsol; - -lookup AboveHaaIsol2 { - sub @aHaa.fina by @aHaa.fina_AboveHaaIsol2; - sub @aHaa.medi by @aHaa.medi_FaaHaaInit; -} AboveHaaIsol2; - -lookup SenYaaFina { - sub @aRaa.fina by @aRaa.fina_PostTooth; - sub @aSad.init by @aSad.init_PreYaa; - sub @aSad.medi by @aSad.medi_PreYaa; - sub @aSen.init by @aSen.init_PreYaa; - sub @aSen.medi by @aSen.medi_PreYaa; - sub @aYaa.fina by @aYaa.fina_PostTooth; -} SenYaaFina; - -lookup KafMemInit { - sub @aKaf.init by @aKaf.init_KafMemInit; - sub @aKaf.medi by @aKaf.medi_KafMemMedi; - sub @aAyn.init by @aAyn.init_AynMemInit; - sub @aFaa.init by @aFaa.init_FaaMemInit; - sub @aHaa.init by @aHaa.init_HaaMemInit; - sub @aHeh.init by @aHeh.init_HehMemInit; - sub @aMem.medi by @aMem.medi_KafMemMedi; -} KafMemInit; - -// the Lam.medi+Mem.fina is too narrow for tashkil, so we use a wider (extended) -// meem when tashkil clash is anticipated. -lookup LamMemFinaExtended { - sub @aMem.fina by @aMem.fina_LamMemFinaExtended; -} LamMemFinaExtended; - -feature calt { - sub @aLam.medi' lookup LamMemFina - @Tashkil.above' - @aMem.fina' lookup LamMemFinaExtended - @Tashkil.above'; - sub @aLam.medi' lookup LamMemFina - @Tashkil.above' @Tashkil.above' - @aMem.fina' lookup LamMemFinaExtended - @Tashkil.above'; - sub @aLam.medi' lookup LamMemFina - @Tashkil.above' @Tashkil.above' - @aMem.fina' lookup LamMemFinaExtended - @Tashkil.above' @Tashkil.above'; - sub @aLam.medi' lookup LamMemFina - @Tashkil.above' - @aMem.fina' lookup LamMemFinaExtended - @Tashkil.above' @Tashkil.above'; - sub @aLam.medi' lookup LamMemFina - @Tashkil.below' @Tashkil.above' - @aMem.fina' lookup LamMemFinaExtended - @Tashkil.above'; - sub @aLam.medi' lookup LamMemFina - @Tashkil.above' @Tashkil.below' - @aMem.fina' lookup LamMemFinaExtended - @Tashkil.above'; - sub @aLam.medi' lookup LamMemFina - @Tashkil.below' - @aMem.fina' lookup LamMemFinaExtended - @Tashkil.below'; -} calt; - -// ditto -lookup MemExtended { - sub @aMem.fina by @aMem.fina_KafMemIsolExtended; -} MemExtended; - -feature calt { - sub [@aLam.init @aKaf.init]' lookup KafMemIsol - @Tashkil.above' - @aMem.fina' lookup MemExtended - @Tashkil.above'; - sub [@aLam.init @aKaf.init]' lookup KafMemIsol - @Tashkil.above' @Tashkil.above' - @aMem.fina' lookup MemExtended - @Tashkil.above'; - sub [@aLam.init @aKaf.init]' lookup KafMemIsol - @Tashkil.above' @Tashkil.above' - @aMem.fina' lookup MemExtended - @Tashkil.above' @Tashkil.above'; - sub [@aLam.init @aKaf.init]' lookup KafMemIsol - @Tashkil.above' - @aMem.fina' lookup MemExtended - @Tashkil.above' @Tashkil.above'; - sub [@aLam.init @aKaf.init]' lookup KafMemIsol - @Tashkil.below' @Tashkil.above' - @aMem.fina' lookup MemExtended - @Tashkil.above'; - sub [@aLam.init @aKaf.init]' lookup KafMemIsol - @Tashkil.above' @Tashkil.below' - @aMem.fina' lookup MemExtended - @Tashkil.above'; - sub [@aLam.init @aKaf.init]' lookup KafMemIsol - @Tashkil.below' - @aMem.fina' lookup MemExtended - @Tashkil.below'; -} calt; - -//ditto, but we don't have LamMemInit in Quran font -#ifndef QURAN -lookup LamMemInitTatweel { - sub @aMem.medi by @aMem.medi_LamMemInitTatweel; -} LamMemInitTatweel; - -feature calt { - sub @aLam.init' lookup LamMemInit - @Tashkil.above' - @aMem.medi' lookup LamMemInitTatweel - @Tashkil.above'; - sub @aLam.init' lookup LamMemInit - @Tashkil.above' @Tashkil.above' - @aMem.medi' lookup LamMemInitTatweel - @Tashkil.above'; - sub @aLam.init' lookup LamMemInit - @Tashkil.above' @Tashkil.above' - @aMem.medi' lookup LamMemInitTatweel - @Tashkil.above' @Tashkil.above'; - sub @aLam.init' lookup LamMemInit - @Tashkil.above' - @aMem.medi' lookup LamMemInitTatweel - @Tashkil.above' @Tashkil.above'; - sub @aLam.init' lookup LamMemInit - @Tashkil.below' @Tashkil.above' - @aMem.medi' lookup LamMemInitTatweel - @Tashkil.above'; - sub @aLam.init' lookup LamMemInit - @Tashkil.above' @Tashkil.below' - @aMem.medi' lookup LamMemInitTatweel - @Tashkil.above'; - sub @aLam.init' lookup LamMemInit - @Tashkil.below' - @aMem.medi' lookup LamMemInitTatweel - @Tashkil.below'; -} calt; -#endif - -// ditto -lookup KafMemFinaExtended { - sub @aMem.fina by @aMem.fina_KafMemFinaExtended; -} KafMemFinaExtended; - -feature calt { - sub @aKaf.medi' lookup KafMemFina - @Tashkil.above' - @aMem.fina' lookup KafMemFinaExtended - @Tashkil.above'; - sub @aKaf.medi' lookup KafMemFina - @Tashkil.above' @Tashkil.above' - @aMem.fina' lookup KafMemFinaExtended - @Tashkil.above'; - sub @aKaf.medi' lookup KafMemFina - @Tashkil.above' @Tashkil.above' - @aMem.fina' lookup KafMemFinaExtended - @Tashkil.above' @Tashkil.above'; - sub @aKaf.medi' lookup KafMemFina - @Tashkil.above' - @aMem.fina' lookup KafMemFinaExtended - @Tashkil.above' @Tashkil.above'; - sub @aKaf.medi' lookup KafMemFina - @Tashkil.below' @Tashkil.above' - @aMem.fina' lookup KafMemFinaExtended - @Tashkil.above; - sub @aKaf.medi' lookup KafMemFina - @Tashkil.above' @Tashkil.below' - @aMem.fina' lookup KafMemFinaExtended - @Tashkil.above'; - sub @aKaf.medi' lookup KafMemFina - @Tashkil.below' - @aMem.fina' lookup KafMemFinaExtended - @Tashkil.below'; -} calt; - -// No IgnoreMarks here, to narrow to carry vowels -feature calt { - sub [@aBaa.init]' lookup BaaMemHaaInit - [@aMem.medi]' lookup BaaMemHaaInit - [@aHaa.medi]' lookup BaaMemHaaInit; -} calt; - -feature calt { - lookupflag IgnoreMarks; - sub [@aKaf.init @aKaf.medi]' lookup KafLam - [@aLam.medi]' lookup KafLamHeh - [@aHeh.fina @aDal.fina]' lookup LamHehIsol; - - sub [@aKaf.init @aKaf.medi]' lookup KafMemAlf - [@aMem.medi]' lookup KafMemAlf - [@aLam.medi @aLam.fina @aAlf.fina]' lookup KafMemAlf; - - sub [@aBaa.init]' lookup BaaSenAltInit - [@aSen.medi]' lookup BaaSenAltInit - [@aHeh.medi @aRaa.fina @aYaa.fina @aMem.fina]' lookup BaaSenAltInit; - - sub [@aLam.init]' lookup LamHaaHaaInit - [@aHaa.medi]' lookup LamHaaHaaInit - [@aHaa.medi]' lookup LamHaaHaaInit2; - - sub [@aKaf.init @aKaf.medi]' lookup KafHeh - [@aHeh.fina @aDal.fina]' lookup KafHeh; - - sub [@aLam.medi]' lookup LamMemFina - [@aMem.fina]' lookup LamMemFina; - - sub [@aSen.init @aSad.init @aMem.init]' lookup SenMemInit - [@aMem.medi]' lookup SenMemInit; - - sub [@aKaf.init @aBaa.init @aFaa.init @aLam.init @aAyn.init @aHaa.init @aHeh.init @aMem.init_dots]' lookup AllYaaIsol - [@aYaa.fina]' lookup AllYaaIsol; - - sub [@aBaa.init]' lookup BaaRaaIsol - [@aRaa.fina]' lookup BaaRaaIsol; - - sub [@aLam.init @aLam.medi @aLam.medi_LamLamInit]' lookup LamHehIsol - [@aHeh.fina @aDal.fina]' lookup LamHehIsol; - - sub [@aLam.medi]' lookup LamWawFina - [@aWaw.fina]' lookup LamWawFina; - - sub [@aFaa.medi]' lookup FaaYaaFina - [@aYaa.fina]' lookup FaaYaaFina; - - sub [@aLam.init]' lookup LamLamHaaInit - [@aLam.medi]' lookup LamLamHaaInit - [@aHaa.medi]' lookup LamLamHaaInit; - - sub [@aLam.init]' lookup LamBaaMemInit - [@aBaa.medi]' lookup LamBaaMemInit - [@aMem.medi]' lookup LamBaaMemInit; - - sub [@aKaf.init @aKaf.medi]' lookup KafLam - [@aLam.medi]' lookup KafLamMemMedi - [@aMem.medi_dots]' lookup LamMemMedi; - - sub [@aKaf.init @aKaf.medi]' lookup KafLam - [@aLam.medi @aLam.medi_LamMemFina]' lookup KafLamMemFina - [@aMem.fina @aMem.fina_LamMemFinaExtended]' lookup LamMemFina; - - sub [@aBaa.init]' lookup BaaDalIsol - [@aDal.fina]' lookup BaaDalIsol; - - sub [@aBaa.init]' lookup BaaBaaYaa - [@aBaa.medi]' lookup BaaBaaYaa - [@aYaa.fina]' lookup BaaBaaYaa; - - sub [@aLam.medi]' lookup LamYaaFina - [@aYaa.fina]' lookup LamYaaFina; - - sub [@aLam.init]' lookup LamMemHaaInit - [@aMem.medi]' lookup LamMemHaaInit - [@aHaa.medi]' lookup LamMemHaaInit; - -#ifndef QURAN - sub [@aLam.init]' lookup LamMemInit - [@aMem.medi]' lookup LamMemInit; -#endif - - sub [@aLam.init]' lookup LamAlfIsol - [@aAlf.fina]' lookup LamAlfIsol; - -#ifndef QURAN - sub [@aLam.init]' lookup LamHaaMemInit - [@aHaa.medi]' lookup LamHaaMemInit - [@aMem.medi]' lookup LamHaaMemInit; -#endif - - sub [@aBaa.init]' lookup BaaBaaMemInit - [@aBaa.medi]' lookup BaaBaaMemInit - [@aMem.medi]' lookup BaaBaaMemInit; - - sub [@aBaa.init]' lookup BaaBaaHaaInit - [@aBaa.medi]' lookup BaaBaaHaaInit - [@aHaa.medi]' lookup BaaBaaHaaInit; - - sub [@aMem.init]' lookup MemRaaIsol - [@aRaa.fina]' lookup MemRaaIsol; - - sub [@aAyn.init]' - [@aRaa.fina]' lookup MemRaaIsol; - - sub [@aHaa.init]' lookup HaaHaaInit - [@aHaa.medi]' lookup HaaHaaInit; - - sub [@aKaf.init @aLam.init @aBaa.init]' lookup KafMemIsol - [@aMem.fina]' lookup KafMemIsol; - - sub [@aLam.medi]' lookup LamQafFina - [@aQaf.fina]' lookup LamQafFina; - - sub [@aMem.init @aMem.init_MemHaaInit]' lookup MemHaaMemInit - [@aHaa.medi @aHaa.medi_SadHaaInit]' lookup MemHaaMemInit - [@aMem.medi]' lookup KafMemInit; - - sub [@aBaa.init]' lookup BaaNonIsol - [@aNon.fina]' lookup BaaNonIsol; - - sub [@aKaf.medi]' lookup KafMemFina - [@aMem.fina]' lookup KafMemFina; - - sub [@aKaf.init @aKaf.medi]' lookup KafLam - [@aLam.medi @aLam.medi_LamAlfFina]' lookup KafLamAlf - [@aAlf.fina @aAlf.fina_LamAlfFina]; - - sub [@aKaf.init @aKaf.medi]' lookup KafLam - [@aLam.medi @aLam.medi_LamAlfFina]' lookup KafLamAlf - // see float hamza in quran.fea - uni0621.float' - [@aAlf.fina @aAlf.fina_LamAlfFina]; - - sub [@aBaa.init]' lookup BaaSenInit - [@aSen.medi]' lookup BaaSenInit; - - sub [@aBaa.init]' lookup BaaSenAltInit - [@aSen.fina]' lookup BaaSenInit; - - sub [@aKaf.medi]' lookup KafRaaFina - [@aRaa.fina]' lookup KafRaaFina; - - sub [@aLam.init]' lookup LamHehInit - [@aHeh.medi]' lookup LamHehInit; - - sub [@aBaa.init]' lookup BaaMemInit - [@aMem.medi]' lookup BaaMemInit; - - sub [@aKaf.init @aKaf.medi]' lookup KafLam - [@aLam.medi @aLam.fina @aAlf.fina @aKaf.fina]' lookup KafLam; - - sub [@aKaf.init]' lookup KafRaaIsol - [@aRaa.fina]' lookup KafRaaIsol; - - sub [@aAyn.init]' lookup AynHaaInit - [@aHaa.medi]' lookup AynHaaInit; - - sub [@aKaf.medi @aAyn.medi]' lookup KafYaaFina - [@aYaa.fina]' lookup KafYaaFina; - - sub [@aLam.medi]' lookup LamMemMedi - [@aMem.medi_dots]' lookup LamMemMedi; - - sub [@aSen.init @aSad.init]' lookup SenBaaMemInit - [@aBaa.medi]' lookup SenBaaMemInit - [@aMem.medi]' lookup SenBaaMemInit; - - sub [@aBaa.init]' lookup BaaBaa - [@aBaa.medi @aBaa.fina]' lookup BaaBaa; - - sub [@aHaa.init]' lookup HaaRaaIsol - [@aRaa.fina]' lookup HaaRaaIsol; - - sub [@aLam.init]' lookup LamRaaIsol - [@aRaa.fina]' lookup LamRaaIsol; - - sub [@aBaa.init @aBaa.init_BaaHaaInit]' lookup BaaHaaMemInit - [@aHaa.medi @aHaa.medi_SadHaaInit]' lookup BaaHaaMemInit - [@aMem.medi]' lookup KafMemInit; - - sub [@aAyn.init @aBaa.init @aHaa.init @aHeh.init @aMem.init @aSad.init @aSen.init]' lookup AboveHaaIsol - [@aHaa.fina]' lookup AboveHaaIsol; - - sub [@aFaa.init @aLam.init @aKaf.init]' lookup AboveHaaIsol - [@aHaa.medi @aHaa.fina]' lookup AboveHaaIsol2; - - sub [@aSen.init @aSad.init @aSen.medi @aSad.medi]' lookup SenYaaFina - [@aYaa.fina @aRaa.fina]' lookup SenYaaFina; -} calt; - -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 [@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 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 AscenderYaaBari - [@aYaaBari.fina]' lookup AscenderYaaBari; -} calt; - -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 AynYaaBari - @aYaaBari.fina' lookup AynYaaBari; -} calt; - -// default Faa.init+Mem.medi ligature is too narrow leading to mark clash of -// both glyphs have marks above or both have marks bellow at the same time. So -// we use an alternate wider Meem in such cases. -// This covers فَمَا فَّمَا فَمَّا فَّمَّا فِّمَا فِمِا. -lookup FaaMemTatweel { - sub @aMem.medi by @aMem.medi_KafMemMediTatweel; -} FaaMemTatweel; - -feature calt { - sub @aFaa.init' lookup KafMemInit - @Tashkil.above' - @aMem.medi' lookup FaaMemTatweel - @Tashkil.above'; - sub @aFaa.init' lookup KafMemInit - @Tashkil.above' @Tashkil.above' - @aMem.medi' lookup FaaMemTatweel - @Tashkil.above'; - sub @aFaa.init' lookup KafMemInit - @Tashkil.above' @Tashkil.above' - @aMem.medi' lookup FaaMemTatweel - @Tashkil.above' @Tashkil.above'; - sub @aFaa.init' lookup KafMemInit - @Tashkil.above' - @aMem.medi' lookup FaaMemTatweel - @Tashkil.above' @Tashkil.above'; - sub @aFaa.init' lookup KafMemInit - @Tashkil.below' @Tashkil.above' - @aMem.medi' lookup FaaMemTatweel - @Tashkil.above'; - sub @aFaa.init' lookup KafMemInit - @Tashkil.above' @Tashkil.below' - @aMem.medi' lookup FaaMemTatweel - @Tashkil.above'; - sub @aFaa.init' lookup KafMemInit - @Tashkil.below' - @aMem.medi' lookup FaaMemTatweel - @Tashkil.below'; -} calt; - -feature calt { - lookupflag IgnoreMarks; - sub [@aKaf.init @aKaf.medi @aAyn.init @aFaa.init @aHaa.init @aHeh.init]' lookup KafMemInit - [@aMem.medi]' lookup KafMemInit; -} calt; - -feature calt { - lookupflag IgnoreMarks; - sub [@aLam.init]' lookup LamLamInit - [@LamLamFoo @aLam.medi @aKaf.fina @aLam.fina @aLam.medi_LamAlfFina]' lookup LamLamInit; - - sub [@aLam.medi]' lookup LamLamMedi2 - [@LamLamFoo @aLam.medi @aKaf.fina @aLam.fina @aLam.medi_LamAlfFina]' lookup LamLamMedi; -} calt; - -lookup HehMediTooth { - sub @aHeh.medi by @aHeh.medi_PostTooth; - sub @aSad.init by @aSad.init_PreYaa; - sub @aSad.medi by @aSad.medi_PreYaa; - sub @aSen.init by @aSen.init_PreYaa; - sub @aSen.medi by @aSen.medi_PreYaa; -} HehMediTooth; - -feature calt { - lookupflag IgnoreMarks; - sub [@aSad.init @aSad.medi @aSen.init @aSen.medi]' lookup HehMediTooth - [@aHeh.medi]' lookup HehMediTooth; -} calt; - -// replace final alef followed by madda by a wider one -feature calt { - sub @Tashkil.above [uni0627.fina]' [uni0653 uni06E4] by [uni0627.fina_Wide]; -} calt; - -// Wider alef wasl and alef with hamza above after faa -feature calt { - lookupflag IgnoreMarks; - sub @aFaa.init - [uni0671.fina uni0623.fina]' - by [uni0671.fina_Wide uni0623.fina_Wide]; -} calt; - -// If there are no marks, revert the above substitution -feature calt { - sub @aFaa.init - [uni0671.fina_Wide uni0623.fina_Wide]' - by [uni0671.fina uni0623.fina]; -} calt; - -feature calt { - lookupflag IgnoreMarks; - sub [@aAyn.init @aHaa.init @aHaa.medi]' - [@aAlf.fina @aDal.fina @aHeh.fina @aLam.fina @aLam.medi @aLam.medi_LamMemFina - @aLam.medi_LamWawFina @aLam.medi_LamHeh @aLam.medi_LamYaaFina @aKaf.fina - @aLam.medi_LamQafFina @aBaa.medi_BaaRaaFina @aLam.medi_LamAlfFina - @aLam.medi_LamMemMedi @aLam.medi_LamLamMedi @aBaa.medi_BaaNonFina @aBaa.medi_High - @aKaf.medi @aKaf.medi_KafMemAlf @aKaf.medi_KafMemMedi @aKaf.medi_KafMemFina - @aKaf.medi_KafLam @aKaf.medi_KafHeh @aKaf.medi_KafBaaMedi @aKaf.medi_KafRaaFina - @aKaf.medi_KafYaaFina] - by [@aAyn.init_Finjani @aHaa.init_Finjani @aHaa.medi_Finjani]; -} calt; - -lookup BaaYaaFina { - sub @aBaa.medi by @aBaa.medi_BaaYaaFina; - sub @aYaa.fina by @aYaa.fina_BaaYaaFina; -} BaaYaaFina; - -feature calt { - lookupflag IgnoreMarks; - sub [@aBaa.medi]' lookup BaaYaaFina - [@aYaa.fina]' lookup BaaYaaFina; -} calt; - -lookup ToothMem { - sub @aMem.fina by @aMem.fina_PostTooth; - sub @aSad.init by @aSad.init_PreYaa; - sub @aSad.medi by @aSad.medi_PreYaa; - sub @aSen.init by @aSen.init_PreYaa; - sub @aSen.medi by @aSen.medi_PreYaa; -} ToothMem; - -feature calt { - lookupflag IgnoreMarks; - sub [@aSen.init @aSen.medi @aSad.init @aSad.medi]' lookup ToothMem - [@aMem.fina]' lookup ToothMem; -} calt; - -lookup KafLamYaa { - sub @aLam.medi_KafLam by @aLam.medi_KafLamYaa; -} KafLamYaa; - -feature calt { - lookupflag IgnoreMarks; - sub [@aLam.medi_KafLam]' lookup KafLamYaa - [@aYaa.fina]' lookup LamYaaFina; -} calt; - -lookup LamKafInit { -// XXX: sync with classes.fea - - // @aLam.init - sub uni06B5.init by uni06B5.init uni0640.1; - sub uni06B7.init by uni06B7.init uni0640.1; - sub uni0644.init by uni0644.init uni0640.1; - sub uni06B8.init by uni06B8.init uni0640.1; - sub uni06B6.init by uni06B6.init uni0640.1; - sub uni076A.init by uni076A.init uni0640.1; - - // @aLam.medi by - sub uni06B5.medi by uni06B5.medi uni0640.1; - sub uni06B7.medi by uni06B7.medi uni0640.1; - sub uni0644.medi by uni0644.medi uni0640.1; - sub uni06B8.medi by uni06B8.medi uni0640.1; - sub uni06B6.medi by uni06B6.medi uni0640.1; - sub uni076A.medi by uni076A.medi uni0640.1; - - // @aLam.medi_KafLam - sub uni06B5.medi_KafLam by uni06B5.medi_KafLam uni0640.1; - sub uni06B7.medi_KafLam by uni06B7.medi_KafLam uni0640.1; - sub uni0644.medi_KafLam by uni0644.medi_KafLam uni0640.1; - sub uni06B8.medi_KafLam by uni06B8.medi_KafLam uni0640.1; - sub uni06B6.medi_KafLam by uni06B6.medi_KafLam uni0640.1; - sub uni076A.medi_KafLam by uni076A.medi_KafLam uni0640.1; - - // @aLam.medi_KafMemLam - sub uni06B5.medi_KafMemLam by uni06B5.medi_KafMemLam uni0640.1; - sub uni06B7.medi_KafMemLam by uni06B7.medi_KafMemLam uni0640.1; - sub uni0644.medi_KafMemLam by uni0644.medi_KafMemLam uni0640.1; - sub uni06B8.medi_KafMemLam by uni06B8.medi_KafMemLam uni0640.1; - sub uni06B6.medi_KafMemLam by uni06B6.medi_KafMemLam uni0640.1; - sub uni076A.medi_KafMemLam by uni076A.medi_KafMemLam uni0640.1; - - // @aLam.medi_LamLamInit - sub uni06B5.medi_LamLamInit by uni06B5.medi_LamLamInit uni0640.1; - sub uni06B7.medi_LamLamInit by uni06B7.medi_LamLamInit uni0640.1; - sub uni0644.medi_LamLamInit by uni0644.medi_LamLamInit uni0640.1; - sub uni06B8.medi_LamLamInit by uni06B8.medi_LamLamInit uni0640.1; - sub uni06B6.medi_LamLamInit by uni06B6.medi_LamLamInit uni0640.1; - sub uni076A.medi_LamLamInit by uni076A.medi_LamLamInit uni0640.1; - - sub @aMem.medi_LamMemInit by @aMem.medi_LamMemInitTatweel; -} LamKafInit; - -feature calt { - lookupflag IgnoreMarks; - 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 @aGaf.fina]; -} calt; - -lookup LamAynTatweel { -// XXX: sync with classes.fea - - // @aLam.init - sub uni06B5.init by uni06B5.init uni0640.2; - sub uni06B7.init by uni06B7.init uni0640.2; - sub uni0644.init by uni0644.init uni0640.2; - sub uni06B8.init by uni06B8.init uni0640.2; - sub uni06B6.init by uni06B6.init uni0640.2; - sub uni076A.init by uni076A.init uni0640.2; - - // @aLam.medi by - sub uni06B5.medi by uni06B5.medi uni0640.2; - sub uni06B7.medi by uni06B7.medi uni0640.2; - sub uni0644.medi by uni0644.medi uni0640.2; - sub uni06B8.medi by uni06B8.medi uni0640.2; - sub uni06B6.medi by uni06B6.medi uni0640.2; - sub uni076A.medi by uni076A.medi uni0640.2; - - // @aLam.medi_KafLam - sub uni06B5.medi_KafLam by uni06B5.medi_KafLam uni0640.2; - sub uni06B7.medi_KafLam by uni06B7.medi_KafLam uni0640.2; - sub uni0644.medi_KafLam by uni0644.medi_KafLam uni0640.2; - sub uni06B8.medi_KafLam by uni06B8.medi_KafLam uni0640.2; - sub uni06B6.medi_KafLam by uni06B6.medi_KafLam uni0640.2; - sub uni076A.medi_KafLam by uni076A.medi_KafLam uni0640.2; - - // @aLam.medi_KafMemLam - sub uni06B5.medi_KafMemLam by uni06B5.medi_KafMemLam uni0640.2; - sub uni06B7.medi_KafMemLam by uni06B7.medi_KafMemLam uni0640.2; - sub uni0644.medi_KafMemLam by uni0644.medi_KafMemLam uni0640.2; - sub uni06B8.medi_KafMemLam by uni06B8.medi_KafMemLam uni0640.2; - sub uni06B6.medi_KafMemLam by uni06B6.medi_KafMemLam uni0640.2; - sub uni076A.medi_KafMemLam by uni076A.medi_KafMemLam uni0640.2; - - // @aLam.medi_LamLamInit - sub uni06B5.medi_LamLamInit by uni06B5.medi_LamLamInit uni0640.2; - sub uni06B7.medi_LamLamInit by uni06B7.medi_LamLamInit uni0640.2; - sub uni0644.medi_LamLamInit by uni0644.medi_LamLamInit uni0640.2; - sub uni06B8.medi_LamLamInit by uni06B8.medi_LamLamInit uni0640.2; - sub uni06B6.medi_LamLamInit by uni06B6.medi_LamLamInit uni0640.2; - sub uni076A.medi_LamLamInit by uni076A.medi_LamLamInit uni0640.2; - - sub @aMem.medi_LamMemInit by @aMem.medi_LamMemInitTatweel; -} LamAynTatweel; - -// lam [shadda] kasra ayn.fina -feature calt { - sub [@aLam.init @aLam.medi @aLam.medi_KafLam @aLam.medi_KafMemLam - @aLam.medi_LamLamInit @aMem.medi_LamMemInit]' lookup LamAynTatweel - [uni064D uni0650 uni065C] - @aAyn.fina; - sub [@aLam.init @aLam.medi @aLam.medi_KafLam @aLam.medi_KafMemLam - @aLam.medi_LamLamInit @aMem.medi_LamMemInit]' lookup LamAynTatweel - [uni0651] - [uni064D uni0650 uni065C] - @aAyn.fina; -} calt; - -#ifdef QURAN -// alef lam meem raa (with madda) -// we don't get plain aLam.init aMem.fina except in Quran font -feature calt { - sub @aLam.init' lookup LamKafInit [uni0653 uni06E4] - @aMem.medi [uni0653 uni06E4]; -} calt; -#endif - -lookup HehYaaFina { - sub @aHeh.medi_BaaHehMedi by @aHeh.medi_HehYaaFina; - sub @aHeh.medi_PostTooth by @aHeh.medi_PostToothHehYaa; -} HehYaaFina; - -feature calt { - lookupflag IgnoreMarks; - sub [@aHeh.medi_PostTooth @aHeh.medi_BaaHehMedi]' lookup HehYaaFina - [@aYaa.fina]' lookup BaaYaaFina; -} calt; - -feature calt { - lookupflag IgnoreMarks; - sub @RaaWaw [uni0625 uni0673]' by @aAlf.isol_LowHamza; -} calt; - - -// insert tatweel between ح and ك in فحك[ملير] -lookup FaaHaaKaf { -// XXX: sync with classes.fea -// sub @aHaa.medi_FaaHaaInit by @aHaa.medi_FaaHaaInit uni0640.1; - sub uni062E.medi_FaaHaaInit by uni062E.medi_FaaHaaInit uni0640.1; - sub uni062D.medi_FaaHaaInit by uni062D.medi_FaaHaaInit uni0640.1; - sub uni0681.medi_FaaHaaInit by uni0681.medi_FaaHaaInit uni0640.1; - sub uni0687.medi_FaaHaaInit by uni0687.medi_FaaHaaInit uni0640.1; - sub uni0685.medi_FaaHaaInit by uni0685.medi_FaaHaaInit uni0640.1; - sub uni062C.medi_FaaHaaInit by uni062C.medi_FaaHaaInit uni0640.1; - sub uni0682.medi_FaaHaaInit by uni0682.medi_FaaHaaInit uni0640.1; - sub uni0757.medi_FaaHaaInit by uni0757.medi_FaaHaaInit uni0640.1; - sub uni0684.medi_FaaHaaInit by uni0684.medi_FaaHaaInit uni0640.1; - sub uni076F.medi_FaaHaaInit by uni076F.medi_FaaHaaInit uni0640.1; - sub uni076E.medi_FaaHaaInit by uni076E.medi_FaaHaaInit uni0640.1; - sub uni0683.medi_FaaHaaInit by uni0683.medi_FaaHaaInit uni0640.1; - sub uni06BF.medi_FaaHaaInit by uni06BF.medi_FaaHaaInit uni0640.1; - sub uni077C.medi_FaaHaaInit by uni077C.medi_FaaHaaInit uni0640.1; - sub uni0758.medi_FaaHaaInit by uni0758.medi_FaaHaaInit uni0640.1; - sub uni0772.medi_FaaHaaInit by uni0772.medi_FaaHaaInit uni0640.1; - sub uni0686.medi_FaaHaaInit by uni0686.medi_FaaHaaInit uni0640.1; -} FaaHaaKaf; - -feature calt { - lookupflag IgnoreMarks; - sub @aFaa.init_FaaHaaInit - @aHaa.medi_FaaHaaInit' lookup FaaHaaKaf - [@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' lookup BaaInitWide @aAlf.fina; -} calt; - -// If the Alef has no Hamza below, or there is no marks above the Baa, revert to -// the original, non-wide form (notice there is no IgnoreMarks flag). -feature calt { - sub [@aBaa.init_Wide]' - [uni0622.fina uni0623.fina uni0627.fina uni0671.fina uni0672.fina - uni0675.fina uni0773.fina uni0774.fina] - by [@aBaa.init]; -} calt; - -// Replace teh init following teh/them medi by a teh init with two vertical -// dots -// XXX: use a different glyph for PDF text extraction -feature calt { - lookupflag IgnoreMarks; - script arab; - language ARA; - sub uni062A.init_BaaBaaIsol' - [uni062A.medi_BaaBaaInit uni062B.medi_BaaBaaInit] - by uni067A.init_BaaBaaIsol; - - sub uni062A.init_High' - [uni062A.medi_High uni062B.medi_High] - by uni067A.init_High; -} calt; |