LinuxSir.Org  
| 网站首页 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 08-10-31, 19:43 第 1 帖
lchxr
 
 
 
注册会员  
  注册日期: Apr 2006
  帖子: 44
  精华: 3
 

标题: Linux系统中为texlive生成CJK字体


1. 简要说明
mkfonts -- 这是一个我用shell写的CJK-LaTeX字体生成程序,其主要目的是从TTF字体产生能够被Texlive使用的中文字体,生成的文件包括metric字体文件,字体定义文件*.fd,字体隐射文件*.map等。用mkfonts生成的字体与CTeX兼容,并且与www.ctex.org发布的ctexbook等宏包兼容。

以下涉及的所有命令均以普通用户身份执行。

teTeX用户请注意:从使用原理上,用mkfonts所生成的字体以及字体定义文件也可以用在tetex系统中,但用户可能需要手动修改相当多的字体映射配置。我本人曾做过很多努力想将为texlive生成的字体用于teTeX系统,但始终未能成功。我曾经专门为teTeX生成过字体,但过程相当复杂,况且teTeX已经停止开发,建议使用Texlive代替teTeX。

2. 压缩包中的文件内容
上传的cjkfonts.tar.gz是一个压缩包文件,其中主要的文件包括编码定义文件*.sfd,一个可执行文件mkfonts, 以及若干个子目录。除了test子目录包含简单的测试文件外,其余子目录的作用是提供并安装与CTeX兼容的宏包。(由于上载文件大小的限制,我将这些宏包删除了。)

3. 解压缩
使用下列的步骤进行解压缩:
代码:
$ mkdir buildfont $ cd buildfont $ tar zxvf <path_to_cjkfonts>/cjkfonts.tar.gz $ cd fonts
解压后在当前目录下生成一个fonts子目录,

4. 准备工作
4.1 下载并安装Texlive2007, 可以从这里下载ftp://tug.org/historic/systems/texli...070212.iso.bz2。也可以下载最新的Texlive2008
4.2 安装fontforge软件包, 可以从http://www.linuxpackges.net下载当前版本并安装。
4.3 运行mkfonts之前需要设置TTFPATH环境变量告知mkfonts从那里找到TTF字体。有几种方法:
a. mkfonts缺省地认为TTF字体在当前目录中,因此必须先拷贝相应的字体文件到当前目录中,比如
代码:
$ cp /usr/share/fonts/TTF/sim*.tt? .
b. 使用命令行环境变量运行mkfonts,比如
代码:
$ TTFPATH=/usr/share/fonts/TTF ./mkfonts
c. 修改mkfonts中的变量定义。使用任何一个你熟悉的编辑器打开mkfonts文件,在开头的位置找到TTFPATH变量的定义,直接将TTFPATH变量修改为路径名。

4.4 指定TEXMF根路径。texlive2007默认的TEXMF用户路径为$HOME/.texlive2007/texmf-var,这也是mkfonts使用的缺省路径。如果你想使用一个特定的安装路径,可以使用命令行,比如
代码:
TEXMF=$HOME/texmf ./mkfonts
也可以直接打开mkfonts文件,在程序的开头找到TEXMF的定义,直接修改。

注意:用户指定的TEXMF目录树必须位于texlive搜索路径中,texmf以及localtexmf都是可以考虑的路径名,参考/usr/local/texlive/2007/texmf/web2c/texmf.cnf

5. 运行mkfonts
mkfonts会在指定的TTFPATH路径下查找下列文件:simfs.ttf(仿宋)、simsun.ttc(宋体)、simkai.ttf(楷体)、simhei.ttf(黑体)、simli.ttf(隶书)、simyou.ttf(幼圆),并分别生成GBK和UTF8两种编码格式的CJK字体文件。整个过程大约需要耗时6小时(在我的2.7GHz/1MB/dual core CPU机器上进行测试),请耐心等待。

6. texlive的配置
如果mkfonts没有报告任何错误,那么所生成的字体,字体定义文件等都已经拷贝到了合适的路径下。接下来的工作是做一些配置工作。texlive2007的配置比teTeX的配置简单了许多,只需要运行updmap即可。
代码:
$ updmap --edit
该命令将打开一个编辑器让你加入一些字体映射文件,将下列几行加入到文件的末尾。

代码:
Map unifs.map Map unisong.map Map unikai.map Map unihei.map Map unili.map Map uniyou.map
这些文件是mkfonts产生的字体映射文件。

