diff options
Diffstat (limited to 'tex/context/base/enco-ini.tex')
-rw-r--r-- | tex/context/base/enco-ini.tex | 65 |
1 files changed, 56 insertions, 9 deletions
diff --git a/tex/context/base/enco-ini.tex b/tex/context/base/enco-ini.tex index d77150059..79649501d 100644 --- a/tex/context/base/enco-ini.tex +++ b/tex/context/base/enco-ini.tex @@ -418,6 +418,13 @@ {\mappingtoks\@EA{\the\mappingtoks\setcasemap #1 #2 #3 }}% \ignorespaces} +%D Saves a few tokens + +\def\definecaseself #1 % lower=upper=self + {\setmappingtoks + \mappingtoks\@EA{\the\mappingtoks\setcaseself #1 }% + \ignorespaces} + %D Watch the \type {\definecasemap 127 to 255} option! %D Dedicated to Taco there is also: @@ -469,6 +476,7 @@ %D \starttyping %D \definecasemaps 128 to 156 lc 32 uc 0 %D \definecasemaps 160 to 188 lc -32 uc 0 +%D \definecasemaps 160 to 188 lc -32 uc 0 %D \definecasemaps 192 to 255 lc 32 uc 0 %D \stoptyping %D @@ -538,6 +546,11 @@ \lccode #1=#2 \uccode #1=#3 } +\def\setcaseself #1 % + {\setregimecode{#1}\@@letter + \lccode #1=#1 + \uccode #1=#1 } + % \def\definespacemap #1 #2 % code sfcode % {\setmappingtoks % \appendtoks\setspacemap #1 #2 \to\mappingtoks @@ -547,13 +560,13 @@ \def\definespacemap #1 #2 % code sfcode {\setmappingtoks - \expandafter\mappingtoks{\the\mappingtoks\setspacemap #1 #2 }% + \mappingtoks\expandafter{\the\mappingtoks\setspacemap #1 #2 }% \ignorespaces} \def\setspacemap #1 #2 % {\setregimecode{#1}\@@other - \lccode #1=\zerocount - \uccode #1=\zerocount + %\lccode #1=\zerocount + %\uccode #1=\zerocount \sfcode #1=#2 } % \def\defineuppercasecom#1#2% @@ -590,6 +603,7 @@ \ifx\enabledmapping\charactermapping \else \doifdefined{\@map@\charactermapping} {\the\csname\@map@\charactermapping\endcsname}% + % == \the\executeifdefined{\@map@\charactermapping}\emptytoks \edef\enabledmapping{\charactermapping}% \enablelanguagespecifics[\currentlanguage]% new % \edef\enabledmapping{\charactermapping\currentlanguage}% can be comma list @@ -604,6 +618,7 @@ \@EA\ifx\csname\@map@\charactermapping\endcsname\relax\else \the\csname\@map@\charactermapping\endcsname \fi + % == \the\executeifdefined{\@map@\charactermapping}\emptytoks \let\enabledmapping\charactermapping \enablelanguagespecifics[\currentlanguage]% to faster \fi} @@ -769,7 +784,7 @@ {\doifelsenothing{#1} {\let\stopencoding\relax} {%\protectfontcharacters % problematic in language loading - \showmessage\m!encodings1{#1}% + %\showmessage\m!encodings1{#1}% \pushmacro\dohandleaccent % still needed? \pushmacro\dohandlecommand % still needed? \pushmacro\definesortkey @@ -915,17 +930,34 @@ %D In patterns, characters have to be bytes. These will be %D mapped onto the compact pattern arrays. -\let\normaldohandleaccent\dohandleaccent +\def\patternchar#1 {\rawcharacter{#1}} % space is part of character definition ! -\def\patternchar#1 {\rawcharacter{#1}} +\ifx \enablepatterntokens\undefined + \def\handlepatterntoken#1]{\csname#1\endcsname} +\fi -\def\startpatternaccents - {\let\savedpatternchar\char +\def\startpatternaccents#1#2% % used grouped + {\bgroup \let\char\patternchar + \doifelsenothing{#1}{\enableencoding[ec]}{\enableencoding[#1]}% + \doifelsenothing{#2}{\enablemapping [ec]}{\enablemapping [#2]}% + \ifx \enablepatterntokens\undefined + \defineactivecharacter [ {\handlepatterntoken}% + \else + \enablepatterntokens + \fi + \ifx \enablepatternxml\undefined \else + \enablepatternxml + \fi + \catcode16 =\@@letter\lccode16=16 % brrr, extra quote in ec (turkish) + \catcode17 =\@@letter\lccode17=17 % brrr, extra quote in ec (turkish) + \catcode`\"=\@@letter\lccode`\"=`\" + \catcode`\'=\@@letter\lccode`\'=`\' + \catcode`\-=\@@letter\lccode`\-=`\- \let\dohandleaccent\normaldohandleaccent} \def\stoppatternaccents - {\let\char\savedpatternchar} + {\egroup} \def\definecharacter#1 #2 % {\ifundefined{#1}\setvalue{#1}{\dohandlecharacter{#1}}\fi @@ -952,6 +984,10 @@ {\csname\characterprefix\expandafter\ifx\csname\characterprefix\characterencoding#1\endcsname\relax \nocharacterencoding\else\characterencoding\fi#1\endcsname} +% \def\dopatterncharacter#1% +% {\csname\expandafter\ifx\csname\characterprefix\characterencoding#1\endcsname\relax +% \strippedcsname\fallbackpatternchar\else\characterprefix\characterencoding#1\fi\endcsname} + \endTEX \beginETEX \ifcsname @@ -960,8 +996,14 @@ {\csname\characterprefix\ifcsname\characterprefix\characterencoding#1\endcsname \characterencoding\else\nocharacterencoding\fi#1\endcsname} +% \def\dopatterncharacter#1% +% {\csname\ifcsname\characterprefix\characterencoding#1\endcsname +% \characterprefix\characterencoding#1\else\strippedcsname\fallbackpatternchar\fi\endcsname} + \endETEX +% \def\fallbackpatternchar{x} % makes no sense, duplicate patterns + \def\defaultcharacter#1% {\csname\characterprefix\nocharacterencoding\strippedcsname#1\endcsname} @@ -1663,6 +1705,11 @@ \keepencodedtokens \to \everysafeexpanded +%D Now we will not redefine any more, so: + +\let\normaldohandleaccent \dohandleaccent +\let\normaldohandlecharacter\dohandlecharacter + %D We preload several encodings: \useencoding[def,acc,raw,com,cas,mis] % mis should come first |