Linux 下的 GMT 中文支持¶
本文介绍如何让 GMT 在 Linux 下支持中文。
警告
据用户反映,按照本文的步骤操作可能会导致ghostscript无法正常使用。
若出现该问题,可以执行 sudo perl cjk-gs-integrate.pl --remove 命令撤销 cjk-gs-integrate.pl 脚本的操作。
若需要GMT中文支持,请转向 自定义字体原理 一文。
ghostscript的中文支持¶
Linux 的中文字体较少,这里使用 Windows 下提供的四个基本字体:宋体、仿宋、黑体和楷体。对于 Windows 下的其他中文字体、Linux 的其他中文字体甚至日韩字体来说,方法类似。
可以使用 cjk-gs-support 项目提供的脚本 cjk-gs-integrate.pl 来实现ghostscript的中文支持。
- 从Windows下获取四种基本字体的字体文件(文件名类似于 - simsun.ttc)并复制到- /usr/share/fonts/winfonts/目录下
- 下载脚本 cjk-gs-integrate.pl 
- cjk-gs-integrate.pl脚本的执行依赖于命令- kpsewhich,该命令由 TeXLive 提供。执行- kpsewhich --version检查- kpsewhich这个命令是否存在。若不存在,则需要单独安装。- 对于Ubuntu/Debian用户,执行: - sudo apt install texlive-binaries - 对于CentOS/RHEL/Fedora用户,执行: - sudo yum install texlive-kpathsea-bin 
- 执行脚本: - $ sudo perl cjk-gs-integrate.pl - 该脚本会自动搜索系统中自带的中文字体,并生成gs支持中文所需的配置文件。 
GMT的中文支持¶
在 ~/.gmt(若无该文件夹,请自行新建)下创建字体配置文件:
$ touch ~/.gmt/PSL_custom_fonts.txt
$ gedit ~/.gmt/PSL_custom_fonts.txt
打开 GMT 字体配置文件,在文件中加入如下语句:
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
STSong-Light--UniGB-UTF8-V  0.700    1
STFangsong-Light--UniGB-UTF8-V  0.700    1
STHeiti-Regular--UniGB-UTF8-V   0.700   1
STKaiti-Regular--UniGB-UTF8-V   0.700   1
这几句话分别添加了宋体、仿宋、黑体和楷体四种字体的横排和竖排两种方式。
用 gmt text -L 命令查看 GMT 当前的字体配置:
$ gmt text -L
Font #  Font Name
------------------------------------
0   Helvetica
1   Helvetica-Bold
...    ......
39 STSong-Light--UniGB-UTF8-H
40 STFangsong-Light--UniGB-UTF8-H
41 STHeiti-Regular--UniGB-UTF8-H
42 STKaiti-Regular--UniGB-UTF8-H
43 STSong-Light--UniGB-UTF8-V
44 STFangsong-Light--UniGB-UTF8-V
45 STHeiti-Regular--UniGB-UTF8-V
46 STKaiti-Regular--UniGB-UTF8-V
其中 39-46 号字体为新添加的中文字体。以后要用中文字体时,需要用这些编号来指定字体,也许你的机器上的编号和这里不同。
GMT 中文测试¶
注解
请自行确认你的中文字体编号。如果编号不是39到46,请自行修改以下测试脚本。
#!/bin/bash
gmt begin GMT_Chinese pdf,png
gmt set FONT_TITLE 25p,41,black
gmt set FONT_LABEL 15p,39,black
gmt text -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" -BWSen+t"中文标题" -F+f << EOF
2 3.5 25p,39,black 中文宋体
2 2.5 25p,40,blue  中文仿宋
2 1.5 25p,41,red   中文黑体
2 0.5 25p,42,green 中文楷体
4 3.5 25p,43,black 中文宋体
5 3.5 25p,44,blue  中文仿宋
6 3.5 25p,45,red   中文黑体
7 3.5 25p,46,green 中文楷体
EOF
gmt end
成图效果如下:
