font-var.mklx /size: 3024 b    last modification: 2024-01-16 09:02
1%D \module
2%D   [       file=font-var,
3%D        version=2011.01.13, % (copied fron font-ini)
4%D          title=\CONTEXT\ Font Macros,
5%D       subtitle=Common Variables,
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 / Common Variables}
15
16\unprotect
17
18% some more will move here
19
20%D \macros
21%D   {fontstyle,fontalternative,fontsize,fontbody}
22%D
23%D Within a bodyfont, fonts can come in different sizes. For instance \type {\tf} is
24%D accompanied by \type {\tfa}, \type {\tfb} etc. The first two characters denote
25%D the alternative, while the third character in these sequences represents the
26%D size. The actual size is saved in a macro. The styles, being roman (\type {\rm}),
27%D sans serif (\type {\ss}) etc. are also available.
28
29% fontclass       % modern dejavu
30% fontbody        % ... 10pt 11pt 12pt ...
31% fontstyle       % rm ss tt mm hw cg ...
32% fontalternative % tf bf sl it bs bi sc ...
33% fontsize        % a b c d ...
34% fontface        % 0=normal 1=text 2=script 3=scriptscript 4=x 5=xx (math are temporary)
35
36\mutable\def\normalizedbodyfontsize{12pt}
37
38\immutable\def\defaultfontbody      {\normalizedbodyfontsize}
39\immutable\let\defaultfontstyle      \s!rm
40\immutable\let\defaultfontalternative\s!tf
41\immutable\let\defaultfontface       \!!zerocount
42
43\immutable\lettonothing\defaultfontsize
44
45\mutable\let\fontbody       \defaultfontbody
46\mutable\let\fontstyle      \defaultfontstyle
47\mutable\let\fontalternative\defaultfontalternative
48\mutable\let\fontsize       \defaultfontsize
49\mutable\let\fontface       \!!zerocount
50
51\mutable\lettonothing\globalfontclass
52\mutable\lettonothing\fontclass
53
54\installmacrostack\fontstyle
55
56% we can use an indirect mapping for fontclasses (map string onto numbers) and indeed this
57% is somewhat more efficient but also makes the code messy ... maybe some day ...
58
59\newtoks\everycompactfontmode
60
61\newconditional\c_font_compact
62
63\appendtoks
64    \c_font_compact\conditionaltrue
65\to \everycompactfontmode
66
67\protected\def\font_enable_compact_font_mode
68  {\ifcase\currentgrouplevel
69     \the\everycompactfontmode
70     \global\everycompactfontmode\emptytoks
71     \glettonothing\font_enable_compact_font_mode
72     \writestatus\m!fonts\empty
73     \writestatus\m!fonts{compact font mode enabled}%
74     \writestatus\m!fonts\empty
75   \else
76     \font_ignore_compact_font_mode
77     \font_enable_compact_font_mode
78   \fi}
79
80\protected\def\font_ignore_compact_font_mode
81  {\gdef\font_enable_compact_font_mode
82     {\writestatus\m!fonts\empty
83      \writestatus\m!fonts{compact font mode cannot be enabled}%
84      \writestatus\m!fonts\empty
85      \glettonothing\font_enable_compact_font_mode
86      \glettonothing\font_ignore_compact_font_mode}}
87
88\installtexexperiment
89  {fonts.compact}
90  {\font_enable_compact_font_mode}
91  {}
92
93\protect \endinput
94