From ae563ebc21543a17633ee66772617b0cd1162f36 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 28 May 2013 22:05:47 +0000 Subject: amiri (28may13) git-svn-id: svn://tug.org/texlive/trunk@30781 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/fonts/amiri/sources/enclosing.fea | 277 ++++++--------------- 1 file changed, 75 insertions(+), 202 deletions(-) (limited to 'Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea') diff --git a/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea b/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea index 5bfa229fbcc..e4fccc6530d 100644 --- a/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea +++ b/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea @@ -1,17 +1,17 @@ // -// digit enclosing signs +// subtending signs // -// first we replace any sequence of digits (up to three places) following a -// digit enclosing sign by smaller alternates - @EndOfAyah = [uni06DD]; @NumSign = [uni0600]; @YearSign = [uni0601]; @FootNote = [uni0602]; @SafhaSign = [uni0603]; -@NumSignW = [uni0600.alt]; +@NumSign3 = [uni0600.3]; +@NumSign4 = [uni0600.4]; + +@SafhaSign3 = [uni0603.3]; #ifdef ITALIC @Digits.all = [@Digits @Digits.rtl @Digits.ltr]; @@ -27,225 +27,98 @@ lookup digit2small { #endif } digit2small; -lookup NumSignW { - sub @NumSign by @NumSignW; -} NumSignW; - -feature calt { - sub [@EndOfAyah @NumSign @SafhaSign @FootNote] @Digits.all' lookup digit2small; - sub [@EndOfAyah @NumSign @SafhaSign @FootNote] @Digits.small @Digits.all' lookup digit2small; - sub [@EndOfAyah @NumSign @SafhaSign ] @Digits.small @Digits.small @Digits.all' lookup digit2small; - sub @NumSign @Digits.small @Digits.small @Digits.small @Digits.all' lookup digit2small; -} calt; - -feature calt { - sub @NumSign' lookup NumSignW @Digits.small @Digits.small @Digits.small @Digits.small; -} calt; - -lookup digit2medium { +lookup digit2medi { sub @Digits by @Digits.medium; #ifdef ITALIC sub @Digits.rtl by @Digits.medium2; sub @Digits.ltr by @Digits.medium2; #endif -} digit2medium; - -feature calt { - sub @YearSign @Digits.all' lookup digit2medium; - sub @YearSign @Digits.medium @Digits.all' lookup digit2medium; - sub @YearSign @Digits.medium @Digits.medium @Digits.all' lookup digit2medium; - sub @YearSign @Digits.medium @Digits.medium @Digits.medium @Digits.all' lookup digit2medium; -} calt; - -// now we contextually kern the sign with the digits: -// * one digit: move digit's x by -(sw + dw)/2 and its Δx by -dw -// * two digits: the above, then move 1st digit's x by -dw/2 and 2nd digit's x -// by -sw/2 and its Δx by -dw -// * three digits: the above, then move 1st & 2nd digit's x by -dw/2 and 3rd -// digit's x by -(sw/2 - dw/2) and its Δx by -dw -// -// dw = digit width, sw = sign width +} digit2medi; -feature kern { - 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>; -} kern; +lookup Sign3 { + sub @NumSign by @NumSign3; + sub @SafhaSign by @SafhaSign3; +} Sign3; -feature kern { - 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; -} kern; - -feature kern { - 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 @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; -} kern; - -feature kern { - 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 @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; +lookup Sign4 { + sub @NumSign by @NumSign4; +} Sign4; -/*************/ -// 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. +// first we replace any sequence of digits (up to two, three or four places) +// following a subtending sign by smaller alternates feature calt { - sub @Digits.all' lookup digit2small [@EndOfAyah @NumSign @SafhaSign @FootNote]; + // Uniscribe or HarfBuzz ‘latn’ + sub [@EndOfAyah ] @Digits.all' lookup digit2small @Digits.all' lookup digit2small @Digits.all' lookup digit2small; + sub [@EndOfAyah @FootNote] @Digits.all' lookup digit2small @Digits.all' lookup digit2small; + sub [@EndOfAyah @FootNote] @Digits.all' lookup digit2small; + + sub [@NumSign @YearSign] @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi; + sub [@NumSign @YearSign @SafhaSign] @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi; + sub [@NumSign @YearSign @SafhaSign] @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi; + sub [@NumSign @YearSign @SafhaSign] @Digits.all' lookup digit2medi; + + // HarfBuzz ‘arab’ + sub @Digits.all' lookup digit2small @Digits.all' lookup digit2small @Digits.all' lookup digit2small [@EndOfAyah]; + sub @Digits.all' lookup digit2small @Digits.all' lookup digit2small [@EndOfAyah @FootNote]; + sub @Digits.all' lookup digit2small [@EndOfAyah @FootNote]; + + sub @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi [@NumSign @YearSign]' lookup Sign4; + sub @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi [@NumSign @YearSign @SafhaSign]' lookup Sign3; + sub @Digits.all' lookup digit2medi @Digits.all' lookup digit2medi [@NumSign @YearSign @SafhaSign]; + sub @Digits.all' lookup digit2medi [@NumSign @YearSign @SafhaSign]; } calt; +// Should have been merged with the Uniscribe lookup above as we do for +// HarfBuzz, but then Uniscribe would crash feature calt { - sub @Digits.all' lookup digit2small @Digits.small [@EndOfAyah @NumSign @SafhaSign @FootNote]; -} calt; - -feature calt { - sub @Digits.all' lookup digit2small @Digits.small @Digits.small [@EndOfAyah @NumSign @SafhaSign ]; -} calt; - -feature calt { - sub @Digits.all' 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.all' lookup digit2medium @YearSign; -} calt; - -feature calt { - sub @Digits.all' lookup digit2medium @Digits.medium @YearSign; -} calt; - -feature calt { - sub @Digits.all' lookup digit2medium @Digits.medium @Digits.medium @YearSign; -} calt; - -feature calt { - sub @Digits.all' lookup digit2medium @Digits.medium @Digits.medium @Digits.medium @YearSign; + sub @NumSign' lookup Sign4 @Digits.medium @Digits.medium @Digits.medium @Digits.medium; + sub @NumSign' lookup Sign3 @Digits.medium @Digits.medium @Digits.medium; + sub @SafhaSign' lookup Sign3 @Digits.medium @Digits.medium @Digits.medium; } calt; +// then we contextually kern the sign with the digits so that they get enclosed by it 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; + // Uniscribe or HarfBuzz ‘latn’ + pos @EndOfAyah @Digits.small' <-2210 0 -600 0> @Digits.small' <-1610 0 -600 0> @Digits.small' <-1010 0 -600 0>; + pos @EndOfAyah @Digits.small' <-1910 0 -600 0> @Digits.small' <-1310 0 -600 0>; + pos @EndOfAyah @Digits.small' <-1610 0 -600 0>; -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; + pos @FootNote @Digits.small' <-1390 0 -600 0> @Digits.small' <-790 0 -600 0>; + pos @FootNote @Digits.small' <-1090 0 -600 0>; -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; + pos @NumSign4 @Digits.medium' <-3850 0 -900 0> @Digits.medium' <-2950 0 -900 0> @Digits.medium' <-2050 0 -900 0> @Digits.medium' <-1150 0 -900 0>; + pos @NumSign3 @Digits.medium' <-2950 0 -900 0> @Digits.medium' <-2050 0 -900 0> @Digits.medium' <-1150 0 -900 0>; + pos @NumSign @Digits.medium' <-2150 0 -900 0> @Digits.medium' <-1250 0 -900 0>; + pos @NumSign @Digits.medium' <-1700 0 -900 0>; -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; + pos @YearSign @Digits.medium' <-3625 0 -900 0> @Digits.medium' <-2725 0 -900 0> @Digits.medium' <-1825 0 -900 0> @Digits.medium' <-925 0 -900 0>; + pos @YearSign @Digits.medium' <-3175 0 -900 0> @Digits.medium' <-2275 0 -900 0> @Digits.medium' <-1375 0 -900 0>; + pos @YearSign @Digits.medium' <-2725 0 -900 0> @Digits.medium' <-1825 0 -900 0>; + pos @YearSign @Digits.medium' <-2275 0 -900 0>; -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; + pos @SafhaSign3 @Digits.medium' <-3275 0 -900 0> @Digits.medium' <-2375 0 -900 0> @Digits.medium' <-1475 0 -900 0>; + pos @SafhaSign @Digits.medium' <-2225 0 -900 0> @Digits.medium' <-1325 0 -900 0>; + pos @SafhaSign @Digits.medium' <-1775 0 -900 0>; -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; + // HarfBuzz ‘arab’ + pos @Digits.small' <-1010 0 -600 0> @Digits.small' <-1610 0 -600 0> @Digits.small' <-2210 0 -600 0> @EndOfAyah; + pos @Digits.small' <-1310 0 -600 0> @Digits.small' <-1910 0 -600 0> @EndOfAyah; + pos @Digits.small' <-1610 0 -600 0> @EndOfAyah; -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; + pos @Digits.small' <-790 0 -600 0> @Digits.small' <-1390 0 -600 0> @FootNote; + pos @Digits.small' <-1090 0 -600 0> @FootNote; -feature kern { - 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; + pos @Digits.medium' <-1150 0 -900 0> @Digits.medium' <-2050 0 -900 0> @Digits.medium' <-2950 0 -900 0> @Digits.medium' <-3850 0 -900 0> @NumSign4; + pos @Digits.medium' <-1150 0 -900 0> @Digits.medium' <-2050 0 -900 0> @Digits.medium' <-2950 0 -900 0> @NumSign3; + pos @Digits.medium' <-1250 0 -900 0> @Digits.medium' <-2150 0 -900 0> @NumSign; + pos @Digits.medium' <-1700 0 -900 0> @NumSign; -feature kern { - 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; + pos @Digits.medium' <-925 0 -900 0> @Digits.medium' <-1825 0 -900 0> @Digits.medium' <-2725 0 -900 0> @Digits.medium' <-3625 0 -900 0> @YearSign; + pos @Digits.medium' <-1375 0 -900 0> @Digits.medium' <-2275 0 -900 0> @Digits.medium' <-3175 0 -900 0> @YearSign; + pos @Digits.medium' <-1825 0 -900 0> @Digits.medium' <-2725 0 -900 0> @YearSign; + pos @Digits.medium' <-2275 0 -900 0> @YearSign; -feature kern { - 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; + pos @Digits.medium' <-1475 0 -900 0> @Digits.medium' <-2375 0 -900 0> @Digits.medium' <-3275 0 -900 0> @SafhaSign3; + pos @Digits.medium' <-1325 0 -900 0> @Digits.medium' <-2225 0 -900 0> @SafhaSign; + pos @Digits.medium' <-1775 0 -900 0> @SafhaSign; } kern; -/************/ -- cgit v1.2.3