![metapost 是否包含 penstroke 缩写命令?](https://linux22.com/image/401272/metapost%20%E6%98%AF%E5%90%A6%E5%8C%85%E5%90%AB%20penstroke%20%E7%BC%A9%E5%86%99%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
您好,我正在尝试使用 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;
...
您可以按照元字体书。