1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Typesetting Macros Kerning}
15
16\unprotect
17
18\registerctxluafile{typokrn}{autosuffix}
19
20\definesystemattribute[kern][public]
21
22
23
24
25
26\installcorenamespace{characterkerning}
27
28\installcommandhandler \??characterkerning {characterkerning} \??characterkerning
29
30\permanent\protected\def\setcharacterkerning[#1]
31 {\cdef\currentcharacterkerning{#1}
32 \ifx\currentcharacterkerning\s!reset
33 \resetcharacterkerning
34 \else
35 \typo_kerning_set
36 \fi}
37
38\def\typo_kerning_set
39 {\usecharacterkerningstyleandcolor\c!style\c!color
40 \useaddfontfeatureparameter\characterkerningparameter
41 \clf_setcharacterkerning{\characterkerningparameter\c!factor}}
42
43\permanent\protected\def\resetcharacterkerning
44 {\c_attr_kern\attributeunsetvalue}
45
46\appendtoks
47 \resetcharacterkerning
48\to \everyresettypesetting
49
50\definecharacterkerning [extrakerning] [\c!factor=.125]
51
52
53
54
55
56
57
58
59
60
61
62
63
64\appendtoks
65 \frozen\instance\protected\edefcsname\currentcharacterkerning\endcsname
66 {\doifelsenextoptional
67 {\typo_kerning_apply_yes{\currentcharacterkerning}}
68 {\typo_kerning_apply_nop{\currentcharacterkerning}}}
69\to \everydefinecharacterkerning
70
71\protected\def\typo_kerning_apply_yes#1[#2]
72 {\groupedcommand{\typo_kerning_apply_yes_indeed{#1}{#2}}\donothing}
73
74\protected\def\typo_kerning_apply_nop#1
75 {\groupedcommand{\typo_kerning_apply_nop_indeed{#1}}\donothing}
76
77\def\typo_kerning_apply_yes_indeed#1#2
78 {\cdef\currentcharacterkerning{#1}
79 \setupcurrentcharacterkerning[\c!factor=#2]
80 \typo_kerning_set}
81
82\def\typo_kerning_apply_nop_indeed#1
83 {\cdef\currentcharacterkerning{#1}
84 \typo_kerning_set}
85
86\definecharacterkerning [\v!kerncharacters] [\c!factor=.125]
87\definecharacterkerning [\v!letterspacing ] [\v!kerncharacters] [\c!features=letterspacing]
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113\definecharacterkerning
114 [\v!stretched]
115 [\c!factor=\v!max,
116 \c!width=\availablehsize]
117
118\permanent\protected\def\setupstretched
119 {\setupcharacterkerning[\v!stretched]}
120
121\pushoverloadmode
122
123\enforced\permanent\tolerant\protected\def\stretched[#S#1]#:#2
124 {\begingroup
125 \let\currentcharacterkerning\v!stretched
126 \ifparameter#1\or
127 \setupcurrentcharacterkerning[#1]
128 \fi
129 \ifchkdimexpr\characterkerningparameter\c!width\or
130 \hbox to \lastchkdimension
131 \fi
132 \bgroup
133 \usecharacterkerningstyleandcolor\c!style\c!color
134 \useaddfontfeatureparameter\characterkerningparameter
135 \typo_kerning_set
136 #2
137 \egroup
138 \endgroup}
139
140\popoverloadmode
141
142\protect \endinput
143 |