[metapost] Stroke Font

Karel horakk at math.cas.cz
Sun May 17 01:22:04 CEST 2015


Laurent Méhats napsal(a):
> Le 16/05/2015 22:25, Troy Henderson a écrit :
>>     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;
>>
>>
>> Thank you very much for the advice.  I would appreciate any help in 
>> doing
>> this for the Arev Bold font included in TeXLive.
>>
>> Troy
>
> Hello,
>
> Here is an attempt that goes the way you describe.
Great, my congratulations.
Karel alias lazy dog:-)
>
> Regards,
> Laurent Méhats
>
> --%<-- test.mp
> verbatimtex%&latex
> \documentclass{article}
> \usepackage[T1]{fontenc}
> \usepackage{arev}
> \begin{document}
> etex;
>
> vardef init (suffix glp_num, pth_num, glp_pth) expr pct=
> %  pct            btex .. etex material
> %  glp_num        number of glyphs within pct
> %  pth_num[i]     number of paths defining the rank i glyph
> %                   (i ranges from 0 to glp_num-1)
> %  glp_pth[i][j]  rank j path of the rank i glyph
> %                   (j ranges from 0 pth_num[i]-1)
> string fnt_str, txt_str, sub_str;
> numeric txt_wd;
> glp_num:=0;
> for tkn within pct:
>   if textual tkn:
>     fnt_str:=fontpart tkn;
>     txt_str:=textpart tkn;
>     txt_wd:=0;
>     for glp_idx=0 upto (length txt_str-1):
>       sub_str:=substring (glp_idx, glp_idx+1) of txt_str;
>       pth_num[glp_num]:=0;
>       for sub_tkn within glyph ASCII sub_str of fnt_str
>           scaled (fontsize fnt_str/1000)
>           xscaled xxpart tkn
>           yscaled yypart tkn
>           shifted (txt_wd+xpart tkn, ypart tkn):
>         glp_pth[glp_num][pth_num[glp_num]]:=pathpart sub_tkn;
>         pth_num[glp_num]:=pth_num[glp_num]+1;
>       endfor
>       glp_num:=glp_num+1;
>       txt_wd:=txt_wd+
>         (xxpart tkn)*xpart urcorner (sub_str infont fnt_str);
>     endfor
>   fi
> endfor
> enddef;
>
> picture pct;     % btex .. etex material
> color fll_clr,     % fill color
>       bkg_clr,     % background color
>       oln_clr;     % outlines color
> numeric oln_thk; % outlines thickness
>
> pct:=btex{\textbf{The quick brown fox jumps over the lazy dog.}}etex;
> fll_clr:=green;
> bkg_clr:=white;
> oln_clr:=red;
> oln_thk:=.5;
>
> beginfig(0)
> numeric glp_num, pth_num[];
> path glp_pth[][];
> init (glp_num, pth_num, glp_pth) pct;
> for i=0 upto glp_num-1:
>   for j=0 upto pth_num[i]-1:
>     fill glp_pth[i][j] withcolor
>       if turningnumber glp_pth[i][j]=1: fll_clr else: bkg_clr fi;
>     draw glp_pth[i][j] withpen pencircle scaled oln_thk withcolor 
> oln_clr;
>   endfor
> endfor
> endfig;
>
> end
> --%<-- test.mp
>



More information about the metapost mailing list