[原创] 在slackware 12.1 中,为tetex 3 安装 cjk 支持。[已完成]
时间:2008-12-01
来源:互联网
现在推荐大家用texlive但是texlive太大了。大神Patrick一直没有替换tetex。
在linuxquestion上的帖子也提到了。在12.2中有可能用一个新的tex系统。
但是我估计还是不会变,Patrick 一直比较保守。
evesea 在 《slackware12.0安装CJK-求安装经验-----弄了好久,该弄的好像都弄了,还不行,只好暂时放弃了》
http://www.linuxsir.org/bbs/thread336990.html
前两天看到一个《linux可以干什么》的帖子。其中有个latex高高手。
很有感触。上网google了一下。把这个搞定。做了一个安装脚本。
希望也可以帮助其他人。
主要参考两篇文章
1. 替 LaTeX CJK 新增字型 (感谢李果正 先生的贡献)
http://blog.bs2.to/post/EdwardLee/7672
http://www.linuxsir.org/bbs/thread337571.html
但是是为texlive做的,目录不同,还有是安装到$HOME目录的。其他人不能用。
这里主要是讲如何打包成slackware专用的。
方便以后使用。
必备软件
用到的软件主要是 fontforge。 安装脚本到 slackbuilds去下。
注意一点的是要把freetype的代码也拷进去。(freetype的代码我用的是slackware提供的)
同时我也打了bytecode的补丁。
CJK是一个宏包,支持CJK的编译。现在最新版本是4.8.1,把下来的文件解压缩。
http://cjk.ffii.org/
同时重命名为 CJK。
你也可以自己制作一个slackware的安装包。方便以后重新安装。
生成字体
要用中文的话要相应的字体,tetex中用type1的字体比较方便。但是现在xetex 可以直接用ttf了。
在这里我使用的是UTF8的字体。关于gbk的我不用。也就是说我的LC_CTYPE=zh_CN.UTF-8
要是gbk的请自己修改脚本。同时我没有为pdftex 做字体映射。slackware中没有dvipdfmx,所以
相应的字体也没有生成。
但是用dvipdfm的话没有问题。同时中文pdf书签也没有问题。只是不能copy。
如果要使用copy功能,请参考上面提到的第2篇文章的脚本。
上面废话这么多,其实就是一句。 用LC_CTYPE=zh_CN.UTF-8。保证是utf8的文件。gbk没有测试。
估计修改脚本生成对应的字体也行。
由于生成脚本需要 一个脚本文件 subfonts.pe (在CJK包的utils/subfonts 下面)。
还有sfd文件。大家可以google一下。同时我在附件里也包含了。
目录结构是
=================================================
font-make->
-> createlatexfont.sh
-> subfonts.pe
-> UBig5.sfd
-> UGBK.sfd
-> Unicode.sfd
=================================================
大家把要制作的ttf字体放到这个目录里面,然后修改脚本,使 $FONTFILE 对应ttf。
同时$FONTN 指定要在 latex中使用的字体名。
整个脚本如下
#!/bin/bash CWD=`pwd` TMP=${TMP:-/tmp} FONTN=wqyzh FONTFILE=wqy-zenhei.ttf FONTSCRIPT=subfonts.pe # you can change this sfd file to generate # the gbk or big file, But need to change the fd file name # and the the fd file place. line 31 and line 67 here script SFDFILE=Unicode.sfd VERSION=0.6.26 ARCH=i486 BUILD=${BUILD:-1} PKG=$TMP/package-$FONTN MYTEXMF=$PKG/usr/share/texmf MYFONT=$MYTEXMF/fonts T1DIR=$MYFONT/type1/CJK/$FONTN TFMDIR=$MYFONT/tfm/CJK/$FONTN AFMDIR=$MYFONT/afm/CJK/$FONTN ENCDIR=$MYFONT/enc/CJK/$FONTN #VFDIR=$MYFONT/vf/CJK/$FONTN MAPDIR=$MYFONT/map/dvips/CJK/ LTXDIR=$MYTEXMF/tex/latex/CJK rm -rf $PKG # do not use the virtual font $VFDIR mkdir -p $T1DIR $TFMDIR $AFMDIR $ENCDIR $MAPDIR $LTXDIR/UTF8 cd $TMP rm -rf $FONTN-$VERSION mkdir $FONTN-$VERSION cd $FONTN-$VERSION #cp $CWD/$FONTFILE . # begin to generate the unicode type1 fonts echo "generate the type1 font $FONTFILE, this will take a long time." fontforge -script $CWD/$FONTSCRIPT $CWD/$FONTFILE $FONTN $CWD/$SFDFILE # generate the font map file for x in *.tfm do echo "${x%.tfm} ${x%.tfm} < ${x%.tfm}.pfb" >> ${FONTN}.map done # do not generate the italic font, there have some problem. #for x in *.afm #do # y=`echo $x | sed "s/$FONTN/${FONTN}sl/"` # z=`afm2tfm ${x} -s .167 ${y%.afm}.tfm` # echo "$z < ${x%.afm}.pfb" >> ${FONTN}.map #done # generate the fd file used in the latex, # 70 is mean unicode, 19 is gbk, 00 is big5 # ONLY the normal roman font. cat > c70$FONTN.fd << EOF % This is the file c70${FONTN}.fd of the CJK package % for using Chinese characters with LaTeX2e % % Created by Chunhua Li % % Version 4.7.0 (28-May-2007) \def\fileversion{4.7.0} \def\filedate{2007/05/28} \ProvidesFile{c70${FONTN}.fd}[\filedate\space\fileversion] % character set: Unicode U+0080 - U+FFFD % font encoding: Unicode \DeclareFontFamily{C70}{${FONTN}}{\hyphenchar \font\m@ne} \DeclareFontShape{C70}{${FONTN}}{m}{n}{<-> CJK * ${FONTN}}{} \DeclareFontShape{C70}{${FONTN}}{bx}{n}{<-> CJKb * ${FONTN}}{\CJKbold} \endinput EOF # now move the file to correct place cp *.tfm $TFMDIR cp *.afm $AFMDIR cp *.enc $ENCDIR cp *.pfb $T1DIR mv -v ${FONTN}.map $MAPDIR mv -v c70${FONTN}.fd $LTXDIR/UTF8 #begin to pack the file cd $PKG chown -R root:root . makepkg -l y -c n $TMP/tetex-cjk-${FONTN}-${VERSION}-$ARCH-$BUILD.tgz cd $CWD cat > ${FONTN}-install.sh << EOF #!/bin/sh # Add PATH and MANPATH for teTeX: PATH="$PATH:/usr/share/texmf/bin" MANPATH="$MANPATH:/usr/share/texmf/man" texhash updmap-sys --enable Map ${FONTN}.map EOF chmod 700 ${FONTN}-install.sh echo "===========================================" echo "Please Pay Attention " echo "After install the package" echo "run the script ${FONTN}-install.sh manually"
要注意几点的是我只测试了 fireflysung.ttf wqy-zenhei.ttf 两款free字体。
对于有版权限制的字体,大家自己用脚本生成字体。
对于点阵字体,生成要很长时间,firefly我用了4、5个小时。wqy是矢量字体要好很多,
我只用了30分钟。我没有生成斜体,因为我用lchxr的脚本生成的时候,我觉得比较难看。
同时自己也不熟悉,这方面的东西。生成的只有正体。
大家可以把生成的字体备份一下,以后要处理的时候,还可以直接用。
在tex文件中使用的字体名,是在fd文件中定义的。
脚本最后自动生成了一个安装字体后。更新 tex的脚本。我的水平有限,我写在安装包里面的时候,
不起作用。我就单独生成了一个。做这个主要是因为su的时候有些PATH变量没有载入,命令无法执行。
现在用脚本就好了。 (记住要用root)
主要是两个命令
texhash 更新文件数据库。
updmap-sys --enable Map ${FONTN}.map 更新字体映射。
第二个主要是修改 /usr/share/texmf-config/web2c/updmap.cfg 在最后可以添加映射文件。
可以用vi修改。然后在 updmap-sys 一下。
这个脚本每次只处理一种字体。打成一个包。我个人觉的还是很方便的。
ps. 希望告诉多多指正。大家多提意见。 latex我本身是不熟悉的,这方面我也不行。
作者: ginkgo 发布时间: 2008-12-01
font-make-20090301.tar.bz2 (95.4 KB, 8 次查看) |
作者: ginkgo 发布时间: 2008-12-01
作者: kangjs79 发布时间: 2008-12-01
用上面提供的脚本处理出来的字体,看起来不是很清楚。
到http://www.ctex.org网站上,有个脚本来增粗字体。
#!/usr/bin/fontforge -script # 脚本使用方式举例 #fontforge -script stroke.pe Fonts-old/gbkfs/fonts/type1/chinese/gbkfs/gbkfs01.pfb #New-Fonts/gbkfs/gbkfs01.pfb if ($argc !=3) Print("") Print("Usage: ", $0, " infont outfont") Print("") Quit() else Open($1) endif SelectAll() foreach # ExpandStroke(width, line cap, line join, 0, remove internal/external flag) # flag: 1=remove internal, 2=remove external # FindIntersections() # RemoveOverlap() # Simplify() CorrectDirection() ExpandStroke(10, 0, 0, 0, 1) Simplify() endloop Generate($2)
我生成type1字体的时候用了5个小时。
但是用这个脚本增粗的时候,竟然花了15个小时。原来是16M,处理后是22.4M,
如果有人不想自己花时间,同时需要的话,可以pm我。
我贴了图片,里面的字体都是FZFS,大家可以看一下比较效果。
上面的是增粗的字体,下面是原来的字体。图片是200%。点击后可以看到大图。
fz-font-mod.png (51.5 KB, 29 次查看) |
作者: ginkgo 发布时间: 2008-12-02
不过我一直是用 texlive 里的 xetex ……
作者: grissiom 发布时间: 2008-12-02
作者: evesea 发布时间: 2009-02-21
作者: digwtx 发布时间: 2009-02-26
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28