使用 metapost 处理 metafont 源

使用 metapost 处理 metafont 源

我有一个文件,test.mp其中包含:

outputtemplate := "%j-%c.eps";
mode=localfont;
mag=100.375;
input cmr10.mf;

当我mpost按如下方式运行时:

mpost &mfplain test.mp

一些字形包含一些白色部分(例如数字 1、2、5、7 等)。如何从这些字形中去除这些白色部分?

答案1

我知道这已经过时了,我希望原始问题已经得到解决,但我认为我有一个很好的简单答案。(我在 Mac 上运行最新的 TexLive 2022 系统,但这在任何相当新的 TeX 环境中都应该可以正常工作。)

如果我完全按照上面所示编译 OP 示例,我会得到几十个eps文件,并且它们周围会有很多额外的空白,如下所示:

在此处输入图片描述

我手工添加了红色矩形,以便更清楚地显示图形的边缘。我思考这是因为输出不是包含所有正确标题的完整 Postscript EPS 文件。我认为这就是原帖所说的“包含一些白色部分”的意思。

幸运的是,解决这个问题非常容易——你只需要强制mpost创建正确的 EPS 文件prologues := 3——所以如果我将 OP 示例修改为这样:

prologues := 3;
outputtemplate := "%j-%c.eps";
mode=localfont;
mag=100.375;
input cmr10.mf;
end.

然后生成的文件顶部会有一小块额外的资源,而且至关重要的是它们以正确的标题行(第一个)开头:

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 55 -23 485 677 
%%HiResBoundingBox: 55.33301 -22.22342 484.16058 676.85297 
%%Creator: MetaPost 2.02
%%CreationDate: 2022.11.02:2102
%%Pages: 1
%%DocumentResources: procset mpost-minimal
%%DocumentSuppliedResources: procset mpost-minimal
%%EndComments
%%BeginProlog
%%BeginResource: procset mpost-minimal
/bd{bind def}bind def/fshow {exch findfont exch scalefont setfont show}bd
/fcp{findfont dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall}bd
/fmc{FontMatrix dup length array copy dup dup}bd/fmd{/FontMatrix exch def}bd
/Amul{4 -1 roll exch mul 1000 div}bd/ExtendFont{fmc 0 get Amul 0 exch put fmd}bd
/ScaleFont{dup fmc 0 get Amul 0 exch put dup dup 3 get Amul 3 exch put fmd}bd
/SlantFont{fmc 2 get dup 0 eq{pop 1}if Amul FontMatrix 0 get mul 2 exch put fmd}bd
%%EndResource
%%EndProlog
%%BeginSetup
%%EndSetup

此标题行会影响 BBox 信息的使用方式。通过此更改,我认为所有字符看起来都应如此,周围没有随机空白。

在此处输入图片描述

我再次手动添加了边界框线。

相关内容