7. 使用CJKFonts
对于使用GBK编码的文件,可以这样来编写LaTeX源文件来使用刚刚产生的CJK字体
代码:
\documentclass{article} \usepackage{CJK} \begin{document} \begin{CJK}{GBK}{song} \textit{你好! 这是一个测试CJKGBK编码的测试文件。} \textbf{你好! 这是一个测试CJKGBK编码的测试文件。} \textsl{你好! 这是一个测试CJKGBK编码的测试文件。} \end{CJK} \end{document}
对于使用UTF8编码的文件,可以这样来编写LaTeX源文件来使用刚刚产生的CJK字体
代码:
\pdfoutput=1 \pdfmapfile{=fs-enc.map} \documentclass{article} \usepackage{CJKutf8} \begin{document} \begin{CJK}{UTF8}{song} \textit{你好! 这是一个测试CJKutf8编码的测试文件。} \textbf{你好! 这是一个测试CJKutf8编码的测试文件。} \textsl{你好! 这是一个测试CJKutf8编码的测试文件。} \end{CJK} \end{document}
可以在LaTeX中使用的字体有
fs 仿宋
song 宋体
kai 楷体
hei 黑体
li 隶书
you 幼圆


8. 测试
在解压缩后的文件中包含一个test子目录,其中包含了三个简单的测试文件,cjkgbk.tex, cjkutf8.tex, ctextest.tex。可以运行下列命令来进行测试
代码:
$ latex cjkgbk $ xdvi cjkgbk $ dvipdf -o cjkgbk.ps cjkgbk $ dvipdfm cjkgbk $ dvipdfmx cjkgbk $ pdflatex cjkgbk
上述命令应该能够产生所预期的结果。如果上述测试全部通过,可以删除buildfont子目录。

9. 最后的说明
mkfonts 将生成下列文件:

字体定义文件
c19fs.fd c19song.fd c19kai.fd c19hei.fd c19li.fd c19you.fd
这些是使用GBK编码的字体定义文件,分别表示仿宋体,宋体,楷体,黑体,隶书,幼圆。

c70fs.fd c70song.fd c70kai.fd c70hei.fd c70li.fd c70you.fd
这些是使用UTF8编码的字体定义文件,分别表示仿宋体,宋体,楷体,黑体,隶书,幼圆.

字体映射文件
unifs.map unisong.map unikai.map unili.map uniyou.map
这些是dvipdfm所需要的字体映射文件。

fs-enc.map song-enc.map kai-enc.map hei-enc.map li-enc.map you-enc.map
这些是pdftex所需要的字体映射文件。

各种字型定义文件,比如*.tfm *.afm *.vf等。
上传的附件
文件类型: gz cjkfonts.tar.gz (105.3 KB, 165 次查看)

此帖于 08-10-31 23:10 被 lchxr 编辑.
  lchxr 当前离线   回复时引用此帖
旧 08-11-11, 22:54 第 2 帖
lchxr
 
 
 
注册会员  
  注册日期: Apr 2006
  帖子: 44
  精华: 3
 

标题: Linux系统中为texlive生成CJK字体(补充)


一点补充:

如果按照上面的步骤安装了中文字体,在执行dvipdfmx可能会出错,原因是找不到CMap编码定义文件。CMap的作用是将字符编码转换成CID。

在mkfonts的最后,有一条命令是将cmap拷贝到$HOME/fonts目录中,
引用:
# Lastly, copy necessay files for CTeX
cp cid-x $TEXMF/fonts/map/dvipdfm/cid-x.map
cp -a cmap $TEXMF/fonts/
#cp -a ctex $TEXMF/tex/latex
#cp -a ctexutf8 $TEXMF/tex/latex
因为压缩包的大小超出linuxsir 200kB的限制,因此我在上传cjkfonts.tar.gz时将cmap的内容删除了。CMap for Chinese包含在xpdf软件包中,可以从ftp://ftp.foolabs.com/pub/xpdf/xpdf-...plified.tar.gz下载。解压后将cmap目录拷贝到$TEXMF/fonts子目录中,然后执行一次texhash.

可能已经注意到了还有两条拷贝命令被注释掉了。这两条命令是拷贝CTeX的两个目录,目的是增加对ctexbook.sty 和ctexart.cls的支持,如果你确实需要它们,可以从CTeX的发行版中找到这两个目录,自己拷贝一下。

