font-pre.mkxl /size: 29 Kb    last modification: 2024-01-16 09:02
1%D \module
2%D   [       file=font-pre,
3%D        version=2012.01.04, % moved from font-ini
4%D          title=\CONTEXT\ Font Macros,
5%D       subtitle=Predefined,
6%D         author=Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14\writestatus{loading}{ConTeXt Font Macros / Predefined}
15
16\unprotect
17
18%D A basic set of features is defined here.
19
20% beware, base mode + dynamics can give weird effects
21
22% frac : with numr dnom
23%
24% vkrn valt vert vrt2 vpal : when vertical
25%
26% rtlm rtla : in r2l runs
27% ltrm ltra : in l2r runs
28%
29% rvrn : variable fonts
30%
31% rtbd lfbd : opbd
32%
33% rkrf rphf vatu vjmo tjmo rclt psts pstf ljmo haln
34% pres pref nukt
35% abvs abvm blwm blws cjct blwf akhn (indic)
36% half
37% abvf cfar (khmer)
38%
39% ccmp locl calt clig liga rlig
40%
41% mkmk mark kern (palt pwid) curs (by choice but some fonts need it)
42%
43% init medi isol fina (unicode)
44% fin3 fin2 med2 : syriac
45%
46% cpsp : percentage spacing (todo)
47%
48% dtls flac :math
49
50%D The missing feature:
51%D
52%D \starttyping
53%D \ruledhbox{\char"2012}\par % figuredash
54%D \ruledhbox{0}\par
55%D \stoptyping
56
57\definefontfeature
58  [always]
59  [mode=node,    % we had 'auto', but let's try 'node' for a while and see what the impact is
60   script=auto,  % on speed; 'base' just doesn't play well with dynamics; some day we can even
61   autoscript=position,
62   autolanguage=position,
63   textcontrol=collapsehyphens,
64   checkmissing=yes,
65   kern=yes,     % consider skipping the base passes when no base mode is used
66   mark=yes,
67   mkmk=yes,
68   curs=yes]
69
70\definefontfeature
71  [default]
72  [always]
73  [itlc=yes, % new per 10-2023
74   liga=yes]
75
76 % ccmp=yes, % maybe too
77 % locl=yes, % maybe too
78 % calt=yes, % maybe too
79 % clig=yes, % maybe too
80 % rlig=yes, % maybe too
81 % tlig=yes, % no longer default (texligatures=yes)
82 % trep=yes, % no longer default (texquotes=yes)
83
84% if needed users can add this to a local cont-loc.mkxl in texmf-local:
85
86% \definefontfeature
87%   [default]
88%   [default]
89%   [textcontrol=,
90%    tlig=yes,
91%    trep=yes]
92
93\definefontfeature
94  [original] % a clone of default so we can revert
95  [default]
96
97\definefontfeature
98  [smallcaps]
99  [always]
100  [smcp=yes]
101
102\definefontfeature
103  [oldstyle]
104  [always]
105  [onum=yes,
106   liga=yes]
107
108\definefontfeature
109  [inlinenumbers]
110  [pnum=yes,
111   tnum=no]
112
113\definefontfeature
114  [tabularnumbers]
115  [tnum=yes,
116   pnum=no]
117
118\definefontfeature
119  [oldstylenumbers]
120  [onum=yes]
121
122\definefontfeature
123  [zero]
124  [zero=yes]
125
126% \definefontfeature
127%   [newstyle]
128%   [onum=no]
129
130\definefontfeature % == default unless redefined
131  [ligatures]
132  [always]
133  [liga=yes]
134
135\definefontfeature
136  [letterspacing]
137  [liga=no,
138   rlig=no,
139   clig=no,
140   dlig=no,
141   ccmp=yes,
142   keepligatures=auto]
143
144\definefontfeature % can be used for type1 fonts
145  [complete]
146  [always]
147  [compose=yes,
148   liga=yes]
149
150\definefontfeature
151  [none]
152  [mode=none,
153   features=no]
154
155% \definefontfeature[none][none][textcontrol=collapsehyphens]
156
157\definefontfeature
158  [semitic-complete]
159  [mode=node,analyze=yes,language=dflt,ccmp=yes,
160   autoscript=position,autolanguage=position,
161   init=yes,medi=yes,fina=yes,isol=yes,
162 % fin2=yes,fin3=yes,med2=yes,
163   mark=yes,mkmk=yes,kern=yes,curs=yes,
164   liga=yes,dlig=yes,rlig=yes,clig=yes,calt=yes]
165
166\definefontfeature
167  [semitic-simple]
168  [mode=node,analyze=yes,language=dflt,ccmp=yes,
169   autoscript=position,autolanguage=position,
170   init=yes,medi=yes,fina=yes,isol=yes,
171 % fin2=yes,fin3=yes,med2=yes,
172   mark=yes,mkmk=yes,kern=yes,curs=yes,
173   rlig=yes,calt=yes]
174
175\definefontfeature
176  [arabic]
177  [semitic-complete]
178  [script=arab]
179
180\definefontfeature
181  [syriac]
182  [arabic]
183  [fin2=yes,fin3=yes,med2=yes] % script=syrc
184
185\definefontfeature
186  [reordercombining]
187  [reordercombining=yes]
188
189\definefontfeature
190  [hebrew]
191  [semitic-complete]
192  [script=hebr,
193   reordercombining=yes] % seems to work best with reasonable fonts
194
195\definefontfeature
196  [simplearabic]
197  [semitic-simple]
198  [script=arab]
199
200\definefontfeature
201  [simplehebrew]
202  [semitic-simple]
203  [script=hebr]
204
205% indic:
206%
207% conjuncts : auto | continue | quit (default)
208% movematra : auto | leftbeforebase | default
209
210\definefontfeature
211  [indic-common]
212  [mode=node,
213   language=dflt,
214   % localized
215   indic=auto, % we need to handle fuzzy fonts
216   % localized
217   locl=yes,
218   % positioning
219   kern=yes,
220   dist=yes,
221   % above/below base marks
222   abvm=yes,
223   blwm=yes,
224   % basic shaping
225   nukt=yes,
226   akhn=yes,
227   rphf=yes,
228   % presentation
229   pres=yes,
230   abvs=yes,
231   blws=yes,
232   psts=yes,
233   haln=yes,
234   calt=yes]
235
236\definefontfeature
237  [devanagari-one]
238  [indic-common]
239  [script=deva,
240   % basic shaping
241   rkrf=yes,
242   blwf=yes,
243   half=yes,
244   vatu=yes,
245   cjct=yes]
246
247\definefontfeature
248  [bengali-one]
249  [indic-common]
250  [script=beng,
251   % basic shaping
252   blwf=yes,
253   half=yes,
254   pstf=yes,
255   vatu=yes,
256   cjct=yes,
257   % presentation
258   init=yes]
259
260\definefontfeature
261  [gujarati-one]
262  [indic-common]
263  [script=gujr,
264   % basic shaping
265   rkrf=yes,
266   blwf=yes,
267   half=yes,
268   vatu=yes,
269   cjct=yes]
270
271\definefontfeature
272  [gurmukhi-one]
273  [indic-common]
274  [script=guru,
275   % basic shaping
276   blwf=yes,
277   half=yes,
278   pstf=yes,
279   vatu=yes,
280   cjct=yes]
281
282\definefontfeature
283  [kannada-one]
284  [indic-common]
285  [script=knda,
286   % basic shaping
287   pref=yes,
288   blwf=yes,
289   half=yes,
290   pstf=yes,
291   cjct=yes]
292
293\definefontfeature
294  [malayalam-one]
295  [indic-common]
296  [script=mlym,
297   % basic shaping
298   pref=yes,
299   blwf=yes,
300   half=yes,
301   pstf=yes,
302   cjct=yes]
303
304\definefontfeature
305  [oriya-one]
306  [indic-common]
307  [script=orya,
308   % basic shaping
309   blwf=yes,
310   pstf=yes,
311   cjct=yes]
312
313\definefontfeature
314  [tamil-one]
315  [indic-common]
316  [script=taml,
317   % basic shaping
318   pref=yes,
319   half=yes]
320
321\definefontfeature
322  [telugu-one]
323  [indic-common]
324  [script=telu,
325   % basic shaping
326   pref=yes,
327   blwf=yes,
328   half=yes,
329   pstf=yes,
330   cjct=yes]
331
332\definefontfeature [devanagari-two] [devanagari-one] [script=dev2]
333\definefontfeature [bengali-two]    [bengali-one]    [script=bng2]
334\definefontfeature [gujarati-two]   [gujarati-one]   [script=gjr2]
335\definefontfeature [gurmukhi-two]   [gurmukhi-one]   [script=gur2]
336\definefontfeature [kannada-two]    [kannada-one]    [script=knd2]
337\definefontfeature [malayalam-two]  [malayalam-one]  [script=mlm2]
338\definefontfeature [oriya-two]      [oriya-one]      [script=ory2]
339\definefontfeature [tamil-two]      [tamil-one]      [script=tml2]
340\definefontfeature [telugu-two]     [telugu-one]     [script=tel2]
341
342% mongolian
343
344\definefontfeature
345  [mongolian]
346  [default]
347  [script=mong,
348   init=yes,medi=yes,fina=yes,isol=yes,
349   rlig=yes,rclt=yes,calt=yes,
350  %dlig=yes,cswh=yes, % optional
351   mset]
352
353% tibetan
354
355\definefontfeature
356  [tibetan]
357  [always]
358  [script=tibt,
359   language=dflt,
360   locl=yes,
361   ccmp=yes,
362   abvs=yes,
363   blws=yes,
364   calt=yes,
365   liga=yes,
366   abvm=yes,
367   blwm=yes]
368
369% cjk
370
371\definefontfeature
372  [jamoforms]
373  [ljmo=yes,
374   tjmo=yes,
375   vjmo=yes]
376
377% \definefontfeature
378%   [japanese]
379%   [default]
380%   [language=jan]
381
382% \definefontfeature
383%   [simplified-chinese]
384%   [default]
385%   [language=zhs]
386
387% \definefontfeature
388%   [traditional-chinese]
389%   [default]
390%   [language=zht]
391
392% \definefontfeature
393%   [chinese]
394%   [simplified-chinese]
395
396% \definefontfeature
397%   [korean]
398%   [default]
399%   [language=kor]
400
401% symbols:
402
403\definefontfeature
404  [dingbats]
405  [mode=base,
406   goodies=dingbats,
407   unicoding=yes]
408
409% math:
410
411\definefontfeature
412  [mathematics]
413  [mode=base,
414 % mode=none, % better, maybe do this last
415   kern=yes,  % =force
416 % flac=yes,  % handled differently
417 % liga=yes,  % makes no sense
418   mathalternates=yes,
419 % mathitalics=yes, % we pass them
420 % mathdimensions=all,
421 % mathkerns=yes,
422 % staircase=yes,
423   compactmath=yes,
424   flattenaccents=yes,
425 % mathgaps=yes,
426   mathexpansion=math,
427   language=dflt,
428   script=math]
429
430\ifdefined\mathnolimitsmode
431    \mathnolimitsmode\plusone % font driven (only opentype)
432\fi
433
434% \ifdefined\variablefam
435%     \variablefam 63
436% \fi
437
438\definefontfeature[virtualmath]       [mathematics]
439
440\definefontfeature[math-text]         [mathematics] [ssty=no]
441\definefontfeature[math-script]       [mathematics] [ssty=1]
442\definefontfeature[math-scriptscript] [mathematics] [ssty=2]
443
444%D Nice to have too:
445
446\definefontfeature
447  [quality]
448  [expansion=quality,
449   protrusion=quality]
450
451\definefontfeature
452  [fullprotrusion]
453  [protrusion=pure]
454
455\definefontfeature
456  [slanted]
457  [slant=.2]
458
459% \definefontfeature
460%   [boldened]
461%   [extend=1.2]
462
463%D Tweaks:
464%D
465%D \starttyping
466%D \setupbodyfont[dejavu]
467%D
468%D \starttext
469%D     \startTEXpage[align={tolerant,stretch},offset=1ex]
470%D         {\addff{camelcasing} \samplefile{tufte}\par}
471%D         {\addff{uppercasing} \samplefile{tufte}\par}
472%D         {\addff{lowercasing} \samplefile{tufte}\par}
473%D         {\addff{primes} 123'345''\par}
474%D     \stopTEXpage
475%D \stoptext
476%D \stoptyping
477
478\definefontfeature[primes]     [primes=yes] % text
479\definefontfeature[uppercasing][uppercasing=yes]
480\definefontfeature[lowercasing][lowercasing=yes]
481\definefontfeature[camelcasing][camelcasing=yes]
482\definefontfeature[tabledigits][tabledigits=yes,tnum=yes]
483
484%D Neat:
485
486% By eye:
487%
488% \definefontfeature[boldened-10][effect={width=0.10,delta=1.0,hdelta=0.500,ddelta=0.150,vshift=0.125,extend=1.025,squeeze=0.99250}]
489% \definefontfeature[boldened-15][effect={width=0.15,delta=1.0,hdelta=0.500,ddelta=0.150,vshift=0.250,extend=1.050,squeeze=0.98750}]
490% \definefontfeature[boldened-20][effect={width=0.20,delta=1.0,hdelta=0.500,ddelta=0.150,vshift=0.375,extend=1.075,squeeze=0.98125}]
491% \definefontfeature[boldened-30][effect={width=0.30,delta=1.0,hdelta=0.500,ddelta=0.150,vshift=0.500,extend=1.100,squeeze=0.97500}]
492%
493% By calculation:
494%
495% \definefontfeature[boldened-10][effect={width=0.10,delta=1.0,hdelta=0.02500,ddelta=0.02500,vshift=0.02500,extend=1.050,squeeze=0.99500}]
496% \definefontfeature[boldened-15][effect={width=0.15,delta=1.0,hdelta=0.05625,ddelta=0.05625,vshift=0.05625,extend=1.075,squeeze=0.99250}]
497% \definefontfeature[boldened-20][effect={width=0.20,delta=1.0,hdelta=0.10000,ddelta=0.10000,vshift=0.10000,extend=1.100,squeeze=0.99000}]
498% \definefontfeature[boldened-30][effect={width=0.30,delta=1.0,hdelta=0.22500,ddelta=0.22500,vshift=0.22500,extend=1.150,squeeze=0.98500}]
499%
500% So we can do this:
501
502\definefontfeature[boldened-10][effect={width=0.10,auto=yes}]
503\definefontfeature[boldened-15][effect={width=0.15,auto=yes}]
504\definefontfeature[boldened-20][effect={width=0.20,auto=yes}]
505\definefontfeature[boldened-25][effect={width=0.25,auto=yes}]
506\definefontfeature[boldened-30][effect={width=0.30,auto=yes}]
507
508\definefontfeature
509  [boldened]
510  [boldened-30]
511
512%D Emoji etc:
513
514\definefontfeature[bandw:overlay][ccmp=yes,dist=yes]
515\definefontfeature[color:overlay][ccmp=yes,dist=yes,colr=yes]
516%definefontfeature[bandw:svg]    [ccmp=yes,dist=yes]
517\definefontfeature[color:svg]    [ccmp=yes,dist=yes,svg=yes]
518%definefontfeature[bandw:bitmap] [ccmp=yes,dist=yes,sbix=yes]
519\definefontfeature[color:bitmap] [ccmp=yes,dist=yes,sbix=yes] % also cblc
520
521% Plus an automatic one:
522
523\definefontfeature[color]        [ccmp=yes,dist=yes,color=auto]
524
525%D We define some colors that are used in tracing (for instance \OPENTYPE\
526%D features). We cannot yet inherit because no colors are predefined.
527
528\definecolor[font:init][r=.75]
529\definecolor[font:medi][g=.75]
530\definecolor[font:fina][b=.75]
531\definecolor[font:isol][r=.75,g=.75] % [y=.75]
532\definecolor[font:mark][r=.75,b=.75] % [m=.75]
533\definecolor[font:rest][b=.75,g=.75] % [c=.75]
534
535\definecolor[font:0] [s=1]
536\definecolor[font:1] [r=.75]
537\definecolor[font:2] [g=.75]
538\definecolor[font:3] [b=.75]
539\definecolor[font:4] [r=.75,g=.75]
540\definecolor[font:5] [r=.75,b=.75]
541\definecolor[font:6] [b=.75,g=.75]
542\definecolor[font:7] [r=.75]
543\definecolor[font:8] [g=.75]
544\definecolor[font:9] [b=.75]
545
546\definecolor[f:r:t][a=1,t=.25,r=1]
547\definecolor[f:g:t][a=1,t=.25,g=1]
548\definecolor[f:b:t][a=1,t=.25,b=1]
549\definecolor[f:c:t][a=1,t=.25,c=1]
550\definecolor[f:m:t][a=1,t=.25,m=1]
551\definecolor[f:y:t][a=1,t=.25,y=1]
552\definecolor[f:k:t][a=1,t=.25,s=0]
553\definecolor[f:s:t][a=1,t=.25,s=0]
554
555\definepalet % weird place
556  [layout]
557  [grid=trace:dr,
558   page=trace:dg,
559   profile=f:s:t,
560   one=f:y:t,
561   mix=f:b:t]
562
563%D Now we're up for some definitions.
564
565%D \starttyping
566%D \definebodyfontenvironment[pagella][default][default]
567%D \definebodyfontenvironment[pagella][default][metric]
568%D \stoptyping
569
570\definebodyfontenvironment
571  [\s!default]
572  [        \s!text=1.0,
573         \s!script=0.7,
574   \s!scriptscript=0.5,
575              \s!a=1.200,
576              \s!b=1.440,
577              \s!c=1.728,
578              \s!d=2.074,
579                 *=\wildcardfontscale,
580              \s!x=0.8,
581             \s!xx=0.6,
582            \v!big=1.2,
583          \v!small=0.8,
584 \c!interlinespace=,
585             \s!em=\v!slanted]
586
587\definebodyfontenvironment
588  [metric]
589  [        \s!text=1.0,
590         \s!script=0.7,
591   \s!scriptscript=0.5,
592              \s!a=1.25,
593              \s!b=1.50,
594              \s!c=1.75,
595              \s!d=2.00,
596                 *=\wildcardfontscale,
597              \s!x=0.8,
598             \s!xx=0.6,
599            \v!big=1.2,
600          \v!small=0.8,
601 \c!interlinespace=,
602             \s!em=\v!slanted]
603
604\definebodyfontenvironment
605  [20.7pt]
606  [        \s!text=20.7pt,
607         \s!script=\!!fourteenpointfour,
608   \s!scriptscript=\!!twelvepoint,
609              \s!x=17.3pt,
610             \s!xx=\!!fourteenpointfour,
611            \v!big=20.7pt,    % !!!!
612          \v!small=17.3pt]
613
614\definebodyfontenvironment
615  [17.3pt]
616  [        \s!text=17.3pt,
617         \s!script=\!!twelvepoint,
618   \s!scriptscript=\!!tenpoint,
619              \s!x=\!!fourteenpointfour,
620             \s!xx=\!!twelvepoint,
621            \v!big=20.7pt,
622          \v!small=\!!fourteenpointfour]
623
624\definebodyfontenvironment
625  [\!!fourteenpointfour]
626  [        \s!text=\!!fourteenpointfour,
627         \s!script=\!!elevenpoint,
628   \s!scriptscript=\!!ninepoint,
629              \s!x=\!!twelvepoint,
630             \s!xx=\!!tenpoint,
631            \v!big=17.3pt,
632          \v!small=\!!twelvepoint]
633
634\definebodyfontenvironment
635  [\!!twelvepoint]
636  [        \s!text=\!!twelvepoint,
637         \s!script=\!!ninepoint,
638   \s!scriptscript=\!!sevenpoint,
639              \s!x=\!!tenpoint,
640             \s!xx=\!!eightpoint,
641            \v!big=\!!fourteenpointfour,
642          \v!small=\!!tenpoint]
643
644\definebodyfontenvironment
645  [\!!elevenpoint]
646  [        \s!text=\!!elevenpoint,
647         \s!script=\!!eightpoint,
648   \s!scriptscript=\!!sixpoint,
649              \s!x=\!!ninepoint,
650             \s!xx=\!!sevenpoint,
651            \v!big=\!!twelvepoint,
652          \v!small=\!!ninepoint]
653
654\definebodyfontenvironment
655  [\!!tenpoint]
656  [        \s!text=\!!tenpoint,
657         \s!script=\!!sevenpoint,
658   \s!scriptscript=\!!fivepoint,
659              \s!x=\!!eightpoint,
660             \s!xx=\!!sixpoint,
661            \v!big=\!!twelvepoint,
662          \v!small=\!!eightpoint]
663
664\definebodyfontenvironment
665  [\!!ninepoint]
666  [        \s!text=\!!ninepoint,
667         \s!script=\!!sevenpoint,
668   \s!scriptscript=\!!fivepoint,
669              \s!x=\!!sevenpoint,
670             \s!xx=\!!fivepoint,
671            \v!big=\!!elevenpoint,
672          \v!small=\!!sevenpoint]
673
674\definebodyfontenvironment
675  [\!!eightpoint]
676  [        \s!text=\!!eightpoint,
677         \s!script=\!!sixpoint,
678   \s!scriptscript=\!!fivepoint,
679              \s!x=\!!sixpoint,
680             \s!xx=\!!fivepoint,
681            \v!big=\!!tenpoint,
682          \v!small=\!!sixpoint]
683
684\definebodyfontenvironment
685  [\!!sevenpoint]
686  [        \s!text=\!!sevenpoint,
687         \s!script=\!!sixpoint,
688   \s!scriptscript=\!!fivepoint,
689              \s!x=\!!sixpoint,
690             \s!xx=\!!fivepoint,
691            \v!big=\!!ninepoint,
692          \v!small=\!!fivepoint]
693
694\definebodyfontenvironment
695  [\!!sixpoint]
696  [        \s!text=\!!sixpoint,
697         \s!script=\!!fivepoint,
698   \s!scriptscript=\!!fivepoint,
699              \s!x=\!!fivepoint,
700             \s!xx=\!!fivepoint,
701            \v!big=\!!eightpoint,
702          \v!small=\!!fivepoint]
703
704\definebodyfontenvironment
705  [\!!fivepoint]
706  [        \s!text=\!!fivepoint,
707         \s!script=\!!fivepoint,
708   \s!scriptscript=\!!fivepoint,
709              \s!x=\!!fivepoint,
710             \s!xx=\!!fivepoint,
711            \v!big=\!!sevenpoint,
712          \v!small=\!!fivepoint]
713
714\definebodyfontenvironment
715  [\!!fourpoint]
716  [        \s!text=\!!fourpoint,
717         \s!script=\!!fourpoint,
718   \s!scriptscript=\!!fourpoint,
719              \s!x=\!!fourpoint,
720             \s!xx=\!!fourpoint,
721            \v!big=\!!sixpoint,
722          \v!small=\!!fourpoint]
723
724\definebodyfontswitch [fourteenpointfour] [\!!fourteenpointfour]
725\definebodyfontswitch [twelvepoint]       [\!!twelvepoint]
726\definebodyfontswitch [elevenpoint]       [\!!elevenpoint]
727\definebodyfontswitch [tenpoint]          [\!!tenpoint]
728\definebodyfontswitch [ninepoint]         [\!!ninepoint]
729\definebodyfontswitch [eightpoint]        [\!!eightpoint]
730\definebodyfontswitch [sevenpoint]        [\!!sevenpoint]
731\definebodyfontswitch [sixpoint]          [\!!sixpoint]
732\definebodyfontswitch [fivepoint]         [\!!fivepoint]
733\definebodyfontswitch [fourpoint]         [\!!fourpoint]
734
735%D So far.
736
737\definefontstyle [\s!hw] [\s!hw]
738\definefontstyle [\s!cg] [\s!cg]
739
740\definefontstyle [\v!roman,\v!serif,\v!regular]    [\s!rm]
741\definefontstyle [\v!sansserif,\v!sans,\v!support] [\s!ss]
742\definefontstyle [\v!teletype,\v!type,\v!mono]     [\s!tt]
743\definefontstyle [\v!handwritten]                  [\s!hw]
744\definefontstyle [\v!calligraphic]                 [\s!cg]
745\definefontstyle [\v!math,\v!mathematics]          [\s!mm]
746
747\definefontalternative[\s!tf]
748\definefontalternative[\s!bf]
749\definefontalternative[\s!it]
750\definefontalternative[\s!sl]
751\definefontalternative[\s!bs]
752\definefontalternative[\s!bi]
753\definefontalternative[\s!sc]
754
755\definefontsize[\s!a] \definefontsize[\s!b]
756\definefontsize[\s!c] \definefontsize[\s!d]
757
758\definealternativestyle [\v!mediaeval]                              [\os]    []
759\definealternativestyle [\v!normal]                                 [\tf]    []
760\definealternativestyle [\v!bold]                                   [\bf]    []
761\definealternativestyle [\v!type]                                   [\tt]    []
762\definealternativestyle [\v!mono]                                   [\tt]    []
763\definealternativestyle [\v!slanted]                                [\sl]    []
764\definealternativestyle [\v!italic]                                 [\it]    []
765\definealternativestyle [\v!boldslanted,\v!slantedbold]             [\bs]    []
766\definealternativestyle [\v!bolditalic,\v!italicbold]               [\bi]    []
767
768\definealternativestyle [\v!small,\v!smallnormal]                   [\setsmallbodyfont\tf] []
769\definealternativestyle [\v!smallbold]                              [\setsmallbodyfont\bf] []
770\definealternativestyle [\v!smalltype]                              [\setsmallbodyfont\tt] []
771\definealternativestyle [\v!smallitalic,\v!smallslanted]            [\setsmallbodyfont\sl] []
772\definealternativestyle [\v!smallboldslanted,\v!smallslantedbold]   [\setsmallbodyfont\bs] []
773\definealternativestyle [\v!smallbolditalic,\v!smallitalicbold]     [\setsmallbodyfont\bi] []
774
775\definealternativestyle [\v!bigger]                                 [\setbigbodyfont  \tf] []
776\definealternativestyle [\v!smaller]                                [\setsmallbodyfont\tf] []
777
778\definealternativestyle [\v!sans,\v!sansserif]                      [\ss]
779\definealternativestyle [\v!roman,\v!serif,\v!regular]              [\rm]
780\definealternativestyle [\v!handwritten]                            [\hw]
781\definealternativestyle [\v!calligraphic]                           [\cg]
782
783\definealternativestyle [\v!sansnormal]  [\ss\tf] []
784\definealternativestyle [\v!sansbold]    [\ss\bf] []
785\definealternativestyle [\v!serifnormal] [\rm\tf] []
786\definealternativestyle [\v!serifbold]   [\rm\bf] []
787\definealternativestyle [\v!mononormal]  [\tt\tf] []
788\definealternativestyle [\v!monobold]    [\tt\bf] []
789
790\definealternativestyle [typeface]    [\typeface]    [] % no translation here (quite basic)
791\definealternativestyle [boldface]    [\boldface]    []
792\definealternativestyle [slantedface] [\slantedface] []
793\definealternativestyle [italicface]  [\italicface]  []
794\definealternativestyle [swapface]    [\swapface]    []
795
796\definealternativestyle [emphasize]   [\em]          [\em] % new
797
798% For Alan:
799
800\definealternativestyle
801  [\v!camel]
802  [{\setcharactercasing[\v!camel]}]
803  [{\setcharactercasing[\v!camel]}]
804
805% % maybe we need interface neutral as well (for use in cld):
806%
807% \letcscsname\mediaeval       \csname\v!mediaeval       \endcsname
808% \letcscsname\normal          \csname\v!normal          \endcsname
809% \letcscsname\bold            \csname\v!bold            \endcsname
810% \letcscsname\mono            \csname\v!mono            \endcsname
811% \letcscsname\slanted         \csname\v!slanted         \endcsname
812% \letcscsname\italic          \csname\v!italic          \endcsname
813% \letcscsname\boldslanted     \csname\v!boldslanted     \endcsname
814% \letcscsname\slantedbold     \csname\v!slantedbold     \endcsname
815% \letcscsname\bolditalic      \csname\v!bolditalic      \endcsname
816% \letcscsname\italicbold      \csname\v!italicbold      \endcsname
817%
818% \letcscsname\small           \csname\v!small           \endcsname
819% \letcscsname\smallnormal     \csname\v!smallnormal     \endcsname
820% \letcscsname\smallbold       \csname\v!smallbold       \endcsname
821% \letcscsname\smalltype       \csname\v!smalltype       \endcsname
822% \letcscsname\smallslanted    \csname\v!smallslanted    \endcsname
823% \letcscsname\smallboldslanted\csname\v!smallboldslanted\endcsname
824% \letcscsname\smallslantedbold\csname\v!smallslantedbold\endcsname
825% \letcscsname\smallbolditalic \csname\v!smallbolditalic \endcsname
826% \letcscsname\smallitalicbold \csname\v!smallitalicbold \endcsname
827%
828% \letcscsname\bigger          \csname\v!bigger          \endcsname
829% \letcscsname\smaller         \csname\v!smaller         \endcsname
830%
831% \letcscsname\sans            \csname\v!sans            \endcsname
832% \letcscsname\sansserif       \csname\v!sansserif       \endcsname
833% \letcscsname\sansbold        \csname\v!sansbold        \endcsname
834
835%D We can go on and on and on:
836%D
837%D \starttyping
838%D \setupbodyfontenvironment[default][p=0.8,q=0.6]
839%D \definefontsize[p]
840%D \definefontsize[q]
841%D \stoptyping
842
843%D Slow but handy:
844
845\definealternativestyle [\v!smallbodyfont] [\setsmallbodyfont] []
846\definealternativestyle [\v!bigbodyfont]   [\setbigbodyfont]   []
847
848%D We treat {\sc Small Caps} and \cap {Pseudo Caps} a bit different. We also provide
849%D an \WORD {uppercase} style.
850
851\definealternativestyle [\v!WORD]    [{\setcharactercasing[\v!WORD   ]}] [{\setcharactercasing[\v!WORD   ]}]
852\definealternativestyle [\v!word]    [{\setcharactercasing[\v!word   ]}] [{\setcharactercasing[\v!word   ]}]
853\definealternativestyle [\v!Word]    [{\setcharactercasing[\v!Word   ]}] [{\setcharactercasing[\v!Word   ]}]
854\definealternativestyle [\v!Words]   [{\setcharactercasing[\v!Words  ]}] [{\setcharactercasing[\v!Words  ]}]
855\definealternativestyle [\v!capital] [{\setcharactercasing[\v!capital]}] [{\setcharactercasing[\v!capital]}]
856\definealternativestyle [\v!Capital] [{\setcharactercasing[\v!Capital]}] [{\setcharactercasing[\v!Capital]}]
857\definealternativestyle [\v!mixed]   [{\setcharactercasing[\v!mixed  ]}] [{\setcharactercasing[\v!mixed  ]}]
858
859\definealternativestyle [\v!cap]     [{\setcharactercasing[\v!cap    ]}] [{\setcharactercasing[\v!cap    ]}]
860\definealternativestyle [\v!Cap]     [{\setcharactercasing[\v!Cap    ]}] [{\setcharactercasing[\v!Cap    ]}]
861
862%D From now (2013-03-17) on we have:
863
864\definefontfeature[f:smallcaps][smcp=yes]
865\definefontfeature[f:oldstyle] [onum=yes]
866\definefontfeature[f:tabular]  [tnum=yes]
867\definefontfeature[f:superiors][sups=yes]
868\definefontfeature[f:inferiors][subs=yes]
869\definefontfeature[f:fractions][frac=yes]
870\definefontfeature[f:kern]     [kern=yes]
871\definefontfeature[f:kerns]    [kern=yes]
872
873\definealternativestyle [\v!smallcaps] [\setsmallcaps] [\setsmallcaps]
874\definealternativestyle [\v!oldstyle]  [\setoldstyle ] [\setoldstyle ]
875\definealternativestyle [\v!fractions] [\setfractions\resetbreakpoints] [\setfractions\resetbreakpoints]
876
877\permanent\protected\def\setsmallcaps{\doaddfeature{f:smallcaps}}
878\permanent\protected\def\setoldstyle {\doaddfeature{f:oldstyle}}
879\permanent\protected\def\settabular  {\doaddfeature{f:tabular}}
880\permanent\protected\def\setsuperiors{\doaddfeature{f:superiors}}
881\permanent\protected\def\setfractions{\doaddfeature{f:fractions}}
882
883\permanent\protected\def\resetsmallcaps{\dosubtractfeature{f:smallcaps}}
884\permanent\protected\def\resetoldstyle {\dosubtractfeature{f:oldstyle}}
885\permanent\protected\def\resettabular  {\dosubtractfeature{f:tabular}}
886\permanent\protected\def\resetsuperiors{\dosubtractfeature{f:superiors}}
887\permanent\protected\def\resetfractions{\dosubtractfeature{f:fractions}}
888
889% \permanent\protected\def\frc#1#2%
890%   {\dontleavehmode
891%    \begingroup
892%    \addff{frac}%
893%    \resetbreakpoints
894%    #1/#2%
895%    \endgroup}
896
897%D \macros
898%D   {uppercasing, lowercasing}
899
900\definefontfeature[lowercasing][lowercasing=yes]
901\definefontfeature[uppercasing][uppercasing=yes]
902
903\permanent\protected\def\uppercasing{\addff{uppercasing}}
904\permanent\protected\def\lowercasing{\addff{lowercasing}}
905
906%D \macros
907%D   {tinyfont}
908%D
909%D By default we load the Computer Modern Roman fonts (but not yet at this moment)
910%D and activate the 12pt roman bodyfont. Sans serif and teletype are also available
911%D and can be called for by \type {\ss} and \type {\tt}. Loading takes place
912%D elsewhere. For tracing purposes we define:
913
914\definefont[tinyfont][file:dejavusansmono at 1ex]
915
916%D \macros
917%D   {infofont}
918%D
919%D The second situation occurs when we enable the info mode, and put all kind of
920%D status information in the margin. We don't want huge switches to the main
921%D bodyfont and style, so here too we use a direct method.
922
923\pushoverloadmode
924
925\protected\def\infofont         {\definefrozenfont[infofont]         [file:dejavusansmono*none      at 6pt]\infofont}
926\protected\def\infofontbold     {\definefrozenfont[infofontbold]     [file:dejavusansmono-bold*none at 6pt]\infofontbold}
927\protected\def\smallinfofont    {\definefrozenfont[smallinfofont]    [file:dejavusansmono*none      at 3pt]\smallinfofont}
928\protected\def\smallinfofontbold{\definefrozenfont[smallinfofontbold][file:dejavusansmono-bold*none at 3pt]\smallinfofontbold}
929\protected\def\tinyinfofont     {\definefrozenfont[tinyinfofont]     [file:dejavusansmono*none      at 2pt]\tinyinfofont}
930\protected\def\tinyinfofontbold {\definefrozenfont[tinyinfofontbold] [file:dejavusansmono-bold*none at 2pt]\tinyinfofontbold}
931
932%D Optimization (later we overload in math). Also needed in order to get \type {\ss}
933%D properly defined.
934
935\permanent\protected\def\normaltf{\let\fontalternative\s!tf\font_helpers_synchronize_font}
936\permanent\protected\def\normalbf{\let\fontalternative\s!bf\font_helpers_synchronize_font}
937\permanent\protected\def\normalit{\let\fontalternative\s!it\font_helpers_synchronize_font}
938\permanent\protected\def\normalsl{\let\fontalternative\s!sl\font_helpers_synchronize_font}
939\permanent\protected\def\normalbi{\let\fontalternative\s!bi\font_helpers_synchronize_font}
940\permanent\protected\def\normalbs{\let\fontalternative\s!bs\font_helpers_synchronize_font}
941
942\let\tf\normaltf
943\let\bf\normalbf
944\let\it\normalit
945\let\sl\normalsl
946\let\bi\normalbi
947\let\bs\normalbs
948
949\permanent\protected\def\normalrm{\font_helpers_set_current_font_style{\s!rm}}
950\permanent\protected\def\normalss{\font_helpers_set_current_font_style{\s!ss}}
951\permanent\protected\def\normaltt{\font_helpers_set_current_font_style{\s!tt}}
952
953\let\rm\normalrm
954\let\ss\normalss
955\let\tt\normaltt
956
957\popoverloadmode
958
959\protect \endinput
960
961% LM math vs CM math (analysis by Taco):
962%
963% Computer Modern Roman : Donald Knuth
964% Latin Modern          : LM Font Revision Team
965%
966% lmex10.tfm  % identical
967% lmmi5.tfm   % identical
968% lmmi6.tfm   % identical
969% lmmi7.tfm   % identical
970% lmmi8.tfm   % identical
971% lmmi9.tfm   % identical
972% lmmi10.tfm  % identical
973% lmmi12.tfm  % identical
974% lmmib10.tfm % identical
975% lmsy5.tfm   % extra chars: 254,255 (octal)
976% lmsy6.tfm   % extra chars: 254,255 (octal)
977% lmsy7.tfm   % extra chars: 254,255 (octal)
978% lmsy8.tfm   % extra chars: 254,255 (octal)
979% lmsy9.tfm   % extra chars: 254,255 (octal)
980% lmsy10.tfm  % extra chars: 254,255 (octal)
981% lmbsy10.tfm % extra chars: 254,255 (octal)
982%
983% From the 'AMS' set:
984%
985% lmmib5.tfm  % identical
986% lmmib7.tfm  % identical
987% lmbsy5.tfm  % extra chars: 254,255 (octal)
988% lmbsy7.tfm  % extra chars: 254,255 (octal)
989%
990% The two extra characters are:
991%
992%   /lessorequalslant
993%   /greaterorequalslant
994
995% \unprotect
996%
997% \definehighlight[\v!italic    ][\c!command=\v!no,\c!style=\v!italic]
998% \definehighlight[\v!bold      ][\c!command=\v!no,\c!style=\v!bold]
999% \definehighlight[\v!bolditalic][\c!command=\v!no,\c!style=\v!bolditalic]
1000% \definehighlight[\v!mono]      [\c!command=\v!no,\c!style=\v!mono]
1001% \definehighlight[\v!monobold]  [\c!command=\v!no,\c!style=\v!monobold]
1002%
1003% \definehighlight[important]    [\c!command=\v!no,\c!style=\v!bold]
1004% \definehighlight[unimportant]  [\c!command=\v!no,\c!color=darkgray]
1005% \definehighlight[warning]      [\c!command=\v!no,\c!style=\v!bold,\c!color=darkblue]
1006% \definehighlight[error]        [\c!command=\v!no,\c!style=\v!bold,\c!color=darkred]
1007%
1008% \protect
1009%
1010% \starttext
1011%     \highlight[italic]     {italic}
1012%     \highlight[bolditalic] {bolditalic}
1013%     \highlight[bold]       {bold}
1014%     \highlight[mono]       {mono}
1015%     \highlight[monobold]   {monobold}
1016%     \highlight[important]  {important}
1017%     \highlight[unimportant]{unimportant}
1018%     \highlight[warning]    {warning}
1019%     \highlight[error]      {error}
1020% \stoptext
1021