5.7 特殊字体

GMT默认支持的35种字体中,12号字体(Symbol)和34号字体(ZapfDingbats)比较特殊,专门用于在图上显示一些特殊的字符,比如希腊字母。特殊字符无法从键盘直接输入,只能通过一个三位的八进制码表示一个字符。

GMT中12号字体(Symbol字符集)和34号字体(Pifont ZapfDingbats)所包含的字符集及其对应的八进制码如下图所示:

../../_images/GMT_symbol_dingbats.png

图 5.1 Symbol和Pifont字体八进制码

下载: 特殊字体八进制码 PDF版 | 特殊字体八进制码 PNG版

如何使用这些八进制码实现显示特殊字符的目的的?以字符 \(\beta\) 为例:

  1. 查找上表,发现Symbol字体中包含该字符,则设置文本的字体为12号字体
  2. 在Symbol字体中,字符 \(\beta\) 位于 \14x2 列,则其对应的八进制码为 \142
  3. 在需要输入 \(\beta\) 的地方输入八进制码 \142 即可

示例如下:

gmt pstext -JX10c/10c -R0/10/0/10 -F+f15p,12 > test1.ps << EOF
5 5 \141
EOF

echo 5 5 '\141' | gmt pstext -JX10c/10c -R0/10/0/10 -F+f15p,12 > test2.ps

上面的示例中,-F+f15p,12 指定了使用12号字体。两个示例分别采用了两种不同的方式输入数据。需要格外注意,在第二种方式下,由于bash中的echo命令会自动将 \141 转换成 141,因而实际 pstext 模块接收到的是 141 而不是 \141。为了解决这一问题,此处需要用 '\141'\\141,而不能直接用 \141。在其他脚本语言中也存在类似的问题。

有时需要在一堆正常的字符中出现一些特殊字符。这种情况下,则需要通过转义字符 @~@%% 临时将字体切换为特殊字符。转义字符的具体用法在后面会介绍,此处仅举一例:

gmt psbasemap -R0/10/0/10 -JX10c/10c -BWSne \
    -Bx2+l"@~\161@~ or @%12%\161@%%" -By2+l"@%34%\164@%%" > test.ps