-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathfamily.fea
188 lines (158 loc) · 8.85 KB
/
family.fea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# Source Hebrew family-wide features - MASTER FILE
# To ensure consistency, all features for both Roman and Italic fonts should
# be written here, with Roman-only and Italic-only content commented-out.
# This file can be duplicated for Roman and Italic features, with the
# correspondent content un-commented.
#
# Roman comment: #-[roman]
# Italic comment: #-[italic]
#
#
#---------------------------------------
@FIGS_LAT = [
zero.lat one.lat two.lat three.lat four.lat five.lat six.lat seven.lat eight.lat nine.lat zero.slash
];
@PNUM_LAT = [
zero.pnumlat one.pnumlat two.pnumlat three.pnumlat four.pnumlat five.pnumlat six.pnumlat seven.pnumlat eight.pnumlat nine.pnumlat zero.slashpnum
];
@HEBREW_SORTS = [
exclam quotedbl numbersign dollar percent ampersand quoteright parenleft parenright asterisk slash zero one two three four five six seven eight nine question at bracketleft backslash bracketright asciicircum quoteleft braceleft braceright exclamdown cent florin sterling fraction yen section quotesingle quotedblleft guillemotleft guilsinglleft guilsinglright endash dagger daggerdbl periodcentered paragraph bullet quotedblright guillemotright perthousand questiondown emdash trademark onehalf onequarter degree threequarters registered copyright hyphentwo one.sups two.sups three.sups Euro
zero.pnumheb one.pnumheb two.pnumheb three.pnumheb four.pnumheb five.pnumheb six.pnumheb seven.pnumheb eight.pnumheb nine.pnumheb newsheqel
];
@LATIN_SORTS = [
exclam.lat quotedbl.lat numbersign.lat dollar.lat percent.lat ampersand.lat quoteright.lat parenleft.lat parenright.lat asterisk.lat slash.lat zero.lat one.lat two.lat three.lat four.lat five.lat six.lat seven.lat eight.lat nine.lat question.lat at.lat bracketleft.lat backslash.lat bracketright.lat asciicircum.lat quoteleft.lat braceleft.lat braceright.lat exclamdown.lat cent.lat florin.lat sterling.lat fraction.lat yen.lat section.lat quotesingle.lat quotedblleft.lat guillemotleft.lat guilsinglleft.lat guilsinglright.lat endash.lat dagger.lat daggerdbl.lat periodcentered.lat paragraph.lat bullet.lat quotedblright.lat guillemotright.lat perthousand.lat questiondown.lat emdash.lat trademark.lat onehalf.lat onequarter.lat degree.lat threequarters.lat registered.lat copyright.lat hyphentwo.lat one.supslat two.supslat three.supslat Euro.lat
zero.pnumlat one.pnumlat two.pnumlat three.pnumlat four.pnumlat five.pnumlat six.pnumlat seven.pnumlat eight.pnumlat nine.pnumlat newsheqel.lat];
@JALT_REGULAR = [
heAlef heDalet heHe heKaf heLamed heMemFin heResh heTav
];
@JALT_WIDE = [
heAlefWide heDaletWide heHeWide heKafWide heLamedWide heMemFinWide heReshWide heTavWide
];
@NIKKUD = [
heSheva heHatafSegol heHatafPatah heHatafQamats heHiriq heTsere heSegol hePatah heQamats heQubuts heMeteg heQamatsQatan heDagesh heHolam heHolamHaser heShinDot heSinDot heRafe];
@COMBINING_MARKS_LATN = [gravecmb acutecmb circumflexcmb caroncmb tildecmb dieresiscmb macroncmb brevecmb ringcmb hungarumlautcmb dotaccentcmb];
@COMBINING_MARKS_LATN_CAP = [gravecmb.cap acutecmb.cap circumflexcmb.cap caroncmb.cap tildecmb.cap dieresiscmb.cap macroncmb.cap brevecmb.cap ringcmb.cap hungarumlautcmb.cap dotaccentcmb.cap];
#---------------------------------------
languagesystem DFLT dflt;
languagesystem hebr dflt;
languagesystem hebr JII;
languagesystem latn dflt;
#--------------------------------------
feature ccmp {
lookup DECOMPOSE_HEBREW {
lookupflag RightToLeft;
sub heShinDotted by heShin heShinDot;
sub heSinDotted by heShin heSinDot;
sub heShinDageshDotted by heShin heShinDot heDagesh.shin;
sub heSinDageshDotted by heShin heSinDot heDagesh.shin;
sub heAlefPatah by heAlef hePatah;
sub heAlefQamats by heAlef heQamats;
sub heAlefMapiq by heAlef heDagesh;
sub heBetDagesh by heBet heDagesh;
sub heGimelDagesh by heGimel heDagesh;
sub heDaletDagesh by heDalet heDagesh;
sub heHeMapiq by heHe heDagesh;
sub heVavDagesh by heVav heDagesh;
sub heZayinDagesh by heZayin heDagesh;
sub heTetDagesh by heTet heDagesh;
sub heYodDagesh by heYod heDagesh;
sub heKafDageshFin by heKafFin heDagesh;
sub heKafDagesh by heKaf heDagesh;
sub heLamedDagesh by heLamed heDagesh;
sub heMemDagesh by heMem heDagesh;
sub heNunDagesh by heNun heDagesh;
sub heSamekhDagesh by heSamekh heDagesh;
sub hePeDageshFin by hePeFin heDagesh;
sub hePeDagesh by hePe heDagesh;
sub heTsadiDagesh by heTsadi heDagesh;
sub heQofDagesh by heQof heDagesh;
sub heReshDagesh by heResh heDagesh;
sub heShinDagesh by heShin heDagesh.shin;
sub heTavDagesh by heTav heDagesh;
sub heVavHolam by heVav heHolam;
sub heBetRafe by heBet heRafe;
sub heKafRafe by heKaf heRafe;
sub hePeRafe by hePe heRafe;
} DECOMPOSE_HEBREW;
lookup SUB_HEBREW_MARKS {
lookupflag RightToLeft;
sub heSheva' heQamatsQatan' by heHatafQamatsQatan;
sub [hePatah heQamats heQamatsQatan]' heMeteg by [hePatah.short heQamats.short heQamatsQatan.short];
sub heKafFin heQamats' heMeteg by heQamats.short;
sub heKafFin heDagesh [heSheva heQamats]' by [heSheva.kaf heQamats.kaf];
sub heKafFin [heSheva heQamats]' by [heSheva.kaf heQamats.kaf];
sub heShin @NIKKUD @NIKKUD @NIKKUD heDagesh' by heDagesh.shin;
sub heShin @NIKKUD @NIKKUD heDagesh' by heDagesh.shin;
sub heShin @NIKKUD heDagesh' by heDagesh.shin;
sub heShin heDagesh' by heDagesh.shin;
} SUB_HEBREW_MARKS;
# sub heHatafSegol heMeteg by heHatafSegolMeteg;
# sub heHatafPatah heMeteg by heHatafPatahMeteg;
# sub heHatafQamats heMeteg by heHatafQamatsMeteg;
lookup SWAP_DIACRITICS {
# lookupflag LeftToRight;
sub [A-Z AE Ccedilla Eogonek @COMBINING_MARKS_LATN_CAP] @COMBINING_MARKS_LATN' by @COMBINING_MARKS_LATN_CAP;
} SWAP_DIACRITICS;
} ccmp;
#--------------------------------------
#OK
feature aalt{
feature locl;
feature lnum;
feature pnum;
feature sups;
feature jalt;
feature ss01;
feature ss02;
feature salt;
feature zero;
} aalt;
feature locl {
script latn;
language dflt;
sub @HEBREW_SORTS by @LATIN_SORTS;
} locl;
feature lnum {
sub [ampersand zero one two three four five six seven eight nine numbersign newsheqel dollar sterling yen Euro cent florin one.sups two.sups three.sups onequarter onehalf threequarters percent perthousand] by [ampersand.heb zero.heb one.heb two.heb three.heb four.heb five.heb six.heb seven.heb eight.heb nine.heb numbersign.heb newsheqel.heb dollar.heb sterling.heb yen.heb Euro.heb cent.heb florin.heb one.supsheb two.supsheb three.supsheb onequarter.heb onehalf.heb threequarters.heb percent.heb perthousand.heb];
} lnum;
feature pnum {
sub @FIGS_LAT by @PNUM_LAT;
sub [zero.heb one.heb two.heb three.heb four.heb five.heb six.heb seven.heb eight.heb nine.heb] by [zero.pnumheb one.pnumheb two.pnumheb three.pnumheb four.pnumheb five.pnumheb six.pnumheb seven.pnumheb eight.pnumheb nine.pnumheb];
} pnum;
feature sups {
sub [a e j o eogonek] by [a.sups e.sups j.sups o.sups eogonek.sups];
} sups;
#--------------------------------------
feature case {
sub @COMBINING_MARKS_LATN by @COMBINING_MARKS_LATN_CAP;
sub hlinebelow by H macronbelowcmb;
} case;
feature dlig { # discretionary ligatures
lookupflag RightToLeft IgnoreMarks;
sub heAlef heLamed by heAlefLamed;
} dlig;
feature jalt { # justification alternates
lookup jalt1 {
lookupflag RightToLeft;
sub @JALT_REGULAR by @JALT_WIDE;
} jalt1;
} jalt;
feature ss01 { # stylistic set 1
lookup FIGS_LAT {
sub [zero one two three four five six seven eight nine numbersign newsheqel dollar sterling yen Euro cent florin degree one.sups two.sups three.sups fraction divisionslash onehalf onequarter threequarters percent perthousand] by [zero.lat one.lat two.lat three.lat four.lat five.lat six.lat seven.lat eight.lat nine.lat numbersign.lat newsheqel.lat dollar.lat sterling.lat yen.lat Euro.lat cent.lat florin.lat degree.lat one.supslat two.supslat three.supslat fraction.lat divisionslash.lat onehalf.lat onequarter.lat threequarters.lat percent.lat perthousand.lat];
sub [zero.heb one.heb two.heb three.heb four.heb five.heb six.heb seven.heb eight.heb nine.heb zero.pnumheb one.pnumheb two.pnumheb three.pnumheb four.pnumheb five.pnumheb six.pnumheb seven.pnumheb eight.pnumheb nine.pnumheb numbersign.heb newsheqel.heb dollar.heb sterling.heb yen.heb Euro.heb cent.heb florin.heb one.supsheb two.supsheb three.supsheb onehalf.heb onequarter.heb threequarters.heb percent.heb perthousand.heb] by [zero.lat one.lat two.lat three.lat four.lat five.lat six.lat seven.lat eight.lat nine.lat zero.pnumlat one.pnumlat two.pnumlat three.pnumlat four.pnumlat five.pnumlat six.pnumlat seven.pnumlat eight.pnumlat nine.pnumlat numbersign.lat newsheqel.lat dollar.lat sterling.lat yen.lat Euro.lat cent.lat florin.lat one.supslat two.supslat three.supslat onehalf.lat onequarter.lat threequarters.lat percent.lat perthousand.lat];
} FIGS_LAT;
} ss01;
feature ss02 { # stylistic set 2
lookup jalt1;
} ss02;
feature salt { # stylistic alternates
lookup jalt1;
lookup FIGS_LAT;
} salt;
feature zero {
sub [zero.lat zero.pnumlat] by [zero.slash zero.slashpnum];
} zero;
feature size {
parameters 12.0 0; # design size, subfamily
} size;