From 832f714d45cd58bd72317a6f4e41420d61520600 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Mon, 7 Feb 2005 00:00:00 +0100 Subject: stable 2005.02.07 --- tex/context/base/cont-cz.tex | 6 +- tex/context/base/cont-de.tex | 6 +- tex/context/base/cont-en.tex | 6 +- tex/context/base/cont-it.tex | 7 +- tex/context/base/cont-nl.tex | 6 +- tex/context/base/cont-ro.tex | 6 +- tex/context/base/cont-sys.ori | 54 ++++-- tex/context/base/cont-uk.tex | 6 +- tex/context/base/context.tex | 3 +- tex/context/base/core-ntb.tex | 13 +- tex/context/base/font-ini.tex | 118 ++++++++---- tex/context/base/font-vnr.tex | 54 ------ tex/context/base/supp-fil.tex | 28 ++- tex/context/base/syst-ext.tex | 2 + tex/context/base/type-akb.tex | 6 +- tex/context/base/type-buy.tex | 4 + tex/context/base/type-cbg.tex | 4 + tex/context/base/type-def.tex | 46 +++++ tex/context/base/type-dis.tex | 4 + tex/context/base/type-enc.tex | 10 +- tex/context/base/type-exa.tex | 35 +++- tex/context/base/type-fsf.tex | 4 + tex/context/base/type-ghz.tex | 4 + tex/context/base/type-ini.tex | 365 ++++++++++++++++++++++++++------------ tex/context/base/type-map.tex | 14 +- tex/context/base/type-msw.tex | 59 ++++++ tex/context/base/type-omg.tex | 22 ++- tex/context/base/type-pre.tex | 4 + tex/context/base/type-siz.tex | 4 + tex/context/base/type-spe.tex | 4 + tex/context/base/type-syn.tex | 14 ++ tex/context/base/type-xtx.tex | 4 + tex/context/interface/keys-cz.xml | 2 +- tex/context/interface/keys-de.xml | 2 +- tex/context/interface/keys-en.xml | 2 +- tex/context/interface/keys-it.xml | 2 +- tex/context/interface/keys-nl.xml | 2 +- tex/context/interface/keys-ro.xml | 2 +- tex/context/user/cont-sys.rme | 54 ++++-- 39 files changed, 707 insertions(+), 281 deletions(-) delete mode 100644 tex/context/base/font-vnr.tex create mode 100644 tex/context/base/type-def.tex create mode 100644 tex/context/base/type-msw.tex (limited to 'tex') diff --git a/tex/context/base/cont-cz.tex b/tex/context/base/cont-cz.tex index a8edbd5bd..b86b21e86 100644 --- a/tex/context/base/cont-cz.tex +++ b/tex/context/base/cont-cz.tex @@ -26,8 +26,10 @@ \installlanguage [\s!sk] [\c!state=\v!start] \installlanguage [\s!cz] [\c!state=\v!start] -\setupbodyfont [csr,ams,rm,12pt] +% \setupbodyfont [cmr,ams,rm,12pt] +% +% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt] -% \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,12pt] +\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt] \protect \errorstopmode \dump \endinput diff --git a/tex/context/base/cont-de.tex b/tex/context/base/cont-de.tex index 3e4d496b9..74326003a 100644 --- a/tex/context/base/cont-de.tex +++ b/tex/context/base/cont-de.tex @@ -31,8 +31,10 @@ \installlanguage [deo] [\c!state=\v!start] -\setupbodyfont [cmr,ams,rm,12pt] +% \setupbodyfont [cmr,ams,rm,12pt] +% +% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt] -% \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,12pt] +\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt] \protect \errorstopmode \dump \endinput diff --git a/tex/context/base/cont-en.tex b/tex/context/base/cont-en.tex index dee7dd340..f2a960091 100644 --- a/tex/context/base/cont-en.tex +++ b/tex/context/base/cont-en.tex @@ -29,8 +29,10 @@ \installlanguage [\s!it] [\c!state=\v!start] \installlanguage [\s!nl] [\c!state=\v!start] -\setupbodyfont [cmr,ams,rm,12pt] +% \setupbodyfont [cmr,ams,rm,12pt] +% +% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt] -% \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,12pt] +\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt] \protect \errorstopmode \dump \endinput diff --git a/tex/context/base/cont-it.tex b/tex/context/base/cont-it.tex index 293c5681a..8245ee5bf 100644 --- a/tex/context/base/cont-it.tex +++ b/tex/context/base/cont-it.tex @@ -27,10 +27,11 @@ \installlanguage [\s!fr] [\c!state=\v!start] \installlanguage [\s!es] [\c!state=\v!start] \installlanguage [\s!it] [\c!state=\v!start] -%installlanguage [\s!nl] [\c!state=\v!start] -\setupbodyfont [cmr,ams,rm,12pt] +% \setupbodyfont [cmr,ams,rm,12pt] +% +% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt] -% \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,12pt] +\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt] \protect \errorstopmode \dump \endinput diff --git a/tex/context/base/cont-nl.tex b/tex/context/base/cont-nl.tex index 8a38aae3f..02378a60c 100644 --- a/tex/context/base/cont-nl.tex +++ b/tex/context/base/cont-nl.tex @@ -29,8 +29,10 @@ \installlanguage [\s!nl] [\c!state=\v!start] \installlanguage [\s!it] [\c!state=\v!start] -\setupbodyfont [cmr,ams,rm,12pt] +% \setupbodyfont [cmr,ams,rm,12pt] +% +% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt] -% \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,12pt] +\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt] \protect \errorstopmode \dump \endinput diff --git a/tex/context/base/cont-ro.tex b/tex/context/base/cont-ro.tex index 19ced0734..ce718ab7b 100644 --- a/tex/context/base/cont-ro.tex +++ b/tex/context/base/cont-ro.tex @@ -25,8 +25,10 @@ \installlanguage [\s!de] [\c!state=\v!start] \installlanguage [\s!ro] [\c!state=\v!start] -\setupbodyfont [cmr,ams,rm,12pt] +% \setupbodyfont [cmr,ams,rm,12pt] +% +% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt] -% \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,12pt] +\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt] \protect \errorstopmode \dump \endinput diff --git a/tex/context/base/cont-sys.ori b/tex/context/base/cont-sys.ori index 7418f3ef1..33e0d01d5 100644 --- a/tex/context/base/cont-sys.ori +++ b/tex/context/base/cont-sys.ori @@ -13,6 +13,10 @@ \unprotect +% Speed up typescript loading, but at the cost of much memory: +% +% \preloadtypescripts + % Occasionally we will support both A4 and letter in % styles. If you want letter size paper to be the default, % uncomment: @@ -70,25 +74,37 @@ \resetmapfiles -\loadmapfile[original-base.map] -\loadmapfile[texnansi-base.map] -\loadmapfile[ec-base.map] -\loadmapfile[qx-base.map] -\loadmapfile[t5-base.map] -%loadmapfile[il2-base.map] -%loadmapfile[pl0-base.map] -\loadmapfile[8r-base.map] - -\loadmapfile[original-ams-base.map] -\loadmapfile[original-ams-euler.map] - -\loadmapfile[original-public-lm.map] -\loadmapfile[texnansi-public-lm.map] -\loadmapfile[ec-public-lm.map] -\loadmapfile[qx-public-lm.map] -\loadmapfile[t5-public-lm.map] -\loadmapfile[pl0-public-lm.map] -\loadmapfile[il2-public-lm.map] +\donefalse \ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion>119 + \donetrue +\fi \fi \ifdone + + \loadmapfile[original-base.map] + \loadmapfile[original-ams-base.map] + \loadmapfile[original-public-lm.map] + +\else + + \loadmapfile[original-base.map] + \loadmapfile[texnansi-base.map] + \loadmapfile[ec-base.map] + \loadmapfile[qx-base.map] + \loadmapfile[t5-base.map] + %loadmapfile[il2-base.map] + %loadmapfile[pl0-base.map] + \loadmapfile[8r-base.map] + + \loadmapfile[original-ams-base.map] + \loadmapfile[original-ams-euler.map] + + \loadmapfile[original-public-lm.map] + \loadmapfile[texnansi-public-lm.map] + \loadmapfile[ec-public-lm.map] + \loadmapfile[qx-public-lm.map] + \loadmapfile[t5-public-lm.map] + \loadmapfile[pl0-public-lm.map] + \loadmapfile[il2-public-lm.map] + +\fi % When you have your own fonts installed, you may want to predefine: % diff --git a/tex/context/base/cont-uk.tex b/tex/context/base/cont-uk.tex index f5d339119..d900217e1 100644 --- a/tex/context/base/cont-uk.tex +++ b/tex/context/base/cont-uk.tex @@ -29,8 +29,10 @@ \installlanguage [\s!nl] [\c!state=\v!start] \installlanguage [\s!it] [\c!state=\v!start] -\setupbodyfont [cmr,ams,rm,12pt] +% \setupbodyfont [cmr,ams,rm,12pt] +% +% \setupencoding[default=ec] \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,rm,12pt] -% \usetypescript[modern][\defaultencoding] \setupbodyfont[modern,12pt] +\setupencoding[default=ec] \usetypescript[fallback][\defaultencoding] \setupbodyfont[rm,12pt] \protect \errorstopmode \dump \endinput diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index c98778fb8..415dd602d 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -31,7 +31,7 @@ %D 2004.8.30 the low level interface is english. Watch out and adapt %D your styles an modules. -\def\contextversion{2005.01.31} +\def\contextversion{2005.02.07} %D Welcome to the main module. When this module is ran through %D \type{initex} or \type {tex -i} or \type {whatevertex} using @@ -312,6 +312,7 @@ \input font-bfm.tex % english \input type-ini.tex % english +\input type-def.tex % english \input prop-ini.tex % english \input prop-lay.tex % english / needs core-ref.tex diff --git a/tex/context/base/core-ntb.tex b/tex/context/base/core-ntb.tex index b95b59edc..5015867d7 100644 --- a/tex/context/base/core-ntb.tex +++ b/tex/context/base/core-ntb.tex @@ -966,8 +966,10 @@ {\ifdim\pagegoal<\maxdimen \scratchdimen\pagegoal \advance\scratchdimen-\pagetotal + \!!donecfalse \else \scratchdimen\textheight + \!!donectrue \fi \advance\scratchdimen-\dimen8 \advance\scratchdimen-\extratblsplitheight @@ -984,6 +986,7 @@ \!!doneatrue % alternatively we could use a kind of balancing like splitter % first to scratchdimen and then smaller etc; more code and copy -) + \!!counta\zerocount \doloop {\setbox\scratchbox\vsplit\TABLEsplitbox to \onepoint \setbox\scratchbox\vbox{\unvbox\scratchbox}% @@ -998,13 +1001,21 @@ {\unvbox\finaltblbox \unvbox\scratchbox}% \ifvoid\TABLEsplitbox \exitloop \fi + \else\if!!donec + % we have text height available, but the (one) cell is too + % large to fit, so, in order to avoid loops/deadcycles we do: + \egroup + \setbox\finaltblbox\vbox + {\unvbox\finaltblbox + \unvbox\scratchbox}% + \exitloop \else \egroup \setbox\TABLEsplitbox\vbox {\unvbox\scratchbox \ifvoid\TABLEsplitbox\else\unvbox\TABLEsplitbox\allowbreak\fi}% \exitloop - \fi}% + \fi\fi}% % \postprocessTABLEsplitbox\finaltblbox \ifvoid\TABLEsplitbox diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex index 7fa2610eb..12797b2c3 100644 --- a/tex/context/base/font-ini.tex +++ b/tex/context/base/font-ini.tex @@ -1362,6 +1362,8 @@ % \expandafter\font\csname#1\endcsname\lastfontname\relax % \relax} +\let\fontfile\s!unknown + \def\donoparsefontspec % #1 == \cs {\edef\fontfile{\truefontname\somefontname}% \ifx\fontfile\s!unknown \let\fontfile\defaultfontfile \fi @@ -1477,22 +1479,39 @@ %D data: \type {\truefontdata{\truefontname{Lucida-Bright}}} %D \stoplines -\def\definefontsynonym - {\dotripleempty\dodefinefontsynonym} - -\def\dodefinefontsynonym[#1][#2][#3]% - {\@EA\edef\csname\??ff\fontclass#1\endcsname{#2}% - \ifthirdargument - \edef\@@fontdata{#3}% - \ifx\@@fontdata\empty \else - \edef\@@fontfile{#2}% - \ifx\fontclass\empty - \getfontparameters - \else - \getglobalfontparameters - \fi - \fi - \fi} +% \def\definefontsynonym +% {\dotripleempty\dodefinefontsynonym} +% +% \def\dodefinefontsynonym[#1][#2][#3]% +% {\@EA\edef\csname\??ff\fontclass#1\endcsname{#2}% +% \ifthirdargument +% \edef\@@fontdata{#3}% +% \ifx\@@fontdata\empty \else +% \edef\@@fontfile{#2}% +% \ifx\fontclass\empty +% \getfontparameters +% \else +% \getglobalfontparameters +% \fi +% \fi +% \fi} +% +% slightly faster, noticable when loading many typefaces, +% +% \testfeatureonce{5000}{\definefontsynonym[somefont][somename]} \end + +\def\definefontsynonym[#1]#2[#3]% + {\edef\@@fontfile{#3}% + \@EA\let\csname\??ff\fontclass#1\endcsname\@@fontfile + \doifnextcharelse[\dodefinefontsynonym\donothing} + +\def\dodefinefontsynonym[#1]% + {\edef\@@fontdata{#1}% + \ifx\@@fontdata\empty \else \ifx\fontclass\empty + \getfontparameters + \else + \getglobalfontparameters + \fi \fi} \let\definefontfile\definefontsynonym % dedicated to Taco Hoekwater @@ -1598,7 +1617,6 @@ \fi} \endETEX - %D \macros %D {tracedfontname} @@ -1881,7 +1899,8 @@ \def\docommando##1% {\def\dodocommando####1% {\def\dododocommando########1% - {\checkbodyfont{}{########1}{####1}{##1}}% + %{\checkbodyfont{}{########1}{####1}{##1}}% + {\checkbodyfont{########1}{####1}{##1}}% \processcommacommand[\stylelist]\dododocommando}% \processcommacommand[\alternativelist]\dodocommando}% \processcommacommand[\sizelist]\docommando} @@ -2301,7 +2320,8 @@ \def\dododododefinebodyfont#1#2[#3#4#5=#6]% style body def {\ifundefined{#1#3#4#5}% - \checkbodyfont{#2}{#1}{#3#4}{#5}% not \definefontsize[#5] + %\checkbodyfont{#2}{#1}{#3#4}{#5}% not \definefontsize[#5] + \checkbodyfont{#1}{#3#4}{#5}% not \definefontsize[#5] \fi \iflocalclassfonts \letbeundefined{*\fontclass#2#1#3#4#5*}% @@ -2324,23 +2344,53 @@ \fi \fi} -\def\checkbodyfont#1#2#3#4% body style alt size / gdef % #4 can be empty - {\def\c!!mm{#2}% +% \def\checkbodyfont#1#2#3#4% body style alt size / gdef % #4 can be empty +% {\def\c!!mm{#2}% +% \ifx\c!!mm\c!mm % prevents \max and alike (re)defs +% \unexpanded\setgvalue {#2}{\setcurrentfontstyle {#2}}% \rm +% \unexpanded\setgvalue {#3}{\setcurrentfontalternative {#3}}% \sl +% \else +% \unexpanded\setgvalue {#2#4}{\setcurrentfontstylesize {#2}{#4}}% \rma +% \unexpanded\setgvalue {#3#4}{\setcurrentfontalternativesize {#3}{#4}}% \sla +% \unexpanded\setgvalue {#2#3#4}{\setcurrentfontstylealternativesize{#2}{#3}{#4}}% \rmsla +% \unexpanded\setgvalue {#2}{\setcurrentfontstyle {#2}}% \rm +% \unexpanded\setgvalue {#3}{\setcurrentfontalternative {#3}}% \sl +% \unexpanded\setgvalue {#2\c!x}{\setcurrentfontxstylealternative {#2}}% \rmx +% \unexpanded\setgvalue{#2\c!xx}{\setcurrentfontxxstylealternative {#2}}% \rmxx +% \unexpanded\setgvalue {#3\c!x}{\setcurrentfontxalternative {#3}}% \slx +% \unexpanded\setgvalue{#3\c!xx}{\setcurrentfontxxalternative {#3}}% \slxx +% \unexpanded\setgvalue {#2#3}{\setcurrentfontstylealternative {#2}{#3}}% \rmsl +% \fi} +% +% leaner + +\def\checkbodyfont#1% tests for ttsl mmbf + {\def\c!!mm{#1}% \ifx\c!!mm\c!mm % prevents \max and alike (re)defs - \unexpanded\setgvalue {#2}{\setcurrentfontstyle {#2}}% \rm - \unexpanded\setgvalue {#3}{\setcurrentfontalternative {#3}}% \sl + \expandafter\checkmathbodyfont \else - \unexpanded\setgvalue {#2#4}{\setcurrentfontstylesize {#2}{#4}}% \rma - \unexpanded\setgvalue {#3#4}{\setcurrentfontalternativesize {#3}{#4}}% \sla - \unexpanded\setgvalue {#2#3#4}{\setcurrentfontstylealternativesize{#2}{#3}{#4}}% \rmsla - \unexpanded\setgvalue {#2}{\setcurrentfontstyle {#2}}% \rm - \unexpanded\setgvalue {#3}{\setcurrentfontalternative {#3}}% \sl - \unexpanded\setgvalue {#2\c!x}{\setcurrentfontxstylealternative {#2}}% \rmx - \unexpanded\setgvalue{#2\c!xx}{\setcurrentfontxxstylealternative {#2}}% \rmxx - \unexpanded\setgvalue {#3\c!x}{\setcurrentfontxalternative {#3}}% \slx - \unexpanded\setgvalue{#3\c!xx}{\setcurrentfontxxalternative {#3}}% \slxx - \unexpanded\setgvalue {#2#3}{\setcurrentfontstylealternative {#2}{#3}}% \rmsl - \fi} + \expandafter\checktextbodyfont + \fi{#1}} % no \c!!mm, not expanded later on + +\def\checkmathbodyfont#1#2#3% style alt size / gdef % #3 can be empty + {%\message{!m #1 #2 #3!}% + % #1 #2 #3 = signal + \unexpanded\setgvalue {#1#2#3}{\setcurrentfontstylealternativesize{#1}{#2}{#3}}% \mmsla + \unexpanded\setgvalue {#1}{\setcurrentfontstyle {#1}}% \mm + \unexpanded\setgvalue {#2}{\setcurrentfontalternative {#2}}}% \sl + +\def\checktextbodyfont#1#2#3% style alt size / gdef % #3 can be empty + {%\message{!t #1 #2 #3!}% + \unexpanded\setgvalue {#1#3}{\setcurrentfontstylesize {#1}{#3}}% \rma + \unexpanded\setgvalue {#2#3}{\setcurrentfontalternativesize {#2}{#3}}% \sla + \unexpanded\setgvalue {#1#2#3}{\setcurrentfontstylealternativesize{#1}{#2}{#3}}% \rmsla + \unexpanded\setgvalue {#1}{\setcurrentfontstyle {#1}}% \rm + \unexpanded\setgvalue {#2}{\setcurrentfontalternative {#2}}% \sl + \unexpanded\setgvalue {#1\c!x}{\setcurrentfontxstylealternative {#1}}% \rmx + \unexpanded\setgvalue{#1\c!xx}{\setcurrentfontxxstylealternative {#1}}% \rmxx + \unexpanded\setgvalue {#2\c!x}{\setcurrentfontxalternative {#2}}% \slx + \unexpanded\setgvalue{#2\c!xx}{\setcurrentfontxxalternative {#2}}% \slxx + \unexpanded\setgvalue {#1#2}{\setcurrentfontstylealternative {#1}{#2}}}% \rmsl \def\dodefinedefaultbodyfont[#1][#2][#3]% sizes styles identifier {\def\dododefinedefaultbodyfont##1% diff --git a/tex/context/base/font-vnr.tex b/tex/context/base/font-vnr.tex deleted file mode 100644 index c3d7f190b..000000000 --- a/tex/context/base/font-vnr.tex +++ /dev/null @@ -1,54 +0,0 @@ -%D \module -%D [ file=font-vnr, -%D version=1999.12.12, -%D title=\CONTEXT\ Font Macros, -%D subtitle=Computer Modern Vietnamese, -%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. See mreadme.pdf for -%C details. - -% NOT YET ADAPTED TO THE NEW FONT MACROS - -% to do - -\definefontsynonym [Serif] [vnb10] [encoding=x5] -\definefontsynonym [SerifBold] [vnb10] [encoding=x5] -\definefontsynonym [SerifItalic] [vnb10] [encoding=x5] -\definefontsynonym [SerifSlanted] [vnb10] [encoding=x5] -\definefontsynonym [SerifBoldItalic] [vnb10] [encoding=x5] -\definefontsynonym [SerifBoldSlanted] [vnb10] [encoding=x5] -\definefontsynonym [SerifCaps] [vnb10] [encoding=x5] - -\definefontsynonym [Sans] [vnb10] [encoding=x5] -\definefontsynonym [SansBold] [vnb10] [encoding=x5] -\definefontsynonym [SansItalic] [vnb10] [encoding=x5] -\definefontsynonym [SansSlanted] [vnb10] [encoding=x5] -\definefontsynonym [SansBoldItalic] [vnb10] [encoding=x5] -\definefontsynonym [SansBoldSlanted] [vnb10] [encoding=x5] -\definefontsynonym [SansCaps] [vnb10] [encoding=x5] - -\definefontsynonym [Mono] [vnb10] [encoding=x5] -\definefontsynonym [MonoBold] [vnb10] [encoding=x5] -\definefontsynonym [MonoItalic] [vnb10] [encoding=x5] -\definefontsynonym [MonoSlanted] [vnb10] [encoding=x5] -\definefontsynonym [MonoBoldItalic] [vnb10] [encoding=x5] -\definefontsynonym [MonoBoldSlanted] [vnb10] [encoding=x5] -\definefontsynonym [MonoCaps] [vnb10] [encoding=x5] - -\definefontsynonym [MathRoman] [vnb10] [encoding=x5] -\definefontsynonym [MathExtension] [cmex10] -\definefontsynonym [MathItalic] [cmmi10] -\definefontsynonym [MathSymbol] [cmsy10] - -\definefontsynonym [OldStyle] [MathItalic] - -\definebodyfont - [14.4pt,12pt,11pt,10pt,9pt,8pt,7pt,6pt,5pt] - [rm,ss,tt,mm] - [default] - -\endinput diff --git a/tex/context/base/supp-fil.tex b/tex/context/base/supp-fil.tex index fb7325003..87ff1e9b5 100644 --- a/tex/context/base/supp-fil.tex +++ b/tex/context/base/supp-fil.tex @@ -64,14 +64,29 @@ %D Just to be sure, we save the current meaning of \type{^^M} %D in \type{\poppedendofline}. -\chardef\poppedendofline\catcode`\^^M +% \chardef\poppedendofline\catcode`\^^M +% +% \def\pushendofline +% {\chardef\poppedendofline\catcode`\^^M\relax +% \catcode`\^^M\@@comment\relax} +% +% \def\popendofline +% {\catcode`\^^M\poppedendofline} +% +% support for nested usage: + +\newcounter \endoflinelevel + +\ifx\newlinecode\undefined \chardef\newlinecode=`\^^M \fi \def\pushendofline - {\chardef\poppedendofline\catcode`\^^M\relax - \catcode`\^^M\@@comment\relax} + {\fastincrement\endoflinelevel + \expandafter\chardef\csname :eol:\endoflinelevel\endcsname\catcode\newlinecode + \catcode\newlinecode\@@comment\relax} \def\popendofline - {\catcode`\^^M\poppedendofline} + {\catcode\newlinecode\csname :eol:\endoflinelevel\endcsname + \fastdecrement\endoflinelevel} %D \macros %D {scratchread, scratchwrite} @@ -644,6 +659,11 @@ \greedysplitstring\splitoffbase\at.\to\splitoffname\and\splitofftype \ifx\splitoffpath\empty\def\splitoffpath{.}\fi \ifx\splitoffname\empty\let\splitoffname\splitoffbase\fi} + +\def\splitfiletype#1% + {\edef\splitofffull{#1}% normally outside this call: \sanitizefilename#1\to\sanitizedfilename + \let\splitoffpath\empty + \greedysplitstring\splitofffull\at.\to\splitoffname\and\splitofftype} %% % gebruikt voor normale (!) files, will change to proper %% % installer maybe combined with verb module push/popper diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex index 98573b7eb..3db34c77e 100644 --- a/tex/context/base/syst-ext.tex +++ b/tex/context/base/syst-ext.tex @@ -4509,6 +4509,8 @@ \expandafter\!!stringb \fi} +% better: push/pop + \def\startstrictinspectnextcharacter {\let\inspectnextcharacter\strictinspectnextcharacter} diff --git a/tex/context/base/type-akb.tex b/tex/context/base/type-akb.tex index dd02c157b..03829f0fd 100644 --- a/tex/context/base/type-akb.tex +++ b/tex/context/base/type-akb.tex @@ -18,7 +18,7 @@ %D psnfss system as used by \LaTeX. %D %D \starttyping -%D \setupencoding[defaultdefault=texnansi] +%D \setupencoding[default=texnansi] %D \usetypescript[adobekb][\defaultencoding] %D \stoptyping %D @@ -29,6 +29,8 @@ %D \usetypescriptfile[akb] %D \stoptyping +\starttypescriptcollection[adobe kb mappings] + \starttypescript [adobekb] [8r] \definefontsynonym [8r-utmr8a] [ptmr8r] [encoding=8r] @@ -199,4 +201,6 @@ \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-buy.tex b/tex/context/base/type-buy.tex index 2c4c3fc1e..0ac312ca3 100644 --- a/tex/context/base/type-buy.tex +++ b/tex/context/base/type-buy.tex @@ -15,6 +15,8 @@ % todo \typescriptthree +\starttypescriptcollection[commercial fonts] + \starttypescript [serif] [fallback] \definefontsynonym [SerifBold] [Serif] @@ -722,4 +724,6 @@ \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-cbg.tex b/tex/context/base/type-cbg.tex index a3de66d1c..c3b8fd586 100644 --- a/tex/context/base/type-cbg.tex +++ b/tex/context/base/type-cbg.tex @@ -30,6 +30,8 @@ % File.delete(zipfile) if FileTest.file?(zipfile) % system("zip -r -9 cbsmall #{fontfiles.join(' ')}") +\starttypescriptcollection[cbgreek] + \starttypescript [serif] [cbgreek] [name] \definefontsynonym [CBGreek-Regular-Medium-Normal] [grmn1000] @@ -346,4 +348,6 @@ \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-def.tex b/tex/context/base/type-def.tex new file mode 100644 index 000000000..0443ec99c --- /dev/null +++ b/tex/context/base/type-def.tex @@ -0,0 +1,46 @@ +%D \module +%D [ file=type-def, +%D version=2005.02.04, +%D title=\CONTEXT\ Typescript Macros, +%D subtitle=Default Definitions, +%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. See mreadme.pdf for +%C details. + +\definefontsynonym [DefaultFont] [cmvtt10] + +\startsetups [font:fallback:serif] + \definefontsynonym [Serif] [DefaultFont] + \definefontsynonym [SerifBold] [Serif] + \definefontsynonym [SerifItalic] [Serif] + \definefontsynonym [SerifSlanted] [SerifItalic] + \definefontsynonym [SerifBoldItalic] [Serif] + \definefontsynonym [SerifBoldSlanted] [SerifBoldItalic] + \definefontsynonym [SerifCaps] [Serif] +\stopsetups + +\startsetups [font:fallback:sans] + \definefontsynonym [Sans] [DefaultFont] + \definefontsynonym [SansBold] [Sans] + \definefontsynonym [SansItalic] [Sans] + \definefontsynonym [SansSlanted] [SansItalic] + \definefontsynonym [SansBoldItalic] [Sans] + \definefontsynonym [SansBoldSlanted] [SansBoldItalic] + \definefontsynonym [SansCaps] [Sans] +\stopsetups + +\startsetups [font:fallback:mono] + \definefontsynonym [Mono] [DefaultFont] + \definefontsynonym [MonoBold] [Mono] + \definefontsynonym [MonoItalic] [Mono] + \definefontsynonym [MonoSlanted] [Mono] + \definefontsynonym [MonoBoldItalic] [Mono] + \definefontsynonym [MonoBoldSlanted] [MonoBoldItalic] + \definefontsynonym [MonoCaps] [Mono] +\stopsetups + +\endinput diff --git a/tex/context/base/type-dis.tex b/tex/context/base/type-dis.tex index 8f44bc31a..e086a7595 100644 --- a/tex/context/base/type-dis.tex +++ b/tex/context/base/type-dis.tex @@ -15,6 +15,8 @@ %D %D Some day I will replace cmr10 etc by their full names. +\starttypescriptcollection[distributed fonts] + \starttypescript[all][latin-modern,computer-modern][ec] \definefontsynonym[ec-lmb10] [cork-lmb10] [encoding=ec] @@ -526,3 +528,5 @@ \definefontsynonym [t5-ubkl8a-capitalized-800] [ubkl8v] [encoding=t5] \stoptypescript + +\stoptypescriptcollection \endinput diff --git a/tex/context/base/type-enc.tex b/tex/context/base/type-enc.tex index e21810ba1..217e0e074 100644 --- a/tex/context/base/type-enc.tex +++ b/tex/context/base/type-enc.tex @@ -24,6 +24,8 @@ % todo: we should consider handling qx in the same maner, remap qx-* in type-dis.tex % todo: cyr fonts should be handled in the same way: t2b-lmr10 -> lbrm1000 +\starttypescriptcollection[encodings] + \starttypescript [all] [latin-modern,computer-modern] [texnansi,ec,qx,pl0,il2,t5] % Regular @@ -786,7 +788,7 @@ \definefontsynonym [cmvtt10] [lhvtt10] [encoding=lcy] \stoptypescript -\starttypescript [serif] [computer-modern] [default] +\starttypescript [serif] [computer-modern,latin-modern] [default] \definefontsynonym [ComputerModern] [cmr10] \definefontsynonym [ComputerModern-Italic] [cmti10] \definefontsynonym [ComputerModern-Slanted] [cmsl10] @@ -796,7 +798,7 @@ \definefontsynonym [ComputerModern-Caps] [cmcsc10] \stoptypescript -\starttypescript [sans] [computer-modern] [default] +\starttypescript [sans] [computer-modern,latin-modern] [default] \definefontsynonym [ComputerModernSans] [cmss10] \definefontsynonym [ComputerModernSans-Italic] [cmssi10] \definefontsynonym [ComputerModernSans-Slanted] [cmssi10] @@ -806,7 +808,7 @@ \definefontsynonym [ComputerModernSans-Caps] [cmss10] \stoptypescript -\starttypescript [mono] [computer-modern] [default] +\starttypescript [mono] [computer-modern,latin-modern] [default] \definefontsynonym [ComputerModernMono] [cmtt10] \definefontsynonym [ComputerModernMono-Italic] [cmitt10] \definefontsynonym [ComputerModernMono-Slanted] [cmsltt10] @@ -1270,4 +1272,4 @@ \definefontsynonym [MartinVogel] [fmvr8x] \stoptypescript -\endinput +\stoptypescriptcollection \endinput diff --git a/tex/context/base/type-exa.tex b/tex/context/base/type-exa.tex index 1ae0a3cb7..65c6749b8 100644 --- a/tex/context/base/type-exa.tex +++ b/tex/context/base/type-exa.tex @@ -13,6 +13,21 @@ %D A couple of goodies: +\starttypescriptcollection[examples] + +\starttypescript [fallback] [texnansi,ec,qx,il2,pl0,t5,default] + + % no fontclass, so this is the fall back + + \definetypeface [] [rm] [serif] [latin-modern] [computer-modern] [encoding=\typescripttwo] + \definetypeface [] [ss] [sans] [latin-modern] [computer-modern] [encoding=\typescripttwo] + \definetypeface [] [tt] [mono] [latin-modern] [computer-modern] [encoding=\typescripttwo] + \definetypeface [] [mm] [math] [latin-modern] [computer-modern] [encoding=\typescripttwo] + + \quittypescriptscanning + +\stoptypescript + \starttypescript [modern] [texnansi,ec,qx,il2,pl0,t5,default] \definetypeface [modern] [rm] [serif] [latin-modern] [computer-modern] [encoding=\typescripttwo] @@ -20,6 +35,8 @@ \definetypeface [modern] [tt] [mono] [latin-modern] [computer-modern] [encoding=\typescripttwo] \definetypeface [modern] [mm] [math] [latin-modern] [computer-modern] [encoding=\typescripttwo] + \quittypescriptscanning + \stoptypescript \starttypescript [modern-base] [texnansi,ec,qx,pl0,il2,t5,default] @@ -29,15 +46,19 @@ \definetypeface [modern] [tt] [mono] [latin-modern] [default] [encoding=\typescripttwo] \definetypeface [modern] [mm] [math] [latin-modern] [default] [encoding=\typescripttwo] + \quittypescriptscanning + \stoptypescript -\starttypescript [modern-base] [t2a,t2b,t2c] +\starttypescript [modern-base] [t2a,t2b,t2c,x2] \definetypeface [modern] [rm] [serif] [computer-modern] [default] [encoding=\typescripttwo] \definetypeface [modern] [ss] [sans] [computer-modern] [default] [encoding=\typescripttwo] \definetypeface [modern] [tt] [mono] [computer-modern] [default] [encoding=\typescripttwo] \definetypeface [modern] [mm] [math] [computer-modern] [default] [encoding=\typescripttwo] + \quittypescriptscanning + \stoptypescript \starttypescript [postscript] [texnansi,ec,qx,8r,t5,uc] @@ -47,6 +68,8 @@ \definetypeface [postscript] [tt] [mono] [courier] [default] [rscale=1.1,encoding=\typescripttwo] \definetypeface [postscript] [mm] [math] [times] [default] + \quittypescriptscanning + \stoptypescript \starttypescript [times] [texnansi,ec,qx,8r,t5,uc] @@ -58,6 +81,8 @@ % \usemathcollection[default] + \quittypescriptscanning + \stoptypescript \starttypescript [palatino] [texnansi,ec,qx,8r,t5,uc] @@ -68,6 +93,8 @@ % \usemathcollection[default] + \quittypescriptscanning + \stoptypescript \starttypescript [fourier] [ec] @@ -78,6 +105,8 @@ \usemathcollection[fou] + \quittypescriptscanning + \stoptypescript % \starttypescript [utopia] [ec] @@ -126,6 +155,8 @@ \usemathcollection[lbr] + \quittypescriptscanning % last in the row + \stoptypescript \starttypescript [serif] [hanging] [pure,normal] @@ -177,4 +208,6 @@ \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-fsf.tex b/tex/context/base/type-fsf.tex index 58c73dae4..835fb4153 100644 --- a/tex/context/base/type-fsf.tex +++ b/tex/context/base/type-fsf.tex @@ -3,6 +3,8 @@ % texfont --en=texnansi --ve=fontsite --co=opus type-fsf.dat % texfont --en=texnansi --ve=fontsite --co=typewriter type-fsf.dat +\starttypescriptcollection[font site 500] + \starttypescript [sans] [opus] [name] \definefontsynonym [Sans] [Opus] @@ -98,4 +100,6 @@ \loadmapfile[\typescriptthree-fontsite-garamond.map] \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-ghz.tex b/tex/context/base/type-ghz.tex index 44347bdba..49bd8ffd9 100644 --- a/tex/context/base/type-ghz.tex +++ b/tex/context/base/type-ghz.tex @@ -4,6 +4,8 @@ % texfont --en=texnansi --ve=linotype --co=optima-nova type-ghz.dat % texfont --en=texnansi --ve=linotype --co=palatino type-ghz.dat +\starttypescriptcollection[zapf collection] + % zapfino \starttypescript [serif,handwriting] [zapfino] [texnansi,ec,8r] % todo: handwriting @@ -133,4 +135,6 @@ \loadmapfile[\typescriptthree-linotype-palatino.map] \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-ini.tex b/tex/context/base/type-ini.tex index 8123b7005..a198a0522 100644 --- a/tex/context/base/type-ini.tex +++ b/tex/context/base/type-ini.tex @@ -13,6 +13,11 @@ \writestatus{loading}{Context Typescript Macros (ini)} +%D The default fontclass is empty. We could demand always using fontclasses, +%D and then make the calling macros simplier (always assume fontclass) but +%D apart from downward compatibility issues, it would make global, class +%D spanning definitions a pain. Some day we will introduce a default class. + % torture test : proper typefaces (and namespace) % % \starttext @@ -35,23 +40,51 @@ % {\setupbodyfont[reset] \setupbodyfont[aer] aer: \eacute \eogonek \zcaron \acircumflexgrave \endgraf} % \stoptext +% \usetypescript [modern] [texnansi] +% +% normal : 1450 ms +% exa quit : 1300 ms (150 ms) +% preload : 825 ms (635 ms) (40-50%) +% +% \usetypescript [modern] [texnansi] +% \usetypescript [palatino][texnansi] +% \usetypescript [times] [texnansi] +% +% normal : 3200 ms +% exa quit : 2700 ms ( 500 ms) +% preload : 1300 ms (1900 ms) (60-70%) + \unprotect +\def\starttypescriptcollection + {\dosingleempty\dostarttypescriptcollection} + +\def\dostarttypescriptcollection[#1]% + {} + +\def\stoptypescriptcollection + {} + \let\typescriptfiles\empty +% \unexpanded\def\usetypescriptfile[#1]% +% {\doifelse{#1}\v!reset +% {\let\typescriptfiles\empty} +% {\addtocommalist{#1}\typescriptfiles}} + \unexpanded\def\usetypescriptfile[#1]% {\doifelse{#1}\v!reset {\let\typescriptfiles\empty} - {\addtocommalist{#1}\typescriptfiles}} + {\splitfiletype{#1}% + \addtocommalist\splitoffname\typescriptfiles}} +\usetypescriptfile[\f!typeprefix exa] % some examples \usetypescriptfile[\f!typeprefix syn] % font file synonyms \usetypescriptfile[\f!typeprefix enc] % files and encodings \usetypescriptfile[\f!typeprefix dis] % funny name remappings \usetypescriptfile[\f!typeprefix siz] % specific font sizes \usetypescriptfile[\f!typeprefix map] % pdftex mapping \usetypescriptfile[\f!typeprefix spe] % special macros -\usetypescriptfile[\f!typeprefix exa] % some examples -\usetypescriptfile[\f!typeprefix loc] % local scripts \usetypescriptfile[\f!typeprefix akb] % adobe karl berry names \beginXETEX \font @@ -60,6 +93,8 @@ \endXETEX +\usetypescriptfile[\f!typeprefix loc] % local scripts + %usetypescriptfile[\f!typeprefix pre] % predefined scripts (compatible) %usetypescriptfile[typeface] % project scripts @@ -103,13 +138,61 @@ \popmacro\@@typescripttwo \popmacro\@@typescriptone} +% simple version: +% +% \def\dododousetypescript#1% +% {\startreadingfile +% \pushmacro\currenttypefile +% \def\currenttypefile{#1}% +% \readfile\currenttypefile\donothing\donothing +% \popmacro\currenttypefile +% \stopreadingfile} +% +% tricky version: + +\newconditional\preloadingtypescripts + +\def\preloadtypescripts{\ifproductionrun\settrue\preloadingtypescripts\fi} + \def\dododousetypescript#1% - {\startreadingfile + {\setfalse\quittingtypescript \pushmacro\currenttypefile \def\currenttypefile{#1}% - \readfile\currenttypefile\donothing\donothing + \ifconditional\preloadingtypescripts + % load files once, and use saved data + \def\loadedtypescripts{\csname\??ts:\c!file:#1\endcsname}% + \@EAEAEA\ifx\loadedtypescripts\relax + \@EAEAEA\newtoks\loadedtypescripts + \bgroup + \long\def\starttypescript##1\stoptypescript + {\global\loadedtypescripts\@EA{\the\loadedtypescripts + \starttypescript##1\stoptypescript}}% + \long\def\starttypescriptcollection##1\stoptypescriptcollection + {\global\loadedtypescripts\@EA{\the\loadedtypescripts + \starttypescriptcollection##1\stoptypescriptcollection}}% + \startreadingfile + \pushendofline + \readfile\currenttypefile\donothing\donothing + \popendofline + \stopreadingfile + \egroup + \fi + %\message{[\space\currenttypefile}% + \the\loadedtypescripts + %\message{\ifconditional\quittingtypescript quit\space\fi]}% + \else + % process files each time + \startreadingfile + \pushendofline + \readfile\currenttypefile\donothing\donothing + \popendofline + \stopreadingfile + \fi \popmacro\currenttypefile - \stopreadingfile} + \ifconditional\quittingtypescript + \quitcommalist + \setfalse\quittingtypescript + \fi} \def\usetypescriptonce {\dotripleempty\dousetypescriptonce} @@ -152,87 +235,171 @@ % script [serif] [computer-modern] [name] % script [serif] [computer-modern] [special] +% todo, make firsttypescriptpass conditional + \newif\iffirsttypescriptpass \firsttypescriptpasstrue \prependtoks\firsttypescriptpasstrue\to\everyjob \def\typescript@@all{all} -\def\dochecktypescript#1#2#3% script use value - {\donefalse - \def\@@typescriptcheck{#1}% - \ifx\@@typescriptcheck\empty - \ifcase\typescriptmethod\or\donetrue\else\donefalse\fi - \else\ifx#2\typescript@@all - \donetrue - \else\ifx\@@typescriptcheck\typescript@@all - \donetrue -% \else\fullexpandtwoargsafter\doifcommonelse{#1}{#2}\donetrue\donefalse\ifdone % == - \else\expanded{\doifcommonelse{#1}{#2}}\donetrue\donefalse\ifdone - \let#3\commalistelement - \fi\fi\fi\fi} - -\def\starttypescript - {\dotripleempty\dostarttypescript} - \newif\iftracetypescripts -\long\def\dostarttypescript[#1][#2][#3]% #4\stoptypescript - {\iftracetypescripts\writestatus\m!fonts{enter [#1] [#2] [#3]}\fi% - \iffirstargument - \iftracetypescripts\writestatus\m!fonts{check [\@@typescriptone] [\@@typescripttwo] [\@@typescriptthree]}\fi - \let\typescriptone \@@typescriptone - \let\typescripttwo \@@typescripttwo - \let\typescriptthree\@@typescriptthree - \dochecktypescript{#1}\@@typescriptone\typescriptone - \ifdone - \dochecktypescript{#2}\@@typescripttwo\typescripttwo - \ifdone - \dochecktypescript{#3}\@@typescriptthree\typescriptthree - \ifdone - \typescriptfoundtrue - \let\next\dostarttypescriptA - \else - \let\next\dostarttypescriptC - \fi - \else - \let\next\dostarttypescriptC - \fi - \else - \let\next\dostarttypescriptC - \fi - \iftracetypescripts - \writestatus\m!fonts{\ifdone match\else pass\fi ed}% - \fi - \else\iffirsttypescriptpass - \iftracetypescripts\writestatus\m!fonts{honored}\fi - \let\next\dostarttypescriptB +% \def\starttypescript +% {\dotripleempty\dostarttypescript} +% +% \long\def\dostarttypescript[#1][#2][#3]% #4\stoptypescript +% {\iftracetypescripts\writestatus\m!fonts{enter [#1] [#2] [#3]}\fi% +% \iffirstargument +% \iftracetypescripts\writestatus\m!fonts{check [\@@typescriptone] [\@@typescripttwo] [\@@typescriptthree]}\fi +% \let\typescriptone \@@typescriptone +% \let\typescripttwo \@@typescripttwo +% \let\typescriptthree\@@typescriptthree +% \dochecktypescript{#1}\@@typescriptone\typescriptone +% \ifdone +% \dochecktypescript{#2}\@@typescripttwo\typescripttwo +% \ifdone +% \dochecktypescript{#3}\@@typescriptthree\typescriptthree +% \ifdone +% \typescriptfoundtrue +% \let\next\dostarttypescriptA +% \else +% \let\next\dostarttypescriptC +% \fi +% \else +% \let\next\dostarttypescriptC +% \fi +% \else +% \let\next\dostarttypescriptC +% \fi +% \iftracetypescripts +% \writestatus\m!fonts{\ifdone match\else pass\fi ed}% +% \fi +% \else\iffirsttypescriptpass +% \iftracetypescripts\writestatus\m!fonts{honored}\fi +% \let\next\dostarttypescriptB +% \else +% % skip this since it may do unwanted resets, like +% % setting symbolic font names to unknown, especially +% % in run time user type scripts +% \iftracetypescripts\writestatus\m!fonts{ignored}\fi +% \let\next\dostarttypescriptC +% \fi\fi +% \next} +% +% \def\dochecktypescript#1#2#3% script use value +% {\donefalse +% \def\@@typescriptcheck{#1}% +% \ifx\@@typescriptcheck\empty % no longer needed / met +% \ifcase\typescriptmethod\or\donetrue\else\donefalse\fi +% \else\ifx#2\typescript@@all +% \donetrue +% \else\ifx\@@typescriptcheck\typescript@@all +% \donetrue +% \else\expanded{\doifcommonelse{\@@typescriptcheck}{#2}}\donetrue\donefalse\ifdone +% \let#3\commalistelement +% \fi\fi\fi\fi} +% +% \def\dostarttypescriptA +% {\pushmacro\fontclass} +% +% \def\dostarttypescriptB +% {\pushmacro\fontclass} +% +% \long\def\dostarttypescriptC#1\stoptypescript +% {} +% +% \def\stoptypescript +% {\popmacro\fontclass} +% +% not faster (and demands leading spaces at each line) +% +% \def\dostarttypescriptC +% {\bgroup \catcode32=\@@comment \let\stoptypescript\egroup} +% +% sligthly faster but less readable + +\def\starttypescript + {\let\typescriptone \@@typescriptone + \let\typescripttwo \@@typescripttwo + \let\typescriptthree\@@typescriptthree + \doifnextcharelse[\dostarttypescriptone\dostarttypescriptall} + +\long\def\dostarttypescriptall + {\iffirsttypescriptpass + \expandafter\doprocesstypescript \else % skip this since it may do unwanted resets, like % setting symbolic font names to unknown, especially % in run time user type scripts - \iftracetypescripts\writestatus\m!fonts{ignored}\fi - \let\next\dostarttypescriptC - \fi\fi - \next} + \expandafter\noprocesstypescript + \fi} -\def\dostarttypescriptA - {\pushmacro\fontclass} +\long\def\dostarttypescriptyes + {\ifdone + \typescriptfoundtrue + \expandafter\doprocesstypescript + \else + \expandafter\noprocesstypescript + \fi} -\def\dostarttypescriptB - {\pushmacro\fontclass} +\long\def\dostarttypescriptone + {\dochecktypescript\@@typescriptone\typescriptone\redostarttypescriptone} -\long\def\dostarttypescriptC#1\stoptypescript - {} +\long\def\dostarttypescripttwo + {\dochecktypescript\@@typescripttwo\typescripttwo\redostarttypescripttwo} -% not faster (and demands leading spaces at each line) -% -% \def\dostarttypescriptC -% {\bgroup \catcode32=\@@comment \let\stoptypescript\egroup} +\long\def\dostarttypescriptthree + {\dochecktypescript\@@typescriptthree\typescriptthree\redostarttypescriptthree} + +\long\def\redostarttypescriptone + {\doifnextcharelse[\dostarttypescripttwo\dostarttypescriptyes} + +\long\def\redostarttypescripttwo + {\doifnextcharelse[\dostarttypescriptthree\dostarttypescriptyes} + +\long\def\redostarttypescriptthree + {\dostarttypescriptyes} + +\def\doprocesstypescript + {\pushmacro\fontclass} \def\stoptypescript {\popmacro\fontclass} +\long\def\noprocesstypescript#1\stoptypescript + {} + +\def\dochecktypescript#1#2#3[#4]% script use value next + {\donefalse + \def\@@typescriptcheck{#4}% + \ifx\@@typescriptcheck\empty % no longer needed / met + \ifcase\typescriptmethod\or\donetrue\else\donefalse\fi + \else\ifx#1\typescript@@all + \donetrue + \else\ifx\@@typescriptcheck\typescript@@all + \donetrue + \else\expanded{\doifcommonelse{\@@typescriptcheck}{#1}}\donetrue\donefalse\ifdone + \let#2\commalistelement + \fi\fi\fi\fi + \ifdone + \expandafter#3% + \else + \expandafter\noprocesstypescript + \fi} + +%D Yet another speed up: when issued inside typescript, the call +%D +%D \starttyping +%D \quittypescriptscanning +%D \stoptyping +%D +%D quits further loading. For an example, see type-exa: + +\newconditional\quittingtypescript \setfalse\quittingtypescript + +\def\quittypescriptscanning{\settrue\quittingtypescript} + % status % % 1 loaded @@ -241,31 +408,11 @@ % flags ipv \c!state, more flag values -% \def\preloadmapfile[#1]% -% {\def\docommando##1% -% {\doifinstringelse{.}{##1} -% {\writestatus{pdftex}{compensate map file: ##1}% -% \setxvalue{##1 \c!state}{3}% -% \doglobal\removefromcommalist{##1}\allfontmapsfiles} -% {\expanded{\docommando{##1.\f!fontmapextension}}}}% -% \expanded{\processcommalist[#1]}\docommando} -% -% \def\loadmapfile[#1]% last add first -% {\def\docommando##1% -% {\doifinstringelse{.}{##1} -% {\doglobal\pretocommalist{##1}\allfontmapsfiles} -% {\expanded{\docommando{##1.\f!fontmapextension}}}}% -% \expanded{\processcommalist[#1]}\docommando -% \ifproductionrun \loadallfontmapfiles \fi} - -% this mechanism will be adapted to the new pdftex features - \def\dopreloadmapfile#1% - {\doifinstringelse{.}{#1} - {\writestatus\m!fonts{assuming map file: #1}% - \setxvalue{#1 \c!state}{3}% - \doglobal\removefromcommalist{#1}\allfontmapsfiles} - {\expanded{\dopreloadmapfile{#1.\f!fontmapextension}}}} + {\splitfiletype{#1}% + \writestatus\m!fonts{assuming map file: \splitoffname}% + \setxvalue{\splitoffname \c!state}{3}% + \doglobal\removefromcommalist\splitoffname\allfontmapsfiles} \def\preloadmapfile[#1]% {\expanded{\processcommalist[#1]}\dopreloadmapfile} @@ -280,39 +427,34 @@ \ifx\pdftexversion\undefined \def\loadthemapfile#1% - {\doifinstringelse{.}{#1} - {\doglobal\addtocommalist{#1}\allfontmapsfiles} - {\expanded{\loadthemapfile{#1.\f!fontmapextension}}}} + {\splitfiletype{#1}% + \doglobal\addtocommalist\splitoffname\allfontmapsfiles} -\else\ifnum\pdftexversion<200 +\else\ifnum\pdftexversion<120 % no overloading \def\loadthemapfile#1% - {\doifinstringelse{.}{#1} - {\doglobal\pretocommalist{#1}\allfontmapsfiles} - {\expanded{\loadthemapfile{#1.\f!fontmapextension}}}} + {\splitfiletype{#1}% + \doglobal\pretocommalist\splitoffname\allfontmapsfiles} \else \def\loadthemapfile#1% - {\doifinstringelse{.}{#1} - %{\doglobal\pretocommalist{#1}\allfontmapsfiles} - {\doglobal\addtocommalist{#1}\allfontmapsfiles} - {\expanded{\loadthemapfile{#1.\f!fontmapextension}}}} - + {\splitfiletype{#1}% + \doglobal\addtocommalist\splitoffname\allfontmapsfiles} \fi \fi \def\doloadfontmapfile#1% - {\ifundefined{#1 \c!state}% + {\ifundefined{#1\c!state}% \writestatus\m!fonts{using map file: #1}% - \doloadmapfile{=}{#1}% +/add =/replace -/remove - \setxvalue{#1 \c!state}{1}% + \doloadmapfile{=}{#1.\f!fontmapextension}% +/add =/replace -/remove + \setxvalue{#1\c!state}{1}% \fi} \def\doreportfontmapfile#1% - {\ifundefined{#1 \c!state}% + {\ifundefined{#1\c!state}% \writestatus\m!fonts{needs map file: #1}% - \setxvalue{#1 \c!state}{2}% + \setxvalue{#1\c!state}{2}% \fi} \def\loadallfontmapfiles @@ -409,7 +551,7 @@ \pushmacro\fontclass \let\relativefontsize\@@tsrscale \let\typefaceencoding\@@tsencoding - \setcurrentfontclass{#1} + \setcurrentfontclass{#1}% \saverelativefontsize{#2}{\relativefontsize}% fall back \iftracetypescripts\writestatus\m!fonts{[#1] [#2] [#3] [#4] / \typefaceencoding}\fi %\usetypescript[map][\typefaceencoding]% latest versions of pdftex can load after first page @@ -425,8 +567,9 @@ \fi\fi\fi} \def\dododefinetypeface[#1][#2]% saveguard against redefinition - {\doifundefined{\??tf#1\s!default}{\setgvalue{\??tf#1\s!default}{#2}}% - \doifundefined{#1}{\unexpanded\setgvalue{#1}{\switchtotypeface[#1][#2]}}} + {\doifsomething{#1} + {\doifundefined{\??tf#1\s!default}{\setgvalue{\??tf#1\s!default}{#2}}% + \doifundefined{#1}{\unexpanded\setgvalue{#1}{\switchtotypeface[#1][#2]}}}} \def\setuptypeface% [class] [settings] {\doquadrupleempty\doswitchtotypeface[\setupbodyfont][\fontclass]} diff --git a/tex/context/base/type-map.tex b/tex/context/base/type-map.tex index 5495d2a3d..7e12e4078 100644 --- a/tex/context/base/type-map.tex +++ b/tex/context/base/type-map.tex @@ -11,6 +11,8 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +\starttypescriptcollection[map files] + %D This one plays safe: \starttypescript [map] [base] [all] @@ -95,14 +97,20 @@ % cyrillic -\starttypescript [map] [computer-modern] [t2a,t2b,t2c] +\starttypescript [map] [computer-modern] [t2a,t2b,t2c,x2] + \loadmapfile[subset-cmsuper-\typescriptthree.map] \loadmapfile[cm-super-\typescriptthree.map] \stoptypescript % latin modern -\starttypescript [map] [latin-modern] [ec,texnansi,qx,t5,pl0,il2] +\starttypescript [map] [computer-modern,latin-modern] [ec,texnansi,qx,t5,pl0,il2] \loadmapfile[\typescriptthree-public-lm.map] +\stoptypescript + +% \usetypescript [map] [latin-modern-var] [\defaultencoding] + +\starttypescript [map] [latin-modern-var] [ec,texnansi,qx,t5,pl0,il2] \loadmapfile[\typescriptthree-var-exclusive-public-lm.map] \stoptypescript @@ -179,4 +187,6 @@ \loadmapfile[fourier-utopia-expert.map] \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-msw.tex b/tex/context/base/type-msw.tex new file mode 100644 index 000000000..7bb29d97c --- /dev/null +++ b/tex/context/base/type-msw.tex @@ -0,0 +1,59 @@ +%D \module +%D [ file=type-msw, +%D version=2005.02.04, +%D title=\CONTEXT\ Typescript Macros, +%D subtitle=Microsoft Windows Fonts, +%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. See mreadme.pdf for +%C details. + +% \usetypescriptfile[type-msw] +% +% \definetypeface[verdana][ss][sans] [verdana] [default][encoding=texnansi] +% \definetypeface[verdana][rm][serif][palatino][default][encoding=texnansi,rscale=1.1] +% \definetypeface[verdana][mm][math] [palatino][default][encoding=texnansi,rscale=1.1] +% \definetypeface[verdana][tt][mono] [modern] [default][encoding=texnansi,rscale=1.25] +% +% \setupbodyfont[verdana] \showfontstrip +% +% \startlines +% {\rm test {\sl test} {\it test} {\bf test} {\bs test} {\bi test}} +% {\ss test {\sl test} {\it test} {\bf test} {\bs test} {\bi test}} +% {\tt test {\sl test} {\it test} {\bf test} {\bs test} {\bi test}} +% \stoplines + +\starttypescriptcollection[microsoft windows] + +\starttypescript [sans] [verdana] [name] + + \setups[font:fallback:sans] + + \definefontsynonym [Sans] [Verdana] + \definefontsynonym [SansBold] [Verdana-Bold] + \definefontsynonym [SansItalic] [Verdana-Italic] + \definefontsynonym [SansBoldItalic] [Verdana-BoldItalic] + +\stoptypescript + +\starttypescript [sans] [verdana] [texnansi] + + \definefontsynonym [Verdana] [\typescriptthree-verdana] [encoding=\typescriptthree] + \definefontsynonym [Verdana-Bold] [\typescriptthree-verdanab] [encoding=\typescriptthree] + \definefontsynonym [Verdana-Italic] [\typescriptthree-verdanai] [encoding=\typescriptthree] + \definefontsynonym [Verdana-BoldItalic] [\typescriptthree-verdanaz] [encoding=\typescriptthree] + +\stoptypescript + +\starttypescript [map] [verdana] [texnansi] + + \loadmapfile[texnansi-microsoft-verdana.map] + +\stoptypescript + +\stoptypescriptcollection + +\endinput diff --git a/tex/context/base/type-omg.tex b/tex/context/base/type-omg.tex index c5be16903..606b8449b 100644 --- a/tex/context/base/type-omg.tex +++ b/tex/context/base/type-omg.tex @@ -2,7 +2,7 @@ %D [ file=type-omg, %D version=2002.05.15, %D title=\CONTEXT\ Typescript Macros, -%D subtitle=Basic \OMEGA\ Gamma Definitions, +%D subtitle=Basic \OMEGA\ Gamma Definitions, %D author={Idris Samawi Hamid, Hans Hagen}, %D date=\currentdate, %D copyright={PRAGMA-ADE, Idris Samawi Hamid}] @@ -13,11 +13,13 @@ %C details. %D I need to document this module a bit. See \type {m-gamma} -%D for more information. +%D for more information. \definestyle [normalvariant] [\nv] [] % so we can get ucvtt (Unicode Variable Typewriter) -%D omarab: +%D omarab: + +\starttypescriptcollection[omega] \starttypescript [naskh] [omega] [name] @@ -76,7 +78,7 @@ \definefontsynonym [SerifBoldItalic] [OmegaSerif-BoldItalic] \definefontsynonym [SerifBoldSlanted] [OmegaSerif-BoldSlanted] \definefontsynonym [SerifCaps] [OmegaSerif-Caps] - + \stoptypescript \starttypescript [mono] [omega] [name] @@ -118,8 +120,8 @@ \stoptypescript -%D In order to get default Unicode Variable Typewriter, -%D uncomment the first \type {\definebodyfont} and then +%D In order to get default Unicode Variable Typewriter, +%D uncomment the first \type {\definebodyfont} and then %D comment the rest of this typescript. \starttypescript [mono] [omega] [size] @@ -136,7 +138,7 @@ % sc=MonoCaps sa 1] \definebodyfont - [20.7pt,17.3pt,14.4pt,12pt,11pt] + [20.7pt,17.3pt,14.4pt,12pt,11pt] [tt] [tf=uctt12 sa 1, bf=uctt12 sa 1, @@ -148,7 +150,7 @@ nv=ucvtt10 sa 1] \definebodyfont - [10pt] + [10pt] [tt] [tf=uctt10 at 10pt, bf=uctt10 at 10pt, @@ -197,4 +199,6 @@ \stoptypescript -\endinput +\stoptypescriptcollection + +\endinput diff --git a/tex/context/base/type-pre.tex b/tex/context/base/type-pre.tex index eecda501e..bb5a55e0f 100644 --- a/tex/context/base/type-pre.tex +++ b/tex/context/base/type-pre.tex @@ -14,6 +14,8 @@ %D This file defines some typescripts that simulate the pre-typescript way %D of defining fonts. This file will not be extended. +\starttypescriptcollection[previous] + %D The Computer Modern Roman is derived from the Monotype~8a %D Times Roman. In this module, that is loaded by default, we %D define all relevant alternatives. @@ -212,4 +214,6 @@ \usetypescript [berry] [ec,t5] % could be [all] \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-siz.tex b/tex/context/base/type-siz.tex index 5349a13ce..37bb1f9c8 100644 --- a/tex/context/base/type-siz.tex +++ b/tex/context/base/type-siz.tex @@ -13,6 +13,8 @@ \unprotect +\starttypescriptcollection[size] + \starttypescript [serif] [default] [size] \definebodyfont [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt] @@ -845,4 +847,6 @@ \stoptypescript +\stoptypescriptcollection + \protect \endinput diff --git a/tex/context/base/type-spe.tex b/tex/context/base/type-spe.tex index 09c63834a..7ee8d8ab3 100644 --- a/tex/context/base/type-spe.tex +++ b/tex/context/base/type-spe.tex @@ -14,6 +14,8 @@ % \controlspace -> enco files % no special, always +\starttypescriptcollection[special features] + \starttypescript [mono] [courier,lucida] [special] \def\controlspace{\getglyph{ComputerModernMono}{\char32}} \stoptypescript @@ -42,4 +44,6 @@ \usemathcollection[eul] \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-syn.tex b/tex/context/base/type-syn.tex index 0f1c878c9..a28b9e129 100644 --- a/tex/context/base/type-syn.tex +++ b/tex/context/base/type-syn.tex @@ -11,6 +11,8 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +\starttypescriptcollection[synonyms] + % Simple Minded Fonts / to be redone so that it's not bound to modern \starttypescript [serif] [simple] [name] @@ -33,6 +35,16 @@ % \definefontsynonym [SansCaps] [Sans] % \stoptypescript +% \starttypescript [mono] [simple] [name] +% \definefontsynonym [Mono] [Simple] +% \definefontsynonym [MonoBold] [Mono] +% \definefontsynonym [MonoItalic] [Mono] +% \definefontsynonym [MonoSlanted] [Mono] +% \definefontsynonym [MonoBoldItalic] [Mono] +% \definefontsynonym [MonoBoldSlanted] [Mono] +% \definefontsynonym [MonoCaps] [Mono] +% \stoptypescript + % Computer Modern Roman : Donald Knuth \starttypescript [serif] [computer-modern,latin-modern] [name] @@ -606,4 +618,6 @@ \definefontsynonym [SerifCapsOsF] [TeXPalladioL-SC] \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/base/type-xtx.tex b/tex/context/base/type-xtx.tex index 65266fea1..c2c217515 100644 --- a/tex/context/base/type-xtx.tex +++ b/tex/context/base/type-xtx.tex @@ -46,6 +46,8 @@ %D \setupbodyfont[basic] %D \stoptyping +\starttypescriptcollection[xetex] + \starttypescript[Xserif][all][name] \definefontsynonym[Dummy] ['\typescripttwo:mapping=tex-text'] [encoding=uc] @@ -493,4 +495,6 @@ \stoptypescript +\stoptypescriptcollection + \endinput diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml index b102587c8..0bb3c085b 100644 --- a/tex/context/interface/keys-cz.xml +++ b/tex/context/interface/keys-cz.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml index 057b859f0..02e828433 100644 --- a/tex/context/interface/keys-de.xml +++ b/tex/context/interface/keys-de.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml index 8e82a9161..ef11fe4d4 100644 --- a/tex/context/interface/keys-en.xml +++ b/tex/context/interface/keys-en.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml index cd046cf89..9930d3f46 100644 --- a/tex/context/interface/keys-it.xml +++ b/tex/context/interface/keys-it.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml index 8d9373e96..6f9e85d66 100644 --- a/tex/context/interface/keys-nl.xml +++ b/tex/context/interface/keys-nl.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml index e78d95e91..41722d943 100644 --- a/tex/context/interface/keys-ro.xml +++ b/tex/context/interface/keys-ro.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/user/cont-sys.rme b/tex/context/user/cont-sys.rme index 7418f3ef1..33e0d01d5 100644 --- a/tex/context/user/cont-sys.rme +++ b/tex/context/user/cont-sys.rme @@ -13,6 +13,10 @@ \unprotect +% Speed up typescript loading, but at the cost of much memory: +% +% \preloadtypescripts + % Occasionally we will support both A4 and letter in % styles. If you want letter size paper to be the default, % uncomment: @@ -70,25 +74,37 @@ \resetmapfiles -\loadmapfile[original-base.map] -\loadmapfile[texnansi-base.map] -\loadmapfile[ec-base.map] -\loadmapfile[qx-base.map] -\loadmapfile[t5-base.map] -%loadmapfile[il2-base.map] -%loadmapfile[pl0-base.map] -\loadmapfile[8r-base.map] - -\loadmapfile[original-ams-base.map] -\loadmapfile[original-ams-euler.map] - -\loadmapfile[original-public-lm.map] -\loadmapfile[texnansi-public-lm.map] -\loadmapfile[ec-public-lm.map] -\loadmapfile[qx-public-lm.map] -\loadmapfile[t5-public-lm.map] -\loadmapfile[pl0-public-lm.map] -\loadmapfile[il2-public-lm.map] +\donefalse \ifx\pdftexversion\undefined \else \ifnum\number\pdftexversion>119 + \donetrue +\fi \fi \ifdone + + \loadmapfile[original-base.map] + \loadmapfile[original-ams-base.map] + \loadmapfile[original-public-lm.map] + +\else + + \loadmapfile[original-base.map] + \loadmapfile[texnansi-base.map] + \loadmapfile[ec-base.map] + \loadmapfile[qx-base.map] + \loadmapfile[t5-base.map] + %loadmapfile[il2-base.map] + %loadmapfile[pl0-base.map] + \loadmapfile[8r-base.map] + + \loadmapfile[original-ams-base.map] + \loadmapfile[original-ams-euler.map] + + \loadmapfile[original-public-lm.map] + \loadmapfile[texnansi-public-lm.map] + \loadmapfile[ec-public-lm.map] + \loadmapfile[qx-public-lm.map] + \loadmapfile[t5-public-lm.map] + \loadmapfile[pl0-public-lm.map] + \loadmapfile[il2-public-lm.map] + +\fi % When you have your own fonts installed, you may want to predefine: % -- cgit v1.2.3