zoukankan      html  css  js  c++  java
  • ubuntu16.04下gmt5.4.1 中文支持

    参考具神http://seisman.info/gmt-chinese-under-linux.html

    • 操作系统:ubuntu16.04
    • ghostscript:9.18
    • GMT:5.4.1

    (1)字体拷贝

    打开teamviewer,远程文件传输,windows系统 c:/windows/fonts 中拷贝最常用的simsun.ttc simfang.ttf simhei.ttf simkai.ttf四种中文字体。

    /usr/share/fonts/目录下。

    (2)对 gs 的中文配置文件做如下修改:

    1. gs 中文配置文件可以用如下命令安装(默认已安装):

      sudo apt-get install poppler-data
    2. gs 中文配置文件路径为:/etc/ghostscript/cidfmap.d/90gs-cjk-resource-gb1.conf
    3. gs 中文配置文件中默认使用的 Linux 字体为 uming 和 ukai,需要通过如下命令安装:

      sudo apt-get install fonts-arphic-uming fonts-arphic-ukai
    4. gs 中文配置文件的默认内容为:

      /BousungEG-Light-GB <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/uming.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
      /GBZenKai-Medium    <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/ukai.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
      /Song-Medium /GBZenKai-Medium ;
      /STSong-Light /BousungEG-Light-GB ;
      /STFangsong-Light /BousungEG-Light-GB ;
      /STHeiti-Regular /BousungEG-Light-GB ;
      /STKaiti-Regular /BousungEG-Light-GB ;
      /Adobe-GB1      /BousungEG-Light-GB ;
      /Adobe-GB1-Bold /GBZenKai-Medium ;

      需要将该文件改成:

      % 原配置文件的内容,与 STSong-Light 等相关的四行必须删除
      /BousungEG-Light-GB <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/uming.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
      /GBZenKai-Medium    <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/ukai.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
      /Song-Medium /GBZenKai-Medium ;
      /Adobe-GB1      /BousungEG-Light-GB ;
      /Adobe-GB1-Bold /GBZenKai-Medium ;
      
      % 新增 Windows 字体的支持
      /STSong-Light <</FileType /TrueType /Path (/usr/share/fonts/simsun.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
      /STFangsong-Light <</FileType /TrueType /Path (/usr/share/fonts/simfang.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
      /STHeiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/simhei.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
      /STKaiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/simkai.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;

      修改完 gs 中文配置文件后,必须要执行如下命令:

      $ sudo update-gsfontmap

      该命令会将 /etc/ghostscript/cidfmap.d/*.conf 合并成单独的文件 /var/lib/ghostscript/fonts/cidfmap 。gs 在需要中文字体时会读取 /var/lib/ghostscript/fonts/cidfmap 而不是 /etc/ghostscript/cidfmap.d/*.conf 。这是 Ubuntu/Debian 和 CentOS 的一个很大不同。

    (3)测试 gs 对 Linux 默认字体的支持

    ghostscript 中文配置文件90gs-cjk-resource-gb1.conf中,默认有四行,分别定义了四个字体名,尽管本质上这四个 字体名都指向同一个字体。下面先测试一下如何让 gs 显示 Linux 的默认字体。

    编辑器新建一个 PS 文件(是的,PS 文件其中就是纯文本,可以直接用编辑器编辑!),名为 linux_fonts.ps ,其内容为:

    %! PS-Adobe-3. 0
    /BousungEG-Light-GB--UniGB-UTF8-H findfont 20 scalefont setfont
    150 400 moveto
    (BousungEG 字体) show
    
    /GBZenKai-Medium--UniGB-UTF8-H findfont 20 scalefont setfont
    150 375 moveto
    (GBZenKai 字体) show
    
    /MSungGBK-Light--UniGB-UTF8-H findfont 20 scalefont setfont
    150 350 moveto
    (MSungGBK 字体) show
    
    /Adobe-GB1--UniGB-UTF8-H findfont 20 scalefont setfont
    150 325 moveto
    (Adobe 字体) show
    
    showpage
    %%Trailer
    %%EOF

    简单解释一下,PS 文件中要使用某个中文字体,需要用 FontName--CMap 的格式来调用。其中 FontName 即 gs 中文配置文件中给定的字体名。CMap 可以取 UniGB-UTF8-HGB-EUC-H, Linux 下一般用前者,Windows 下一般用后者,应该是用于指定汉字或中文字体的编码,具体原理不知。

    用 gs 查看该 PS 文件,正常情况下显示如下图,表明 gs 可以正常显示 Linux 下的默认中文字体。

    我的系统中MSungGBK这个字体乱码,不能正常显示。

    (4)测试 gs 对 Windows 中文字体的支持

    编辑器新建一个 PS 文件,名为 windows_fonts.ps ,其内容为:

    %! PS-Adobe-3. 0
    /STSong-Light--UniGB-UTF8-H findfont 20 scalefont setfont
    150 400 moveto
    (Song Typeface 宋体) show
    
    /STFangsong-Light--UniGB-UTF8-H findfont 20 scalefont setfont
    150 375 moveto
    (Fangsong Typeface 仿宋体) show
    
    /STHeiti-Regular--UniGB-UTF8-H findfont 20 scalefont setfont
    150 350 moveto
    (Hei Typeface 黑体) show
    
    /STKaiti-Regular--UniGB-UTF8-H findfont 20 scalefont setfont
    150 325 moveto
    (Kai Typeface 楷体) show
    
    showpage
    %%Trailer
    %%EOF

    用 gs 查看该 PS 文件,若正确显示中文如下图,则表明 gs 已支持 Windows 字体。

    到这一步, ghostscript的windows中文字体正常显示

    (5)gmt中文配置

    修改 GMT 字体配置文件

    打开 GMT 字体配置文件 /opt/GMT-5.4.1/share/postscriptlight/PSL_custom_fonts.txt,在文件显示的注释最后一行#Fontname            Fontheight    Encoded

    后加入 如下语句(以 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 支持中文

    GMT5 测试脚本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
    gmt gmtset FONT_TITLE 40p,35,black
    gmt pstext -R0/10/0/3 -JX15c/3c -Bafg -B+t"GMT中文支持" -F+a+c+f -P > gmt5_cn.ps << EOF
    3 2.1 0 LM 35p,35,red GMT宋体
    3 0.9 0 LM 35p,36,blue GMT仿宋
    7 2.1 0 LM 35p,37,black GMT黑体
    7 0.9 0 LM 35p,38,green GMT楷体
    EOF
    rm gmt.*

    中文显示成功。

     

  • 相关阅读:
    Github进不去解决方法
    微信小程序中使用iconfont的方法
    curl实现SFTP上传下载文件
    curl实现SFTP上传下载文件
    curl不支持sftp的解决方法
    sscanf遇到回车换行认为字符串结束,怎样让它忽略这些回车换行继续搜索整个字符串?
    史上最全阿里 Java 面试题总结及答案
    VS Code的Error: Running the contributed command: ‘_workbench.downloadResource‘ failed解决
    云锵投资 2021 年 07 月简报
    看完段永平的100条思考,我终于悟出他为何这么牛…(转载)
  • 原文地址:https://www.cnblogs.com/gisalameda/p/6840662.html
Copyright © 2011-2022 走看看