How do I achieve consistency in output in eps and pdf terminals in gnuplot?
我试图在 gnuplot 中的 eps 和 pdf 终端之间获得一些一致的输出。问题是他们似乎对尺寸单位的理解不同。以英寸为单位的相同指定大小将导致 pdf 输出的字体大小更大:
1 2 3 4 5 6 7 8 |
.pdf 中的文本要大得多,而且图表很狭窄。但是,如果我将 eps 的大小单位更改为 cm:
1 2 3 4 5 6 7 8 9 |
使用错误的单位,输出看起来相同(在一些边距误差范围内)。这是巧合吗?这是怎么回事?
这是针对 Gnuplot 4.4(补丁级别 3)Ubuntu 11.10 测试的。
(我知道我可以使用一些实用程序在 eps 和 pdf 之间进行转换,因此它们是相同的,但我想了解 gnuplot 中发生了什么。)
由于两个plot在同一个单位系统中,这种行为是预期的——尽管可能没有很好/准确地记录。 (来自
1 2 |
由于您明确指定了大小,因此该部分保持不变,但即使您明确指定了字体,字体在
至于将单位切换为厘米——我不在我的计算机上启用了
为了实现终端独立,我想你可以把它写在一个函数中(当前未测试):
1 2 3 4 5 6 7 8 9 10 11 | fontsize(x)=((GPVAL_TERM eq 'postscript') && \\ (strstrt(GPVAL_TERMOPTIONS,"eps")!=0)) ? x*2 : x set term post eps enh size 10in,8in set termoption font"Arial,".fontsize(7) set output"Hello.eps" plot sin(x) set term pdfcairo enh size 10in,8in set termoption font"Arial,".fontsize(7) set output"Hello.pdf" plot sin(x) |
确保只将整数传递给 fontsize -- 在进行字符串连接时,整数会被提升为字符串。
编辑
在深入挖掘之后,cairo 库似乎采取了一些自由并嵌入了您没有要求的(类似)字体。
running
1 2 3 | name type emb sub uni object ID -------------------- ------------ --- --- --- ------ -- LiberationSansBold CID TrueType yes no yes 5 0 |
而后记仅包含字体名称(未嵌入),它被 ps 查看器翻译为它可以找到的最接近请求字体的东西(它 [可能] 替换了您也没有要求的字体) .因此,要实现真正的终端独立性(在这两个终端之间),您需要找到嵌入在 pdf 中的字体文件,然后
使用 Ghostscript 实现 100% 的一致性
我使用 Ghostscript 将
1 |