首页 > 代码库 > Metapost画图添加中文字体问题

Metapost画图添加中文字体问题

最近一直在弄论文里面的插图,并且在实验室例会上做了一个用Metapost画图的经验报告,结果让实验室的某些同学抓住要求帮忙做某个很水的课的beamer答辩插图,昨天晚上有空准备就地解决,结果却碰了一鼻子灰,太他妈蛋疼了,和latex对中文的支持一样,metapost对中文的支持简直到了无法忍受的地步,所以,一晚上我果断没搞定那几张插图,整个晚上尽在查资料,幸好今天周末,所以有时间继续搞定这个问题,不过幸好现在基本搞定了,想想大周末的,我也算是蛮拼的,下面介绍具体的解决方案。

    在网上查了不少资料,看了王垠的主页,也看了唐老师的学习资料,到此为止我能解决的问题是编译能通过了,其实很简单,就是用label的时候使用命令行指定使用的tex引擎就行了,具体命令如下:

mpost -tex=latex yourfile.mp

编译通过后能生成eps文件,但是打开发现中文是乱码,由于我使用的是GSview预览的,最后发现是GS缺少中文字体的问题,于是我就准备自己安装中文字体,就在此时,我看到了另一个说法,只需要在安装CTEX的时候手动设置一下字体就行了,具体的不多说了,直接上图

wKiom1RUmlijeinYAAC4ZDD0__4472.jpg

    这里说明一句,如果你的CTEX文件夹没有图上这么多子文件夹,尤其是没有FontSetup,很可能你安装的不是full版本,所以在此建议大家直接选择full版本的ctex,也就1.3G左右,避免后续的很多麻烦,运行FontSetup,就能看到这样的界面

wKiom1RUmxfDCxY0AAGEEj0uKac394.jpg

然后选择生成Type1字库和使用Type1字库,点击安装就可以了,只不过这里的等待时间稍微有点长,不过没关系,能解决问题就行了。

    插一段话,介绍的是这两种字体的区别,Type 1字体是Adobe公司随着页面描述语言PostScript一起推出的。页面描述语言对图形描述的一大特点是不采用设备像素进行,而是抽取图形实体描述。因此,这种描述方法经济而有效,并且和设备无关。PostScript语言把文字也看成为图形,可对它施加任何类型的图形操作,从而能够产生高质量的、既符合使用要求又丰富多彩的文字输出。
  PostScript语言的字体结构在LEVEL1时推出2种格式,分别是Type1和Type3。Type3是用户自定义字体。两者具有相似的结构,均是一段PS程序。但还是有区别的,Type3字体给出仅仅是一个框架,不包括数据和字体技术;Type1字体包含了一套完整的字体技术,包括字形设计、数据加密等。
  Type1字形设计,1、比划:在任何Type1字体程序中,字符描述总是核心部分。每个字符形状都由一系列PS程序语句描述路径组成。字符主要垂直比划通常被看做是垂直笔段,主要水平比划被看做水平笔段,笔段能直能弯。2、宽度方向的尺寸参数:西文字符控制比中文字符更加困难,因为不像中文字体框框结构,西文每个字符高度和宽度可能都不相同。西文字符宽度方向上参数有字符原点、字符宽度、左边界和左边界点。3、高度方向的尺寸参数有基线、基线越界位置、顶高、顶高越界位置、X-高度、X-高度越界位置。
  TrueType字体是继Adobe Type 1后又一种典型的曲线字体描述方法,是由Apple和Microsoft公司于1991年联手推出。TrueType字体技术是TrueImage页面描述语言中的字形描述部分。TrueType字体由于没有什么特色,所以并未流行,但TrueType字体是windows系统一级使用的字体,因而开始受到越来越多人的关注。

    好吧,科普类的东西就介绍到这里吧,接着讲正题,直接上代码吧,我写了一个test.mp,代码如下:

prologues:=3;

filenametemplate "%j-%c.eps";

verbatimtex

%&latex

\documentclass{article}

\usepackage{CJK}

\begin{CJK*}{GBK}{kai}

\begin{document}

etex

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

beginfig(0)

label.lft(btex 我就是要用中文 etex,(0,0));

endfig

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

verbatimtex

\end{CJK*}

\end{document}

etex

end

    命令行运行mpost -tex=latex test.mp,于是我就得到了一个test-0.eps,用GSView打开是这样的

wKioL1RUnWrSNkJaAADZ6cb3I0U421.jpg

    然后我选择用acrobat X pro把它转成PDF,方便查看,结果类似

wKiom1RUnZaQN1koAAHgqrwTAqk122.jpg

    好啦,就写到这里吧,我把代码传个附件吧,方便大家查看,也方便自己以后翻出来看,各位看官,再见,我吃饭去啦!

    尼玛不上上传mp文件,只好打包了

本文出自 “书山有路” 博客,请务必保留此出处http://stevekeepgoing.blog.51cto.com/7993033/1570739

Metapost画图添加中文字体问题