summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/symb-ini.mkiv
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2019-02-22 20:29:46 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2019-02-22 20:29:46 +0100
commit7b271baae19db1528fbe6621bdf50af89a5a336b (patch)
tree4fc24a8f2be20aa90e90f6e1bcb62d69f4946235 /tex/context/base/mkiv/symb-ini.mkiv
parent67b9965fe473d18f13ed4c40f1e4e008eb870322 (diff)
downloadcontext-7b271baae19db1528fbe6621bdf50af89a5a336b.tar.gz
2019-02-22 19:43:00
Diffstat (limited to 'tex/context/base/mkiv/symb-ini.mkiv')
-rw-r--r--tex/context/base/mkiv/symb-ini.mkiv76
1 files changed, 70 insertions, 6 deletions
diff --git a/tex/context/base/mkiv/symb-ini.mkiv b/tex/context/base/mkiv/symb-ini.mkiv
index e4950e09d..abf857675 100644
--- a/tex/context/base/mkiv/symb-ini.mkiv
+++ b/tex/context/base/mkiv/symb-ini.mkiv
@@ -45,6 +45,7 @@
\installcorenamespace{symbol}
\installcorenamespace{symbolset}
+\installcorenamespace{symboldefault}
\let\currentsymbol \empty
\let\currentsymbolset\empty
@@ -95,8 +96,9 @@
% Test test \symbol[whatever]\ test \symbol[whatever].
% Test test \symbol{whatever} test \symbol{whatever}.
-\unexpanded\def\symbol % This one always gobbles spaces,
- {\dodoubleempty\symb_place} % so never change it again!
+\unexpanded\def\symbol
+ {\dontleavehmode % so we can start a paragraph with it
+ \dodoubleempty\symb_place}
\def\symb_place % so we also handle \symbol{name}
{\iffirstargument % which is nicer with following spaces
@@ -112,13 +114,23 @@
\expandafter\symb_place_normal_b
\fi}
+% \def\symb_place_normal_a[#1][#2]%
+% {\edef\currentsymbol{#2}%
+% \ifcsname\??symbol#1:#2\endcsname
+% \symb_place_indeed{#1:#2}%
+% \else
+% \symb_place_normal_c
+% \fi}
+
\def\symb_place_normal_a[#1][#2]%
{\edef\currentsymbol{#2}%
\ifcsname\??symbol#1:#2\endcsname
- \symb_place_indeed{#1:#2}%
+ \symb_place_indeed{#1:#2}% maybe use \lastnamescs
+ \else\ifcsname\??symboldefault#1\endcsname
+ \symb_place_named{#1}% maybe use \lastnamescs
\else
\symb_place_normal_c
- \fi}
+ \fi\fi}
\def\symb_place_normal_b[#1][#2]%
{\edef\currentsymbol{#1}%
@@ -160,11 +172,47 @@
\expandafter\symb_fetch_indeed
\fi}
+% \def\symb_fetch_indeed#1%
+% {\ifcsname\??symbol#1:\currentsymbol\endcsname
+% \symb_place_indeed{#1:\currentsymbol}%
+% \fi}
+
\def\symb_fetch_indeed#1%
{\ifcsname\??symbol#1:\currentsymbol\endcsname
\symb_place_indeed{#1:\currentsymbol}%
+ \else\ifcsname\??symboldefault#1\endcsname
+ \symb_place_named{#1}%
+ \fi\fi}
+
+\def\symb_place_named#1% \relax's prevent lookahead problems
+ {\begingroup
+ \setbox\scratchbox\hbox\bgroup
+ \the\everysymbol
+ \getglyphstyled
+ {\csname\??symboldefault#1\endcsname}%
+ {\tochar{n:\currentsymbol}}%
+ \relax
+ \egroup
+ \ifdim\wd\scratchbox>\zeropoint
+ \unhbox\scratchbox
+ \endgroup
+ \setxvalue{\??symbol#1:\currentsymbol}%
+ {\symb_place_named_indeed{#1}{\currentsymbol}}%
+ \settrue\c_symb_found
+ \else
+ \endgroup
\fi}
+\unexpanded\def\symb_place_named_indeed#1#2% \relax's prevent lookahead problems
+ {\settrue\c_symb_found
+ \begingroup
+ \the\everysymbol
+ \getglyphstyled
+ {\csname\??symboldefault#1\endcsname}%
+ {\tochar{n:#2}}%
+ \relax
+ \endgroup}
+
\def\symb_place_retry#1%
{\ifcsname\??symbol:#1\endcsname
\symb_place_indeed{:#1}%
@@ -273,9 +321,25 @@
\installcorenamespace{symbolsets}
-\unexpanded\def\startsymbolset[#1]%
+% \unexpanded\def\startsymbolset[#1]%
+% {\pushmacro\m_symb_current_set
+% \def\m_symb_current_set{#1}}
+
+% maybe a parameterhandler:
+
+\unexpanded\def\startsymbolset
+ {\dodoubleargument\symb_start_set}
+
+\def\symb_start_set[#1][#2]%
{\pushmacro\m_symb_current_set
- \def\m_symb_current_set{#1}}
+ \def\m_symb_current_set{#1}%
+ \ifsecondargument
+ \getdummyparameters[\s!font=,#2]%
+ \edef\p_font{\dummyparameter\s!font}%
+ \ifx\p_font\empty\else
+ \letvalue{\??symboldefault#1}\p_font
+ \fi
+ \fi}
\unexpanded\def\stopsymbolset
{\popmacro\m_symb_current_set}