summaryrefslogtreecommitdiff
path: root/tex/context/base/typo-cap.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/typo-cap.mkiv')
-rw-r--r--tex/context/base/typo-cap.mkiv117
1 files changed, 83 insertions, 34 deletions
diff --git a/tex/context/base/typo-cap.mkiv b/tex/context/base/typo-cap.mkiv
index d2f1dc0e0..8f859a4e6 100644
--- a/tex/context/base/typo-cap.mkiv
+++ b/tex/context/base/typo-cap.mkiv
@@ -23,6 +23,28 @@
\definesystemattribute[case][public]
%D \macros
+%D {setupcapitals}
+%D
+%D By default we use pseudo small caps in titles. This can be
+%D set up with:
+%D
+%D \showsetup{setupcapitals}
+
+\installcorenamespace{capitals}
+
+\installcommandhandler \??capitals {capitals} \??capitals
+
+%D Beware, these are not really defines (yet).
+
+\definecapitals[\v!WORD ] % all upper
+\definecapitals[\v!capital] % one upper + font
+\definecapitals[\v!Capital] % some upper + font
+\definecapitals[\v!mixed ] % UpperCase
+\definecapitals[\v!WORD ] % all lower
+\definecapitals[\v!Word ] % one upper + font
+\definecapitals[\v!Words ] % some upper
+
+%D \macros
%D {Word, Words, WORD, WORDS}
%D
%D This is probably not the right place to present the next set
@@ -141,21 +163,36 @@
%
% here we keep the \groupedcommand
-\unexpanded\def\pseudosmallcapped{\groupedcommand{\setcharactercasing [\v!WORD ]\signalcharacter\tx}{}} % all upper
-\unexpanded\def\pseudoSmallcapped{\groupedcommand{\setcharactercasing [\v!capital]\signalcharacter\tx}{}} % one upper + font
-\unexpanded\def\pseudoSmallCapped{\groupedcommand{\setcharactercasing [\v!Capital]\signalcharacter\tx}{}} % some upper + font
-
-\unexpanded\def\realsmallcapped {\groupedcommand{\sc\setcharactercasing[\v!WORD ]}{}} % all lower
-\unexpanded\def\realSmallcapped {\groupedcommand{\sc\setcharactercasing[\v!Word ]}{}} % one upper + font
-\unexpanded\def\realSmallCapped {\groupedcommand{\sc\setcharactercasing[\v!Words ]}{}} % some upper
-
-\unexpanded\def\font_style_pseudosmallcapped{\setcharactercasing [\v!WORD ]\signalcharacter\tx} % all upper
-\unexpanded\def\font_style_pseudoSmallcapped{\setcharactercasing [\v!capital]\signalcharacter\tx} % one upper + font
-\unexpanded\def\font_style_pseudoSmallCapped{\setcharactercasing [\v!Capital]\signalcharacter\tx} % some upper + font
-
-\unexpanded\def\font_style_realsmallcapped {\sc\setcharactercasing[\v!WORD ]} % all lower
-\unexpanded\def\font_style_realSmallcapped {\sc\setcharactercasing[\v!Word ]} % one upper + font
-\unexpanded\def\font_style_realSmallCapped {\sc\setcharactercasing[\v!Words ]} % some upper
+\def\typo_capitals_set_fake#1%
+ {\edef\currentcapitals{#1}%
+ %\setcharactercasing[\currentcapitals]%
+ \ctxcommand{setcharactercasing("\currentcapitals")}%
+ \signalcharacter % retain current style
+ \usecapitalsstyleparameter\c!style}
+
+\def\typo_capitals_set_real#1%
+ {\edef\currentcapitals{#1}%
+ \sc
+ %\setcharactercasing[\currentcapitals]}
+ \ctxcommand{setcharactercasing("\currentcapitals")}}
+
+\unexpanded\def\pseudosmallcapped{\groupedcommand{\typo_capitals_set_fake\v!WORD }\donothing} % all upper
+\unexpanded\def\pseudoSmallcapped{\groupedcommand{\typo_capitals_set_fake\v!capital}\donothing} % one upper + font
+\unexpanded\def\pseudoSmallCapped{\groupedcommand{\typo_capitals_set_fake\v!Capital}\donothing} % some upper + font
+\unexpanded\def\pseudoMixedCapped{\groupedcommand{\typo_capitals_set_fake\v!mixed }\donothing} % UpperCase
+
+\unexpanded\def\realsmallcapped {\groupedcommand{\typo_capitals_set_real\v!WORD }\donothing} % all lower
+\unexpanded\def\realSmallcapped {\groupedcommand{\typo_capitals_set_real\v!Word }\donothing} % one upper + font
+\unexpanded\def\realSmallCapped {\groupedcommand{\typo_capitals_set_real\v!Words }\donothing} % some upper
+
+\unexpanded\def\font_style_pseudosmallcapped{\typo_capitals_set_fake\v!WORD } % all upper
+\unexpanded\def\font_style_pseudoSmallcapped{\typo_capitals_set_fake\v!capital} % one upper + font
+\unexpanded\def\font_style_pseudoSmallCapped{\typo_capitals_set_fake\v!Capital} % some upper + font
+\unexpanded\def\font_style_pseudoMixedCapped{\typo_capitals_set_fake\v!mixed }
+
+\unexpanded\def\font_style_realsmallcapped {\typo_capitals_set_real\v!WORD } % all lower
+\unexpanded\def\font_style_realSmallcapped {\typo_capitals_set_real\v!Word } % one upper + font
+\unexpanded\def\font_style_realSmallCapped {\typo_capitals_set_real\v!Words } % some upper
\unexpanded\def\typo_capitals_smallcaps
{\ifconditional\c_typo_capitals_pseudo
@@ -182,6 +219,8 @@
\let\kap\cap % for old times sake
\let\Caps\SmallCapped % for old times sake
+\let\mixedcaps\pseudoMixedCapped
+
\let\normalsmallcapped\smallcapped
\let\normalWORD \WORD
\let\normalword \word
@@ -194,29 +233,21 @@
\unexpanded\def\notsmallcapped{\groupedcommand{\setcharactercasing[\v!word]\signalcharacter}{}}
-%D \macros
-%D {setupcapitals}
-%D
-%D By default we use pseudo small caps in titles. This can be
-%D set up with:
-%D
-%D \showsetup{setupcapitals}
-
-\installcorenamespace{capitals}
-
-\installsetuponlycommandhandler \??capitals {capitals}
+%D Further tweaks
\let\normalsmallcapped\smallcapped
\appendtoks
- \doifelse{\directcapitalsparameter\c!title}\v!yes
- {\definealternativestyle[\v!capital ][\font_style_normalsmallcapped][\font_style_normalsmallcapped]%
- \definealternativestyle[\v!smallcaps][\setsmallcaps][\setsmallcaps]}
- {\definealternativestyle[\v!capital ][\font_style_normalsmallcapped][\font_style_normalWORD]%
- \definealternativestyle[\v!smallcaps][\setsmallcaps][\font_style_normalWORD]}%
- \doifelse{\directcapitalsparameter\s!sc}\v!yes
- \userealcaps
- \usepseudocaps
+ \ifx\currentcapitals\empty
+ \doifelse{\directcapitalsparameter\c!title}\v!yes
+ {\definealternativestyle[\v!capital ][\font_style_normalsmallcapped][\font_style_normalsmallcapped]%
+ \definealternativestyle[\v!smallcaps][\setsmallcaps][\setsmallcaps]}
+ {\definealternativestyle[\v!capital ][\font_style_normalsmallcapped][\font_style_normalWORD]%
+ \definealternativestyle[\v!smallcaps][\setsmallcaps][\font_style_normalWORD]}%
+ \doifelse{\directcapitalsparameter\s!sc}\v!yes
+ \userealcaps
+ \usepseudocaps
+ \fi
\to \everysetupcapitals
\let\uppercased\normalWORD
@@ -224,8 +255,26 @@
\setupcapitals
[\c!title=\v!yes,
+ \c!style=\tx,
\s!sc=\v!no] % no \c!sc any longer
+% \definefont
+% [MixedCaps]
+% [\v_font_string_a\v_font_string_c*default cp \the\exheight]
+%
+% \definefont
+% [MixedCaps]
+% [MixedCaps*default cp \the\exheight]
+
+\definefont
+ [MixedCaps]
+ [CurrentFont*default cp \the\exheight]
+
+\setupcapitals
+ [\v!mixed]
+ [\c!style=MixedCaps]
+
+
% \definestartstop is not yet in available at core-spa time
%
% \startrandomized \input tufte \stoprandomized