diff options
Diffstat (limited to 'tex/context/base/font-ini.mkii')
-rw-r--r-- | tex/context/base/font-ini.mkii | 671 |
1 files changed, 173 insertions, 498 deletions
diff --git a/tex/context/base/font-ini.mkii b/tex/context/base/font-ini.mkii index 9b9f5ac83..658d06f70 100644 --- a/tex/context/base/font-ini.mkii +++ b/tex/context/base/font-ini.mkii @@ -12,7 +12,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\writestatus{loading}{Context Font Macros (ini)} +\writestatus{loading}{ConTeXt Font Macros / Initialization} \unprotect @@ -121,125 +121,21 @@ %%% message 14 added -\startmessages dutch library: fonts - title: korps - 1: codering -- - 2: variant -- wordt geladen - 3: onbekende variant -- - 4: korps -- is niet gedefinieerd - 5: stijl -- is niet gedefinieerd - 6: -- wordt geladen - 7: onbekend formaat -- - 8: stijl -- gedefinieerd -% 9: mapping -- is geladen - 10: onbekende font file -- - 14: korps -- is gedefinieerd (kan beter globaal plaatsvinden) -\stopmessages - -\startmessages english library: fonts - title: bodyfont - 1: coding -- - 2: variant -- is loaded - 3: unknown variant -- - 4: bodyfont -- is not defined - 5: style -- is not defined - 6: -- is loaded - 7: unknown format -- - 8: style -- defined -% 9: mapping -- is loaded - 10: unknown font file -- - 14: bodyfont -- is defined (can better be done global) -\stopmessages - -\startmessages german library: fonts - title: Fliesstext - 1: Kodierung -- - 2: Variante -- ist geladen - 3: Unbekannte Variante -- - 4: Fliesstext -- ist nicht definiert - 5: Stil -- ist nicht definiert - 6: -- ist geladen - 7: unbekanntes Format -- - 8: Stil -- definiert -% 9: Map -- ist geladen - 10: unbekanntes Font -- - 14: Fliesstext -- wurde definiert (besser waere globale Definition) -\stopmessages - -\startmessages czech library: fonts - title: zakladnifont - 1: kodovani -- - 2: varianta -- je nactena - 3: neznama varianta -- - 4: zakladni font -- neni definovan - 5: styl -- neni definovan - 6: -- je nacten - 7: neznamy format -- - 8: styl -- definovan -% 9: mapovani -- je nacteno - 10: neznamy font -- - 14: bodyfont -- is defined (can better be done global) -\stopmessages - -\startmessages italian library: fonts - title: font del corpo - 1: codifica -- - 2: variante -- caricata - 3: variante sconosciuta -- - 4: corpo del testo -- non definito - 5: stile -- non definito - 6: -- caricato - 7: formato sconosciuto -- - 8: stile -- definito -% 9: mappatura -- caricata - 10: file di font sconosciuto -- - 14: corpo del testo -- definito (sarebbe meglio globale) -\stopmessages - -\startmessages norwegian library: fonts - title: hovedfont - 1: koding -- - 2: variant -- er lest inn - 3: ukjent variant -- - 4: hovedfont -- er ikke definert - 5: stil -- er ikke definert - 6: -- er lest inn - 7: ukjent format -- - 8: stil -- definert -% 9: avbildning -- er lest inn - 10: ukjent fontfil -- - 14: bodyfont -- is defined (can better be done global) -\stopmessages - -\startmessages romanian library: fonts - title: corp de litere - 1: codificarea -- - 2: varianta -- este incarcata - 3: varianta necunoscuta -- - 4: corpul de litere -- nu este definit - 5: stilul -- nu este definit - 6: -- este incarcat - 7: format necunoscut -- - 8: stilul -- definit -% 9: maparea -- este incarcat - 10: fisier font necunoscut -- - 14: bodyfont -- is defined (can better be done global) -\stopmessages - -\startmessages french library: fonts - title: corps de texte - 1: encodage -- - 2: la variante -- est chargée - 3: variante -- inconnue - 4: policecorps -- n'est pas définie - 5: le style -- n'est pas défini - 6: -- est chargé - 7: format -- inconnu - 8: style -- défini -% 9: mapping -- is loaded - 10: fichier de police -- inconnu - 14: policecorps -- est défini (une définition globale pourrait être plus adéquat) -\stopmessages +% messages moved + +% messages moved + +% messages moved + +% messages moved + +% messages moved + +% messages moved + +% messages moved + +% messages moved %D This module is one of the oldest modules of \CONTEXT. The %D macros below evolved out of the \PLAIN\ \TEX\ macros and @@ -682,8 +578,6 @@ %D %D We can fix this by defining -\let\normalmathop\mathop - \unexpanded\def\mathop {\normalmathop \bgroup @@ -694,8 +588,6 @@ %D \TEX\ primitive \type{\hbox}: %D %D \starttyping -%D \let\normalhbox=\hbox -%D %D \def\hbox{\ifmmode\mbox\else\normalhbox\fi} %D \stoptyping %D @@ -875,6 +767,7 @@ \def\@shortstyle@ {@f@sh@} % short style prefix (rm etc) \def\@letter@ {@f@le@} % first alternative typeface \def\@noletter@ {@f@no@} % second alternative typeface +\def\@fontclass@ {@f@cl@} % fontclass %D The families can be grouped into math specific ones and %D more text related families, although text ones can be @@ -1060,9 +953,7 @@ %D separated list. Appart from practical limitations one can %D define as many styles as needed. -\let\stylelist=\empty - -\def\fontsizelist{\s!text,\s!script,\s!scriptscript,\c!x,\c!xx,\c!big,\c!small} +\def\fontrelativesizelist{\s!text,\s!script,\s!scriptscript,\c!x,\c!xx,\c!big,\c!small} %D \macros %D {magfactor,magfactorhalf} @@ -1099,7 +990,7 @@ %D \stoptable \def\magstep#1% \relax removed, otherwise space after it sticks, else added - {\ifcase#1 \@m\or1200\or1440\or1728\or2074\or2488\or\@m\fi} + {\ifcase#1 1000\or1200\or1440\or1728\or2074\or2488\or1000\fi} \def\magstephalf {1095} @@ -1287,25 +1178,21 @@ % [encoding=ec] % \definedfont[blabla] test \currentencoding/\fontfile \par -\beginOLDTEX - - \def\checkfontfilename - {\expandafter\docheckfontfilename\fontfile:\empty:\empty\relax} - - \def\docheckfontfilename#1:#2:#3#4\relax - {\edef\!!stringa{#1}% - \edef\!!stringb{#2}% - \ifx\!!stringb\empty - \edef\checkedfontfile{\!!stringa}% - \else\ifx\!!stringa\v!file - \edef\checkedfontfile{"\!!stringb"}% - \else\ifx\!!stringa\v!name - \edef\checkedfontfile{"\!!stringb"}% - \else - \edef\checkedfontfile{\!!stringb}% - \fi\fi\fi} - -\endOLDTEX +\def\checkfontfilename + {\expandafter\docheckfontfilename\fontfile:\empty:\empty\relax} + +\def\docheckfontfilename#1:#2:#3#4\relax + {\edef\!!stringa{#1}% + \edef\!!stringb{#2}% + \ifx\!!stringb\empty + \edef\checkedfontfile{\!!stringa}% + \else\ifx\!!stringa\v!file + \edef\checkedfontfile{"\!!stringb"}% + \else\ifx\!!stringa\v!name + \edef\checkedfontfile{"\!!stringb"}% + \else + \edef\checkedfontfile{\!!stringb}% + \fi\fi\fi} % \definefontfeature[default] [liga=yes,texligatures=yes,texquotes=yes] % \definefontfeature[default-caps][liga=yes,texligatures=yes,texquotes=yes,smcp=yes,script=latn] @@ -1389,156 +1276,6 @@ % % \stoptext -% xetex / todo: disable default features ! file:, name:, [], "" etc etc - -\beginXETEX - - % for some reason xetex does not support [filename] for tfm files and - % quotes also behave kind of strange " vs ' vs [ vs ... - - % we need to use the specs, - % - % \font\myfont = msam7 % ok - % \font\myfont = "msam7" % also ok - % \font\myfont = "msam7" at 8pt % error - - \ifx\suppressfontnotfounderror\undefined - - \newcount\xetexsavedinteractionmode - \newbox \xetexcrappyhackbox - - \def\doiffoundxetexfontelse#1#2% - {\xetexsavedinteractionmode\interactionmode - \batchmode - \setbox\xetexcrappyhackbox\vbox{\par}% resets error count - \font\xetextempfont=#2\somefontspec\relax - \edef\xetextempfont{\fontname\xetextempfont}% - \ifx\xetextempfont\nullfontname - \interactionmode\xetexsavedinteractionmode - %\writestatus\m!fonts{fails #1: #2 (\xetextempfont)}% - \expandafter\secondoftwoarguments - \else - \interactionmode\xetexsavedinteractionmode - %\writestatus\m!fonts{succeeds #1: #2 (\xetextempfont)}% - \expandafter\firstoftwoarguments - \fi} - - \else - - \def\doiffoundxetexfontelse#1#2% - {\suppressfontnotfounderror\plusone - \font\xetextempfont=#2\somefontspec\relax - \suppressfontnotfounderror\zerocount - \edef\xetextempfont{\fontname\xetextempfont}% - \ifx\xetextempfont\nullfontname - %\writestatus\m!fonts{fails #1: #2 (\xetextempfont)}% - \expandafter\secondoftwoarguments - \else - %\writestatus\m!fonts{succeeds #1: #2 (\xetextempfont)}% - \expandafter\firstoftwoarguments - \fi} - - \fi - - \def\docheckfontfilenameprefix#1:#2:#3#4\relax - {\edef\!!stringa{#1}% - \edef\!!stringb{#2}% - \ifx\!!stringb\empty - % no prefix - \let\checkedfontfile\!!stringa - \doiffoundxetexfontelse{1a}{\checkedfontfile\checkedfontfeatures} - {\edef\checkedfontfile{\checkedfontfile\checkedfontfeatures}} - {\doiffoundxetexfontelse{1b}{"\checkedfontfile\checkedfontfeatures"} - {\edef\checkedfontfile{"\checkedfontfile\checkedfontfeatures"}} - {\doiffoundxetexfontelse{1c}{"[\checkedfontfile]\checkedfontfeatures"} - {\edef\checkedfontfile{"[\checkedfontfile]\checkedfontfeatures"}} - {}}}% - \else\ifx\!!stringa\v!file - % force file, only file check when no spaces - \let\checkedfontfile\!!stringb - \doiffoundxetexfontelse{2b}{"[\checkedfontfile]\checkedfontfeatures"} - {\edef\checkedfontfile{"[\checkedfontfile]\checkedfontfeatures"}} - {\doiffoundxetexfontelse{2c}{"\checkedfontfile\checkedfontfeatures"} - {\edef\checkedfontfile{"\checkedfontfile\checkedfontfeatures"}} - {}}% - \else\ifx\!!stringa\v!name - % force name, always lookup by xetex itself, "" forces otf/ttf/type1 - \edef\checkedfontfile{"\!!stringb\checkedfontfeatures"}% - \else - % whatever, maybe even xetex spec, forget about features - \edef\checkedfontfile{"\!!stringa\!!stringb"}% - \fi\fi\fi} - - \def\checkfontfilename% -- todo: integrate so that we call do.. directly - {\expandafter\docheckfontfilename\fontfile*\empty*\relax} - - \def\docheckfontfilename#1*#2#3*#4\relax % class overrules file - {\edef\checkedfontfeatures - {\expandafter\ifx\csname\fontclass\s!features\endcsname\empty - \ifx\@@fontfeatures\empty\ifx#2\empty\else#2#3\fi\else\@@fontfeatures\fi - \else\expandafter\ifx\csname\fontclass\s!features\endcsname\relax % redundant, will go away - \ifx\@@fontfeatures\empty\ifx#2\empty\else#2#3\fi\else\@@fontfeatures\fi - \else - \csname\fontclass\s!features\endcsname - \fi\fi}% - \ifx\checkedfontfeatures\empty - % done - \else - \edef\checkedfontfeatures{\executeifdefined{\??fa\checkedfontfeatures}\empty}% - \ifx\checkedfontfeatures\empty - % done - \else - \let\convertedfontfeatures\empty - \processcommacommand[\checkedfontfeatures]\doconvertfontfeatures % raw - \ifx\convertedfontfeatures\empty - \let\checkedfontfeatures\empty - \else - \edef\checkedfontfeatures{:\convertedfontfeatures}% - \fi - \fi - \fi - \docheckfontfilenameprefix#1:\empty:\empty\relax - \doshowcheckedfontfeatures} - - \def\dodoconvertfontfeatures#1=#2#3=#4\relax - {\ifx#2\empty - % invalid feature - \else\ifcsname @xtx@#1@#2#3\endcsname - \expandafter\ifx\csname @xtx@#1@#2#3\endcsname\empty\else - \edef\convertedfontfeatures{\convertedfontfeatures\csname @xtx@#1@#2#3\endcsname;}% - \fi - \else - \edef\!!stringa{#1}% - \edef\!!stringb{#2#3}% - \edef\convertedfontfeatures - {\convertedfontfeatures - \ifx\!!stringb\v!yes - +\!!stringa - \else\ifx\!!stringb\v!no - -\!!stringa - \else - \!!stringa=\!!stringb - \fi\fi;}% - \fi\fi} - - \def\doconvertfontfeatures#1% - {\dodoconvertfontfeatures#1=\empty=\relax} - - \def\remapfontfeature #1 #2 #3 {\setevalue{@xtx@#1@#2}{#3}} - - % this may move to another file, maybe font-xtx - - \remapfontfeature tlig yes mapping=tlig - %remapfontfeature tlig no mapping= - \remapfontfeature trep yes {} - \remapfontfeature trep no {} - \remapfontfeature texligatures yes mapping=tlig - %remapfontfeature texligatures no mapping= - %remapfontfeature texquotes yes mapping=tex-text - %remapfontfeature texquotes no mapping= - -\endXETEX - \let\doshowcheckedfontfeatures\relax \def\showcheckedfontfeatures @@ -1550,7 +1287,7 @@ \def\donoparsefontspec % #1 == \cs {\edef\fontfile{\truefontname\somefontname}% - \ifx\fontfile\s!unknown \let\fontfile\defaultfontfile \fi + \ifx\fontfile\s!unknown \let\fontfile\defaultfontfile \fi % can for instance happen with MathGamma \updatefontparameters \checkfontfilename \edef\lastfontname{\checkedfontfile\somefontspec}% @@ -1606,10 +1343,6 @@ \edef\nullfontname {\fontname\nullfont} \edef\dummyfontname {font\strippedcsname\\} -\beginXETEX - \def\defaultfontfile{lmtypewriter10-regular} -\endXETEX - %D \macros %D {everyfont,everyfontswitch} %D @@ -1688,12 +1421,10 @@ \def\classfont#1#2{#1#2} % \definefont[whatever][\classfont{xx}{yy} at 10pt] -\beginOLDTEX - \def\definefontsynonym[#1]#2[#3]% {\edef\@@fontfile{#3}% \@EA\let\csname\??ff\fontclass#1\endcsname\@@fontfile - \doifnextcharelse[\dodefinefontsynonym\donothing} + \doifnextoptionalelse\dodefinefontsynonym\donothing} \def\dodefinefontsynonym[#1]% {\edef\@@fontdata{#1}% @@ -1703,48 +1434,6 @@ \getglobalfontparameters \fi \fi} -\endOLDTEX - -% We need to move the feature into the filename else it may be -% overloaded by another reference. For instance the definition of -% a regular and caps variant can use the same font. - -% We could use an indirect method ... store in 'array' and refer to -% slot. - -\beginNEWTEX - -\def\definefontsynonym[#1]#2[#3]% - {\edef\@@fontname{#1}% - \edef\@@fontfile{#3}% - \doifnextcharelse[\dodefinefontsynonym\nodefinefontsynonym} - -\def\nodefinefontsynonym - {\@EA\let\csname\??ff\fontclass\@@fontname\endcsname\@@fontfile} - -\def\dodefinefontsynonym[#1]% - {\edef\@@fontdata{#1}% - \ifx\@@fontdata\empty - \nodefinefontsynonym - \else - \ifx\fontclass\empty - \getfontparameters - \else - \getglobalfontparameters - \fi - \ifcsname\??ff\@@fontfile\s!features\endcsname - \@EA\edef\csname\??ff\fontclass\@@fontname\endcsname{\@@fontfile*\csname\??ff\@@fontfile\s!features\endcsname}% - \@EA\let\csname\??ff\@@fontfile\s!features\endcsname\undefined - \else - \nodefinefontsynonym - \fi - \fi} - -\endNEWTEX - -% \def\resetfontsynonym[#1]% fails -% {\letbeundefined{\??ff\fontclass#1}\letbeundefined{\??ff#1}} - \let\definefontfile\definefontsynonym % dedicated to Taco Hoekwater \def\setupfontsynonym @@ -1776,8 +1465,6 @@ \csname\??ff#2\endcsname \fi\fi\fi\fi} -\beginOLDTEX - \def\truefontname#1% {\ifcsname\??ff\fontclass#1\endcsname \@EA\truefontname\csname\??ff\fontclass#1\endcsname @@ -1787,86 +1474,6 @@ #1% \fi\fi} -\endOLDTEX - -\beginNEWTEX - -% simple version -% -% \def\truefontname#1% -% {\@EA\dotruefontname#1*\relax} -% -% \def\dotruefontname#1*#2\relax -% {\ifcsname\??ff\fontclass#1\endcsname -% \@EA\truefontname\csname\??ff\fontclass#1\endcsname -% \else\ifcsname\??ff#1\endcsname -% \@EA\truefontname\csname\??ff#1\endcsname -% \else -% #1% -% \fi\fi} -% -% last counts -% -% \def\truefontname#1% -% {\@EA\dotruefontname#1*\empty*\relax} -% -% \def\dotruefontname#1*#2#3*#4\relax -% {\ifcsname\??ff\fontclass#1\endcsname -% \ifx#2\empty -% \@EA\truefontname\csname\??ff\fontclass#1\endcsname -% \else -% \@EA\truefontname\csname\??ff\fontclass#1\endcsname*#2#3% -% \fi -% \else\ifcsname\??ff#1\endcsname -% \ifx#2\empty -% \@EA\truefontname\csname\??ff#1\endcsname -% \else -% \@EA\truefontname\csname\??ff#1\endcsname*#2#3% -% \fi -% \else -% \ifx#2\empty -% #1% -% \else -% #1*#2#3% -% \fi -% \fi\fi} -% -% first counts - -\def\truefontname#1% - {\@EA\dotruefontname#1*\empty*\relax} - -\def\dotruefontname#1*#2#3*#4\relax - {\ifcsname\??ff\fontclass#1\endcsname - \ifx#2\empty - \@EA\truefontname\csname\??ff\fontclass#1\endcsname - \else - \@EA\redotruefontname\csname\??ff\fontclass#1\endcsname*#2#3% - \fi - \else\ifcsname\??ff#1\endcsname - \ifx#2\empty - \@EA\truefontname\csname\??ff#1\endcsname - \else - \@EA\redotruefontname\csname\??ff#1\endcsname*#2#3% - \fi - \else - #1\ifx#2\empty\else*#2#3\fi - \fi\fi} - -\def\redotruefontname#1% - {\@EA\dodotruefontname#1*\relax} - -\def\dodotruefontname#1*#2\relax - {\ifcsname\??ff\fontclass#1\endcsname - \@EA\redotruefontname\csname\??ff\fontclass#1\endcsname - \else\ifcsname\??ff#1\endcsname - \@EA\redotruefontname\csname\??ff#1\endcsname - \else - #1% - \fi\fi} - -\endNEWTEX - \def\expandfontsynonym#1#2% #2 := onelevelexpansion(#1) {\ifcsname\??ff\fontclass#2\endcsname \expandafter\def\expandafter#1\expandafter{\csname\??ff\fontclass#2\endcsname}% @@ -2109,26 +1716,24 @@ %D To be documented. -\let\sizelist\empty +\let\fontsizelist\empty +\let\fontstylelist\empty \def\definefontsize[#1]% sneller met toks - {\addtocommalist{#1}\sizelist + {\addtocommalist{#1}\fontsizelist \def\docommand##1% {\def\dodocommand####1% {\def\dododocommand########1% %{\checkbodyfont{}{########1}{####1}{##1}}% {\checkbodyfont{########1}{####1}{##1}}% - \processcommacommand[\stylelist]\dododocommand}% - \processcommacommand[\alternativelist]\dodocommand}% - \processcommacommand[\sizelist]\docommand} - -\def\alternativetextlist{\c!tf,\c!bf,\c!it,\c!sl,\c!bs,\c!bi,\c!sc} -\def\alternativemathlist{\c!mr,\c!mi,\c!sy,\c!ex,\c!ma,\c!mb} + \processcommacommand[\fontstylelist]\dododocommand}% + \processcommacommand[\fontalternativelist]\dodocommand}% + \processcommacommand[\fontsizelist]\docommand} -\let\alternativelist\alternativetextlist % upward compatible +\def\fontalternativetextlist{\c!tf,\c!bf,\c!it,\c!sl,\c!bs,\c!bi,\c!sc} +\def\fontalternativemathlist{\c!mr,\c!mi,\c!sy,\c!ex,\c!ma,\c!mb} -%\definefontsize[\c!a] \definefontsize[\c!b] -%\definefontsize[\c!c] \definefontsize[\c!d] +\let\fontalternativelist\fontalternativetextlist % upward compatible %D \macros %D {currentfontscale,currentfontbodyscale} @@ -2268,7 +1873,7 @@ \scratchdimen\csname\??ft\s!default##1\endcsname\scratchdimen \normalizebodyfontsize\scratchdimen\to\tempbodyfontsize \setevalue{\??ft#2#1##1}{\tempbodyfontsize}}% - \processcommacommand[\fontsizelist]\docommand + \processcommacommand[\fontrelativesizelist]\docommand \copyparameters [\??ft#2#1][\??ft\s!default] [\c!interlinespace,\c!em]}% @@ -2595,7 +2200,7 @@ % \scratchdimen\csname\??ft\s!default##1\endcsname\scratchdimen % \normalizebodyfontsize\scratchdimen\to\!!stringa % \letvalue{\??ft#1##1}\!!stringa}}% -% \processcommacommand[\fontsizelist]\docommand +% \processcommacommand[\fontrelativesizelist]\docommand % \let\c!text\c!savedtext % \ifdone % \donefalse @@ -2605,7 +2210,7 @@ % {\doifdefined{\s!default\s!default##1} % {\donetrue\getvalue{\s!default\s!default##1}{#1}{##1}}}% % \processcommacommand -% [\stylelist] +% [\fontstylelist] % \defineunknownbodyfont % \ifdone % \setvalue{\@size@#1}{\docompletefontswitch[#1]}% @@ -2614,7 +2219,7 @@ % \def\defineunknownsubfont##1% % {\doifundefined{\@size@\getvalue{\??ft#1##1}} % {\defineunknownfont{\getvalue{\??ft#1##1}}}}% -% \processcommacommand[\fontsizelist]\defineunknownsubfont +% \processcommacommand[\fontrelativesizelist]\defineunknownsubfont % \definingunknownfontfalse % \fi % \fi @@ -2659,19 +2264,19 @@ {\let\c!savedtext\c!text \let\c!text\s!text \donefalse - \processcommacommand[\fontsizelist]{\dodefineunknownfont{#1}}% + \processcommacommand[\fontrelativesizelist]{\dodefineunknownfont{#1}}% \let\c!text\c!savedtext \ifdone \donefalse \processcommacommand - [\stylelist] + [\fontstylelist] {\dodefineunknownbodyfont{#1}}% \ifdone \donefalse \setvalue{\@size@#1}{\docompletefontswitch[#1]}% \ifdefiningunknownfont \else \definingunknownfonttrue - \processcommacommand[\fontsizelist]{\dodefineunknownsubfont{#1}}% + \processcommacommand[\fontrelativesizelist]{\dodefineunknownsubfont{#1}}% \definingunknownfontfalse \fi \fi @@ -2683,7 +2288,7 @@ % \def\defineunknownfontstyles#1% % {\def\defineunknownbodyfont##1% see *** % {\executeifdefined{\s!default\s!default##1}\gobbletwoarguments{#1}{##1}}% -% \rawprocesscommacommand[\stylelist]\defineunknownbodyfont} +% \rawprocesscommacommand[\fontstylelist]\defineunknownbodyfont} %D These macros show that quite some definitions take place. %D Fonts are not loaded yet! This means that at format @@ -2741,8 +2346,8 @@ %D size and the local (sometimes in the textflow) size. We %D store these dimensions in two \DIMENSION\ registers. -\newdimen\globalbodyfontsize \globalbodyfontsize=12pt -\newdimen\localbodyfontsize \localbodyfontsize =\globalbodyfontsize +\ifdefined\globalbodyfontsize\else \newdimen\globalbodyfontsize \fi \globalbodyfontsize=12pt +\ifdefined\localbodyfontsize \else \newdimen\localbodyfontsize \fi \localbodyfontsize =\globalbodyfontsize %D \macros %D {bodyfontsize} @@ -2776,27 +2381,37 @@ %D often not the way users specify the bodyfont size. Therefore %D we also store the normalized value. -\chardef\fontdigits=1 +\chardef\fontdigits=2 % was 1 + +% \def\normalizebodyfontsize#1\to#2% +% {\scratchdimen#1\relax +% \ifcase\fontdigits\advance\scratchdimen.5\points\fi +% \@EA\@EA\@EA\donormalizedbodyfontsize\@EA\WITHOUTPT\the\scratchdimen00\to#2} +% +% \def\donormalizedbodyfontsize#1.#2#3#4\to#5% \points ? +% {\edef#5% +% {#1% +% \ifcase\fontdigits\or +% \ifcase#2 \else.#2\fi % and not: \ifcase#2\else ... +% \else +% \ifcase#2#3 \else.#2\ifcase#3 \else#3\fi\fi % not: \ifcase#2#3\else ... +% \fi +% \s!pt}} \def\normalizebodyfontsize#1\to#2% - {\scratchdimen#1\relax - \ifcase\fontdigits\advance\scratchdimen.5\points\fi - \@EA\@EA\@EA\donormalizedbodyfontsize\@EA\WITHOUTPT\the\scratchdimen00\to#2} + {\scratchdimen\dimexpr#1+\ifcase\fontdigits.5\or.05\or.005\fi\points\relax + \@EA\@EA\@EA\donormalizedbodyfontsize\@EA\WITHOUTPT\the\scratchdimen000\to#2} -\def\donormalizedbodyfontsize#1.#2#3#4\to#5% \points ? - {\edef#5% +\def\donormalizedbodyfontsize#1.#2#3#4#5\to#6% \points ? + {\edef#6% not \ifcase#2\else due to \relax adding {#1% - \ifcase\fontdigits\or - \ifcase#2 \else.#2\fi % and not: \ifcase#2\else ... - \else - \ifcase#2#3 \else.#2\ifcase#3 \else#3\fi\fi % not: \ifcase#2#3\else ... + \ifcase\fontdigits + \or \ifcase#2 \else .#2\fi % 1 + \or \ifcase#2#3 \else .#2\ifcase#3 \else #3\fi\fi % 2 + \else \ifcase#2#3#4 \else .#2\ifcase#4 \ifcase#3 \else#3\fi \else#3#4\fi\fi % 3 \fi \s!pt}} -\normalizebodyfontsize\bodyfontsize\to\normalizedglobalbodyfontsize -\normalizebodyfontsize\bodyfontsize\to\normalizedlocalbodyfontsize -\normalizebodyfontsize\bodyfontsize\to\normalizedbodyfontsize - %D To be internationalized: \def\korpsgrootte {\bodyfontsize} @@ -3018,8 +2633,16 @@ \let\fontclass\empty \let\globalfontclass\fontclass +% \def\setcurrentfontclass#1% +% {\edef\fontclass{#1}} + +\def\registerfontclass#1% + {\letgvalue{\@fontclass@#1}\v!yes} % global ? + \def\setcurrentfontclass#1% - {\edef\fontclass{#1}} + {\ifcsname\@fontclass@#1\endcsname + \edef\fontclass{#1}% + \fi} \let\defaultfontstyle \c!rm \let\defaultfontalternative \c!tf @@ -3317,9 +2940,9 @@ %D \stoptyping \def\dodefinefontstyle[#1][#2]% - {\rawdoifinsetelse{#2}{\stylelist} + {\rawdoifinsetelse{#2}{\fontstylelist} {}%\debuggerinfo\m!fonts{unknown style #2}} - {\addtocommalist{#2}\stylelist + {\addtocommalist{#2}\fontstylelist \showmessage\m!fonts8{#2\space (#1)}}% % check kan hier \def\docommand##1% @@ -4389,7 +4012,7 @@ %D {bordermatrix} %D %D In \PLAIN\ \TEX\ the width of a parenthesis is stored in -%D the \DIMENSION\ \type{\p@renwd}. This value is derived from +%D the \DIMENSION\ \type{\mathparentwd}. This value is derived from %D the width of \type{\tenrm B}, so let's take care of it now: \let\normalbordermatrix=\bordermatrix @@ -4397,7 +4020,7 @@ \def\bordermatrix% {\bgroup \setbox0\hbox{\getvalue{\textface\c!mm\c!ex}B}% - \global\p@renwd\wd0\relax + \global\mathparentwd\wd0\relax \egroup \normalbordermatrix} @@ -4678,6 +4301,7 @@ %D So far. +\definefontstyle [\c!mm] [\c!mm] \definefontstyle [\c!rm,\v!roman,\v!serif,\v!regular] [\c!rm] \definefontstyle [\c!ss,\v!sansserif,\v!sans,\v!support] [\c!ss] \definefontstyle [\c!tt,\v!teletype,\v!type,\v!mono] [\c!tt] @@ -4800,24 +4424,6 @@ \def\fontvariant#1#2{\executeifdefined{\??fv#1#2}\empty} -% original: -% -% \def\variant[#1]% -% {\expanded{\definedfont -% [\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}} -% at \currentfontscale\bodyfontsize]}} -% -% \beginXETEX \font -% -% \def\variant[#1]% -% {\font\variantfont\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}} -% at \currentfontscale\bodyfontsize -% \variantfont} -% -% \endXETEX -% -% better - \def\dosetscaledfont {\checkrelativefontsize\fontstyle \scaledfont\currentfontscale\bodyfontsize @@ -4830,16 +4436,6 @@ at \scaledfont]}% \ignoreimplicitspaces} -\beginXETEX \font - - \unexpanded\def\variant[#1]% - {\dosetscaledfont - \font\variantfont\truefontname{\fontstringA\fontstylesuffix\fontvariant\fontstringA{#1}} - at \scaledfont - \variantfont} - -\endXETEX - \ifx\Var\undefined \let\Var\variant \fi %D By default we load the Computer Modern Roman fonts (but @@ -4847,7 +4443,7 @@ %D bodyfont. Sans serif and teletype are also available and %D can be called for by \type{\ss} and \type{\tt}. -\setupbodyfont [unk, rm] +% \setupbodyfont [unk, rm] %D Also needed is: @@ -4889,4 +4485,83 @@ \egroup\expandafter\firstoftwoarguments \fi} +%D New commands (not yet interfaced): + +\def\style[#1]% for inline usage, like \color + {\groupedcommand{\ifcsname#1\endcsname\csname#1\endcsname\else\definedfont[#1]\fi}{}} + +\def\startstyle[#1]% + {\begingroup + \ifcsname#1\endcsname\csname#1\endcsname\else\definedfont[#1]\fi} + +\def\stopstyle + {\endgroup} + +%D Still experimental (might even go away). + +% \definestylecollection[mine] + +% \definestyleinstance[mine][default][sorry] +% \definestyleinstance[mine][tt][bs][ttbs:\rm\sl] +% \definestyleinstance[mine][tt][bf][ttbf:\rm\sl] +% \definestyleinstance[mine][bf][\sl] +% \definestyleinstance[mine][sl][\tt] + +% {\bf test \mine test \sl test \mine test \bs oeps \mine oeps {\tt test \mine \bf test}} + +\definesystemvariable{sx} + +\def\definestylecollection + {\dosingleargument\dodefinestylecollection} + +\def\dodefinestylecollection[#1]% + {\iffirstargument + \unexpanded\setvalue{#1}{\styleinstance[#1]}% + \def\docommand##1% + {\def\dodocommand####1{\letbeundefined{\??sx##1:####1:\commalistelement}}% + \processcommacommand[\fontalternativelist,\s!default]\dodocommand}% + \processcommacommand[\fontstylelist,\s!default]\docommand + \fi} + +\def\definestyleinstance + {\doquadrupleargument\dodefinestyleinstance} + +\def\dodefinestyleinstance[#1][#2][#3][#4]% [name] [rm|ss|tt|..] [sl|bf|...] [whatever] + {\iffirstargument + \doifundefined{#1}{\definestylecollection[#1]}% + \fi + \iffourthargument + \setvalue{\??sx#1:#2:#3}{#4}% + \else\ifthirdargument + \setvalue{\??sx#1::#2}{#3}% + \else\ifsecondargument + \letvalue{\??sx#1::#2}\empty + \fi\fi\fi} + +\unexpanded\def\styleinstance[#1]% will be faster + {%\begingroup\expanded{\infofont[#1:\fontstyle:\fontalternative]}\endgroup + \executeifdefined{\??sx#1:\fontstyle:\fontalternative}% + {\executeifdefined{\??sx#1:\fontstyle:\s!default}% + {\executeifdefined{\??sx#1::\fontalternative} + {\getvalue {\??sx#1::\s!default}}}}} + +% \unexpanded\def\styleinstance[#1]% +% {\csname\??sx#1% +% \ifcsname:\fontstyle:\fontalternative\endcsname +% :\fontstyle:\fontalternative +% \else\ifcsname:\fontstyle:\s!default\endcsname +% :\fontstyle:\s!default +% \else\ifcsname::\fontalternative\endcsname +% ::\fontalternative +% \else\ifcsname::\s!default\endcsname +% ::\s!default +% \else +% % nothing, \relax +% \fi\fi\fi\fi +% \endcsname} + +%D \Compatibility with \MKIV: + +\def\somefontsize{\scaledfont} + \protect \endinput |