metapost 是否包含 penstroke 缩写命令?

metapost 是否包含 penstroke 缩写命令?

您好,我正在尝试使用 Metapost 创建字体,并且我一直在使用 Metafontbook 进行研究,其中指出 penstroke 命令是命令 fill 的一种缩写命令,它先从左侧穿过,然后穿过右侧,然后循环。我一直在使用 Troy Henderson 的 metapost 预览器,至少在那里似乎没有指定这样的命令,而且在 metapost 用户手册中也没有对此进行任何注释。

答案1

是的,penstroke在普通的 Metapost 中实现。它位于plain.mp

...
vardef lft primary x = x + if pair x: (pen_lft,0) else: pen_lft fi enddef;
vardef rt primary x = x + if pair x: (pen_rt,0) else: pen_rt fi enddef;
vardef top primary y = y + if pair y: (0,pen_top) else: pen_top fi enddef;
vardef bot primary y = y + if pair y: (0,pen_bot) else: pen_bot fi enddef;

vardef penpos@#(expr b,d) =
 (x@#r-x@#l,y@#r-y@#l)=(b,0) rotated d;
 x@#=.5(x@#l+x@#r); y@#=.5(y@#l+y@#r) enddef;

def penstroke text t =
 forsuffixes e = l,r: path_.e:=t; endfor
 fill path_.l -- reverse path_.r -- cycle enddef;
path path_.l,path_.r;
...

您可以按照元字体书

相关内容