Windows 下的 GMT 中文支持¶
ghostscript 的中文支持¶
通常,在 C:\Program Files\gs\gs9.26\examples\cjk
目录下可以找到文件 gscjk_ag.ps
。
注解
如果找不到该文件,请尝试重新安装ghostscript。在安装的过程中,会有一个生成 cidmap 的选项,选中该选项则表示会为当前系统自动生成中文所需的 cidmap 文件。默认该选项是被选中的,一定 不要 将该选项取消;
启动 cmd,键入如下命令:
cd "C:\Program Files\gs\gs9.26\bin"
gswin64.exe ..\examples\cjk\gscjk_ag.ps
该命令用命令行版本的 gswin64c
打开 gscjk_ag.ps
,若能看到中文,则说明
ghostscript 是可以正常支持中文的。
配置Ghostscript环境变量¶
为了能够在将PS文件转换为其他图片格式时也支持中文,需要设置环境变量 GS_FONTPATH
。具体步骤如下:
- 点击“计算机”->“属性”->“高级系统设置”->“环境变量”打开“环境变量”编辑工具
- 在“系统变量”部分中,新建变量
GS_FONTPATH
并设置其值为C:\Windows\fonts
gsview 的中文支持¶
注解
如果你需要用gsview查看PS文件,则需要为gsview配置中文显示。否则,则可以跳过这一部分。
安装好 gsview 之后,PS 格式会自动与 gsview 关联。一般情况下,直接双击 PS 文件,就会用 gsview 打开该 PS 文件。
双击打开 gscjk_ag.ps
,一般情况下不会正确显示汉字。这是因为 gsview 在打开
PS 文件时没有找到汉字所对应的字体文件。
在 gsview 的 “选项”->“高级配置” 中,将 Ghostscript Options 由
-dNOPLATFONTS -sFONTPATH="c:\psfonts"
改成 -dNOPLATFONTS -sFONTPATH="C:\Windows\Fonts"
,此时 gsview 在调用 gswin64 时会将选项传递给 gswin64,gswin64 则会在 FONTPATH
中搜索字体。
配置完毕后,重新打开 gscjk_ag.ps
,若中文正常显示,则表示 gsview 已支持中文。
GMT 的中文支持¶
新建GMT自定义字体配置文件 C:\Users\用户名\.gmt\PSL_custom_fonts.txt
(若不存在 C:\Users\用户名\.gmt
目录则需新建该目录。Windows的文件管理器无法新建以 . 开头的文件夹,因而需要打开CMD,然后执行命令 mkdir .gmt
以创建该文件夹)。
向 GMT自定义字体配置文件 C:\Users\用户名\.gmt\PSL_custom_fonts.txt
中加入如下语句:
STSong-Light--GB-EUC-H 0.700 1
STFangsong-Light--GB-EUC-H 0.700 1
STHeiti-Regular--GB-EUC-H 0.700 1
STKaiti-Regular--GB-EUC-H 0.700 1
STSong-Light--GB-EUC-V 0.700 1
STFangsong-Light--GB-EUC-V 0.700 1
STHeiti-Regular--GB-EUC-V 0.700 1
STKaiti-Regular--GB-EUC-V 0.700 1
用 gmt text -L
查看 GMT 字体:
$ gmt text -L
Font # Font Name
------------------------------------
0 Helvetica
1 Helvetica-Bold
... ......
39 STSong-Light--GB-EUC-H
40 STFangsong-Light--GB-EUC-H
41 STHeiti-Regular--GB-EUC-H
42 STKaiti-Regular--GB-EUC-H
43 STSong-Light--GB-EUC-V
44 STFangsong-Light--GB-EUC-V
45 STHeiti-Regular--GB-EUC-V
46 STKaiti-Regular--GB-EUC-V
可以看到,新添加的四种中文字体对应的字体编号为 39 到 46。其中 STSong-Light-GB-EUC-H
即为宋体,GB-EUC
是文字编码方式,
H
表示文字水平排列,V
表示竖排文字。强烈建议在执行测试脚本前确认自己的中文字体编号。
GMT 中文测试¶
注解
请自行确认你的中文字体编号。如果编号不是39到46,请自行修改以下测试脚本。
gmt begin map pdf,png
gmt set FONT_TITLE 25p,41,black
gmt set FONT_LABEL 15p,39,black
echo 2 3.5 25p,39,black 中文宋体 > tmp
echo 2 2.5 25p,40,blue 中文仿宋 >> tmp
echo 2 1.5 25p,41,red 中文黑体 >> tmp
echo 2 0.5 25p,42,green 中文楷体 >> tmp
echo 4 3.5 25p,43,black 中文宋体 >> tmp
echo 5 3.5 25p,44,blue 中文仿宋 >> tmp
echo 6 3.5 25p,45,red 中文黑体 >> tmp
echo 7 3.5 25p,46,green 中文楷体 >> tmp
gmt text tmp -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" -BWSen+t"中文标题" -F+f
del tmp
gmt end
成图效果如下:
注解
若使用记事本编辑 bat 文件,则保存时应注意编码方式为 ANSI、Unicode 或 Unicode big endian,若使用 UTF-8 编码则会出现乱码;另外,很多编辑器默认将文本文件以 UTF-8 编码保存,需要将编辑器的默认编码修改为 GB-2321、ANSI或GB-EUC。