metafont 哈希符号

metafont 哈希符号

当 # 符号跟在变量名后面时,它代表什么意思?例如

arrow_len#对比arrow_len

答案1

Metafont 在由当前分辨率决定的网格中工作,并且只使用数字,而不是尺寸。在参数文件中,您可以指定尺寸pt#,例如

ht#:=6pt#;

然后你就可以在图片中使用了ht,说完之后

define_pixels(ht);

例如,

ht#:=6pt#; define_pixels(ht);show ht;

216当 的值为 36 时将打印hppp(这对应于 2602 点/英寸的分辨率,这是未指定模式时的默认值)。这样,ht始终表示覆盖 6pt 距离所需的像素数。在绘制字符时,可以安全地说

ht:=6pt;

因为分辨率是已知的。在诸如此类的参数文件中,cmr10.mf必须将参数指定为“清晰尺寸”,这样它们将与分辨率无关,因为无法预先知道何时设置分辨率(在设置字体参数之前或之后)。例如logo10.mf

% 10-point METAFONT logo
font_size 10pt#;  % the "design size" of this font
ht#:=6pt#;    % height of characters
xgap#:=0.6pt#;    % horizontal adjustment
u#:=4/9pt#;    % unit width
s#:=0;      % extra space at the left and the right
o#:=1/9pt#;    % overshoot
px#:=2/3pt#;    % horizontal thickness of pen
input logo    % now generate the font
bye      % and stop.

并从设置分辨率等logo.mf开始。mode_setup

类似地,必须“输出”的维度应该以“尖锐形式”指定;从digits.mf我们得到

beginchar("1",9u#,fig_height#,0);

因为这会在文件中写入正确的点值gf;但在定义角色的形状时u使用。这有点复杂;应该记住

a#=1pt#;define_pixels(a);

将值分配1a#并将的值分配hpppa,这样您就始终知道何时需要以点为单位的测量值或实际像素数。

还要注意的是,改变价值a不是改变的值a#,它是在函数的帮助下反过来的define_pixels

相关内容