6

gnuplot の eps 端末と pdf 端末の間である程度一貫した出力を得ようとしています。問題は、サイズ単位の理解が異なるように見えることです。同じサイズをインチで指定すると、pdf 出力のフォント サイズがはるかに大きくなります。

set terminal postscript eps enhanced colour size 10in,8in font 'Arial-Bold,14'
set output 'my_eps.eps'
set title 'My plot'
plot sin(x) notitle

set terminal pdfcairo size 10in,8in font 'Arial-Bold,14'
set output 'my_pdf.pdf'
replot

.pdf のテキストははるかに大きく、グラフは窮屈です。ただし、eps のサイズ単位を cm に変更すると、次のようになります。

set terminal postscript eps enhanced colour size 10cm,8cm font 'Arial-Bold,14'
                                                 ########
set output 'my_eps.eps'
set title 'My plot'
plot sin(x) notitle

set terminal pdfcairo size 10in,8in font 'Arial-Bold,14'
set output 'my_pdf.pdf'
replot

出力は、間違った単位で同じように見えます (多少のマージン エラーの範囲内)。これは偶然ですか?何が起きてる?

これは、Gnuplot 4.4 (パッチレベル 3) Ubuntu 11.10 でテストされています。

(いくつかのユーティリティを使用して eps と pdf を変換できることはわかっていますが、gnuplot で何が起こっているのかを理解したいと思います。)

4

2 に答える 2

3

同じ単位系に2つのプロットがある場合、この動作は予想されますが、十分に/正確に文書化されていない可能性があります。(からhelp post

In `eps` mode the whole plot, including the fonts, is reduced to half of 
the default size.

サイズを明示的に指定したため、その部分は固定されepsますが、フォントを明示的に指定した場合でも、フォントのサイズはプロット上で2分の1に縮小されます(理由はわかりませんが、常にそのようになっています)。 -私はいつもそれを少なくともドキュメントのバグだと思っていました...)。

単位をセンチメートルに切り替える限り、cairo端末が有効になっているコンピューターを使用していないので、今は確認できません...しかし、それは(私には)奇妙に思えます。それはおそらく、インチからセンチメートルへの変換が約2倍であり、それらが非常に似ているためでしょうか?(たとえば、フォントは半分のサイズですが、プロットは1 / 2.54サイズです)

端末の独立性を実現するために、関数(現在未テスト)に記述できると思います。

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ライブラリはいくつかの自由を取り、あなたが求めていなかった(同様の)フォントを埋め込んでいるようです。

pdffonts myfile.pdfrunning-:だけでフォント名を取得できることに注意してくださいstrings myfile.pdf | grep FontName

name                 type         emb sub uni object ID
-------------------- ------------ --- --- --- ------ --
LiberationSansBold   CID TrueType yes no  yes      5 0

一方、ポストスクリプトにはフォント名(埋め込まれていない)が含まれているだけで、psビューアによって、要求されたフォントに最も近いものとして翻訳されます([おそらく]要求しなかったフォントに置き換わります)。したがって、(これら2つの端末間で)真の端末の独立性を実現するには、PDFに埋め込まれたフォントファイルを見つけてからset postscript eps enh color fontfile add "<fontfile>"、PDFとポストスクリプトの両方に同じフォントファイルを埋め込む必要があります。

于 2012-05-23T23:27:02.837 に答える