Outlined text (from MP) inline in ConText has incorrect baseline (i.e. no depth)
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. ---K 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.edumailto:kevin@lps.umd.edu Visiting Research Professor United States Naval Academy rudd@usna.edumailto: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 -----------------------------------------------------------------
thanks, Hans— that's so much simpler an approach. i'll have to look into text effects to see what else can be done. many many thanks! ---K
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.edumailto:kevin@lps.umd.edu
Visiting Research Professor
United States Naval Academy
rudd@usna.edumailto:rudd@usna.edu
On Oct 8, 2021, at 07:36, Hans Hagen
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
kevin@lps.umd.edumailto:kevin@lps.umd.edu
Visiting Research Professor
United States Naval Academy
rudd@usna.edumailto:rudd@usna.edu
On Oct 8, 2021, at 07:36, Hans Hagen
participants (2)
-
Hans Hagen
-
Rudd, Kevin