PS文件中的中文字体为CIDFont--CMap,这里CMap选择的是UniGB-UTF8-H,在Windows下似乎应该选择GB-EUC-H,尚不清楚原理;
使GMT支持中文
修改配置文件
打开GMT中文配置文件/opt/GMT-4.5.12/share/pslib/PS_font_info.d,在文件最后加入如下语句(以Windows字体为例):
STSong-Light--UniGB-UTF8-H 0.700 1 STFangsong-Light--UniGB-UTF8-H 0.700 1 STHeiti-Regular--UniGB-UTF8-H 0.700 1 STKaiti-Regular--UniGB-UTF8-H 0.700 1第一列为字体名,第二列为字母A的高度,第三列与编码有关。
查看GMT当前支持的字体
用pstext -L命令查看GMT当前的字体配置:
1 2 3 4 5 6 7 8 9 10 11 12 13
$ pstext -L Font # Font Name ------------------------------------ 0 Helvetica 1 Helvetica-Bold ... ...... 32 Palatino-BoldItalic 33 ZapfChancery-MediumItalic 34 ZapfDingbats 35 STSong-Light--UniGB-UTF8-H 36 STFangsong-Light--UniGB-UTF8-H 37 STHeiti-Regular--UniGB-UTF8-H 38 STKaiti-Regular--UniGB-UTF8-H
其中0-34为GMT/gs默认支持的西文字体,35至38为新添加的中文字体。
GMT中文测试
GMT4测试脚本:
1 2 3 4 5 6 7 8 9 10 11
#!/bin/bash gmtset HEADER_FONT 35 pstext -R0/7/0/7 -JX6i/6i -B1/1:."GMT中文支持": -P > cn.ps <<EOF 1.5 5 35 0 35 LM GMT宋体 1.5 4 35 0 36 LM GMT仿宋 1.5 3 35 0 37 LM GMT黑体 1.5 2 35 0 38 LM GMT楷体 EOF rm .gmt*
成图效果如下
GMT5测试脚本:
1 2 3 4 5 6 7 8 9 10 11
#!/bin/bash gmt gmtset FONT_TITLE 40p,35,black gmt pstext -R0/7/0/7 -JX6i/6i -Bafg -B+t"GMT中文支持" -F+a+c+f -P > gmt5_cn.ps << EOF 3.5 5 0 LM 45p,35,red GMT宋体 3.5 4 0 LM 45p,36,blue GMT仿宋 3.5 3 0 LM 45p,37,black GMT黑体 3.5 2 0 LM 45p,38,green GMT楷体 EOF rm gmt.*
成图效果如下
可移植性的一些测试
本机:用vi打开PS文件,中文正常显示;
本机:gs查看正常;
本机:ps2raster转换为PDF,用evince、zathura查看正常;
本机:ps2pdf转换为PDF,用evince、zathura查看正常;
由于目前无其他机器可用,因而暂时不测试可移植性。