[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