summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-05-28 22:05:47 +0000
committerKarl Berry <karl@freefriends.org>2013-05-28 22:05:47 +0000
commitae563ebc21543a17633ee66772617b0cd1162f36 (patch)
tree77bc806b08db36ee3ff04a30227ba41b667d3c00 /Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea
parent0b987e2803fc9044f756d9ac4c05a293a92590e7 (diff)
amiri (28may13)
git-svn-id: svn://tug.org/texlive/trunk@30781 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea')
-rw-r--r--Master/texmf-dist/doc/fonts/amiri/sources/enclosing.fea277
1 files changed, 75 insertions, 202 deletions
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;
-/************/