GMT在linux下的中文支持

  • 准备工作
    • gs 中文配置文件
    • GMT 字体配置文件
    • 使gs支持中文
      • gs 中文配置文件
    • 测试 gs 对 Linux 默认字体的支持
    • 添加 Windows 中文字体
    • 测试 gs 对 Windows 中文字体的支持
  • 使 GMT 支持中文
    • 修改 GMT 字体配置文件
    • 查看 GMT 当前支持的字体
  • GMT 中文测试
  • 如何插入一段漂亮的代码片
  • 生成一个适合你的列表
  • 创建一个表格
    • 设定内容居中、居左、居右
    • SmartyPants
  • 创建一个自定义列表
  • 如何创建一个注脚
  • 注释也是必不可少的
  • KaTeX数学公式
  • 新的甘特图功能,丰富你的文章
  • UML 图表
  • FLowchart流程图
  • 导出与导入
    • 导出
    • 导入

转载:https://blog.seisman.info/trash/gmt-chinese-under-linux/

原生 GMT 是不支持中文的,想要让 GMT 支持中文,需要进行一番配置。想要理解整个问题,需要对 PostScript、CID 字体有更深刻的理解,这未免有些过于复杂。所以这篇博文只介绍一些基本的原理, 不一定准确但是却够用。

让 GMT 支持中文,需要修改 ghostscript 和 GMT 的配置文件。由于不同发行版对 ghostscript 的打包 方式不同,不同的 ghostscript 版本之间的配置文件也有一些差异。因而这里以我在使用的 CentOS7 来介绍整个原理,其他发行版与CentOS7的差异会在文末列出。

本文所使用的 Linux 环境:

操作系统:CentOS 7.5
ghostscript:9.07
GMT:5.4.4

准备工作

gs 中文配置文件

大多数发行版都已经默认安装了 gs。除此之外,还需要安装简体中文配置文件。CentOS 7 下中文配置文件可以通过如下命令安装:

sudo yum install ghostscript-chinese-zh_CN

安装完成后,中文配置文件的路径为 /usr/share/ghostscript/conf.d/cidfmap.zh_CN, 以下称为 ghostscript 中文配置文件。

GMT 字体配置文件

假定 GMT 的安装路径为 /opt/GMT-5.4.4 ,则字体配置文件的路径为 /opt/GMT-5.4.4/share/postscriptlight/PSL_custom_fonts.txt

使gs支持中文

gs 中文配置文件

CentOS 7 中 ghostscript 中文配置文件的默认内容为:

