diff options
Diffstat (limited to 'tex/context/base/mkiv/font-sty.mklx')
-rw-r--r-- | tex/context/base/mkiv/font-sty.mklx | 441 |
1 files changed, 0 insertions, 441 deletions
diff --git a/tex/context/base/mkiv/font-sty.mklx b/tex/context/base/mkiv/font-sty.mklx deleted file mode 100644 index 0cb76eee9..000000000 --- a/tex/context/base/mkiv/font-sty.mklx +++ /dev/null @@ -1,441 +0,0 @@ -%D \module -%D [ file=font-sty, -%D version=2011.01.13, % (copied fron font-ini) -%D title=\CONTEXT\ Font Macros, -%D subtitle=Styles, -%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 Font Macros / Styles} - -\unprotect - -%D \macros -%D {definealternativestyle} -%D -%D In the main modules we are going to implement lots of parameterized commands and -%D one of these parameters will concern the font to use. To suit consistent use of -%D fonts we here implement a mechanism for defining the keywords that present a -%D particular style or alternative. -%D -%D \starttyping -%D \definealternativestyle [keywords] [\style] [\nostyle] -%D \stoptyping -%D -%D The first command is used in the normal textflow, while the second command takes -%D care of headings and alike. Consider the next two definitions: -%D -%D \starttyping -%D \definealternativestyle [bold] [\bf] [] -%D \definealternativestyle [cap] [\cap] [\cap] -%D \stoptyping -%D -%D A change \type {\bf} in a heading which is to be set in \type {\tfd} does not look -%D that well, so therefore we leave the second argument of \type -%D {\definealternativestyle} empty. When we capatalize characters using the pseudo -%D small cap command \type {\cap}, we want this to take effect in both text and -%D headings, which is accomplished by assigning both arguments. - -\installcorenamespace{alternativestyles} % settings -\installcorenamespace{alternativestyle} % instances - -\installsetuponlycommandhandler \??alternativestyles {alternativestyles} - -\setnewconstant \c_font_current_alternative_style_index \plusone - -\permanent\tolerant\protected\def\definealternativestyle[#commands]#spacer[#variantone]#spacer[#varianttwo]% - {\processcommalist[#commands]{\font_basics_define_alternative_style_indeed{#variantone}{#varianttwo}}} - -% \let\definestyle\definealternativestyle % later redefined - -\newconstant\c_fonts_basics_alternative_style_method - -% maybe permanent - -\def\font_basics_define_alternative_style_indeed#variantone#varianttwo#command% - {\setuvalue{\??alternativestyle#command}{\font_helpers_apply_alternative_style{#variantone}{#varianttwo}}% - \ifcsname#command\endcsname - % no redefinition - \orelse\ifnum\c_fonts_basics_alternative_style_method=\plusone - \ifthirdargument - \permanent\setuevalue{#command}{\triggergroupedcommandcs\begincsname\??alternativestyle#command\endcsname}% - \else - \permanent\setuvalue{#command}{\triggergroupedcommand{#variantone}}% - \fi - \else - \permanent\setuvalue{#command}{\triggergroupedcommand{#variantone}}% - \fi} - -\def\font_helpers_apply_alternative_style - {\ifcase\c_font_current_alternative_style_index - \expandafter\gobbletwoarguments - \or - \expandafter\firstoftwoarguments - \or - \expandafter\secondoftwoarguments - \else - \expandafter\firstoftwoarguments - \fi} - -\permanent\def\applyalternativestyle#name% public .. expandable? frozen? - {\begincsname\??alternativestyle#name\endcsname} - -\appendtoks - \doifelse{\alternativestylesparameter\c!method}\v!auto - {\c_fonts_basics_alternative_style_method\plusone}% - {\c_fonts_basics_alternative_style_method\zerocount}% -\to \everysetupalternativestyles - -%D Maybe too generic, but probably ok is the following. (Maybe one day we will use a -%D dedicated grouped command for styles.) - -% \appendtoks -% \let\groupedcommand\thirdofthreearguments -% \to \everysimplifycommands - -%D This command also defines the keyword as command. This means that the example -%D definition of \type {bold} we gave before, results in a command \type {\bold} -%D which can be used as: -%D -%D \startbuffer -%D He's a \bold{bold} man with a {\bold head}. -%D \stopbuffer -%D -%D \typebuffer -%D -%D or -%D -%D \startexample -%D \definealternativestyle[bold][\bf][]\getbuffer -%D \stopexample -%D -%D Such definitions are of course unwanted for \type {\cap} because this would -%D result in an endless recursive call. Therefore we check on the existance of both -%D the command and the substitution. The latter is needed because for instance \type -%D {\type} is an entirely diferent command. That command handles verbatim, while the -%D style command would just switch to teletype font. This is just an example of a -%D tricky naming coincidence. -%D -%D \macros -%D {doconvertfont,noconvertfont, -%D dontconvertfont,redoconvertfont} -%D -%D After having defined such keywords, we can call for them by using -%D -%D \starttyping -%D \doconvertfont{keyword}{text} -%D \stoptyping -%D -%D We deliberately pass an argument. This enables us to assign converters that -%D handle one argument, like \type {\cap}. -%D -%D By default the first specification is used to set the style, exept when we say -%D \type {\dontconvertfont}, after which the second specification is used. We can -%D also directly call for \type {\noconvertfont}. In nested calls, we can restore -%D the conversion by saying \type {\redoconvertfont}. -%D -%D These commands are not grouped! Grouping is most probably done by the calling -%D macro's and would lead to unnecessary overhead. - -\let\m_current_convert_font \empty -\let\m_current_convert_font_dt\empty - -\permanent\protected\def\doconvertfont#specification% takes second argument / this command is obsolete - {\edef\m_current_convert_font{#specification}% - \ifempty\m_current_convert_font - %\expandafter\firstofoneargument - \else - \expandafter\font_helpers_do_convert_font - \fi} - -\def\font_helpers_do_convert_font - {\edef\m_current_convert_font_dt{\detokenize\expandafter{\m_current_convert_font}}% - \ifcsname\??alternativestyle\m_current_convert_font_dt\endcsname - \expandafter\lastnamedcs - \orelse\ifcsname\m_current_convert_font_dt\endcsname - \expandafter\lastnamedcs - \else - \expandafter\m_current_convert_font - \fi} - -%D Low level switches (downward compatible, but we keep them as one can use them in -%D styles): -%D -%D \starttyping -%D \usemodule[abr-02] -%D \setuphead[chapter][style=\bfb] -%D \setupfooter[style=\dontconvertfont\bf] -%D \chapter{This is \TEX} -%D \stoptyping - -\permanent\protected\def\dontconvertfont{\c_font_current_alternative_style_index\plustwo} % needs checking in usage -\permanent\protected\def\redoconvertfont{\c_font_current_alternative_style_index\plusone} % needs checking in usage - -%D The new one: - -\setfalse\fontattributeisset - -\let\currentstyleparameter \empty % these might become private (possible conflict with defines) -\let\currentdetokenizedstyleparameter\empty % these might become private (possible conflict with defines) - -\permanent\protected\def\dousestyleparameter#value% - {\edef\currentstyleparameter{#value}% - \ifempty\currentstyleparameter\else - \expandafter\dousecurrentstyleparameter - \fi} - -\permanent\protected\def\dousestylehashparameter#hash#parameter% - {\ifcsname#hash#parameter\endcsname - \expandafter\dousestyleparameter\lastnamedcs - \fi} - -\permanent\protected\def\dousecurrentstyleparameter % empty check outside here - {\edef\currentdetokenizedstyleparameter{\detokenize\expandafter{\currentstyleparameter}}% - \settrue\fontattributeisset % reset is done elsewhere - \ifcsname\??alternativestyle\currentdetokenizedstyleparameter\endcsname - \lastnamedcs - \orelse\ifcsname\currentdetokenizedstyleparameter\endcsname - \lastnamedcs - \else - \currentstyleparameter - \fi} - -\let\dosetfontattribute\dousestylehashparameter % for a while - -%D New commands (not yet interfaced): -%D -%D \startbuffer -%D \definestyle[one][style=bold,color=darkblue] -%D -%D test \one{test} test -%D test \style[one]{test} test -%D test \style[color=red]{test} test -%D test \style[Serif at 20pt]{test} test -%D \stopbuffer -%D -%D \typebuffer \startlines \getbuffer \stoplines - -% definitions .. no tagging here - -\installcorenamespace{style} -\installcorenamespace{stylecheck} -\installcorenamespace{stylehack} - -\installcommandhandler \??style {style} \??style - -\setupstyle - [%\c!style=, - %\c!color=, - \c!method=\v!command] - -\appendtoks - \letvalue{\??stylecheck\currentstyle}\relax - \edef\p_method{\styleparameter\c!method}% - \ifx\p_method\v!command - \frozen\instance\setuevalue{\e!start\currentstyle}{\font_styles_apply_start{\currentstyle}}% - \frozen\instance\setuevalue{\e!stop \currentstyle}{\font_styles_apply_stop}% - \frozen\instance\setuevalue {\currentstyle}{\font_styles_apply_grouped{\currentstyle}}% no longer groupedcommand here - \fi -\to \everydefinestyle - -\protected\def\font_styles_apply_start#name% - {\begingroup - \font_styles_use_defined{#name}} - -\protected\def\font_styles_apply_stop - {\endgroup} - -\protected\def\font_styles_apply_grouped#name% assumes that the next is { or \bgroup - {\bgroup - \def\g_style{\font_styles_use_defined{#name}}% - \afterassignment\g_style - \let\nexttoken} - -\protected\def\font_styles_use_defined#name% - {\edef\currentstyle{#name}% - \usestylestyleandcolor\c!style\c!color} - -\protected\def\font_styles_use_generic#specification% - {\let\currentstyle\s!unknown % reasonable generic tag - \letstyleparameter\c!style\empty - \letstyleparameter\c!color\empty - \setupcurrentstyle[#specification]% - \usestylestyleandcolor\c!style\c!color} - -% commands - -\installcorenamespace{styleargument} - -\protected\def\style[#name]% as this is can be a switch we use groupedcommand % frozen? - {\csname\??styleargument - \ifcsname\??stylecheck#name\endcsname - 2% defined as style - \orelse\ifcsname\??stylehack#name\endcsname - 4% defined as command - \orelse\ifcsname#name\endcsname - 1% defined as command - \else - 3% specification - \fi - \endcsname{#name}} - -\setvalue{\??styleargument1}#name% - {\expandafter\triggergroupedcommandcs\begincsname#name\endcsname} - -\setvalue{\??styleargument2}#name% - {\triggergroupedcommand{\font_styles_use_defined{#name}}} % or {\font_styles_apply_grouped{#name}} - -\setvalue{\??styleargument3}#specification% - {\doifelseassignment{#specification}\font_styles_assignment\font_styles_direct{#specification}} - -\setvalue{\??styleargument4}#name% - {\expandafter\triggergroupedcommandcs\begincsname\??stylehack#name\endcsname} - -\setvalue{\??stylehack\s!math}% dirty trick - {\groupedcommand\normalstartimath\normalstopimath} - -% \def\font_styles_assignment#specification{\groupedcommand{\font_styles_use_generic{#specification}}{}} -% \def\font_styles_direct #specification{\groupedcommand{\definedfont[#specification]}{}} - -\def\font_styles_assignment#specification{\triggergroupedcommand{\font_styles_use_generic{#specification}}} -\def\font_styles_direct #specification{\triggergroupedcommand{\definedfont[#specification]}} - -% environments - -\installcorenamespace{styleenvironment} - -\protected\def\startstyle[#name]% - {\begingroup - \csname\??styleenvironment - \ifcsname\??stylecheck#name\endcsname - 2% defined as style - \orelse\ifcsname#name\endcsname - 1% defined as command - \else - 3% specification - \fi - \endcsname{#name}} - -\protected\def\stopstyle - {\endgroup - \autoinsertnextspace} % will be configurable, maybe also in \definestartstop - -\setvalue{\??styleenvironment1}#name% - {\csname#name\endcsname} - -\setvalue{\??styleenvironment2}#name% - {\font_styles_use_defined{#name}} - -\setvalue{\??styleenvironment3}#specification% - {\doifelseassignment{#specification}\font_styles_start_assignment\font_styles_start_direct{#specification}} - -\def\font_styles_start_assignment#specification{\font_styles_use_generic{#specification}} -\def\font_styles_start_direct #specification{\definedfont[#specification]\relax} - -%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}} - -\installcorenamespace{stylecollection} - -\permanent\tolerant\protected\def\definestylecollection[#name]% - {\ifarguments\or - \setuvalue{#name}{\styleinstance[#name]}% - \def\font_styles_define_style_collection_a#style% - {\def\font_styles_define_style_collection_b#alternative{\undefinevalue{\??stylecollection#name:#style:#alternative}}% - \font_helpers_process_alternative_list\font_styles_define_style_collection_b - \font_styles_define_style_collection_b\s!default}% - \font_helpers_process_style_list\font_styles_define_style_collection_a - \font_styles_define_style_collection_a\s!default - \fi} - -\let\font_styles_define_style_collection_a\relax -\let\font_styles_define_style_collection_b\relax - -\permanent\tolerant\protected\def\definestyleinstance[#instance]#*[#2]#*[#3]#*[#4]% [name] [rm|ss|tt|..] [sl|bf|...] [whatever] - {\ifparameter#instance\or - \ifarguments\or\or - \letvalueempty{\??stylecollection#instance::#2}% - \or - \setvalue{\??stylecollection#instance::#2}{#3}% - \or - \setvalue{\??stylecollection#instance:#2:#3}{#4}% - \fi - \ifcsname#instance\endcsname\else\font_styles_define_style_collection[#instance]\fi - \fi} - -\permanent\protected\def\styleinstance[#instance]% maybe \lastnamedcs here too - {\csname\??stylecollection#instance:% - \ifcsname\??stylecollection#instance:\fontstyle:\fontalternative\endcsname - \fontstyle:\fontalternative - \orelse\ifcsname\??stylecollection#instance:\fontstyle:\s!default\endcsname - \fontstyle:\s!default - \orelse\ifcsname\??stylecollection#instance::\fontalternative\endcsname - :\fontalternative - \else - :\s!default - \fi - \endcsname} - -%D Variant selectors -%D -%D \starttyping -%D \mathematics {\vsone{\utfchar{0x2229}}} -%D \mathematics {\utfchar{0x2229}\vsone{}} -%D \stoptyping - -\permanent\protected\edef\vsone#character{#character\normalUchar"FE00 } % used -\permanent\protected\edef\vstwo#character{#character\normalUchar"FE01 } % not used but handy for testing - -%D For historic reasons we keep the following around but they are no longer that -%D relevant for \MKIV. But \unknown\ they will be dropped in \LMTX ! - -\permanent\protected\def\doattributes#1#2#3#4% - {\begingroup % geen \bgroup, anders in mathmode lege \hbox - \dousestylehashparameter{#1}{#2}% - \dousecolorhashparameter{#1}{#3}% - #4% - \endgroup} - -\permanent\protected\def\dostartattributes#1#2#3% - {\begingroup % geen \bgroup, anders in mathmode lege \hbox - \dousestylehashparameter{#1}{#2}% - \dousecolorhashparameter{#1}{#3}} - -\let\dostopattributes\endgroup - -%D New but it needs to be supported explicitly (as in natural tables). - -\newconditional\c_font_styles_math - -\protected\def\font_styles_math_reset - {\setfalse\c_font_styles_math} - -\protected\def\font_styles_math_start - {\ifconditional\c_font_styles_math - \startimath - \fi - \relax} - -\protected\def\font_styles_math_stop - {\relax - \ifconditional\c_font_styles_math - \stopimath - \fi} - -\definealternativestyle[\v!math][\settrue\c_font_styles_math] - -\protect \endinput |