2008年11月11日

此帖于 08-11-11 23:06 被 lchxr 编辑. 原因: 增加对cmap的补充
  lchxr 当前离线   回复时引用此帖
旧 08-11-12, 22:00 第 3 帖
zhihaochen44
 
zhihaochen44 的头像
 
 
注册会员  
  注册日期: Oct 2003
  我的住址: 人间天堂
  帖子: 326
  精华: 1
 

对texlive,一无所知。。。啊







__________________
Lenovo ThinkPad X200
Processor Intel Core 2 Duo
Screen 12.1” WXGA Widescreen
RAM 3GB
HDD 250GB
Graphics Intel Graphics Media Accelerator X4500
Network Intel 82567LM Gigabit Ethernet, Intel 5100 802.11abgn , Bluetooth,Camera,Fingerprint
入手X200->slk current
=================================
(づ ̄ 3 ̄)づ请多多指教!!共同学习!!(づ ̄ 3 ̄)づ
  zhihaochen44 当前离线   回复时引用此帖
旧 08-11-13, 10:28 第 4 帖
duangw
 
 
 
注册会员  
  注册日期: Oct 2006
  帖子: 128
  精华: 0
 

引用:
作者: lchxr
4. 准备工作
4.3 运行mkfonts之前需要设置TTFPATH环境变量告知mkfonts从那里找到TTF字体。有几种方法:
a. mkfonts缺省地认为TTF字体在当前目录中,因此必须先拷贝相应的字体文件到当前目录中,比如
代码:
$ cp /usr/share/fonts/TTF/sim*.tt? .
感谢楼主分享!
请问这里使用的sim*.tt?字体是simsun吗?能否用文泉驿正黑代替?







__________________
Slackware64 13.0 (2.6.29.6)
AMD Athlon 64 X2 4200+
NVIDIA GeForce 7050 PV / NVIDIA nForce 630a
4 GB DDR2-800 DDR2 SDRAM
四海之内皆兄弟!http://www.duangw.cn
  duangw 当前离线   回复时引用此帖
旧 08-11-13, 18:49 第 5 帖
lchxr
 
 
 
注册会员  
  注册日期: Apr 2006
  帖子: 44
  精华: 3
 

引用:
请问这里使用的sim*.tt?字体是simsun吗?能否用文泉驿正黑代替?
是的,simsun.ttc,simfang.ttf,simkai.ttf,simhei.ttf,simli.ttf,simyou.ttf。或者直接从Windows系统拷贝。文泉驿字体我没有试验过,我不清楚。
  lchxr 当前离线   回复时引用此帖
旧 08-11-13, 20:06 第 6 帖
duangw
 
 
 
注册会员  
  注册日期: Oct 2006
  帖子: 128
  精华: 0
 

谢谢!
我一直想在linux下用ctex,但就是这个字体的版权问题头疼。
  duangw 当前离线   回复时引用此帖
旧 08-11-13, 21:12 第 7 帖
lchxr
 
 
 
注册会员  
  注册日期: Apr 2006
  帖子: 44
  精华: 3
 

引用:
作者: duangw
谢谢!
我一直想在linux下用ctex,但就是这个字体的版权问题头疼。
你可以试着修改mkfonts脚本,看行不行。
  lchxr 当前离线   回复时引用此帖
旧 09-08-22, 22:47 第 8 帖
realasking
 
realasking 的头像
 
 
注册会员  
  注册日期: Sep 2008
  帖子: 859
  精华: 0
 

不错的脚本,
自动化程度挺高的,
谢谢楼主。







__________________
CPU: Pentium Dual-Core T4400
RAM: DDR 3 1333 3G
M/B: Nvidia MCP79+ Geforce 310M

Desktop:
1.Windows 2008R2 with OFFICE 2010+Tex Live 2011+KDE 4.7.0
2.Fedora 12 x86_64+KDE 4.5.2 + fvwm with OpenOffice+Tex Live 2011
3.Arch Linux + fluxbox + KDE 4.7.0

My blog:
http://hi.baidu.com/realasking
  realasking 当前离线   回复时引用此帖
旧 09-08-25, 01:18 第 9 帖
动画片
 
 
 
注册会员  
  注册日期: Mar 2007
  帖子: 1
  精华: 0
 

好贴,我折腾不见效果,lz老大出马一个顶N。
  动画片 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 06:30


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2012, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2011, LinuxSir.Org