summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fonts/map/pdftex/context/il2-base.map1
-rw-r--r--fonts/map/pdftex/context/il2-var-exclusive-public-lm.map1
-rw-r--r--fonts/map/pdftex/context/pl0-base.map1
-rw-r--r--fonts/map/pdftex/context/pl0-var-exclusive-public-lm.map1
-rw-r--r--fonts/map/pdftex/context/qx-var-exclusive-public-lm.map1
-rw-r--r--fonts/map/pdftex/context/t5-var-exclusive-public-lm.map1
-rw-r--r--scripts/context/perl/texexec.pl3
-rw-r--r--tex/context/base/cont-cz.tex6
-rw-r--r--tex/context/base/cont-de.tex6
-rw-r--r--tex/context/base/cont-en.tex6
-rw-r--r--tex/context/base/cont-it.tex7
-rw-r--r--tex/context/base/cont-nl.tex6
-rw-r--r--tex/context/base/cont-ro.tex6
-rw-r--r--tex/context/base/cont-sys.ori54
-rw-r--r--tex/context/base/cont-uk.tex6
-rw-r--r--tex/context/base/context.tex3
-rw-r--r--tex/context/base/core-ntb.tex13
-rw-r--r--tex/context/base/font-ini.tex118
-rw-r--r--tex/context/base/font-vnr.tex54
-rw-r--r--tex/context/base/supp-fil.tex28
-rw-r--r--tex/context/base/syst-ext.tex2
-rw-r--r--tex/context/base/type-akb.tex6
-rw-r--r--tex/context/base/type-buy.tex4
-rw-r--r--tex/context/base/type-cbg.tex4
-rw-r--r--tex/context/base/type-def.tex46
-rw-r--r--tex/context/base/type-dis.tex4
-rw-r--r--tex/context/base/type-enc.tex10
-rw-r--r--tex/context/base/type-exa.tex35
-rw-r--r--tex/context/base/type-fsf.tex4
-rw-r--r--tex/context/base/type-ghz.tex4
-rw-r--r--tex/context/base/type-ini.tex365
-rw-r--r--tex/context/base/type-map.tex14
-rw-r--r--tex/context/base/type-msw.tex59
-rw-r--r--tex/context/base/type-omg.tex22
-rw-r--r--tex/context/base/type-pre.tex4
-rw-r--r--tex/context/base/type-siz.tex4
-rw-r--r--tex/context/base/type-spe.tex4
-rw-r--r--tex/context/base/type-syn.tex14
-rw-r--r--tex/context/base/type-xtx.tex4
-rw-r--r--tex/context/interface/keys-cz.xml2
-rw-r--r--tex/context/interface/keys-de.xml2
-rw-r--r--tex/context/interface/keys-en.xml2
-rw-r--r--tex/context/interface/keys-it.xml2
-rw-r--r--tex/context/interface/keys-nl.xml2
-rw-r--r--tex/context/interface/keys-ro.xml2
-rw-r--r--tex/context/user/cont-sys.rme54
-rw-r--r--web2c/context.cnf185
47 files changed, 899 insertions, 283 deletions
diff --git a/fonts/map/pdftex/context/il2-base.map b/fonts/map/pdftex/context/il2-base.map
new file mode 100644
index 000000000..19756645c
--- /dev/null
+++ b/fonts/map/pdftex/context/il2-base.map
@@ -0,0 +1 @@
+# not yet defined
diff --git a/fonts/map/pdftex/context/il2-var-exclusive-public-lm.map b/fonts/map/pdftex/context/il2-var-exclusive-public-lm.map
new file mode 100644
index 000000000..19756645c
--- /dev/null
+++ b/fonts/map/pdftex/context/il2-var-exclusive-public-lm.map
@@ -0,0 +1 @@
+# not yet defined
diff --git a/fonts/map/pdftex/context/pl0-base.map b/fonts/map/pdftex/context/pl0-base.map
new file mode 100644
index 000000000..19756645c
--- /dev/null
+++ b/fonts/map/pdftex/context/pl0-base.map
@@ -0,0 +1 @@
+# not yet defined
diff --git a/fonts/map/pdftex/context/pl0-var-exclusive-public-lm.map b/fonts/map/pdftex/context/pl0-var-exclusive-public-lm.map
new file mode 100644
index 000000000..19756645c
--- /dev/null
+++ b/fonts/map/pdftex/context/pl0-var-exclusive-public-lm.map
@@ -0,0 +1 @@
+# not yet defined
diff --git a/fonts/map/pdftex/context/qx-var-exclusive-public-lm.map b/fonts/map/pdftex/context/qx-var-exclusive-public-lm.map
new file mode 100644
index 000000000..19756645c
--- /dev/null
+++ b/fonts/map/pdftex/context/qx-var-exclusive-public-lm.map
@@ -0,0 +1 @@
+# not yet defined
diff --git a/fonts/map/pdftex/context/t5-var-exclusive-public-lm.map b/fonts/map/pdftex/context/t5-var-exclusive-public-lm.map
new file mode 100644
index 000000000..19756645c
--- /dev/null
+++ b/fonts/map/pdftex/context/t5-var-exclusive-public-lm.map
@@ -0,0 +1 @@
+# not yet defined
diff --git a/scripts/context/perl/texexec.pl b/scripts/context/perl/texexec.pl
index 973e2daee..9a04e3660 100644
--- a/scripts/context/perl/texexec.pl
+++ b/scripts/context/perl/texexec.pl
@@ -870,7 +870,7 @@ $OutputFormats{dvipdfm} = "dvipdfm";
$OutputFormats{dvipdfmx} = "dvipdfmx";
$OutputFormats{xetex} = "xetex";
-my @ConTeXtFormats = ( "nl", "en", "de", "cz", "uk", "it", "ro", "xx" );
+my @ConTeXtFormats = ( "nl", "en", "de", "cz", "uk", "it", "ro");
sub SetInterfaces {
my ( $short, $long, $full ) = @_;
@@ -890,7 +890,6 @@ SetInterfaces( "uk", "brittish", "english" );
SetInterfaces( "it", "italian", "italian" );
SetInterfaces( "no", "norwegian", "norwegian" );
SetInterfaces( "ro", "romanian", "romanian" );
-SetInterfaces( "xx", "experimental", "english" );
# Sub-option
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 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2005.02.03">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2005.02.07">
<cd:variables>
<cd:variable name="one" value="jedna"/>
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 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2005.02.03">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2005.02.07">
<cd:variables>
<cd:variable name="one" value="eins"/>
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 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2005.02.03">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2005.02.07">
<cd:variables>
<cd:variable name="one" value="one"/>
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 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2005.02.03">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2005.02.07">
<cd:variables>
<cd:variable name="one" value="uno"/>
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 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2005.02.03">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2005.02.07">
<cd:variables>
<cd:variable name="one" value="een"/>
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 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2005.02.03">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2005.02.07">
<cd:variables>
<cd:variable name="one" value="unu"/>
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:
%
diff --git a/web2c/context.cnf b/web2c/context.cnf
new file mode 100644
index 000000000..3d9fcbfaa
--- /dev/null
+++ b/web2c/context.cnf
@@ -0,0 +1,185 @@
+% This file is mostly the same as the one that ships with
+% texlive, but adapted for multiple trees as well as
+% development in a non tds tree (i.e. hh's machine). This
+% file is meant for context users.
+%
+% This file loads before texmf/web2c/texmf.cnf; beware :
+% the selfish auto parent can get in the way especially when
+% the binaries are located elsewhere. In case of multiple
+% trees, one can best set the following ones manually.
+
+TEXMFMAIN = $SELFAUTOPARENT/texmf
+TEXMFLOCAL = $SELFAUTOPARENT/texmf-local
+TEXMFFONTS = $SELFAUTOPARENT/texmf-fonts
+TEXMFEXTRA = $SELFAUTOPARENT/texmf-extra
+TEXMFPROJECTS = $SELFAUTOPARENT/texmf-projects
+VARTEXMF = $SELFAUTOPARENT/texmf-var
+HOMETEXMF = /nonexist
+TEXMF = {!!$TEXMFPROJECT,!!$TEXMFFONTS,!!$TEXMFLOCAL,!!$TEXMFEXTRA,!!$TEXMFMAIN}
+SYSTEXMF = $TEXMF
+
+TEXMFCNF = .;$TEXMF/texmf{-local,}/web2c
+TEXMFDBS = $TEXMF;$VARTEXFONTS
+
+VARTEXFONTS = $TEMPFONTPATH/varfonts
+
+% In the case of an multi-os setup, this one can be set
+% by the environment.
+
+TEXFORMATS = .;$TEXMF/web2c
+MFBASES = .;$TEXFORMATS
+MPMEMS = .;$TEXFORMATS
+TEXPOOL = .;$TEXFORMATS
+MFPOOL = .;$TEXFORMATS
+MPPOOL = .;$TEXFORMATS
+
+WEB2C = $TEXMF/web2c
+
+% fonts, for the moment we also support the old enc/map locations
+
+OSFONTDIR =
+
+TEXPSHEADERS = .;$TEXMF/{fonts/{enc,map,type1,truetype},dvips,pdftex,tex}//;$TEXMF/{etex,tex,pdftex,dvips,fonts/type1}//
+TEXFONTMAPS = .;$TEXMF/{fonts/map//,fontname};$TEXMF/{pdftex,dvips}/config;$TEXMF/{pdftex,dvips}//
+
+VFFONTS = .;$TEXMF/fonts/vf//
+TFMFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/tfm//
+T1FONTS = .;$TEXMF/fonts/{type1,pfb}//;$TEXMF/fonts/misc/hbf//;$OSFONTDIR//
+AFMFONTS = .;$TEXMF/fonts/afm//;$OSFONTDIR//
+LIGFILES = .;$TEXMF/fonts/lig//
+TTFONTS = .;$TEXMF/fonts/{truetype,ttf}//;$OSFONTDIR//
+TTF2TFMINPUTS = .;$TEXMF/ttf2pk//
+T42FONTS = .;$TEXMF/fonts/type42//
+MISCFONTS = .;$TEXMF/fonts/misc//
+ENCFONTS = .;$TEXMF/{fonts/enc,dvips,pdftex}//
+CMAPFONTS = .;$TEXMF/fonts/cmap//
+SFDFONTS = .;$TEXMF/fonts/sfd//
+OPENTYPEFONTS = .;$TEXMF/fonts/opentype//;$OSFONTDIR//
+
+OFMFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/{ofm,tfm}//;$TFMFONTS
+OPLFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/opl//
+OVFFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/ovf//
+OVPFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/ovp//
+OTPINPUTS = .;$TEXMF/omega/otp//
+OCPINPUTS = .;$TEXMF/omega/ocp//
+OTFFONTS = .;$TEXMF/fonts/otf/{xetex,}//
+
+% configurations
+
+% resource paths, can be used in paranoid situations (can be env vars)
+
+TXRESOURCES=rubish
+MPRESOURCES=rubish
+MFRESOURCES=rubish
+
+% some extra paths for development trees (can be env vars)
+
+CTXDEVTXPATH=rubish
+CTXDEVMPPATH=rubish
+CTXDEVMFPATH=rubish
+
+TEXINPUTS.context = .;{$TXRESOURCES}//;{$CTXDEVTXPATH}//;$TEXMF/{pdftex,pdfetex,etex,xetex,omega,tex}/{context,plain,generic}//
+MPINPUTS = .;{$MFRESOURCES}//;{$CTXDEVMPPATH}//;$TEXMF/metapost/{context,base,}//
+MFINPUTS = .;{$MPRESOURCES}//;{$CTXDEVMFPATH}//;$TEXMF/metafont/{context,base,}//;{$TEXMF/fonts,$VARTEXFONTS}/source//
+
+TEXCONFIG = .;$TEXMF/{fonts/map,dvips,pdftex,dvipdfmx,dvipdfm}//
+PDFTEXCONFIG = .;$TEXMF/pdftex/{$progname,}//
+DVIPDFMINPUTS = .;$TEXMF/{fonts/map,dvips,pdftex,dvipdfmx,dvipdfm}//
+
+% this way we can hook in development paths
+
+CTXDEVPLPATH=rubish
+CTXDEVPYPATH=rubish
+CTXDEVRBPATH=rubish
+CTXDEVJVPATH=rubish
+
+% some old paths; we restrict the search to context paths; new ones as well as old ones
+
+PERLINPUTS = .;$CTXDEVPLPATH//;$TEXMF/scripts/context/perl//;$TEXMF/{context/perl,context/perltk,perl,perltk}//
+PYTHONINPUTS = .;$CTXDEVPYPATH//;$TEXMF/scripts/context/python//;$TEXMF/{context/python,python}//
+RUBYINPUTS = .;$CTXDEVRBPATH//;$TEXMF/scripts/context/ruby//;$TEXMF/{context/ruby,ruby}//
+JAVAINPUTS = .;$CTXDEVJVPATH//;$TEXMF/scripts/context/java//;$TEXMF/{context/java,java}//
+
+TEXMFSCRIPTS = .;$CTXDEVRBPATH//;$CTXDEVPLPATH//;$TEXMF/scripts/context//;$TEXMF/scripts//
+
+% features
+
+shell_escape = t
+%openout_any = a
+openout_any = p
+openin_any = a
+parse_first_line = f
+allow_multiple_suffixes = f
+
+% auto generation
+
+MKTEXTEX = 0
+MKTEXPK = 0
+MKTEXMF = 0
+MKTEXTFM = 0
+MKOCP = 0
+MKOFM = 0
+
+% metapost
+
+MPXCOMMAND = texexec --batch --once --nomp --mptex
+TEX = texexec --batch --once --nomp
+
+% These values are about the same as in the main
+% configuration file (dest_names_size added).
+
+buf_size.context = 200000 % needed for omega bug
+extra_mem_bot.context = 2000000
+extra_mem_top.context = 4000000
+font_max.context = 2000
+font_mem_size.context = 1000000
+hash_extra.context = 65000
+main_memory.context = 1500000
+max_strings.context = 200000
+nest_size.context = 500
+obj_tab_size.context = 300000 % 8388607
+pdf_mem_size.context = 500000 % 524288
+dest_names_size.context = 300000 % 131072
+param_size.context = 10000
+pool_free.context = 47500
+pool_size.context = 1250000
+save_size.context = 50000
+stack_size.context = 10000
+string_vacancies.context = 90000
+trie_size.context = 250000
+
+main_memory.mpost = 3000000
+pool_size.mpost = 3000000
+max_strings.mpost = 200000
+path_size.mpost = 10000
+nest_size.mpost = 500
+param_size.mpost = 10000
+save_size.mpost = 50000
+stack_size.mpost = 5000
+string_vacancies.mpost = 90000
+
+main_memory.metafun = 3000000
+pool_size.metafun = 3000000
+max_strings.metafun = 200000
+path_size.metafun = 10000
+nest_size.metafun = 500
+param_size.metafun = 10000
+save_size.metafun = 50000
+stack_size.metafun = 5000
+string_vacancies.metafun = 90000
+
+buf_size = 100000
+
+mp_buf_size = 30000
+mf_buf_size = 30000
+mpost_buf_size = 30000
+
+max_print_line.mpost = 250
+max_print_line.metafun = 250
+
+extra_mem_top.mptopdf = 1000000
+extra_mem_bot.mptopdf = 1000000
+
+ocp_buf_size = 500000
+ocp_stack_size = 10000
+ocp_list_size = 1000