Ok, now that I've had some time to experiment with effects and attributes, 
here's what I ended up with. It uses an overlaid double draw to create outlined 
text with optional fill (white), border (black). I've only tested it with words 
so haven't worked out how it could be adapted to support longer strings (e.g. 
the \hbox+\rlap hack likely will disappoint/fail in that case). For parameter 
simplicity, I don't allow specifying the outline width separately; but that 
might be another good exercise to use key–value parameters instead.

Thanks for the help,
 ---K

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% \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
ke...@lps.umd.edu<mailto:ke...@lps.umd.edu>

Visiting Research Professor
United States Naval Academy

r...@usna.edu<mailto:r...@usna.edu>


On Oct 8, 2021, at 07:36, Hans Hagen 
<j.ha...@xs4all.nl<mailto:j.ha...@xs4all.nl>> wrote:

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
ke...@lps.umd.edu<mailto:ke...@lps.umd.edu> <mailto:ke...@lps.umd.edu>
Visiting Research Professor
United States Naval Academy
r...@usna.edu<mailto:r...@usna.edu> <mailto:r...@usna.edu>
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!
maillist : ntg-context@ntg.nl<mailto: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<http://www.pragma-ade.nl> | 
www.pragma-pod.nl<http://www.pragma-pod.nl>
-----------------------------------------------------------------

___________________________________________________________________________________
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
___________________________________________________________________________________

Reply via email to