diff options
Diffstat (limited to 'Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea')
-rw-r--r-- | Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea | 202 |
1 files changed, 168 insertions, 34 deletions
diff --git a/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea b/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea index d653f66130d..37e7facd5f7 100644 --- a/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea +++ b/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea @@ -11,14 +11,25 @@ @FootNote = [uni0602]; @SafhaSign = [uni0603]; +@NumSignW = [uni0600.alt]; + lookup digit2small { sub @Digits by @Digits.small; } digit2small; +lookup NumSignW { + sub @NumSign by @NumSignW; +} NumSignW; + +feature calt { + sub [@EndOfAyah @NumSign @SafhaSign @FootNote] @Digits' lookup digit2small; + sub [@EndOfAyah @NumSign @SafhaSign @FootNote] @Digits.small @Digits' lookup digit2small; + sub [@EndOfAyah @NumSign @SafhaSign ] @Digits.small @Digits.small @Digits' lookup digit2small; + sub @NumSign @Digits.small @Digits.small @Digits.small @Digits' lookup digit2small; +} calt; + feature calt { - sub [@EndOfAyah @NumSign @FootNote @SafhaSign] @Digits' lookup digit2small; - sub @Digits.small [@EndOfAyah @NumSign @FootNote @SafhaSign] @Digits' lookup digit2small; - sub @Digits.small @Digits.small [@EndOfAyah @NumSign @SafhaSign] @Digits' lookup digit2small; + sub @NumSign' lookup NumSignW @Digits.small @Digits.small @Digits.small @Digits.small; } calt; lookup digit2medium { @@ -26,10 +37,10 @@ lookup digit2medium { } digit2medium; feature calt { - sub @YearSign @Digits' lookup digit2medium; - sub @Digits.medium @YearSign @Digits' lookup digit2medium; - sub @Digits.medium @Digits.medium @YearSign @Digits' lookup digit2medium; - sub @Digits.medium @Digits.medium @Digits.medium @YearSign @Digits' lookup digit2medium; + sub @YearSign @Digits' lookup digit2medium; + sub @YearSign @Digits.medium @Digits' lookup digit2medium; + sub @YearSign @Digits.medium @Digits.medium @Digits' lookup digit2medium; + sub @YearSign @Digits.medium @Digits.medium @Digits.medium @Digits' lookup digit2medium; } calt; # now we contextually kern the sign with the digits: @@ -42,62 +53,185 @@ feature calt { # dw = digit width, sw = sign width feature kern { - pos @EndOfAyah @Digits.small' <-1610 0 -600 0>; - pos @NumSign @Digits.small' <-1522 0 -600 0>; + pos @EndOfAyah @Digits.small' <-1610 0 -600 0>; + pos @NumSign @Digits.small' <-1622 0 -600 0>; + pos @NumSignW @Digits.small' <-1922 0 -600 0>; pos @YearSign @Digits.medium' <-2275 0 -900 0>; - pos @FootNote @Digits.small' <-1090 0 -600 0>; - pos @SafhaSign @Digits.small' <-1722 0 -600 0>; + pos @FootNote @Digits.small' <-1090 0 -600 0>; + pos @SafhaSign @Digits.small' <-1722 0 -600 0>; } kern; feature kern { - pos @EndOfAyah @Digits.small' <-300 0 0 0> @Digits.small; - pos @NumSign @Digits.small' <-300 0 0 0> @Digits.small; + pos @EndOfAyah @Digits.small' <-300 0 0 0> @Digits.small; + pos @NumSign @Digits.small' <-300 0 0 0> @Digits.small; + pos @NumSignW @Digits.small' <-300 0 0 0> @Digits.small; pos @YearSign @Digits.medium' <-450 0 0 0> @Digits.medium; - pos @FootNote @Digits.small' <-300 0 0 0> @Digits.small; - pos @SafhaSign @Digits.small' <-300 0 0 0> @Digits.small; + pos @FootNote @Digits.small' <-300 0 0 0> @Digits.small; + pos @SafhaSign @Digits.small' <-300 0 0 0> @Digits.small; } kern; feature kern { - pos @Digits.small @EndOfAyah @Digits.small' <-1310 0 -600 0>; - pos @Digits.small @NumSign @Digits.small' <-1222 0 -600 0>; - pos @Digits.medium @YearSign @Digits.medium' <-1825 0 -900 0>; - pos @Digits.small @FootNote @Digits.small' <-790 0 -600 0>; - pos @Digits.small @SafhaSign @Digits.small' <-1422 0 -600 0>; + pos @EndOfAyah @Digits.small @Digits.small' <-1310 0 -600 0>; + pos @NumSign @Digits.small @Digits.small' <-1322 0 -600 0>; + pos @NumSignW @Digits.small @Digits.small' <-1622 0 -600 0>; + pos @YearSign @Digits.medium @Digits.medium' <-1825 0 -900 0>; + pos @FootNote @Digits.small @Digits.small' <-790 0 -600 0>; + pos @SafhaSign @Digits.small @Digits.small' <-1422 0 -600 0>; } kern; feature kern { - pos @EndOfAyah @Digits.small' <-300 0 0 0> @Digits.small @Digits.small; - pos @NumSign @Digits.small' <-300 0 0 0> @Digits.small @Digits.small; + pos @EndOfAyah @Digits.small' <-300 0 0 0> @Digits.small @Digits.small; + pos @NumSign @Digits.small' <-300 0 0 0> @Digits.small @Digits.small; + pos @NumSignW @Digits.small' <-300 0 0 0> @Digits.small @Digits.small; pos @YearSign @Digits.medium' <-450 0 0 0> @Digits.medium @Digits.medium; - pos @SafhaSign @Digits.small' <-300 0 0 0> @Digits.small @Digits.small; + pos @SafhaSign @Digits.small' <-300 0 0 0> @Digits.small @Digits.small; } kern; feature kern { - pos @Digits.small @EndOfAyah @Digits.small' <-300 0 0 0> @Digits.small; - pos @Digits.small @NumSign @Digits.small' <-300 0 0 0> @Digits.small; - pos @Digits.medium @YearSign @Digits.medium' <-450 0 0 0> @Digits.medium; - pos @Digits.small @SafhaSign @Digits.small' <-300 0 0 0> @Digits.small; + pos @EndOfAyah @Digits.small @Digits.small' <-300 0 0 0> @Digits.small; + pos @NumSign @Digits.small @Digits.small' <-300 0 0 0> @Digits.small; + pos @NumSignW @Digits.small @Digits.small' <-300 0 0 0> @Digits.small; + pos @YearSign @Digits.medium @Digits.medium' <-450 0 0 0> @Digits.medium; + pos @SafhaSign @Digits.small @Digits.small' <-300 0 0 0> @Digits.small; } kern; feature kern { - pos @Digits.small @Digits.small @EndOfAyah @Digits.small' <-1010 0 -600 0>; - pos @Digits.small @Digits.small @NumSign @Digits.small' <-922 0 -600 0>; - pos @Digits.medium @Digits.medium @YearSign @Digits.medium' <-1375 0 -900 0>; - pos @Digits.small @Digits.small @SafhaSign @Digits.small' <-1122 0 -600 0>; + pos @EndOfAyah @Digits.small @Digits.small @Digits.small' <-1010 0 -600 0>; + pos @NumSign @Digits.small @Digits.small @Digits.small' <-1022 0 -600 0>; + pos @NumSignW @Digits.small @Digits.small @Digits.small' <-1322 0 -600 0>; + pos @YearSign @Digits.medium @Digits.medium @Digits.medium' <-1375 0 -900 0>; + pos @SafhaSign @Digits.small @Digits.small @Digits.small' <-1122 0 -600 0>; } kern; feature kern { pos @YearSign @Digits.medium' <-450 0 0 0> @Digits.medium @Digits.medium @Digits.medium; + pos @NumSignW @Digits.small' <-300 0 0 0> @Digits.small @Digits.small @Digits.small ; +} kern; + +feature kern { + pos @YearSign @Digits.medium @Digits.medium' <-450 0 0 0> @Digits.medium @Digits.medium; + pos @NumSignW @Digits.small @Digits.small' <-300 0 0 0> @Digits.small @Digits.small ; +} kern; + +feature kern { + pos @YearSign @Digits.medium @Digits.medium @Digits.medium' <-450 0 0 0> @Digits.medium; + pos @NumSignW @Digits.small @Digits.small @Digits.small' <-300 0 0 0> @Digits.small ; +} kern; + +feature kern { + pos @YearSign @Digits.medium @Digits.medium @Digits.medium @Digits.medium' <-925 0 -900 0>; + pos @NumSignW @Digits.small @Digits.small @Digits.small @Digits.small' <-1022 0 -600 0>; +} kern; + +############## +# HarfBuzz flips LTR Arabic runs before applying OpenType, but this is not what +# other engines does, so the above code does not work as it expects the digits +# and the sign in LTR order, so we do it for RTL order below until this is +# changed in HarfBuzz. +feature calt { + sub @Digits' lookup digit2small [@EndOfAyah @NumSign @SafhaSign @FootNote]; +} calt; + +feature calt { + sub @Digits' lookup digit2small @Digits.small [@EndOfAyah @NumSign @SafhaSign @FootNote]; +} calt; + +feature calt { + sub @Digits' lookup digit2small @Digits.small @Digits.small [@EndOfAyah @NumSign @SafhaSign ]; +} calt; + +feature calt { + sub @Digits' lookup digit2small @Digits.small @Digits.small @Digits.small @NumSign; +} calt; + +feature calt { + sub @Digits.small @Digits.small @Digits.small @Digits.small @NumSign' lookup NumSignW; +} calt; + +feature calt { + sub @Digits' lookup digit2medium @YearSign; +} calt; + +feature calt { + sub @Digits' lookup digit2medium @Digits.medium @YearSign; +} calt; + +feature calt { + sub @Digits' lookup digit2medium @Digits.medium @Digits.medium @YearSign; +} calt; + +feature calt { + sub @Digits' lookup digit2medium @Digits.medium @Digits.medium @Digits.medium @YearSign; +} calt; + +feature kern { + pos @Digits.small' <-1610 0 -600 0> @EndOfAyah; + pos @Digits.small' <-1622 0 -600 0> @NumSign ; + pos @Digits.small' <-1922 0 -600 0> @NumSignW ; + pos @Digits.medium' <-2275 0 -900 0> @YearSign ; + pos @Digits.small' <-1090 0 -600 0> @FootNote ; + pos @Digits.small' <-1722 0 -600 0> @SafhaSign; +} kern; + +feature kern { + pos @Digits.small @Digits.small' <-300 0 0 0> @EndOfAyah; + pos @Digits.small @Digits.small' <-300 0 0 0> @NumSign ; + pos @Digits.small @Digits.small' <-300 0 0 0> @NumSignW ; + pos @Digits.medium @Digits.medium' <-450 0 0 0> @YearSign ; + pos @Digits.small @Digits.small' <-300 0 0 0> @FootNote ; + pos @Digits.small @Digits.small' <-300 0 0 0> @SafhaSign; +} kern; + +feature kern { + pos @Digits.small' <-1310 0 -600 0> @Digits.small @EndOfAyah; + pos @Digits.small' <-1322 0 -600 0> @Digits.small @NumSign ; + pos @Digits.small' <-1622 0 -600 0> @Digits.small @NumSignW ; + pos @Digits.medium' <-1825 0 -900 0> @Digits.medium @YearSign ; + pos @Digits.small' <-790 0 -600 0> @Digits.small @FootNote ; + pos @Digits.small' <-1422 0 -600 0> @Digits.small @SafhaSign; +} kern; + +feature kern { + pos @Digits.small @Digits.small @Digits.small' <-300 0 0 0> @EndOfAyah; + pos @Digits.small @Digits.small @Digits.small' <-300 0 0 0> @NumSign ; + pos @Digits.small @Digits.small @Digits.small' <-300 0 0 0> @NumSignW ; + pos @Digits.medium @Digits.medium @Digits.medium' <-450 0 0 0> @YearSign ; + pos @Digits.small @Digits.small @Digits.small' <-300 0 0 0> @SafhaSign; +} kern; + +feature kern { + pos @Digits.small @Digits.small' <-300 0 0 0> @Digits.small @EndOfAyah; + pos @Digits.small @Digits.small' <-300 0 0 0> @Digits.small @NumSign ; + pos @Digits.small @Digits.small' <-300 0 0 0> @Digits.small @NumSignW ; + pos @Digits.medium @Digits.medium' <-450 0 0 0> @Digits.medium @YearSign ; + pos @Digits.small @Digits.small' <-300 0 0 0> @Digits.small @SafhaSign; +} kern; + +feature kern { + pos @Digits.small' <-1010 0 -600 0> @Digits.small @Digits.small @EndOfAyah; + pos @Digits.small' <-1022 0 -600 0> @Digits.small @Digits.small @NumSign ; + pos @Digits.small' <-1322 0 -600 0> @Digits.small @Digits.small @NumSignW ; + pos @Digits.medium' <-1375 0 -900 0> @Digits.medium @Digits.medium @YearSign ; + pos @Digits.small' <-1122 0 -600 0> @Digits.small @Digits.small @SafhaSign; +} kern; + +feature kern { + pos @Digits.medium @Digits.medium @Digits.medium @Digits.medium' <-450 0 0 0> @YearSign; + pos @Digits.small @Digits.small @Digits.small @Digits.small' <-300 0 0 0> @NumSignW; } kern; feature kern { - pos @Digits.medium @Digits.medium @YearSign @Digits.medium' <-450 0 0 0> @Digits.medium; + pos @Digits.medium @Digits.medium @Digits.medium' <-450 0 0 0> @Digits.medium @YearSign; + pos @Digits.small @Digits.small @Digits.small' <-300 0 0 0> @Digits.small @NumSignW; } kern; feature kern { - pos @Digits.medium @YearSign @Digits.medium' <-450 0 0 0> @Digits.medium @Digits.medium; + pos @Digits.medium @Digits.medium' <-450 0 0 0> @Digits.medium @Digits.medium @YearSign; + pos @Digits.small @Digits.small' <-300 0 0 0> @Digits.small @Digits.small @NumSignW; } kern; feature kern { - pos @Digits.medium @Digits.medium @Digits.medium @YearSign @Digits.medium' <-925 0 -900 0>; + pos @Digits.medium' <-925 0 -900 0> @Digits.medium @Digits.medium @Digits.medium @YearSign; + pos @Digits.small' <-1022 0 -600 0> @Digits.small @Digits.small @Digits.small @NumSignW; } kern; +############## |