diff options
author | Hans Hagen <pragma@wxs.nl> | 2020-11-23 19:48:34 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2020-11-23 19:48:34 +0100 |
commit | 18499e46a49b8ccf4346686d1cf626ada33935b8 (patch) | |
tree | bd0ae7b601b323e20954c10c07598637d9403e00 /tex/context/base/mkiv/type-ini.mklx | |
parent | 4b089e589d39346a66a27d04f9857fe16e4b7b41 (diff) | |
download | context-18499e46a49b8ccf4346686d1cf626ada33935b8.tar.gz |
2020-11-23 18:39:00
Diffstat (limited to 'tex/context/base/mkiv/type-ini.mklx')
-rw-r--r-- | tex/context/base/mkiv/type-ini.mklx | 708 |
1 files changed, 0 insertions, 708 deletions
diff --git a/tex/context/base/mkiv/type-ini.mklx b/tex/context/base/mkiv/type-ini.mklx deleted file mode 100644 index afbbfea47..000000000 --- a/tex/context/base/mkiv/type-ini.mklx +++ /dev/null @@ -1,708 +0,0 @@ -%D \module -%D [ file=type-ini, -%D version=2001.03.05, -%D title=\CONTEXT\ Typescript Macros, -%D subtitle=Initialization, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\writestatus{loading}{ConTeXt Typescript Macros / Initialization} - -\registerctxluafile{type-ini}{} - -%D The default fontclass is empty. We could demand always using fontclasses, and -%D then make the calling macros simplier (always assume fontclass) but apart from -%D downward compatibility issues, it would make global, class spanning definitions a -%D pain. Some day we will introduce a default class. -%D -%D The \type {type-ini} and \type {font-ini} modules come as a pair and have mutual -%D dependencies. -%D -%D At some point we will only store in memory so some code can go away. - -\unprotect - -\newcount \c_font_typescripts_n_of_preloaded -\newconditional\c_font_typescripts_quit -\newtoks \c_font_typescripts_document -\newconditional\c_font_typescripts_preload -\newconditional\c_font_typescripts_first_pass \settrue\c_font_typescripts_first_pass - -\newif \iftypescriptfound % will become a mode -\newif \iftracetypescripts - -\newtoks \everybeforedefinetypeface -\newtoks \everyafterdefinetypeface - -\let\typescriptfiles \empty -\let\currenttypescripts\empty -\let\currenttypefile \empty - -\installmacrostack\currenttypefile - -\let\typescriptone \empty % public, used in typescripts -\let\typescripttwo \empty % public, used in typescripts -\let\typescriptthree\empty % public, used in typescripts - -\installmacrostack\typescriptone -\installmacrostack\typescripttwo -\installmacrostack\typescriptthree - -\let\fontclassstyle \empty - -\installmacrostack\fontclassstyle - -\let\m_font_typescripts_one \empty -\let\m_font_typescripts_two \empty -\let\m_font_typescripts_three\empty -\let\m_font_typescripts_check\empty -\let\m_font_typescripts_match\empty - -\installmacrostack\m_font_typescripts_one -\installmacrostack\m_font_typescripts_two -\installmacrostack\m_font_typescripts_three - -\mutable\let\t_font_typescripts\relax % uses as synonym - -\installcorenamespace{typescriptcache} -\installcorenamespace{typescriptfiles} -\installcorenamespace{typescriptonce} -\installcorenamespace{typescriptsynonyms} -\installcorenamespace{typescriptprefix} -\installcorenamespace{typescriptinheritances} -\installcorenamespace{typescriptdefaultstyles} -\installcorenamespace{typescriptrelatives} - -\definesystemvariable{ts} % TypeScript - -% tricky ... here we push/pop ... so \let - -\let\typescriptmethod\plusone % 1: empty==all==true 2: empty==false -\let\typescriptstate \plustwo % 1: process 2: store - -\installmacrostack\typescriptmethod -\installmacrostack\typescriptstate - -%D When these are loaded it is possible to get spaces but the whole idea is to do -%D that loading in vertical mode. Adding \type {\pushendofline} and \type -%D {\popendofline} is an option but not watertight as it can still interfere, for -%D instance work comments and leading spaces. Also, in horizontal mode it is likely -%D that one is also grouped and loading bodyfonts grouped is a real bad idea. -%D Ignoring all spaces is also not a solution. So, our verdict is: no catch. - -\permanent\protected\def\starttypescriptcollection % redefined on the fly - {\dosingleempty\font_typescripts_collection_start} - -\def\font_typescripts_collection_start[#tag]% - {} - -\permanent\let\stoptypescriptcollection\relax - -\permanent\protected\def\usetypescriptfile[#filename]% - {\iftok{#filename}{\v!reset}% - \let\typescriptfiles\empty - \else - \splitfilename{#filename}% - \addtocommalist\splitoffbase\typescriptfiles - \fi} - -\installmacrostack\stoptypescript - -% \permanent\protected\def\usetypescript {\dotripleempty\font_typescripts_use_one} -% \permanent\protected\def\usetypescriptexact{\dotripleempty\font_typescripts_use_two} -% -% \def\font_typescripts_use_one{\let\typescriptmethod\plusone\font_typescripts_use} -% \def\font_typescripts_use_two{\let\typescriptmethod\plustwo\font_typescripts_use} -% -% \protected\def\font_typescripts_use[#one][#two][#three]% - -% todo: just pass the method ... also further on then .. first test - -\def\font_typescripts_use_one{\let\typescriptmethod\plusone\font_typescripts_use} -\def\font_typescripts_use_two{\let\typescriptmethod\plustwo\font_typescripts_use} - -\permanent\protected\def\usetypescript {\font_typescripts_use_one} -\permanent\protected\def\usetypescriptexact{\font_typescripts_use_two} - -\tolerant\protected\def\font_typescripts_use[#one]#spacer[#two]#spacer[#three]% - {\push_macro_m_font_typescripts_one - \push_macro_m_font_typescripts_two - \push_macro_m_font_typescripts_three - \edef\m_font_typescripts_one {\truetypescript{#one}}% - \edef\m_font_typescripts_two {\truetypescript{#two}}% - \edef\m_font_typescripts_three{\truetypescript{#three}}% - \push_macro_typescriptone - \push_macro_typescripttwo - \push_macro_typescriptthree - \push_macro_typescriptmethod - \push_macro_typescriptstate - \push_macro_stoptypescript - \typescriptfoundfalse - \let\typescriptstate\plusone % why - \iftracetypescripts - \writestatus\m!fonts{request: [\m_font_typescripts_one] [\m_font_typescripts_two] [\m_font_typescripts_three]}% - \fi - \ifhmode - \font_typescripts_use_inline - \else - \font_typescripts_use_display - \fi - \setfalse\c_font_typescripts_first_pass - \pop_macro_stoptypescript - \pop_macro_typescriptstate - \pop_macro_typescriptmethod - \pop_macro_typescriptthree - \pop_macro_typescripttwo - \pop_macro_typescriptone - \pop_macro_m_font_typescripts_three - \pop_macro_m_font_typescripts_two - \pop_macro_m_font_typescripts_one} - -\def\font_typescripts_use_display - {\processcommacommand[\typescriptfiles]\font_typescripts_load_file - \the\c_font_typescripts_document} - -\let\font_typescripts_use_inline\font_typescripts_use_display - -\permanent\protected\def\preloadtypescripts - {\ifproductionrun\settrue\c_font_typescripts_preload\fi} - -\prependtoks - \preloadtypescripts -\to \everyjob - -\permanent\protected\def\loadtypescriptfile[#1]% - {\push_macro_typescriptstate - \let\typescriptstate\plustwo % assumes 2 at the outer level - \clf_loadtypescriptfile{#1}% - \pop_macro_typescriptstate} - -\permanent\protected\def\loadfoundtypescriptfile#1#2% name foundname / not a user command - {\startreadingfile - \unprotect - \pushendofline - \input{#2}% - \popendofline - \protect - \stopreadingfile} - -\permanent\protected\def\quittypescriptscanning - {\settrue\c_font_typescripts_quit} % public - -\permanent\protected\def\font_typescripts_start_store#definitions\stoptypescript - {\global\advance\c_font_typescripts_n_of_preloaded\plusone - \global\defcsname\??typescriptcache\the\c_font_typescripts_n_of_preloaded\endcsname - {\starttypescript#definitions\stoptypescript}% - \gtoksapp\t_font_typescripts\expandafter - {\csname\??typescriptcache\the\c_font_typescripts_n_of_preloaded\endcsname}} - -\permanent\protected\def\font_typescripts_collection_start_store#definitions\stoptypescriptcollection - {\global\advance\c_font_typescripts_n_of_preloaded\plusone - \global\defcsname\??typescriptcache\the\c_font_typescripts_n_of_preloaded\endcsname - {\starttypescriptcollection#definitions\stoptypescriptcollection}% - \gtoksapp\t_font_typescripts\expandafter - {\csname\??typescriptcache\the\c_font_typescripts_n_of_preloaded\endcsname}} - -\def\font_typescripts_load_file#filename% - {\setfalse\c_font_typescripts_quit - \push_macro_currenttypefile - \def\currenttypefile{#filename}% - \ifconditional\c_font_typescripts_preload - \font_typescript_process_typescript_file_and_store - \else - \font_typescript_process_typescript_file - \fi - \pop_macro_currenttypefile - \ifconditional\c_font_typescripts_quit - \quitcommalist - \setfalse\c_font_typescripts_quit - \fi} - -\def\font_typescript_process_typescript_file_and_store - {\expandafter\let\expandafter\t_font_typescripts\csname\??typescriptfiles\currenttypefile\endcsname -% {\aliased\expandafter\let\expandafter\t_font_typescripts\csname\??typescriptfiles\currenttypefile\endcsname - \ifx\t_font_typescripts\relax - \font_typescript_process_typescript_store_indeed - \fi - \the\t_font_typescripts} - -\def\font_typescript_process_typescript_store_indeed - {\newtoks\t_font_typescripts % is \relaxed elsewhere - \begingroup - \enforced\let\starttypescript \font_typescripts_start_store - \enforced\let\starttypescriptcollection\font_typescripts_collection_start_store - \font_typescript_process_typescript_file - \endgroup - \letcsname\??typescriptfiles\currenttypefile\endcsname\t_font_typescripts} - -\def\font_typescript_process_typescript_file - {\clf_doprocesstypescriptfile{\currenttypefile}} - -\permanent\tolerant\protected\def\usetypescriptonce[#one]#spacer[#two]#spacer[#three]% - {\ifcsname\??typescriptonce#one:#two:#three\endcsname - \writestatus\m!fonts{once (#one) (#two) (#three)}% - \else - \letcsname\??typescriptonce#one:#two:#three\endcsname\relax - \font_typescripts_use[#one][#two][#three]% - \fi} - -% \definetypescriptsynonym[lbr][cmr] - -\permanent\tolerant\protected\def\definetypescriptsynonym[#name]#spacer[#synonym]% - {\ifarguments\or\or\setevalue{\??typescriptsynonyms#name}{#synonym}\fi} - -\permanent\def\truetypescript#name% recursive so no \lastnamedcs - {\ifcsname\??typescriptsynonyms#name\endcsname - %\expandafter\truetypescript\csname\??typescriptsynonyms#name\endcsname - \expandafter\truetypescript\lastnamedcs - \else - #name% - \fi} - -% script [serif] [default] [size] -% script [serif] [computer-modern] [size] -% script [serif] [computer-modern] [ec] -% script [serif] [computer-modern] [name] -% script [serif] [computer-modern] [special] - -\prependtoks - \settrue\c_font_typescripts_first_pass -\to \everyjob - -\permanent\protected\def\starttypescript - {\ifcase\typescriptstate - % 0 = skip - \expandafter\font_typescripts_start_gobble - \or - % 1 = process - \expandafter\font_typescripts_start_process - \or - % 2 = store - \expandafter\font_typescripts_start_document - \else - % ? = skip - \expandafter\font_typescripts_start_gobble - \fi} - -\def\font_typescripts_start_gobble#ignore\stoptypescript{} - -\def\font_typescripts_start_document#definitions\stoptypescript - {\toksapp\c_font_typescripts_document{\starttypescript#definitions\stoptypescript}} - -\def\font_typescripts_start_process % could be a faster \doifelsenextoptionalif needed - {\let\typescriptone \m_font_typescripts_one - \let\typescripttwo \m_font_typescripts_two - \let\typescriptthree\m_font_typescripts_three - \let\m_font_typescripts_match\empty - \doifelsenextoptionalcs\font_typescripts_start_process_one\font_typescripts_start_process_all} - -\def\font_typescripts_start_process_all % could be a \let - {\ifconditional\c_font_typescripts_first_pass - \expandafter\font_typescripts_start_process_indeed - \else - % skip this since it may do unwanted resets, like - % setting symbolic font names to unknown, especially - % in run time user type scripts - \expandafter\font_typescripts_start_gobble - \fi} - -\def\font_typescripts_show_match - {\writestatus\m!fonts{match:\ifx\currenttypefile\relax\space *\fi \m_font_typescripts_match}} - -\def\font_typescripts_start_process_yes - {\ifdone - \typescriptfoundtrue - \iftracetypescripts\font_typescripts_show_match\fi - \expandafter\font_typescripts_start_process_indeed - \else - \expandafter\font_typescripts_start_gobble - \fi} - -\def\font_typescripts_start_process_one - {\font_typescripts_check\m_font_typescripts_one\typescriptone\font_typescripts_start_process_again_one} - -\def\font_typescripts_start_process_two - {\font_typescripts_check\m_font_typescripts_two\typescripttwo\font_typescripts_start_process_again_two} - -\def\font_typescripts_start_process_three - {\font_typescripts_check\m_font_typescripts_three\typescriptthree\font_typescripts_start_process_again_three} - -\def\font_typescripts_start_process_again_one - {\doifelsenextoptionalcs\font_typescripts_start_process_two\font_typescripts_start_process_yes} - -\def\font_typescripts_start_process_again_two - {\doifelsenextoptionalcs\font_typescripts_start_process_three\font_typescripts_start_process_yes} - -\let\font_typescripts_start_process_again_three\font_typescripts_start_process_yes - -\def\font_typescripts_start_process_indeed - {\push_macro_fontclass} - -\permanent\protected\def\stoptypescript - {\pop_macro_fontclass} - -\def\font_typescripts_check#asked#target#followup[#value]% script use value next - {\donefalse - \edef\m_font_typescripts_check{#value}% - \ifempty\m_font_typescripts_check % no longer needed / met - \ifcase\typescriptmethod\or\donetrue\fi - \orelse\ifx#asked\s!all - \donetrue - \orelse\ifx\m_font_typescripts_check\s!all - \donetrue - \orelse\ifx#asked\m_font_typescripts_check % saves 10% trace so probably faster too - \donetrue - \let#target\m_font_typescripts_check - \else - \doifelsecommon\m_font_typescripts_check#asked\donetrue\donefalse - \ifdone - \let#target\commalistelement - \fi - \fi - \ifdone - \iftracetypescripts\extendtypescriptmatch\fi - \expandafter#followup% - \else - \expandafter\font_typescripts_start_gobble - \fi} - -\permanent\protected\def\extendtypescriptmatch - {\edef\m_font_typescripts_match{\m_font_typescripts_match\space[\m_font_typescripts_check]}} - -%D Map files will go away in \LUATEX, but till that happens we use stripped down -%D support for loading them. - -\permanent\tolerant\protected\def\loadmapfile [#filename]{\clf_loadmapfile{#filename}} -\permanent\tolerant\protected\def\loadmapline [#kind]#spacer[#data]{\clf_loadmapline{#kind}{#data}} -\permanent \protected\def\forgetmapfiles {\clf_resetmapfiles} - -% \prependtoks -% \loadmapfile[mkiv-base.map]% can't we preload this one? -% \to \everystarttext - -%D A handy shortcut: - -% \definetypescriptprefix[serif][Serif] -% \definetypescriptprefix[sans] [Sans] -% \definetypescriptprefix[mono] [Mono] -% -% \starttypescript [serif,sans,mono] [handling,hanging,hz] [pure,normal,hz,quality] -% \setupfontsynonym [\typescriptprefix\typescriptone] [handling=\typescriptthree] -% \stoptypescript - -% \protected\def\definetypescriptprefix -% {\dodoubleargument\font_typescripts_define_prefix} -% -% \def\font_typescripts_define_prefix[#name][#prefix]% -% {\setgvalue{\??typescriptprefix#name}{#prefix}} % made global - -\permanent\tolerant\protected\def\definetypescriptprefix[#name]#spacer[#prefix]% - {\setgvalue{\??typescriptprefix#name}{#prefix}} % made global - -\def\typescriptprefix#name% - %{\ifcsname\??typescriptprefix#name\endcsname\csname\??typescriptprefix#name\endcsname\else#name\fi} - {\ifcsname\??typescriptprefix#name\endcsname\lastnamedcs\else#name\fi} - -% defining typefaces: -% -% \definetypeface [joke] [rm] -% \definetypeface [joke] [rm] [settings] -% \definetypeface [joke] [rm] [serif] [lucida] -% \definetypeface [joke] [rm] [serif] [lucida] [size] -% \definetypeface [joke] [rm] [serif] [lucida] [size] [settings] -% \definetypeface [joke] [specification] - -\appendtoks - \font_helpers_reset_fontclass_math_families\fontclass -\to \everybeforedefinetypeface - -%D This hooks into the font switcher: - -\settrue\autotypescripts - -\protected\def\trycurrentfontclass#typeface% - {\ifconditional\autotypescripts - \usetypescript[#typeface]% - \ifcsname\??fontclassyes#typeface\endcsname - \edef\fontclass{#typeface}% - \else - \iftracetypescripts\writestatus\m!fonts{auto load typescript file 1: [#typeface]}\fi - \usetypescriptfile[#typeface]% - \usetypescript[#typeface]% - \ifcsname\??fontclassyes#typeface\endcsname - \edef\fontclass{#typeface}% - \else - % todo: message - \letvalueempty{\??fontclassnop#typeface}% - \fi - \fi - \else - % todo: message - \letvalueempty{\??fontclassnop#typeface}% - \fi} - -%D Now we define: - -\permanent\tolerant\protected\def\definetypeface[#name]#spacer[#style]#spacer[#fontshape]#spacer[#fontname]#spacer[#fontsize]#spacer[#settings]% - {\ifarguments - \expandafter\font_typefaces_define_e - \or - \expandafter\font_typefaces_define_d - \or - \expandafter\font_typefaces_define_d - \or - \expandafter\font_typefaces_define_c - \or - \expandafter\font_typefaces_define_b - \or - \expandafter\font_typefaces_define_a - \or - \expandafter\font_typefaces_define_a - \fi[#name][#style][#fontshape][#fontname][#fontsize][#settings]} - -\def\font_typefaces_define_e[#name][#style][#fontshape][#fontname][#fontsize][#settings]% - {} - -\def\font_typefaces_define_a[#name][#style][#fontshape][#fontname][#fontsize][#settings]% - {\iftracetypescripts\writestatus\m!fonts{define: [#name] [#style] [#fontshape] [#fontname]}\fi - \font_typefaces_define_indeed[#name][#style]% - \font_typefaces_defining_start{#name}{#style}{#settings}% - \font_typescripts_use_one[#fontshape][#fontname][\s!name]% [\s!name,\s!default]% - \iftypescriptfound - % we're okay - \orelse\ifconditional\autotypescripts - \iftracetypescripts\writestatus\m!fonts{auto load typescript file 2: [#fontname]}\fi - \usetypescriptfile[#fontname]% - \font_typescripts_use_one[#fontshape][#fontname][\s!name]% [\s!name,\s!default]% - \fi - \font_typescripts_use_one[#fontshape][#fontsize][\s!size]% - \font_typefaces_defining_stop} - -\def\font_typefaces_define_b[#name][#style][#fontshape][#fontname][#discard][#discard]% - {\font_typefaces_define_a[#name][#style][#fontshape][#fontname][\s!default][#discard]} - -\def\font_typefaces_define_c[#name][#style][#discard][#discard][#discard][#discard]% - {\font_typefaces_define_indeed[#name][#style]} - -\def\font_typefaces_define_d[#name][#specification][#discard][#discard][#discard][#discard]% use definitions in lfg file - {\clf_definetypeface{#name}{#specification}} - -\def\font_typefaces_define_indeed[#name][#style]% saveguard against redefinition - {\doifsomething{#name} - {\ifcsname\??typescriptdefaultstyles#name\endcsname \else - \registerfontclass{#name}% - \setxvalue{\??typescriptdefaultstyles#name}{#style}% - \fi - \ifcsname#name\endcsname \else - \setugvalue{#name}{\switchtotypeface[#name][#style]}% - \fi}} - -% needs testing first ... let'd do it stepwise - -% \permanent\tolerant\protected\def\definetypeface[#name]#spacer[#style]#spacer[#fontshape]#spacer[#fontname]#spacer[#fontsize]#spacer[#settings]% -% {\ifarguments -% \or -% \clf_definetypeface{#name}{#specification}% -% \or -% \clf_definetypeface{#name}{#specification}% -% \or -% \font_typefaces_define_simplex[#name][#style]% -% \or -% \font_typefaces_define_complex[#name][#style][#fontshape][#fontname][\s!default][#discard]% -% \else -% \font_typefaces_define_complex[#name][#style][#fontshape][#fontname][#fontsize][#settings]% -% \fi} -% -% \def\font_typefaces_define_complex[#name][#style][#fontshape][#fontname][#fontsize][#settings]% -% {\iftracetypescripts\writestatus\m!fonts{define: [#name] [#style] [#fontshape] [#fontname]}\fi -% \font_typefaces_define_simplex[#name][#style]% -% \font_typefaces_defining_start{#name}{#style}{#settings}% -% \font_typescripts_use_one[#fontshape][#fontname][\s!name]% [\s!name,\s!default]% -% \iftypescriptfound -% % we're okay -% \orelse\ifconditional\autotypescripts -% \iftracetypescripts\writestatus\m!fonts{auto load typescript file 2: [#fontname]}\fi -% \usetypescriptfile[#fontname]% -% \font_typescripts_use_one[#fontshape][#fontname][\s!name]% [\s!name,\s!default]% -% \fi -% \font_typescripts_use_one[#fontshape][#fontsize][\s!size]% -% \font_typefaces_defining_stop} -% -% \def\font_typefaces_define_simplex[#name][#style]% saveguard against redefinition -% {\doifsomething{#name} -% {\ifcsname\??typescriptdefaultstyles#name\endcsname \else -% \registerfontclass{#name}% -% \setxvalue{\??typescriptdefaultstyles#name}{#style}% -% \fi -% \ifcsname#name\endcsname \else -% \setugvalue{#name}{\switchtotypeface[#name][#style]}% -% \fi}} - -\def\font_typefaces_defining_start#name#style#settings% - {\let\m_ts_rscale \!!plusone % as we push/pop - \let\m_ts_features \empty - \let\m_ts_fallbacks \empty - \let\m_ts_goodies \empty - \let\m_ts_direction \empty - \let\m_ts_designsize\empty - \geteparameters[m_ts_][#settings]% todo raw ... no need for key interpretation - \push_macro_fontclass - \push_macro_fontclassstyle - \setcurrentfontclass{#name}% - \savefontclassparameters{#style}\m_ts_rscale\m_ts_features\m_ts_fallbacks\m_ts_goodies\m_ts_designsize\m_ts_direction - \the\everybeforedefinetypeface} - -\permanent\def\tsvar#key#default% undocumented and unofficial - {\expandafter\ifempty\csname\??ts#key\endcsname - #default% - \else - \csname\??ts#key\endcsname - \fi} - -\def\font_typefaces_defining_stop - {\the\everyafterdefinetypeface - \pop_macro_fontclassstyle - \pop_macro_fontclass} - -\def\dofastdefinetypeface#name#style#fontshape#fontsize#settings% called from the lua end (via case d) - {\font_typefaces_define_indeed[#name][#style]% - \font_typefaces_defining_start{#name}{#style}{#settings}% - \font_typescripts_use_one[#fontshape][#fontsize][\s!size]% - \font_typefaces_defining_stop} - -% \protected\def\setuptypeface% [class] [settings] -% {\dodoubleempty\font_typefaces_setup} -% -% \protected\def\switchtotypeface% [class] [settings] -% {\dodoubleempty\font_typefaces_switch} -% -% \def\font_typefaces_setup[#class][#settings]% -% {\setcurrentfontclass{#class}% -% \let\globalfontclass\fontclass -% \ifsecondargument -% \setupbodyfont[#settings]% -% \orelse\ifempty\fontclass -% \setupbodyfont[\s!rm]% -% \orelse\ifcsname\??typescriptdefaultstyles\fontclass\endcsname -% %\setupbodyfont[\csname\??typescriptdefaultstyles\fontclass\endcsname]% -% \expandafter\setupbodyfont\expandafter[\lastnamedcs]% -% \else -% \setupbodyfont[\s!rm]% -% \fi -% \ifmmode\mr\else\tf\fi} % needed ? -% -% \def\font_typefaces_switch[#class]#spacer[#settings]% -% {\setcurrentfontclass{#class}% -% \let\globalfontclass\globalfontclass -% \ifsecondargument -% \switchtobodyfont[#settings]% -% \orelse\ifempty\fontclass -% \switchtobodyfont[\s!rm]% -% \orelse\ifcsname\??typescriptdefaultstyles\fontclass\endcsname -% %\switchtobodyfont[\csname\??typescriptdefaultstyles\fontclass\endcsname]% -% \expandafter\switchtobodyfont\expandafter[\lastnamedcs]% -% \else -% \switchtobodyfont[\s!rm]% -% \fi -% \ifmmode\mr\else\tf\fi} % needed ? - -\permanent\tolerant\protected\def\setuptypeface[#class]#spacer[#settings]% - {\ifarguments - \or - \setcurrentfontclass{#class}% - \let\globalfontclass\fontclass - \ifempty\fontclass - \setupbodyfont[\s!rm]% - \orelse\ifcsname\??typescriptdefaultstyles\fontclass\endcsname - \expandafter\setupbodyfont\expandafter[\lastnamedcs]% - \else - \setupbodyfont[\s!rm]% - \fi - \or - \setcurrentfontclass{#class}% - \let\globalfontclass\fontclass - \setupbodyfont[#settings]% - \fi - \ifmmode\mr\else\tf\fi} % needed ? - -\permanent\tolerant\protected\def\switchtotypeface[#class]#spacer[#settings]% - {\ifarguments - \or - \setcurrentfontclass{#class}% - \let\globalfontclass\globalfontclass - \ifempty\fontclass - \switchtobodyfont[\s!rm]% - \orelse\ifcsname\??typescriptdefaultstyles\fontclass\endcsname - \expandafter\switchtobodyfont\expandafter[\lastnamedcs]% - \else - \switchtobodyfont[\s!rm]% - \fi - \or - \setcurrentfontclass{#class}% - \let\globalfontclass\globalfontclass - \switchtobodyfont[#settings]% - \fi - \ifmmode\mr\else\tf\fi} % needed ? - -%D For Taco: -%D -%D \starttyping -%D \inherittypeface[palatino][rm][postscript] -%D \inherittypeface[palatino][rm][\fontclass] -%D \inherittypeface[palatino][rm] % == \fontclass -%D \inherittypeface[palatino] % == [rm,ss,tt,mm] -%D \stoptyping - -\permanent\tolerant\protected\def\inherittypeface[#name]#spacer[#styles]#spacer[#parentclass]% - {\iftok{#styles}\emptytoks - \font_typescripts_inherit_indeed[#name][\s!rm,\s!ss,\s!tt,\s!mm][\fontclass]% - \orelse\iftok{#name}{#parentclass}\else - \glet\font_typescripts_inherit_check\font_typescripts_inherit_check_indeed - \def\font_typescripts_inherit_check_step#style{\setevalue{\??typescriptinheritances#name:#style}{#parentclass}}% - \processcommalist[#styles]\font_typescripts_inherit_check_step - \fi} - -\let\font_typescripts_inherit_check_step\relax - -%D This hooks into the font mechanism with: - -\def\font_typescripts_inherit_check_indeed#name% called often - {\ifcsname\??typescriptinheritances\fontclass:#name\endcsname - %\expandafter\let\expandafter\fontclass\csname\??typescriptinheritances\fontclass:#name\endcsname - \expandafter\let\expandafter\fontclass\lastnamedcs - \fi} - -\let\font_typescripts_inherit_check\gobbleoneargument - -% not yet: -% -% \def\font_helpers_check_relative_font_id -% {\ifcsname\??typescriptrelatives\fontclass\endcsname -% \expandafter\let\expandafter\relativefontid\csname\??typescriptrelatives\fontclass\endcsname -% \else -% \expandafter\normalxdef\csname\??typescriptrelatives\fontclass\endcsname{\the\lastfontid}% -% \let\relativefontid\minusone -% \fi} - -\def\v_font_string_d % default fontstyle (expands to \s!Serif in font-ini) - {\expandafter\ifx\csname\??typescriptdefaultstyles\fontclass\endcsname\s!rm \s!Serif \else % no \orelse ! - \expandafter\ifx\csname\??typescriptdefaultstyles\fontclass\endcsname\s!ss \s!Sans \else % no \orelse ! - \expandafter\ifx\csname\??typescriptdefaultstyles\fontclass\endcsname\s!tt \s!Mono \else % no \orelse ! - \s!Serif \fi\fi\fi} - -\protected\def\font_helpers_set_fontstyle_of_fontclass - {\ifempty\fontclass - \let\fontstyle\s!rm - \orelse\ifcsname\??typescriptdefaultstyles\fontclass\endcsname - %\edef\fontstyle{\csname\??typescriptdefaultstyles\fontclass\endcsname}% - \edef\fontstyle{\lastnamedcs}% - \else - \let\fontstyle\s!rm - \fi} - -\protect \endinput |