typo-itc.mklx /size: 3070 b    last modification: 2024-01-16 09:03
1%D \module
2%D   [       file=typo-itc,
3%D        version=2011.10.08,
4%D          title=\CONTEXT\ Typesetting Macros,
5%D       subtitle=Italic Correction,
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 Typesetting Macros / Italics Corrections}
15
16\unprotect
17
18%D The brave might try:
19%D
20%D \starttyping
21%D \definefontfeature[default][default][itlc=yes] % is now default
22%D \setitaliccorrection
23%D \stoptyping
24
25\registerctxluafile{typo-itc}{autosuffix}
26
27\installcorenamespace{italics}
28
29\def\typo_italic_set#1%
30  {\bitwiseflip\glyphoptions        \textcheckitalicglyphoptioncode
31   \bitwiseflip\discretionaryoptions\textcheckitalicdiscoptioncode
32   \clf_setitaliccorrection{#1}}
33
34\def\typo_italic_reset
35  {\bitwiseflip\glyphoptions        -\textcheckitalicglyphoptioncode
36   \bitwiseflip\discretionaryoptions-\textcheckitalicdiscoptioncode}
37
38\permanent\tolerant\protected\def\setitaliccorrection[#1]%
39  {\ifcstok{#1}\v!reset
40     \typo_italic_reset
41   \orelse\ifcsname\??italics#1\endcsname
42     \expandafter\typo_italic_set\expandafter{\lastnamedcs}%
43   \fi}
44
45\defcsname\??italics\v!yes   \endcsname{0}
46\defcsname\??italics\v!small \endcsname{0.1}
47\defcsname\??italics\v!medium\endcsname{0.2}
48\defcsname\??italics\v!big   \endcsname{0.3}
49
50\permanent\protected\def\resetitaliccorrection
51  {\typo_italic_reset}
52
53\permanent\protected\def\setupitaliccorrection% kind of obsolete
54  {\setitaliccorrection}
55
56\permanent\protected\def\italiccorrection
57  {\ifbitwiseand\glyphoptions\textcheckitalicglyphoptioncode\else
58     \normalitaliccorrection
59   \fi}
60
61\pushoverloadmode
62    \aliased\let\/\italiccorrection % replaces the primitive
63  % \aliased\let\explicititaliccorrection\italiccorrection % replaces the primitive
64\popoverloadmode
65
66% only for manuals ... obsolete
67
68\permanent\protected\def\pushitaliccorrection{}% \typo_italic_reset
69\permanent\protected\def\popitaliccorrection {}% \typo_italic_set
70
71%D Correcting for weird shapes.
72
73%D \starttyping
74%D \showglyphs \showfontitalics \showfontkerns
75%D
76%D \setupbodyfont[bonum]
77%D
78%D \startTEXpage[offset=1ts,width=5em]
79%D     \setupitaliccorrection[italic]
80%D     \dontleavehmode
81%D     \ruledhbox{\it\shapecorrection[both] f}\quad
82%D     \ruledhbox{\it\shapecorrection[both]ff}
83%D \stopTEXpage
84%D \stoptyping
85
86\installcorenamespace{shapecorrection}
87
88\defcsname\??shapecorrection\v!left \endcsname{\groupedcommandcs\forcedleftcorrection\relax}
89\defcsname\??shapecorrection\v!right\endcsname{\groupedcommandcs\relax               \forcedrightcorrection}
90\defcsname\??shapecorrection\v!both \endcsname{\groupedcommandcs\forcedleftcorrection\forcedrightcorrection}
91\defcsname\??shapecorrection        \endcsname{\groupedcommandcs\relax               \forcedrightcorrection}
92
93\permanent\tolerant\protected\def\shapecorrection[#1]{\begincsname\??shapecorrection#1\endcsname}
94
95\protect \endinput
96