由于我是 Metafont 的新手,我仍然不确定我的代码是否高效。我想用一个新的圆角符号替换 Computer Modern 的小于符号。
我发现了两种方法:
第一个例子基于 2 个笔画。缺点:重叠(可以在 Fontforge 中移除,但移除会导致 2 个不必要的点)。
% ... Rest as in sym.mf
compute_spread(5/4x_height#,3/2x_height#);
beginchar(less,14u#,v_center(spread#+rule_thickness#));
italcorr h#*slant-u#;
pickup fine.nib;
pos1(rth,90); pos2(rth,90); pos3(rth,90);
lft x2l=hround 1.5u; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
filldraw stroke z1e--z2e;
filldraw stroke z2e--z3e;
penlabels(1,2,3); endchar;
% ...
第二个示例:基于 filldraw。没有重叠,但更复杂。(-> 图片)
% ... Rest as in sym.mf
compute_spread(5/4x_height#,3/2x_height#);
beginchar(less,14u#,v_center(spread#+rule_thickness#));
italcorr h#*slant-u#;
pickup fine.nib;
pos1(rth,90); pos2(rth,90); pos3(rth,90);
lft x2l=hround 1.5u; x1=x3=w-x2;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
y4=y2; z4=whatever[z2r,z3r];
filldraw z1r--z2r--z2l--z3l--z3r--z4--z1l--cycle;
penlabels(1,2,3); endchar;
我不确定。这看起来不像 Computer Modern 来源那么专业。有没有办法简化和缩短代码?
编辑:两种情况下都缺少代码行:rth:=rule_thickness;
答案1
我找到了一种更好的解决方案,可以使用更好的代码来实现更好的 less 符号:
rth := rule_thickness;
compute_spread(5/4x_height#,3/2x_height#);
beginchar(253,32u#,v_center(spread#+rule_thickness#));
italcorr h#*slant-u#;
pickup fine.nib;
pos1(rth,-90); pos2(whatever,0); pos3(rth,90);
lft x2l=hround 1.5u; x1=x3=w-x2l;
y1-y3=spread; y2=.5[y1,y3]=math_axis;
z2r=z3r+whatever*(z2l-z3l);
filldraw stroke z1e--z2e--z3e;
penlabels(1,2,3); endchar;