% \OutlinedText[fill][outline]{text}
\def\OutlinedText{\dodoubleempty\doOutlinedText}
\def\doOutlinedText[#1][#2]#3%
{%
\ifsecondargument
\makeOutlinedText{#1}{#2}{#3}%
\else\iffirstargument
\makeOutlinedText{#1}{black}{#3}%
\else
\makeOutlinedText{white}{black}{#3}%
\fi\fi
}
\defineeffect[OuterEffect][alternative=outer,rulethickness=0.1pt]
\defineeffect[InnerEffect][alternative=inner,rulethickness=0.1pt]
\def\makeOutlinedText#1#2#3%
{%
\hbox%
{%
\rlap{\color[#1]{\effect[InnerEffect]{#3}}}%
\color[#2]{\effect[OuterEffect]{#3}}%
}%
\autoinsertnextspace
}
\starttext
\OutlinedText[red][yellow]{Arguments: red yellow \ldots}\\
\OutlinedText[red]{Arguments: red \ldots}\\\\
\OutlinedText{Arguments: \ldots}\\
\stoptext
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Kevin W. Rudd, Ph.D.
CAPT, USN (Ret)
Computer Architecture & Computer Engineering
Advanced Computing Systems (ACS) Research Program
Laboratory for Physical Sciences (LPS)
443-654-7878
kevin@lps.umd.edu
Visiting Research Professor
United States Naval Academy
rudd@usna.edu
On 10/7/2021 4:14 PM, Rudd, Kevin via ntg-context wrote:
Hey---
I'm trying to insert outlined text (derived from MetaFun example code) into a document and it seems to work up to the point that the text has depth (descenders). There's a previous post that mentions using textcommand for titles to ensure that the appropriate
baseline is used but I haven't figured out why that would work; for my purposes, I'm insert the text inline so that solution wouldn't work here. I have included a MWE that demonstrates the problem; I've tried putting both the text and the outlined text in
a box, then adjusting the outlined text by the depth of the text itself but that doesn't seem to work. I expect that there's an easy way either in MP or ConTeXt, but I haven't found it yet.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \OutlinedText[glyph][outline]{text}
\def\OutlinedText{\dodoubleempty\doOutlinedText}
\def\doOutlinedText[#1][#2]#3%
{%
% ((((\type{#1}::\type{#2}::\type{#3}))))
\ifsecondargument
\makeOutlinedText{#1}{#2}{#3}%
\else\iffirstargument
\makeOutlinedText{#1}{black}{#3}%
\else
\makeOutlinedText{white}{black}{#3}%
\fi\fi
}
\def\makeOutlinedText#1#2#3%
{%
\startMPcode
draw outlinetext.b("#3")
(withcolor "#1")
(withcolor "#2" withpen pencircle scaled 1/16);
\stopMPcode
\autoinsertnextspace
}
\starttext
start
\OutlinedText{aaa}
and \OutlinedText{Bbb}
and \OutlinedText{ggg}
and \OutlinedText{Yyy}
finish
\stoptext
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(Here is the code with my attemps to shift the baseline; the \dp & \wd approach seems to do nothing, and the \lower doesn't compile and I haven't pursued why yet.)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \def\makeOutlinedText#1#2#3%
% {%
% \newbox\tBox
% \newbox\uBox
% \setbox\tBox\hbox{#3}
% \setbox\uBox
% \hbox{%
% \startMPcode
% draw outlinetext.b("#3")
% (withcolor "#1")
% (withcolor "#2" withpen pencircle scaled 1/16);
% \stopMPcode
% }%
% % \lower\uBox\dp\tBox
% \ht\uBox=\ht\tBox
% \dp\uBox=\dp\tBox
% \unbox\uBox
% \autoinsertnextspace
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Any feedback or suggestions would be appreciated.
\defineeffect[MyEffect][alternative=outer,rulethickness=.1pt]
\starttext
start
{\effect[MyEffect]{aaa}} \OutlinedText{aaa}
and {\red \effect[MyEffect]{Bbb}} \OutlinedText{Bbb}
and {\green\effect[MyEffect]{ggg}} \OutlinedText{ggg}
and {\blue \effect[MyEffect]{Yyy}} \OutlinedText{Yyy}
finish
\stoptext
Kevin W. Rudd, Ph.D.
CAPT, USN (Ret)
Computer Architecture & Computer Engineering
Advanced Computing Systems (ACS) Research Program
Laboratory for Physical Sciences (LPS)
443-654-7878
kevin@lps.umd.edu <mailto:kevin@lps.umd.edu>
Visiting Research Professor
United States Naval Academy
rudd@usna.edu <mailto:rudd@usna.edu>
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl /
http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl /
http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___________________________________________________________________________________
--
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 |
www.pragma-ade.nl |
www.pragma-pod.nl
-----------------------------------------------------------------