1# Glyph classes 2@dnom = [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom]; 3@numerals = [zero one two three four five six seven eight nine]; 4@numr = [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]; 5@slash = [slash fraction]; 6 7# Mark classes 8markClass eight.numr <anchor 0 0> @INIT.1.10; 9markClass eight.numr <anchor 0 0> @INIT.2.10; 10markClass eight.numr <anchor 0 0> @INIT.3.10; 11markClass eight.numr <anchor 0 0> @INIT.4.10; 12markClass eight.numr <anchor 0 0> @INIT.5.10; 13markClass eight.numr <anchor 0 0> @INIT.6.10; 14markClass eight.numr <anchor 0 0> @INIT.7.10; 15markClass eight.numr <anchor 0 0> @INIT.8.10; 16markClass eight.numr <anchor 0 0> @INIT.9.10; 17markClass eight.numr <anchor 0 0> @NUMRNUMR; 18markClass five.numr <anchor 0 0> @INIT.1.10; 19markClass five.numr <anchor 0 0> @INIT.2.10; 20markClass five.numr <anchor 0 0> @INIT.3.10; 21markClass five.numr <anchor 0 0> @INIT.4.10; 22markClass five.numr <anchor 0 0> @INIT.5.10; 23markClass five.numr <anchor 0 0> @INIT.6.10; 24markClass five.numr <anchor 0 0> @INIT.7.10; 25markClass five.numr <anchor 0 0> @INIT.8.10; 26markClass five.numr <anchor 0 0> @INIT.9.10; 27markClass five.numr <anchor 0 0> @NUMRNUMR; 28markClass four.numr <anchor 0 0> @INIT.1.10; 29markClass four.numr <anchor 0 0> @INIT.2.10; 30markClass four.numr <anchor 0 0> @INIT.3.10; 31markClass four.numr <anchor 0 0> @INIT.4.10; 32markClass four.numr <anchor 0 0> @INIT.5.10; 33markClass four.numr <anchor 0 0> @INIT.6.10; 34markClass four.numr <anchor 0 0> @INIT.7.10; 35markClass four.numr <anchor 0 0> @INIT.8.10; 36markClass four.numr <anchor 0 0> @INIT.9.10; 37markClass four.numr <anchor 0 0> @NUMRNUMR; 38markClass nine.numr <anchor 0 0> @INIT.1.10; 39markClass nine.numr <anchor 0 0> @INIT.2.10; 40markClass nine.numr <anchor 0 0> @INIT.3.10; 41markClass nine.numr <anchor 0 0> @INIT.4.10; 42markClass nine.numr <anchor 0 0> @INIT.5.10; 43markClass nine.numr <anchor 0 0> @INIT.6.10; 44markClass nine.numr <anchor 0 0> @INIT.7.10; 45markClass nine.numr <anchor 0 0> @INIT.8.10; 46markClass nine.numr <anchor 0 0> @INIT.9.10; 47markClass nine.numr <anchor 0 0> @NUMRNUMR; 48markClass one.numr <anchor 0 0> @INIT.1.10; 49markClass one.numr <anchor 0 0> @INIT.2.10; 50markClass one.numr <anchor 0 0> @INIT.3.10; 51markClass one.numr <anchor 0 0> @INIT.4.10; 52markClass one.numr <anchor 0 0> @INIT.5.10; 53markClass one.numr <anchor 0 0> @INIT.6.10; 54markClass one.numr <anchor 0 0> @INIT.7.10; 55markClass one.numr <anchor 0 0> @INIT.8.10; 56markClass one.numr <anchor 0 0> @INIT.9.10; 57markClass one.numr <anchor 0 0> @NUMRNUMR; 58markClass seven.numr <anchor 0 0> @INIT.1.10; 59markClass seven.numr <anchor 0 0> @INIT.2.10; 60markClass seven.numr <anchor 0 0> @INIT.3.10; 61markClass seven.numr <anchor 0 0> @INIT.4.10; 62markClass seven.numr <anchor 0 0> @INIT.5.10; 63markClass seven.numr <anchor 0 0> @INIT.6.10; 64markClass seven.numr <anchor 0 0> @INIT.7.10; 65markClass seven.numr <anchor 0 0> @INIT.8.10; 66markClass seven.numr <anchor 0 0> @INIT.9.10; 67markClass seven.numr <anchor 0 0> @NUMRNUMR; 68markClass six.numr <anchor 0 0> @INIT.1.10; 69markClass six.numr <anchor 0 0> @INIT.2.10; 70markClass six.numr <anchor 0 0> @INIT.3.10; 71markClass six.numr <anchor 0 0> @INIT.4.10; 72markClass six.numr <anchor 0 0> @INIT.5.10; 73markClass six.numr <anchor 0 0> @INIT.6.10; 74markClass six.numr <anchor 0 0> @INIT.7.10; 75markClass six.numr <anchor 0 0> @INIT.8.10; 76markClass six.numr <anchor 0 0> @INIT.9.10; 77markClass six.numr <anchor 0 0> @NUMRNUMR; 78markClass three.numr <anchor 0 0> @INIT.1.10; 79markClass three.numr <anchor 0 0> @INIT.2.10; 80markClass three.numr <anchor 0 0> @INIT.3.10; 81markClass three.numr <anchor 0 0> @INIT.4.10; 82markClass three.numr <anchor 0 0> @INIT.5.10; 83markClass three.numr <anchor 0 0> @INIT.6.10; 84markClass three.numr <anchor 0 0> @INIT.7.10; 85markClass three.numr <anchor 0 0> @INIT.8.10; 86markClass three.numr <anchor 0 0> @INIT.9.10; 87markClass three.numr <anchor 0 0> @NUMRNUMR; 88markClass two.numr <anchor 0 0> @INIT.1.10; 89markClass two.numr <anchor 0 0> @INIT.2.10; 90markClass two.numr <anchor 0 0> @INIT.3.10; 91markClass two.numr <anchor 0 0> @INIT.4.10; 92markClass two.numr <anchor 0 0> @INIT.5.10; 93markClass two.numr <anchor 0 0> @INIT.6.10; 94markClass two.numr <anchor 0 0> @INIT.7.10; 95markClass two.numr <anchor 0 0> @INIT.8.10; 96markClass two.numr <anchor 0 0> @INIT.9.10; 97markClass two.numr <anchor 0 0> @NUMRNUMR; 98markClass zero.numr <anchor 0 0> @INIT.1.10; 99markClass zero.numr <anchor 0 0> @INIT.2.10; 100markClass zero.numr <anchor 0 0> @INIT.3.10; 101markClass zero.numr <anchor 0 0> @INIT.4.10; 102markClass zero.numr <anchor 0 0> @INIT.5.10; 103markClass zero.numr <anchor 0 0> @INIT.6.10; 104markClass zero.numr <anchor 0 0> @INIT.7.10; 105markClass zero.numr <anchor 0 0> @INIT.8.10; 106markClass zero.numr <anchor 0 0> @INIT.9.10; 107markClass zero.numr <anchor 0 0> @NUMRNUMR; 108 109# Lookups 110lookup frac.numr { 111 sub @numerals by @numr; 112} frac.numr; 113 114lookup frac.dnom { 115 sub [@slash @dnom] @numr' by @dnom; 116} frac.dnom; 117 118lookup frac.noslash { 119 sub @numr slash by @numr; 120 sub @numr fraction by @numr; 121} frac.noslash; 122 123lookup frac.fracinit { 124 ignore sub @numr @numr'; 125 sub @numr' by fracinit @numr; 126} frac.fracinit; 127 128lookup kern.numeral_to_fraction { 129 enum pos @numerals fracinit 140; 130 pos @dnom @numerals 140; 131} kern.numeral_to_fraction; 132 133lookup fracmark.init_1.10_target { 134 pos base fracinit 135 <anchor 3150 0> mark @INIT.1.10; 136} fracmark.init_1.10_target; 137 138lookup fracmark.init_2.10_target { 139 pos base fracinit 140 <anchor 2800 0> mark @INIT.2.10; 141} fracmark.init_2.10_target; 142 143lookup fracmark.init_3.10_target { 144 pos base fracinit 145 <anchor 2450 0> mark @INIT.3.10; 146} fracmark.init_3.10_target; 147 148lookup fracmark.init_4.10_target { 149 pos base fracinit 150 <anchor 2100 0> mark @INIT.4.10; 151} fracmark.init_4.10_target; 152 153lookup fracmark.init_5.10_target { 154 pos base fracinit 155 <anchor 1750 0> mark @INIT.5.10; 156} fracmark.init_5.10_target; 157 158lookup fracmark.init_6.10_target { 159 pos base fracinit 160 <anchor 1400 0> mark @INIT.6.10; 161} fracmark.init_6.10_target; 162 163lookup fracmark.init_7.10_target { 164 pos base fracinit 165 <anchor 1050 0> mark @INIT.7.10; 166} fracmark.init_7.10_target; 167 168lookup fracmark.init_8.10_target { 169 pos base fracinit 170 <anchor 700 0> mark @INIT.8.10; 171} fracmark.init_8.10_target; 172 173lookup fracmark.init_9.10_target { 174 pos base fracinit 175 <anchor 350 0> mark @INIT.9.10; 176} fracmark.init_9.10_target; 177 178lookup fracmark.init { 179 # fracmark.init\1.10 180 pos [@numr]' lookup fracmark.init_1.10_target @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 181 subtable; 182 # fracmark.init\2.10 183 pos [@numr]' lookup fracmark.init_2.10_target @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 184 pos [@numr]' lookup fracmark.init_2.10_target @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 185 subtable; 186 # fracmark.init\3.10 187 pos [@numr]' lookup fracmark.init_3.10_target @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 188 pos [@numr]' lookup fracmark.init_3.10_target @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 189 pos [@numr]' lookup fracmark.init_3.10_target @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 190 subtable; 191 # fracmark.init\4.10 192 pos [@numr]' lookup fracmark.init_4.10_target @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 193 pos [@numr]' lookup fracmark.init_4.10_target @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 194 pos [@numr]' lookup fracmark.init_4.10_target @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 195 pos [@numr]' lookup fracmark.init_4.10_target @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 196 subtable; 197 # fracmark.init\5.10 198 pos [@numr]' lookup fracmark.init_5.10_target @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 199 pos [@numr]' lookup fracmark.init_5.10_target @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 200 pos [@numr]' lookup fracmark.init_5.10_target @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 201 pos [@numr]' lookup fracmark.init_5.10_target @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 202 pos [@numr]' lookup fracmark.init_5.10_target @dnom @dnom @dnom @dnom @dnom @dnom; 203 subtable; 204 # fracmark.init\6.10 205 pos [@numr]' lookup fracmark.init_6.10_target @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 206 pos [@numr]' lookup fracmark.init_6.10_target @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 207 pos [@numr]' lookup fracmark.init_6.10_target @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 208 pos [@numr]' lookup fracmark.init_6.10_target @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 209 pos [@numr]' lookup fracmark.init_6.10_target @numr @dnom @dnom @dnom @dnom @dnom @dnom; 210 pos [@numr]' lookup fracmark.init_6.10_target @dnom @dnom @dnom @dnom @dnom; 211 subtable; 212 # fracmark.init\7.10 213 pos [@numr]' lookup fracmark.init_7.10_target @numr @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 214 pos [@numr]' lookup fracmark.init_7.10_target @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 215 pos [@numr]' lookup fracmark.init_7.10_target @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 216 pos [@numr]' lookup fracmark.init_7.10_target @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 217 pos [@numr]' lookup fracmark.init_7.10_target @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom; 218 pos [@numr]' lookup fracmark.init_7.10_target @numr @dnom @dnom @dnom @dnom @dnom; 219 pos [@numr]' lookup fracmark.init_7.10_target @dnom @dnom @dnom @dnom; 220 subtable; 221 # fracmark.init\8.10 222 pos [@numr]' lookup fracmark.init_8.10_target @numr @numr @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 223 pos [@numr]' lookup fracmark.init_8.10_target @numr @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 224 pos [@numr]' lookup fracmark.init_8.10_target @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 225 pos [@numr]' lookup fracmark.init_8.10_target @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 226 pos [@numr]' lookup fracmark.init_8.10_target @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom; 227 pos [@numr]' lookup fracmark.init_8.10_target @numr @numr @dnom @dnom @dnom @dnom @dnom; 228 pos [@numr]' lookup fracmark.init_8.10_target @numr @dnom @dnom @dnom @dnom; 229 pos [@numr]' lookup fracmark.init_8.10_target @dnom @dnom @dnom; 230 subtable; 231 # fracmark.init\9.10 232 pos [@numr]' lookup fracmark.init_9.10_target @numr @numr @numr @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 233 pos [@numr]' lookup fracmark.init_9.10_target @numr @numr @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 234 pos [@numr]' lookup fracmark.init_9.10_target @numr @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 235 pos [@numr]' lookup fracmark.init_9.10_target @numr @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom @dnom; 236 pos [@numr]' lookup fracmark.init_9.10_target @numr @numr @numr @numr @dnom @dnom @dnom @dnom @dnom @dnom; 237 pos [@numr]' lookup fracmark.init_9.10_target @numr @numr @numr @dnom @dnom @dnom @dnom @dnom; 238 pos [@numr]' lookup fracmark.init_9.10_target @numr @numr @dnom @dnom @dnom @dnom; 239 pos [@numr]' lookup fracmark.init_9.10_target @numr @dnom @dnom @dnom; 240 pos [@numr]' lookup fracmark.init_9.10_target @dnom @dnom; 241} fracmark.init; 242 243lookup fracmkmk.numrspacing { 244 pos mark zero.numr 245 <anchor 700 0> mark @NUMRNUMR; 246 pos mark one.numr 247 <anchor 700 0> mark @NUMRNUMR; 248 pos mark two.numr 249 <anchor 700 0> mark @NUMRNUMR; 250 pos mark three.numr 251 <anchor 700 0> mark @NUMRNUMR; 252 pos mark four.numr 253 <anchor 700 0> mark @NUMRNUMR; 254 pos mark five.numr 255 <anchor 700 0> mark @NUMRNUMR; 256 pos mark six.numr 257 <anchor 700 0> mark @NUMRNUMR; 258 pos mark seven.numr 259 <anchor 700 0> mark @NUMRNUMR; 260 pos mark eight.numr 261 <anchor 700 0> mark @NUMRNUMR; 262 pos mark nine.numr 263 <anchor 700 0> mark @NUMRNUMR; 264} fracmkmk.numrspacing; 265 266# Features 267feature afrc { 268 script DFLT; 269 language dflt; 270 lookup frac.numr; 271 lookup frac.dnom; 272 lookup frac.noslash; 273 lookup frac.fracinit; 274 script latn; 275 language dflt; 276 lookup frac.numr; 277 lookup frac.dnom; 278 lookup frac.noslash; 279 lookup frac.fracinit; 280} afrc; 281 282feature frac { 283 script DFLT; 284 language dflt; 285 lookup frac.numr; 286 lookup frac.dnom; 287 lookup frac.noslash; 288 lookup frac.fracinit; 289 script latn; 290 language dflt; 291 lookup frac.numr; 292 lookup frac.dnom; 293 lookup frac.noslash; 294 lookup frac.fracinit; 295} frac; 296 297feature kern { 298 script DFLT; 299 language dflt; 300 lookup kern.numeral_to_fraction; 301 script latn; 302 language dflt; 303 lookup kern.numeral_to_fraction; 304} kern; 305 306feature mark { 307 script DFLT; 308 language dflt; 309 lookup fracmark.init; 310 script latn; 311 language dflt; 312 lookup fracmark.init; 313} mark; 314 315feature mkmk { 316 script DFLT; 317 language dflt; 318 lookup fracmkmk.numrspacing; 319 script latn; 320 language dflt; 321 lookup fracmkmk.numrspacing; 322} mkmk; 323 324@GDEF_base = [glyph0 \NULL CR space zero one two three four five six seven eight nine slash fraction fracinit zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom]; 325@GDEF_mark = [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr]; 326table GDEF { 327 GlyphClassDef @GDEF_base, , @GDEF_mark, ; 328} GDEF; 329