[metapost] Stroke Font

Karel horakk at math.cas.cz
Sat May 16 20:02:57 CEST 2015

Troy Henderson napsal(a):
> Is there a preferred method for converting a
> btex Here is my sentence etex
> from a picture to an array of closed paths that can be filled and 
> stroked different colors? Thus, I would like to convert the btex ... 
> etex sentence picture into an array of outlines for each letter (in 
> the current font) used in the sentence so that I can fill the outlines 
> one color and draw them with another color.
I am afraid that it is not an easy task.
The first idea that comes is to use path separation from such a picture 
typeset by TeX, but in this way one can obtain only subpictures (words 
or parts of words depending on the kerning inside, see the example in 
2.10 of Metafun manual);

Despite the following comment to loop syntax

for ?symbolic token? within ?picture expression?: ?loop text? endfor

quoted from metapost manual:

"The ?loop text? can be anything that is balanced with respect to for 
and endfor. The ?symbolic
token? is a loop variable that scans the components of the picture in 
the order in which they were drawn. The component for a clipping or 
setbounds path includes everything the path applies to.
Thus if a single clipping or setbounds path applies to everything in the 
?picture expression?, the
whole picture could be thought of as one big component. In order to make 
the contents of such a
picture accessible, the for...within iteration ignores the enclosing 
clipping or setbounds path in this case."

one would not get any path contained in (bounded) picture.

I see one possibility:
take a loop for one letter substrings of the given text string; after 
that you can get all the letters as paths:

string str,ss[];
str:="Here is my sentence";
for i=1 upto length str: ss[i]:=substring(i-1,i) of str;
p[i]:=ss[i] infont defaultfont; s[i]:=pathpart p[i]; endfor
draw pathpart glyph ss1 of defaultfont scaled .01;

What remains is to program how to shift the obtained paths to get final 
colored inscription.
One can use the information about bbox of any of letters and use label 
machanism to find kerning among letters.

Of course, it would be nice if metapost would be enhanced with such a 
possibility to access all the glyph paths inside a label:-)

Perhaps somebody would come with better ideas?

All the best,
Karel Horak

More information about the metapost mailing list