1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Font Macros Symbolic Access}
15
16\unprotect
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32\def\v_font_string_a
33 {\ifx\fontstyle\s!rm \s!Serif \orelse
34 \ifx\fontstyle\s!ss \s!Sans \orelse
35 \ifx\fontstyle\s!tt \s!Mono \else
36 \s!Serif \fi}
37
38\def\v_font_string_b
39 {\ifx\fontstyle\s!rm \s!Regular \orelse
40 \ifx\fontstyle\s!ss \s!Support \orelse
41 \ifx\fontstyle\s!tt \s!Type \else
42 \s!Serif \fi}
43
44\def\v_font_string_c
45 {\ifx\fontalternative\s!bf \s!Bold \orelse
46 \ifx\fontalternative\s!sl \s!Slanted \orelse
47 \ifx\fontalternative\s!it \s!Italic \orelse
48 \ifx\fontalternative\s!bs \s!BoldSlanted \orelse
49 \ifx\fontalternative\s!bi \s!BoldItalic \fi}
50
51\let\v_font_string_d\s!Serif
52
53\definefontsynonym
54 [CurrentFont]
55 [\noexpand\v_font_string_a\noexpand\v_font_string_c]
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\permanent\def\fontstylesuffix
86 {\ifx\fontalternative\s!tf \s!Regular \orelse
87 \ifx\fontalternative\s!bf \s!Bold \orelse
88 \ifx\fontalternative\s!sl \s!Slanted \orelse
89 \ifx\fontalternative\s!it \s!Italic \orelse
90 \ifx\fontalternative\s!bs \s!BoldSlanted \orelse
91 \ifx\fontalternative\s!bi \s!BoldItalic \orelse
92 \ifx\fontalternative\s!sc \s!Caps \else
93 \s!Regular \fi}
94
95\permanent\def\glyphfontfile#base
96 {#base
97 \ifcsname\??fontfile#base\v_font_string_a\v_font_string_c\endcsname
98 \v_font_string_a\v_font_string_c
99 \orelse\ifcsname\??fontfile#base\v_font_string_b\v_font_string_c\endcsname
100 \v_font_string_b\v_font_string_c
101 \orelse\ifcsname\??fontfile#base\v_font_string_a\endcsname
102 \v_font_string_a
103 \orelse\ifcsname\??fontfile#base\v_font_string_b\endcsname
104 \v_font_string_b
105 \orelse\ifcsname\??fontfile#base\v_font_string_c\endcsname
106 \v_font_string_c
107 \fi}
108
109
110
111\permanent\def\doifelseitalic#yes#nop
112 {\ifx\fontalternative\s!sl#yes\orelse
113 \ifx\fontalternative\s!it#yes\orelse
114 \ifx\fontalternative\s!bs#yes\orelse
115 \ifx\fontalternative\s!bi#yes\else#nop\fi}
116
117\aliased\let\doifitalicelse\doifelseitalic
118
119
120
121
122
123
124
125
126
127
128\installcorenamespace{symbolfont}
129
130\mutable\lettonothing\skedsymbolfont
131\mutable\lettonothing\currentsymbolfont
132\mutable\lettonothing\askedsymbolfont
133
134\permanent\protected\def\setscaledstyledsymbolicfont#1#2#3
135 {\edef\askedsymbolfont{\truefontname{\glyphfontfile{#3}} at \the\dimexpr#2\dimexpr\currentfontbodyscale\dimexpr#1}
136 \ifcsname\??symbolfont\askedsymbolfont\endcsname
137 \lastnamedcs
138 \else
139 \font_basics_define_symbolic_font
140 \fi}
141
142\permanent\protected\def\setscaleddirectsymbolicfont#1#2#3
143 {\edef\askedsymbolfont{\truefontname{#3} at \the\dimexpr#2\dimexpr\currentfontbodyscale\dimexpr#1}
144 \ifcsname\??symbolfont\askedsymbolfont\endcsname
145 \lastnamedcs
146 \else
147 \font_basics_define_symbolic_font
148 \fi}
149
150\permanent\protected\def\setstyledsymbolicfont#fontname
151 {\edef\askedsymbolfont{\truefontname{\glyphfontfile{#fontname}} at \the\dimexpr\currentfontbodyscale\dimexpr\fontbody}
152 \ifcsname\??symbolfont\askedsymbolfont\endcsname
153 \lastnamedcs
154 \else
155 \font_basics_define_symbolic_font
156 \fi}
157
158\permanent\protected\def\setdirectsymbolicfont#fontname
159 {\edef\askedsymbolfont{\truefontname{#fontname} at \the\dimexpr\currentfontbodyscale\dimexpr\fontbody}
160 \ifcsname\??symbolfont\askedsymbolfont\endcsname
161 \lastnamedcs
162 \else
163 \font_basics_define_symbolic_font
164 \fi}
165
166\def\font_basics_define_symbolic_font
167 {\definefont[currentsymbolfont][\askedsymbolfont]
168 \currentsymbolfont
169 \gletcsname\??symbolfont\askedsymbolfont\endcsname\lastrawfontcall}
170
171
172
173
174
175
176
177
178\permanent\protected\def\getnamedglyphstyled#fontname#character{{\setstyledsymbolicfont{#fontname}\clf_fontchar{#character}}}
179\permanent\protected\def\getnamedglyphdirect#fontname#character{{\setdirectsymbolicfont{#fontname}\clf_fontchar{#character}}}
180\permanent\protected\def\getglyphstyled #fontname#character{{\setstyledsymbolicfont{#fontname}\doifelsenumber{#character}\char\donothing#character}}
181\permanent\protected\def\getglyphdirect #fontname#character{{\setdirectsymbolicfont{#fontname}\doifelsenumber{#character}\char\donothing#character}}
182\permanent\protected\def\resolvedglyphstyled#fontname#character{{\setstyledsymbolicfont{#fontname}\clf_tochar{#character}}}
183\permanent\protected\def\resolvedglyphdirect#fontname#character{{\setdirectsymbolicfont{#fontname}\clf_tochar{#character}}}
184
185\permanent\protected\def\getnamedglyphdirectscaled#scale#fontname#character
186 {{\setscaleddirectsymbolicfont\fontbody{#scale}{#fontname}\clf_fontchar{#character}}}
187
188
189
190
191
192
193
194
195
196\permanent\protected\def\getscaledglyph#scale#name#content
197 {{\setscaledstyledsymbolicfont\fontbody{#scale}{#name}\doifelsenumber{#content}\char\donothing#content}}
198
199\aliased\let\getglyph \getglyphstyled
200\aliased\let\getrawglyph \getglyphdirect
201\aliased\let\symbolicsizedfont\setscaledstyledsymbolicfont
202\aliased\let\symbolicfont \setstyledsymbolicfont
203
204\permanent\protected\def\symbolicscaledfont{\setscaledstyledsymbolicfont\fontbody}
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235\mutable\let\nextfont\relax
236
237\permanent\protected\def\setfont
238 {\afterassignment\font_basics_set_font\font\nextfont=}
239
240\def\font_basics_set_font
241 {\nextfont\setupinterlinespace}
242
243
244
245
246
247
248
249
250
251
252
253\permanent\protected\def\doifelsefontchar#specification#unicode
254 {\begingroup
255 \font_basics_define_font_without_parameters{thedefinedfont}{#specification}
256 \iffontchar\font#unicode\relax
257 \endgroup\expandafter\firstoftwoarguments
258 \else
259 \endgroup\expandafter\secondoftwoarguments
260 \fi}
261
262\aliased\let\doiffontcharelse\doifelsefontchar
263
264\protect \endinput
265 |