2016-12-01 63 views
1

我有一個包含文件的一些命令:不在gnuplot的相同的字體使用命令行或gnuplot的命令時

$ cat components.plg 
    set terminal png 
    set output output 
    set font "Helvetica,10" 
    unset xtics 
    unset ytics 
    unset border 
    plot "reportGraph_0" with lines title "Component 0", "reportGraph_1" with lines title "Component 1", "aoi.txt" with lines title "Area of interest" 
    $ 

我將不會顯示的reportGraph_#這裏的內容,但任何在他們2分已驗證。

然後我用這個文件作爲參數啓動gnuplot,然後我得到一個關於Arial的警告(我不完全確定爲什麼)。

$ gnuplot -e "output='footprint.png' " components.plg 
    Could not find/open font when opening font "arial", using internal non-scalable font 
    $ 

但是,結果圖像在非Helvetica中有其文本(但更多的是像無等寬字體sans)。

下面是兩個圖像(第一個是命令行的輸出,第二個是在gnuplot外殼中啓動的相同命令序列的輸出,以及導出結果圖像的輸出)。有一個區別,我沒有使用gnuplot中的前兩個命令(set terminal pngset output output) - 我只是將映像「導出」爲png。 image from shell command line image from gnuplot commands

問題是:爲什麼我在這兩個圖像中沒有相同的字體? 我想要Helvetica(或Lucida Grande,但不是等寬字體)。

回答

1

Gnuplot有各種各樣的終端。當你啓動一個交互式gnuplot會話並且可能使用wxtqt終端。通過從圖窗口中導出圖像,您可以保存圖像,這些圖像是由這些終端創建的。

現在,使用set terminal png您可以使用一個不同的,相當老的終端,具有不同的功能,特別是在字體渲染方面。

如果要直接將圖像保存爲png,請使用pngcairo終端,該終端會生成更高質量的圖像(結果應該等於從wxt導出的圖像的結果)。

pngcairopdfcairo終端也應該正確處理您的字體。

+0

這可能是個竅門,但是這些終端對於我的機器來說是未知的:'第1行:未知或模棱兩可的終端類型;爲列表鍵入'set terminal' – fzd

1

png終端比pngcairo舊,但它仍然可以使用指定的字體。您只需指定一個.TTF路徑或.pfa字體文件:

set terminal png font "/path/to/your/Helvetica.pfa"

或用逗號分隔的對字體文件的路徑和點大小:

set terminal png font '/usr/share/fonts/liberation/LiberationSans-Regular.ttf,9'

的gnuplot使用libgd,因此如果將環境變量GDFONTPATH設置爲包含.ttf或.pfa字體文件的目錄,則可以只指定字體名稱而不是完整路徑:

set terminal png font 'LiberationSans-Regular'

用於設置不同終端字體的文檔可在gnuplot中的help fonts gd,help fonts cairohelp fonts postscript下獲得。