/BousungEG-Light-GB <</FileType /TrueType /Path (/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/GBZenKai-Medium    <</FileType /TrueType /Path (/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/MSungGBK-Light     /BousungEG-Light-GB ;
/Adobe-GB1      /BousungEG-Light-GB ;

其中的细节可能看不懂,但是可以大概总(xia)结(cai)如下:

第一行定义了字体名为 /BousungEG-Light-GB ,对应的字体文件为 /usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc ,也就是文泉驿正黑;
第二行定义了字体名为 /GBZenKai-Medium,对应的字体文件也是文泉驿正黑;
第三行和第四行分别定义了字体名 /MSungGBK-Light/Adobe-GB1,这两种 都对应于 /BousungEG-Light-GB ,相当于给字体定义了别名。
关于配置文件的几点说明:

字体名是任意的,比如字体名可以取为 /ABC
字体文件似乎只能是 ttcttf 格式的,当然修改参数也有可能可以使用其他格式的字体;
要注意确认字体文件是否存在,比如 CentOS7 下的 wqy-zenhei.ttc 字体实际上位于软件包 wqy-zenhei-fonts 中。若字体不存在,则需要安装相应软件包。

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

CentOS7 的 ghostscript 中文配置文件中,默认有四行,分别定义了四个字体名,尽管本质上这四个 字体名都指向同一个字体。下面先测试一下如何让 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 字体) showshowpage
%%Trailer
%%EOF

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

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

添加 Windows 中文字体

Linux 的中文字体较少,所以这里使用 Windows 下中的中文字体,这里只考虑 Windows 下的宋体、仿宋、 黑体和楷体四个基本字体。将这四个字体文件复制到 /usr/share/fonts/winfonts/ 目录下, 然后对 gs 的中文配置文件做如下修改:

% 原内容保持不变
/BousungEG-Light-GB <</FileType /TrueType /Path (/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/GBZenKai-Medium    <</FileType /TrueType /Path (/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/MSungGBK-Light     /BousungEG-Light-GB ;
/Adobe-GB1      /BousungEG-Light-GB ;% 新增 Windows 字体的支持
/STSong-Light <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simsun.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STFangsong-Light <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simfang.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STHeiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simhei.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STKaiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simkai.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;

这里仅以 Windows 下的常用四大字体为例。对于 Windows 下的其他中文字体、Linux 的其他中文字体甚至 日韩字体来说,方法类似。

测试 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 楷体) showshowpage
%%Trailer
%%EOF

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

使 GMT 支持中文

修改 GMT 字体配置文件

打开 GMT 字体配置文件 /opt/GMT-4.5.13/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 当前的字体配置:

$ 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 测试脚本:

#!/bin/bash
gmt gmtset FONT_TITLE 40p,35,blackgmt 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楷体
EOFrm gmt.*

链接: link.

图片:

带尺寸的图片:

居中的图片:

居中并且带尺寸的图片:

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目

    • 项目

      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞​tz−1e−tdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

GMT5在linux下的中文支持相关推荐

  1. Linux下mysql支持中文,linux下mysql环境支持中文配置步骤

    sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...

  2. linux mint php mysql_linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /e ...

  3. linux 添加宋体字符集,Linux下安装中文宋体

    1,#cd /usr/share/fonts/default 2,mkdir -p ./truetype/simsun 3,取得simsun.ttc文件:如果网上下载不到则在windows (c:/w ...

  4. linux中怎么添加输入法,linux下添加中文输入法

    一.安装环境 查看linux版本号 [ztteng@ztteng ~]$ lsb_release -a LSB Version:    :core-4.0-ia32:core-4.0-noarch:g ...

  5. Linux下使用中文、字体、版

    月20日 Unicode BOM 发现网上某广为流传的中文帖子将Unicode字节流的标识字节(BOM, byte order mark)弄错了,正确的应该是: 00 00 FE FF UTF-32, ...

  6. Linux下安装中文输入法--小企鹅输入法

    Linux 下安装中文输入法-- 小企鹅输入法 作者: zccst Linux 系统: CentOS 5.3 刚刚装好的 CentOS 5.3 ,不要说有中文输入法,甚至连中文字体在浏览器里都无法显示 ...

  7. Linux下Oracle中文数据显示为倒着的问号?(已解决)

    Linux下Oracle中文数据显示为倒着的问号 原因为Linux系统环境变量的字符集编码和Oracle的字符集编码不一致. 需要将二者都改为SIMPLIFIED CHINESE_CHINA.ZHS1 ...

  8. linux cgi c环境配置,Linux下配置nginx支持.cgi | 系统运维

    说明: 操作系统:CentOS 6.x web环境:php+nginx+mysql nginx安装目录:/usr/local/nginx nginx配置文件:/usr/local/nginx/conf ...

  9. linux下oracle中文乱码问题的解决

    linux下oracle数据库很常见的一个问题就是中文显示乱码.这样问题出现有多种可能,可能是linux系统本身未能设置得当,导致不支持中文输入与显示,另一种可能就是oracle本身的问题.一般为了避 ...

最新文章

  1. Facebook开源图嵌入“神器”:无需GPU,高效处理数十亿级实体图形 | 极客头条...
  2. centos7 systemctl 管理 mysql
  3. python opencv 在线读取网络图片图像资源
  4. 分时线的9代表什么_为什么要打板?资深股民分享打板技巧和思路,句句精辟!...
  5. c语言构造插值多项式,拉格朗日多项式插值(C语言).docx
  6. php中图片上传_php实现图片上传并进行替换操作
  7. 【译】C#9的候选功能
  8. java 打开gc日志_在运行时打开GC日志记录
  9. 【树莓派】最常用的树莓派 Linux 命令及说明
  10. linux freopen函数
  11. 大数据学习系列----大数据项目的思考
  12. C/C++ 结构体成员在内存中的对齐规则(转载)
  13. python基础之条件循环语句
  14. linux环境下编译Qt源码
  15. Eclipse+Maven搭建Wbe项目(1)
  16. python和r哪个好学知乎_r语言和python学哪个?
  17. 转载 基于MATLAB 进行图像分类
  18. 【榜单】机器学习 深度学习近三年被引最多论文 Top 20,图像识别 GAN等(附下载)
  19. 从前慢-谷粒商城篇章4
  20. HttpClient javax.net.ssl.SSLPeerUnverifiedException: Certificate doesn't match 错误解决办法

热门文章

  1. 深入理解android的读后感_何捷“读后感”写作指导的多层递进与指令词指引
  2. jquery.html加换行符,在使用jQuery时添加元素间的换行符或空格.append()
  3. html 中js 如何给字符串加换行符
  4. 数学公式 svg_世界民族数学:SVG中的毛利人设计
  5. Webpack升级优化小记:happyPack+dll初体验
  6. 这些酷酷的文字特效图片,制作真的很简单!
  7. C专家编程 第11章 你懂得C,所以C++不再话下 11.16 新奇玩意儿---多态
  8. 360数据恢复如何操作?360安全卫士恢复误删文件的方法(详解)
  9. 什么是编译型语言和解释型语言
  10. 【Python 随练】输出国际象棋棋盘