diff options
Diffstat (limited to 'tex/context/base/core-fnt.tex')
-rw-r--r-- | tex/context/base/core-fnt.tex | 765 |
1 files changed, 434 insertions, 331 deletions
diff --git a/tex/context/base/core-fnt.tex b/tex/context/base/core-fnt.tex index 4df92a5a4..cdafdf605 100644 --- a/tex/context/base/core-fnt.tex +++ b/tex/context/base/core-fnt.tex @@ -1,331 +1,434 @@ -%D \module
-%D [ file=core-fnt,
-%D version=1995.10.10,
-%D title=\CONTEXT\ Core Macros,
-%D subtitle=Font Support,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. Non||commercial use is
-%C granted.
-
-\writestatus{loading}{Context Core Macros / Font Support}
-
-\unprotect
-
-%D \macros
-%D {kap,KAP,Kap,Kaps,nokap}
-%D
-%D We already introduced \type{\kap} as way to capitalize
-%D words. This command comes in several versions:
-%D
-%D \startbuffer
-%D \kap {let's put on a \kap{cap}}
-%D \kap {let's put on a \nokap{cap}}
-%D \KAP {let's put on a \\{cap}}
-%D \Kap {let's put on a \\{cap}}
-%D \Kaps{let's put on a cap}
-%D \stopbuffer
-%D
-%D \typebuffer
-%D
-%D Note the use of \type{\nokap}, \type{\\} and the nested
-%D \type{\kap}.
-%D
-%D \startvoorbeeld
-%D \startregels
-%D \haalbuffer
-%D \stopregels
-%D \stopvoorbeeld
-%D
-%D These macros show te main reason why we introduced the
-%D smaller \type{\tx} and \type{\txx}.
-%D
-%D \starttypen
-%D \kap\romeins{1995}
-%D \stoptypen
-%D
-%D This at first sight unusual capitilization is completely
-%D legal.
-%D
-%D \showsetup{\y!kap}
-%D \showsetup{\y!Kap}
-%D \showsetup{\y!KAP}
-%D \showsetup{\y!Kaps}
-%D \showsetup{\y!nokap}
-
-\unexpanded\def\kap%
- {\futurelet\next\dokap}
-
-% \def\dokap%
-% {\ifx\next\bgroup
-% \def\next{\dodokap\relax}%
-% \else
-% \def\next{\dodokap}%
-% \fi
-% \next}
-
-\def\dokap%
- {\ifx\next\bgroup
- \expandafter\dodokap\expandafter\relax
- \else
- \expandafter\dodokap
- \fi}
-
-\def\dodokap#1#2%
- {\ifmmode\hbox\fi
- \bgroup
- \tx
- \the\everyuppercase
- \uppercase{#1{#2}}%
- \egroup}
-
-\unexpanded\def\KAP#1%
- {{\def\\##1{\kap{##1}}#1}}
-
-\unexpanded\def\Kap#1%
- {\KAP{\\#1}}
-
-\def\nokap#1%
- {\lowercase{#1}}
-
-\def\Kaps%
- {\let\processword=\Kap
- \processwords}
-
-%D \macros
-%D {Word, Words, WORD, WORDS, doprocesswords}
-%D
-%D This is probably not the right place to present the next set
-%D of macros.
-%D
-%D \starttypen
-%D \Word {far too many words}
-%D \Words{far too many words}
-%D \WORD {far too many words}
-%D \WORDS{far too many words}
-%D \stoptypen
-%D
-%D \typebuffer
-%D
-%D This calls result in:
-%D
-%D \startvoorbeeld
-%D \startregels
-%D \haalbuffer
-%D \stopregels
-%D \stopvoorbeeld
-%D
-%D \showsetup{\y!Word}
-%D \showsetup{\y!Words}
-%D \showsetup{\y!WORD}
-%D \showsetup{\y!WORDS}
-
-\def\doWord#1%
- {\bgroup
- \the\everyuppercase
- \uppercase{#1}%
- \egroup}
-
-\def\Word#1%
- {\doWord#1}
-
-\def\doprocesswords#1 #2\od%
- {\ConvertToConstant\doifnot{#1}{}
- {\processword{#1} %
- \doprocesswords#2 \od}}
-
-\def\processwords#1%
- {\doprocesswords#1 \od\unskip}
-
-\def\Words%
- {\let\processwords=\Word
- \processwords}
-
-\def\WORD#1%
- {\bgroup
- \def\kap#1{#1}%
- \edef\next{#1}%
- \the\everyuppercase
- \uppercase\expandafter{\next}%
- \egroup}
-
-\def\WORDS#1%
- {\WORD{#1}}
-
-%D \macros
-%D {stretched}
-%D
-%D Stretching characters in a word is a sort of typographical
-%D murder. Nevertheless we support this manipulation for use in
-%D for instance titles.
-%D
-%D \starttypen
-%D \hbox to 5cm{\stretched{murder}}
-%D \stoptypen
-%D
-%D \typebuffer
-%D
-%D or
-%D
-%D \startvoorbeeld
-%D \haalbuffer
-%D \stopvoorbeeld
-%D
-%D \showsetup{\y!stretched}
-
-\def\stretched%
- {\ifvmode\hbox to \hsize\else\ifinner\else\hbox\fi\fi
- \processtokens\relax\hss\relax\normalspace}
-
-%D \startbuffer
-%D \stretched{Unknown Box}
-%D \hbox to .5\hsize{\stretched{A Horizontal Box}}
-%D \vbox to 2cm{\stretched{A Vertical Box}}
-%D \hbox to 3cm{\stretched{sp{\'e}c{\`\i}{\"a}l}}
-%D \stopbuffer
-%D
-%D \haalbuffer
-%D
-%D The first line of this macros takes care of boxing. Normally
-%D one will use an \type{\hbox} specification. The last line
-%D shows how special characters should be passed.
-%D
-%D \typebuffer
-
-%D \macros
-%D {underbar,underbars,overstrike,overstrikes,setupunderbar}
-%D
-%D In the rare case that we need undelined words, for instance
-%D because all font alternatives are already in use, one can
-%D use \type{\underbar} and \type{\overstrike} and their plural
-%D forms.
-%D
-%D \startbuffer
-%D \underbars{drawing \underbar{bars} under words is a typewriter leftover}
-%D \overstrikes{striking words makes them \overstrike{unreadable}}
-%D \stopbuffer
-%D
-%D \typebuffer
-%D
-%D \startvoorbeeld
-%D \startregels
-%D \haalbuffer
-%D \stopregels
-%D \stopvoorbeeld
-%D
-%D The next macros are derived from the \PLAIN\ \TEX\ one, but
-%D also supports nesting. The \type{$} keeps us in horizontal
-%D mode and at the same time applies grouping.
-%D
-%D \showsetup{\y!underbar}
-%D \showsetup{\y!underbars}
-%D \showsetup{\y!overstrike}
-%D \showsetup{\y!overstrikes}
-%D
-%D Although underlining is ill advised, we permit some
-%D alternatives, that can be set up by:
-%D
-%D \showsetup{\y!setupunderbar}
-%D
-%D The alternatives show up as
-%D {\setupunderbar [variant=a]{alternative a},
-%D {\setupunderbar [variant=b]{alternative b},
-%D {\setupunderbar [variant=c]{alternative c}
-%D and
-%D {\setupunderbar [lijndikte=1pt]{1pt width},
-%D {\setupunderbar [lijndikte=2pt]{2pt width},
-%D or whatever. Because \type{\overstrike} uses the same
-%D method, the settings also apply to that macro.
-
-\newcounter\underbarlevel
-\newbox\underbarbox
-
-\def\underbarmethoda#1#2#3% RULE
- {\hbox to #1{\vrule\!!width#1\!!height#2\!!depth#3}}
-
-\def\underbarmethodb#1#2#3% DASH
- {\hbox to #1
- {\hskip-.25em
- \xleaders
- \hbox{\hskip.25em\vrule\!!width.25em\!!height#2\!!depth#3}
- \hfil}}
-
-\def\underbarmethodc#1#2#3% PERIOD
- {\hbox to #1
- {\dimen0=#3
- \advance\dimen0 by .2ex
- \hskip-.25em
- \xleaders
- \hbox{\hskip.25em\lower\dimen0\hbox{.}}
- \hfil}}
-
-\def\dodounderbar#1#2#3%
- {\bmath
- \setbox0=\hbox{#3}%
- \setbox2=\getvalue{underbarmethod\@@onvariant}{\wd0}{#1}{#2}%
- \wd0=\!!zeropoint
- \box0\box2
- \emath}
-
-\unexpanded\def\dounderbar#1%
- {\bgroup
- \increment\underbarlevel
- \dimen0=1.5\normallineskip % was \dimen0=1.5\lineskip
- \dimen0=\underbarlevel\dimen0
- \dimen2=\dimen0
- \advance\dimen2 by \@@onlijndikte
- \dodounderbar{-\dimen0}{\dimen2}{#1}%
- \egroup}
-
-\unexpanded\def\underbar#1%
- {\bgroup
- \setbox\underbarbox=\hbox
- {\dounderbar{\hskip\fontdimen2\font}}%
- \def\betweenisolatedwords%
- {\nobreak
- \hskip\!!zeropoint\!!minus\fontdimen4\font
- \discretionary{}{}{\copy\underbarbox}}%
- \processisolatedwords{#1}\dounderbar
- \egroup}
-
-\unexpanded\def\underbars#1%
- {\processisolatedwords{#1}\dounderbar}
-
-\unexpanded\def\dooverstrike#1%
- {\bgroup
- \dimen0=2.5\lineskip
- \dimen2=\dimen0
- \advance\dimen2 by \@@onlijndikte
- \dodounderbar{\dimen2}{-\dimen0}{#1}%
- \egroup}
-
-\unexpanded\def\overstrike#1%
- {\bgroup
- \setbox\underbarbox=\hbox
- {\dooverstrike{\hskip\fontdimen2\font}}%
- \def\betweenisolatedwords%
- {\nobreak
- \hskip\!!zeropoint\!!minus\fontdimen4\font
- \discretionary{}{}{\copy\underbarbox}}%
- \processisolatedwords{#1}\dooverstrike
- \egroup}
-
-\unexpanded\def\overstrikes#1%
- {\processisolatedwords{#1}\dooverstrike}
-
-\def\setupunderbar%
- {\dodoubleargument\getparameters[\??on]}
-
-%D This module has only a few setups:
-
-\setupunderbar
- [\c!variant=a,
- \c!lijndikte=\linewidth]
-
-\protect
-
-\endinput
-
\ No newline at end of file +%D \module +%D [ file=core-fnt, +%D version=1995.10.10, +%D title=\CONTEXT\ Core Macros, +%D subtitle=Font Support, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. Non||commercial use is +%C granted. + +\writestatus{loading}{Context Core Macros / Font Support} + +\unprotect + +%D \macros +%D {kap,KAP,Kap,Kaps,nokap,userealcaps,usepseudocaps} +%D +%D We already introduced \type{\kap} as way to capitalize +%D words. This command comes in several versions: +%D +%D \startbuffer +%D \kap {let's put on a \kap{cap}} +%D \kap {let's put on a \nokap{cap}} +%D \KAP {let's put on a \\{cap}} +%D \Kap {let's put on a \\{cap}} +%D \Kaps{let's put on a cap} +%D \stopbuffer +%D +%D \typebuffer +%D +%D Note the use of \type{\nokap}, \type{\\} and the nested +%D \type{\kap}. +%D +%D \startvoorbeeld +%D \startregels +%D \haalbuffer +%D \stopregels +%D \stopvoorbeeld +%D +%D These macros show te main reason why we introduced the +%D smaller \type{\tx} and \type{\txx}. +%D +%D \starttypen +%D \kap\romeins{1995} +%D \stoptypen +%D +%D This at first sight unusual capitilization is completely +%D legal. +%D +%D \showsetup{\y!kap} +%D \showsetup{\y!Kap} +%D \showsetup{\y!KAP} +%D \showsetup{\y!Kaps} +%D \showsetup{\y!nokap} +%D +%D The difference between pseudo and real caps is demonstrated +%D below: +%D +%D \startbuffer +%D \usepseudocaps \kap{Hans Hagen} +%D \userealcaps \kap{Hans Hagen} +%D \stopbuffer +%D +%D \typebuffer +%D +%D \haalbuffer +%D +%D The \type {\bgroup} trickery below is needed because of +%D \type {\groupedcommand}. + +\def\usepseudocaps% + {\def\cap@@uppercase{\the\everyuppercase\uppercase}% + \def\cap@@lowercase{\the\everylowercase\lowercase}% + \def\cap@@visualize{\tx}} + +\def\userealcaps% + {\let\cap@@uppercase=\relax + %\let\cap@@lowercase=\relax % Definitely not! + \def\cap@@visualize{\sc}} + +\usepseudocaps + +\def\dodokap#1#2% + {\ifmmode\hbox\fi + \bgroup + \cap@@visualize + \cap@@uppercase{#1{#2}}% + \egroup} + +\def\nokap#1% + {\cap@@lowercase{#1}} + +\unexpanded\def\kap% + {\futurelet\next\dokap} + +\def\dokap% + {\ifx\next\bgroup + \expandafter\dodokap\expandafter\relax + \else + \expandafter\dodokap + \fi} + +\unexpanded\def\KAP#1% + {{\def\\##1{\kap{##1}}#1}} + +\unexpanded\def\Kap#1% + {\KAP{\\#1}} + +\unexpanded\def\Kaps% + {\let\processword=\Kap + \processwords} + +%D Sure: + +\let\normalkap\kap + +%D Some precautions for a \PLAIN\ \TEX\ definition. + +\let\normalcap\cap + +\def\cap% + {\ifmmode + \expandafter\normalcap + \else + \expandafter\kap + \fi} + +%D \macros +%D {setupcapitals} +%D +%D By default we use pseudo small caps in titles. This can be +%D set up with: +%D +%D \showsetup{setupcapitals} + +\def\setupcapitals% + {\dosingleempty\dosetupcapitals} + +\def\dosetupcapitals[#1]% + {\getparameters[\??kk][#1]% + \doifelse{\@@kktitel}{\v!ja} + {\definealternativestyle[\v!kapitaal][\normalkap][\normalkap]% + \definealternativestyle[\v!smallcaps][\sc][\sc]% + \let\kap\normalkap} + {\definealternativestyle[\v!kapitaal][\normalkap][\uppercase]% + \definealternativestyle[\v!smallcaps][\sc][\uppercase]% + \def\kap{\doconvertfont{\v!kapitaal}}}% + \doifelse{\@@kksc}{\v!ja} + {\userealcaps} + {\usepseudocaps}} + +\setupcapitals + [\c!titel=\v!ja, + \c!sc=\v!nee] + +%D \macros +%D {Word, Words, WORD, WORDS, doprocesswords} +%D +%D This is probably not the right place to present the next set +%D of macros. +%D +%D \starttypen +%D \Word {far too many words} +%D \Words{far too many words} +%D \WORD {far too many words} +%D \WORDS{far too many words} +%D \stoptypen +%D +%D \typebuffer +%D +%D This calls result in: +%D +%D \startvoorbeeld +%D \startregels +%D \haalbuffer +%D \stopregels +%D \stopvoorbeeld +%D +%D \showsetup{\y!Word} +%D \showsetup{\y!Words} +%D \showsetup{\y!WORD} +%D \showsetup{\y!WORDS} + +\def\doWord#1% + {\bgroup + \the\everyuppercase + \uppercase{#1}% + \egroup} + +\def\Word#1% + {\doWord#1} + +\def\doprocesswords#1 #2\od% + {\ConvertToConstant\doifnot{#1}{} + {\processword{#1} % + \doprocesswords#2 \od}} + +\def\processwords#1% + {\doprocesswords#1 \od\unskip} + +\def\Words% + {\let\processwords=\Word + \processwords} + +\def\WORD#1% + {\bgroup + \the\everyuppercase + \def\kap#1{#1}% + \edef\next{#1}% + \uppercase\expandafter{\next}% + \egroup} + +\def\WORDS#1% + {\WORD{#1}} + +%D \macros +%D {stretched} +%D +%D Stretching characters in a word is a sort of typographical +%D murder. Nevertheless we support this manipulation for use in +%D for instance titles. +%D +%D \starttypen +%D \hbox to 5cm{\stretched{murder}} +%D \stoptypen +%D +%D \typebuffer +%D +%D or +%D +%D \startvoorbeeld +%D \haalbuffer +%D \stopvoorbeeld +%D +%D \showsetup{\y!stretched} + +\def\stretched% + {\ifvmode\hbox to \hsize\else\ifinner\else\hbox\fi\fi + \processtokens\relax\hss\relax\normalspace} + +%D \startbuffer +%D \stretched{Unknown Box} +%D \hbox to .5\hsize{\stretched{A Horizontal Box}} +%D \vbox to 2cm{\stretched{A Vertical Box}} +%D \hbox to 3cm{\stretched{sp{\'e}c{\`\i}{\"a}l}} +%D \stopbuffer +%D +%D \haalbuffer +%D +%D The first line of this macros takes care of boxing. Normally +%D one will use an \type{\hbox} specification. The last line +%D shows how special characters should be passed. +%D +%D \typebuffer + +%D \macros +%D {underbar,underbars, +%D overbar,overbars, +%D overstrike,overstrikes, +%D setupunderbar} +%D +%D In the rare case that we need undelined words, for instance +%D because all font alternatives are already in use, one can +%D use \type{\underbar} and \type{\overstrike} and their plural +%D forms. +%D +%D \startbuffer +%D \underbars{drawing \underbar{bars} under words is a typewriter leftover} +%D \overstrikes{striking words makes them \overstrike{unreadable} but +%D sometimes even \overbar{top lines} come into view.} +%D \stopbuffer +%D +%D \typebuffer +%D +%D \startvoorbeeld +%D \startregels +%D \haalbuffer +%D \stopregels +%D \stopvoorbeeld +%D +%D The next macros are derived from the \PLAIN\ \TEX\ one, but +%D also supports nesting. The \type{$} keeps us in horizontal +%D mode and at the same time applies grouping. +%D +%D \showsetup{\y!underbar} +%D \showsetup{\y!underbars} +%D \showsetup{\y!overbar} +%D \showsetup{\y!overbars} +%D \showsetup{\y!overstrike} +%D \showsetup{\y!overstrikes} +%D +%D Although underlining is ill advised, we permit some +%D alternatives, that can be set up by: +%D +%D \showsetup{\y!setupunderbar} +%D +%D The alternatives show up as +%D {\setupunderbar [variant=a]\underbar{alternative a}, +%D {\setupunderbar [variant=b]\underbar{alternative b}, +%D {\setupunderbar [variant=c]\underbar{alternative c} +%D and +%D {\setupunderbar [lijndikte=1pt]\underbar{1pt width}, +%D {\setupunderbar [lijndikte=2pt]\underbar{2pt width}, +%D or whatever. Because \type{\overstrike} uses the same +%D method, the settings also apply to that macro. + +\newcounter\underbarlevel + +\def\underbarmethoda#1#2#3% RULE + {\hbox to #1{\vrule\!!width#1\!!height#2\!!depth#3}} + +\def\underbarmethodb#1#2#3% DASH + {\hbox to #1 + {\hskip-.25em + \xleaders + \hbox{\hskip.25em\vrule\!!width.25em\!!height#2\!!depth#3} + \hfil}} + +\def\underbarmethodc#1#2#3% PERIOD + {\hbox to #1 + {\dimen4=#3 + \advance\dimen4 by .2ex + \hskip-.25em + \xleaders + \hbox{\hskip.25em\lower\dimen4\hbox{.}} + \hfil}} + +\def\dododounderbar#1#2#3% + {\startmathmode + \setbox0=\hbox{#3}% + \setbox2=\getvalue{underbarmethod\@@onvariant}{\wd0}{#1}{#2}% + \wd0=\!!zeropoint + \ht2=\ht0 + \dp2=\dp0 + \box0\box2 + \stopmathmode} + +\unexpanded\def\dodounderbar#1% + {\bgroup + \dimen0=1.5\normallineskip + \dimen0=\underbarlevel\dimen0 + \ifdone \else + \advance\dimen0 by -\normallineskip + \advance\dimen0 by -\ht\strutbox + \fi + \dimen2=\dimen0 + \advance\dimen2 by \@@onlijndikte + \dododounderbar{-\dimen0}{\dimen2}{#1}% + \egroup} + +\def\betweenunderbarwords% + {\bgroup + \setbox0=\hbox + {\dodounderbar{\hskip\fontdimen2\font}}% + \nobreak + \hskip\!!zeropoint\!!minus\fontdimen4\font + \discretionary{}{}{\box0}% + \egroup} + +\def\betweenunderbarspaces% + {\hskip\currentspaceskip} + +\unexpanded\def\dounderbar#1#2% + {\let\betweenisolatedwords#1% + \processisolatedwords{#2}\dodounderbar + \egroup} + +\unexpanded\def\underbar% + {\bgroup + \increment\underbarlevel + \donetrue + \dounderbar\betweenunderbarwords} + +\unexpanded\def\underbars% + {\bgroup + \increment\underbarlevel + \donetrue + \dounderbar\betweenunderbarspaces} + +\unexpanded\def\overbar% + {\bgroup + \decrement\underbarlevel + \donefalse + \dounderbar\betweenunderbarwords} + +\unexpanded\def\overbars% + {\bgroup + \decrement\underbarlevel + \donefalse + \dounderbar\betweenunderbarspaces} + +\def\dooverstrike#1% + {\bgroup + \dimen0=2.5\normallineskip + \dimen2=\dimen0 + \advance\dimen2 by \@@onlijndikte + \dododounderbar{\dimen2}{-\dimen0}{#1}% + \egroup} + +\def\betweenoverstrikewords% + {\bgroup + \setbox0=\hbox + {\dooverstrike{\hskip\fontdimen2\font}}% + \nobreak + \hskip\!!zeropoint\!!minus\fontdimen4\font + \discretionary{}{}{\box0}% + \egroup} + +\unexpanded\def\overstrike#1% + {\bgroup + \let\betweenisolatedwords\betweenoverstrikewords + \processisolatedwords{#1}\dooverstrike + \egroup} + +\unexpanded\def\overstrikes#1% + {\bgroup + \processisolatedwords{#1}\dooverstrike + \egroup} + +\def\setupunderbar% + {\dodoubleargument\getparameters[\??on]} + +%D This module has only a few setups: + +\setupunderbar + [\c!variant=a, + \c!lijndikte=\linewidth] + +\protect + +\endinput |