summaryrefslogtreecommitdiff
path: root/tex/context/base/font-ini.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/font-ini.mkiv')
-rw-r--r--tex/context/base/font-ini.mkiv134
1 files changed, 94 insertions, 40 deletions
diff --git a/tex/context/base/font-ini.mkiv b/tex/context/base/font-ini.mkiv
index 326cc0d53..29b95aeb1 100644
--- a/tex/context/base/font-ini.mkiv
+++ b/tex/context/base/font-ini.mkiv
@@ -1737,24 +1737,23 @@
% some day we can do an auto-fam if needed
-\def\checkmathbodyfont#1#2#3% style alt size / gdef % #3 can be empty
- {%\message{!m #1 #2 #3!}%
- % #1 #2 #3 = signal
- %setugvalue {#2}{\setcurrentfontalternative {#2}}% \mr \mb
- \setugvalue {#1}{\setcurrentfontstyle {#1}}}% \mm
+\def\checkmathbodyfont#1#2#3% style alt size / gdef % #3 can be empty (checking needed as \bf is already defined)
+ {%\message{!m #1 #2 #3!}% #1 #2 #3 = signal
+ %ifcsname #2\endcsname\else\setugvalue {#2}{\setcurrentfontalternative {#2}}\fi % \mr \mb
+ \ifcsname #1\endcsname\else\setugvalue {#1}{\setcurrentfontstyle {#1}}\fi} % \mm
-\def\checktextbodyfont#1#2#3% style alt size / gdef % #3 can be empty
+\def\checktextbodyfont#1#2#3% style alt size / gdef % #3 can be empty (checking needed as \bf is already defined)
{%\message{!t #1 #2 #3!}%
- \setugvalue {#1#3}{\setcurrentfontstylesize {#1}{#3}}% \rma
- \setugvalue {#2#3}{\setcurrentfontalternativesize {#2}{#3}}% \sla
- \setugvalue {#1#2#3}{\setcurrentfontstylealternativesize{#1}{#2}{#3}}% \rmsla
- \setugvalue {#1}{\setcurrentfontstyle {#1}}% \rm
- \setugvalue {#2}{\setcurrentfontalternative {#2}}% \sl
- \setugvalue {#1\c!x}{\setcurrentfontxstylealternative {#1}}% \rmx
- \setugvalue{#1\c!xx}{\setcurrentfontxxstylealternative {#1}}% \rmxx
- \setugvalue {#2\c!x}{\setcurrentfontxalternative {#2}}% \slx
- \setugvalue{#2\c!xx}{\setcurrentfontxxalternative {#2}}% \slxx
- \setugvalue {#1#2}{\setcurrentfontstylealternative {#1}{#2}}}% \rmsl
+ \ifcsname #1#3\endcsname\else\setugvalue {#1#3}{\setcurrentfontstylesize {#1}{#3}}\fi % \rma
+ \ifcsname #2#3\endcsname\else\setugvalue {#2#3}{\setcurrentfontalternativesize {#2}{#3}}\fi % \sla
+ \ifcsname #1#2#3\endcsname\else\setugvalue {#1#2#3}{\setcurrentfontstylealternativesize{#1}{#2}{#3}}\fi % \rmsla
+ \ifcsname #1\endcsname\else\setugvalue {#1}{\setcurrentfontstyle {#1}}\fi % \rm
+ \ifcsname #2\endcsname\else\setugvalue {#2}{\setcurrentfontalternative {#2}}\fi % \sl
+ \ifcsname #1\c!x\endcsname\else\setugvalue {#1\c!x}{\setcurrentfontxstylealternative {#1}}\fi % \rmx
+ \ifcsname#1\c!xx\endcsname\else\setugvalue{#1\c!xx}{\setcurrentfontxxstylealternative {#1}}\fi % \rmxx
+ \ifcsname #2\c!x\endcsname\else\setugvalue {#2\c!x}{\setcurrentfontxalternative {#2}}\fi % \slx
+ \ifcsname#2\c!xx\endcsname\else\setugvalue{#2\c!xx}{\setcurrentfontxxalternative {#2}}\fi % \slxx
+ \ifcsname #1#2\endcsname\else\setugvalue {#1#2}{\setcurrentfontstylealternative {#1}{#2}}\fi} % \rmsl
\def\dodefinedefaultbodyfont[#1][#2][#3]% sizes styles identifier
{\def\dododefinedefaultbodyfont##1%
@@ -3226,9 +3225,6 @@
\ifx\fontalternative\c!bs \sl \else
\tf \fi\fi}
-\let\typeface\normaltypeface
-\let\boldface\normalboldface
-
\unexpanded\def\swaptypeface
{\relax
\ifx\fontalternative\c!it \tf \else
@@ -3238,6 +3234,10 @@
\ifx\fontalternative\c!bi \bf \else
\emphasistypeface \fi\fi\fi\fi\fi}
+\let\typeface\normaltypeface
+\let\boldface\normalboldface
+\let\swapface\swaptypeface
+
%D To be set with the default body font environment: \type
%D {em} being \type {slanted} or \type {italic}.
@@ -3580,36 +3580,90 @@
\let\thedefinedfont\relax
-\def\symbolicsizedfont#1#2#3%
- {\scaledfontsize#1%
- \scaledfontsize#2\scaledfontsize
- \font\thedefinedfont=\truefontname{\glyphfontfile{#3}} at \currentfontbodyscale\scaledfontsize\relax
- \thedefinedfont}
+% \def\symbolicsizedfont#1#2#3%
+% {\scaledfontsize#1%
+% \scaledfontsize#2\scaledfontsize
+% \font\thedefinedfont=\truefontname{\glyphfontfile{#3}} at \currentfontbodyscale\scaledfontsize\relax
+% \thedefinedfont}
+%
+% \def\symbolicscaledfont
+% {\symbolicsizedfont\fontbody}
+%
+% \unexpanded\def\symbolicfont
+% {\symbolicsizedfont\fontbody\plusone}
+%
+% \unexpanded\def\getglyph#1#2% slow, faster, much faster
+% %{{\definefont[\s!dummy][\glyphfontfile{#1} sa \currentfontscale]\dummy#2}}
+% %{{\definefont[\s!dummy][\glyphfontfile{#1} sa *]\dummy#2}}
+% %{{\symbolicfont{#1}#2}}
+% {{\symbolicfont{#1}\doifnumberelse{#2}\char\donothing#2}}
+%
+% \unexpanded\def\getscaledglyph#1#2#3%
+% {{\symbolicscaledfont{#1}{#2}\doifnumberelse{#3}\char\donothing#3}}
+%
+% \unexpanded\def\getrawglyph#1#2% for simple symbols
+% {{\scaledfontsize\fontbody
+% \font\thedefinedfont=#1 at \currentfontbodyscale\scaledfontsize\relax
+% \thedefinedfont\doifnumberelse{#2}\char\donothing#2}}
+%
+% \unexpanded\def\getfontchar#1#2%
+% {{\symbolicfont{#1}\fontchar{#2}}}
+
+\def\setscaledstyledsymbolicfont#1#2#3% quite a slowdown, glyphfontfile
+ {\edef\askedsymbolfont{\truefontname{\glyphfontfile{#3}} at \the\dimexpr#2\dimexpr\currentfontbodyscale\dimexpr#1}%
+ \ifcsname\??ss->\askedsymbolfont\endcsname
+ \csname\??ss->\askedsymbolfont\endcsname
+ \else
+ \dodefinesymbolicfont
+ \fi}
+
+\def\setscaleddirectsymbolicfont#1#2#3% quite a slowdown, glyphfontfile
+ {\edef\askedsymbolfont{\truefontname{#3} at \the\dimexpr#2\dimexpr\currentfontbodyscale\dimexpr#1}%
+ \ifcsname\??ss->\askedsymbolfont\endcsname
+ \csname\??ss->\askedsymbolfont\endcsname
+ \else
+ \dodefinesymbolicfont
+ \fi}
+
+\def\setstyledsymbolicfont#1% quite a slowdown, glyphfontfile
+ {\edef\askedsymbolfont{\truefontname{\glyphfontfile{#1}} at \the\dimexpr\currentfontbodyscale\dimexpr\fontbody}%
+ \ifcsname\??ss->\askedsymbolfont\endcsname
+ \csname\??ss->\askedsymbolfont\endcsname
+ \else
+ \dodefinesymbolicfont
+ \fi}
-\def\symbolicscaledfont
- {\symbolicsizedfont\fontbody}
+\def\setdirectsymbolicfont#1%
+ {\edef\askedsymbolfont{\truefontname{#1} at \the\dimexpr\currentfontbodyscale\dimexpr\fontbody}%
+ \ifcsname\??ss->\askedsymbolfont\endcsname
+ \csname\??ss->\askedsymbolfont\endcsname
+ \else
+ \dodefinesymbolicfont
+ \fi}
-\unexpanded\def\symbolicfont
- {\symbolicsizedfont\fontbody\plusone}
+\def\dodefinesymbolicfont
+ {\definefont[currentsymbolfont][\askedsymbolfont]%
+ \currentsymbolfont
+ \global\expandafter\let\csname\??ss->\askedsymbolfont\endcsname\lastrawfontcall}
-\unexpanded\def\getglyph#1#2% slow, faster, much faster
- %{{\definefont[\s!dummy][\glyphfontfile{#1} sa \currentfontscale]\dummy#2}}
- %{{\definefont[\s!dummy][\glyphfontfile{#1} sa *]\dummy#2}}
- %{{\symbolicfont{#1}#2}}
- {{\symbolicfont{#1}\doifnumberelse{#2}\char\donothing#2}}
+\unexpanded\def\getnamedglyphstyled#1#2{{\setstyledsymbolicfont{#1}\ctxlua{fonts.char("#2")}}}
+\unexpanded\def\getnamedglyphdirect#1#2{{\setdirectsymbolicfont{#1}\ctxlua{fonts.char("#2")}}}
+\unexpanded\def\getglyphstyled #1#2{{\setstyledsymbolicfont{#1}\doifnumberelse{#2}\char\donothing#2}}
+\unexpanded\def\getglyphdirect #1#2{{\setdirectsymbolicfont{#1}\doifnumberelse{#2}\char\donothing#2}}
+\unexpanded\def\getscaledglyph #1#2#3{{\setscaledstyledsymbolicfont{#1}{#2}\doifnumberelse{#3}\char\donothing#3}}
-\unexpanded\def\getscaledglyph#1#2#3%
- {{\symbolicscaledfont{#1}{#2}\doifnumberelse{#3}\char\donothing#3}}
+\let\getglyph \getglyphstyled % old
+\let\getrawglyph \getglyphdirect % old
+\let\symbolicsizedfont\setscaledstyledsymbolicfont % old
+\let\symbolicfont \setstyledsymbolicfont % old
-\unexpanded\def\getrawglyph#1#2% for simple symbols
- {{\scaledfontsize\fontbody
- \font\thedefinedfont=#1 at \currentfontbodyscale\scaledfontsize\relax
- \thedefinedfont\doifnumberelse{#2}\char\donothing#2}}
+\unexpanded\def\symbolicscaledfont{\setsscaledstyledsymbolicfont\fontbody}
+\unexpanded\def\symbolicscaledfont{\setscaledstyledsymbolicfont\fontbody}
%D The last implementation of \type {\getglyph} permits
%D definitions like:
%D
-%D \starttyping
+%D \starttypings
%D \definefontsynonym [EuroSans] [eurose]
%D \definefontsynonym [EuroSansBold] [euroseb]
%D \definefontsynonym [EuroSansItalic] [eurosei]