1
2local kerns = {}
3mathematics.tweaks.kernsets = kerns
4
5local punctuation = table.setmetatableindex(function(t,k)
6 local v = {
7 [0x2C] = k,
8 [0x2E] = k,
9 }
10 t[k] = v
11 return v
12end)
13
14kerns[".,"] = punctuation
15
16return {
17 name = "common-math",
18 version = "1.00",
19 comment = "Goodies that complement pagella.",
20 author = "Hans Hagen & Mikael Sundqvist",
21 copyright = "ConTeXt development team",
22 mathematics = {
23 tweaks = {
24 presets = {
25 fallbacks = function(parameters)
26 return {
27 tweak = "fallbacks",
28 }
29 end,
30 scripttocalligraphic = function(parameters)
31 return {
32 tweak = "replacealphabets",
33 feature = "scripttocalligraphic",
34 list = {
35 {
36 source = "uppercasescript",
37 target = "uppercasecalligraphic",
38 },
39 {
40 source = "uppercaseboldscript",
41 target = "uppercaseboldcalligraphic",
42 },
43 },
44 }
45 end,
46 moderntocalligraphic = function(parameters)
47 return {
48 tweak = "replacealphabets",
49 feature = "moderntocalligraphic",
50 list = {
51 {
52 source = "uppercasescript",
53 target = "uppercasecalligraphic",
54 filename = "latinmodern-math.otf",
55 rscale = parameters.rscale,
56 },
57 {
58 source = "uppercaseboldscript",
59 target = "uppercaseboldcalligraphic",
60 filename = "latinmodern-math.otf",
61 rscale = parameters.rscale,
62 },
63 },
64 }
65 end,
66 eulertocalligraphic = function(parameters)
67 return {
68 tweak = "replacealphabets",
69 feature = "eulertocalligraphic",
70 list = {
71 {
72 source = "uppercasescript",
73 target = "uppercasecalligraphic",
74 filename = "euler-math.otf",
75 rscale = parameters.rscale,
76 },
77 {
78 source = "uppercaseboldscript",
79 target = "uppercaseboldcalligraphic",
80 filename = "euler-math.otf",
81 rscale = parameters.rscale,
82 },
83 },
84 }
85 end,
86 rsfstoscript = function(parameters)
87 return {
88 tweak = "replacealphabets",
89 feature = "rsfstoscript",
90 list = {
91 {
92 source = "uppercasescript",
93 target = "uppercasescript",
94 filename = "ralphsmithsformalscript-companion.otf",
95 rscale = parameters.rscale,
96 },
97 {
98 source = "uppercaseboldscript",
99 target = "uppercaseboldscript",
100 filename = "ralphsmithsformalscript-companion.otf",
101 rscale = parameters.rscale,
102 },
103 },
104 }
105 end,
106 rsfsuprighttoscript = function(parameters)
107 return {
108 tweak = "replacealphabets",
109 feature = "rsfsuprighttoscript",
110 list = {
111 {
112 source = "uppercasescript",
113 target = "uppercasescript",
114 filename = "ralphsmithsformalscript-companion.otf",
115 rscale = parameters.rscale,
116 feature = "ss01",
117 },
118 {
119 source = "uppercaseboldscript",
120 target = "uppercaseboldscript",
121 filename = "ralphsmithsformalscript-companion.otf",
122 rscale = parameters.rscale,
123 feature = "ss01",
124 },
125 },
126 }
127 end,
128 braille = function(parameters)
129 return {
130 tweak = "replacealphabets",
131 feature = "braille",
132 list = {
133 {
134 source = "braillepatterns",
135 target = "braillepatterns",
136 filename = "dejavuserif.ttf",
137 rscale = parameters.rscale,
138 },
139 },
140 }
141 end,
142 xitsarabic = function(parameters)
143 return {
144 tweak = "replacealphabets",
145 feature = "xitsarabic",
146 list = {
147 {
148 source = "arabicmathematicalalphabeticsymbols",
149 target = "arabicmathematicalalphabeticsymbols",
150 filename = "xitsmath-companion.otf",
151 rscale = parameters.rscale,
152 },
153 {
154 source = "digitsarabicindic",
155 target = "digitsarabicindic",
156 filename = "xitsmath-companion.otf",
157 rscale = parameters.rscale,
158 },
159 {
160 source = "digitsextendedarabicindic",
161 target = "digitsextendedarabicindic",
162 filename = "xitsmath-companion.otf",
163 rscale = parameters.rscale,
164 },
165 },
166 }
167 end,
168 moveitalics = function(parameters)
169 return {
170 tweak = "moveitalics",
171 correct = parameters.correct,
172 list = (parameters.all and "all") or (parameters.letters and "letters") or {
173
174 "lowercasenormal",
175 "lowercaseitalic",
176 "lowercasebold",
177 "lowercasebolditalic",
178 "lowercasegreeknormal",
179 "lowercasegreekitalic",
180 "lowercasegreekbold",
181 "lowercasegreekbolditalic",
182 "lowercaseboldfraktur",
183 "lowercaseboldscript",
184 "lowercasedoublestruck",
185 "lowercasefraktur",
186 "lowercasegreeksansserifbold",
187 "lowercasegreeksansserifbolditalic",
188 "lowercasemonospace",
189 "lowercasesansserifbold",
190 "lowercasesansserifbolditalic",
191 "lowercasesansserifitalic",
192 "lowercasesansserifnormal",
193 "lowercasescript",
194
195 "uppercasenormal",
196 "uppercaseitalic",
197 "uppercasebold",
198 "uppercasebolditalic",
199 "uppercasegreeknormal",
200 "uppercasegreekitalic",
201 "uppercasegreekbold",
202 "uppercasegreekbolditalic",
203 "uppercaseboldfraktur",
204 "uppercasebolditalic",
205 "uppercaseboldscript",
206 "uppercasedoublestruck",
207 "uppercasefraktur",
208 "uppercasegreeksansserifbold",
209 "uppercasegreeksansserifbolditalic",
210 "uppercasemonospace",
211 "uppercasesansserifbold",
212 "uppercasesansserifbolditalic",
213 "uppercasesansserifitalic",
214 "uppercasesansserifnormal",
215 "uppercasescript",
216
217 "digitsbold",
218 "digitsdoublestruck",
219 "digitslatin",
220 "digitsmonospace",
221 "digitsnormal",
222 "digitssansserifbold",
223 "digitssansserifnormal",
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238 mathematics.tweaks.subsets.dotless,
239 mathematics.tweaks.subsets.letterlike,
240 }
241 }
242 end,
243 moveintegrals = function(parameters)
244 return {
245 tweak = "movelimits",
246 factor = parameters.factor or 1,
247 icfactor = parameters.icfactor or 1,
248 list = mathematics.tweaks.subsets.integrals,
249 }
250 end,
251 wipeitalics = function(parameters)
252 return {
253 tweak = "wipeitalics",
254 all = true,
255 }
256 end,
257 wipeanchors = function(parameters)
258 return {
259
260
261 tweak = "wipeanchors",
262 list = {
263 "digitsbold",
264 "digitsdoublestruck",
265 "digitsmonospace",
266 "digitsnormal",
267 "digitssansserifbold",
268 "digitssansserifnormal",
269 "lowercasebold",
270 "lowercaseboldfraktur",
271 "lowercasedoublestruck",
272 "lowercasefraktur",
273 "lowercasegreekbold",
274 "lowercasegreeknormal",
275 "lowercasegreeksansserifbold",
276 "lowercasemonospace",
277 "lowercasenormal",
278 "lowercasesansserifbold",
279 "lowercasesansserifnormal",
280 "uppercasebold",
281 "uppercaseboldfraktur",
282 "uppercasedoublestruck",
283 "uppercasefraktur",
284 "uppercasegreekbold",
285 "uppercasegreeknormal",
286 "uppercasegreeksansserifbold",
287 "uppercasemonospace",
288 "uppercasenormal",
289 "uppercasesansserifbold",
290 "uppercasesansserifnormal",
291 },
292 }
293 end,
294 pagellaradical = function(parameters)
295 return {
296 tweak = "tweaks",
297 feature = "pagellaradical",
298 list = {
299 {
300 tweak = "replacealphabets",
301 list = {
302 {
303 source = { first = 0x0221A },
304 filename = "texgyrepagella-math.otf",
305 inherit = {
306 RadicalRuleThickness = true,
307 },
308 },
309 },
310 },
311
312
313
314
315
316
317 },
318 }
319 end,
320 smalldigits = function(parameters)
321 return {
322 tweak = "dimensions",
323 feature = "smalldigits",
324 list = {
325 ["digitsnormal"] = {
326 factor = parameters.factor or 0.9,
327 },
328 },
329 }
330 end,
331 addmathkerns = function(parameters)
332 local factor = parameters.factor or 1
333 return {
334 tweak = "kernpairs",
335 list = {
336
337 [0x1D436] = punctuation[factor * -0.05],
338 [0x1D439] = punctuation[factor * -0.15],
339 [0x1D43B] = punctuation[factor * -0.05],
340 [0x1D43D] = punctuation[factor * -0.15],
341 [0x1D43E] = punctuation[factor * -0.05],
342 [0x1D440] = punctuation[factor * -0.05],
343 [0x1D441] = punctuation[factor * -0.05],
344 [0x1D443] = punctuation[factor * -0.15],
345 [0x1D446] = punctuation[factor * -0.05],
346 [0x1D447] = punctuation[factor * -0.05],
347 [0x1D448] = punctuation[factor * -0.15],
348 [0x1D449] = punctuation[factor * -0.20],
349 [0x1D44A] = punctuation[factor * -0.15],
350 [0x1D44B] = punctuation[factor * -0.05],
351 [0x1D44C] = punctuation[factor * -0.20],
352 [0x1D44D] = punctuation[factor * -0.05],
353 [0x1D453] = punctuation[factor * -0.10],
354 [0x1D457] = punctuation[factor * -0.10],
355 [0x1D45F] = punctuation[factor * -0.10],
356 [0x00393] = punctuation[factor * -0.10],
357 [0x003A0] = punctuation[factor * -0.05],
358 [0x003A5] = punctuation[factor * -0.15],
359 [0x003A8] = punctuation[factor * -0.05],
360 [0x1D6FF] = punctuation[factor * -0.10],
361 [0x1D708] = punctuation[factor * -0.10],
362 [0x1D70E] = punctuation[factor * -0.10],
363 [0x1D70F] = punctuation[factor * -0.10],
364 [0x1D46A] = punctuation[factor * -0.05],
365 [0x1D46D] = punctuation[factor * -0.15],
366 [0x1D46F] = punctuation[factor * -0.05],
367 [0x1D471] = punctuation[factor * -0.15],
368 [0x1D472] = punctuation[factor * -0.05],
369 [0x1D474] = punctuation[factor * -0.05],
370 [0x1D475] = punctuation[factor * -0.05],
371 [0x1D477] = punctuation[factor * -0.15],
372 [0x1D47A] = punctuation[factor * -0.10],
373 [0x1D47B] = punctuation[factor * -0.05],
374 [0x1D47C] = punctuation[factor * -0.15],
375 [0x1D47D] = punctuation[factor * -0.20],
376 [0x1D47E] = punctuation[factor * -0.15],
377 [0x1D47F] = punctuation[factor * -0.05],
378 [0x1D480] = punctuation[factor * -0.20],
379 [0x1D481] = punctuation[factor * -0.05],
380 [0x1D487] = punctuation[factor * -0.10],
381 [0x1D48B] = punctuation[factor * -0.10],
382 [0x1D493] = punctuation[factor * -0.10],
383 [0x1D6AA] = punctuation[factor * -0.15],
384 [0x1D6B7] = punctuation[factor * -0.05],
385 [0x1D6BC] = punctuation[factor * -0.15],
386 [0x1D6BF] = punctuation[factor * -0.05],
387 [0x1D739] = punctuation[factor * -0.10],
388 [0x1D742] = punctuation[factor * -0.10],
389 [0x1D748] = punctuation[factor * -0.10],
390 [0x1D749] = punctuation[factor * -0.10],
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451 },
452 }
453 end,
454 },
455 },
456 },
457}
458 |