免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4072 | 回复: 0

xelatex的生僻字处理 [复制链接]

论坛徽章:
0
发表于 2009-06-02 15:31 |显示全部楼层

在使用latex进行中文排版时,难免遇到生僻字。如果处理不好,则会降低排版者的成就感、加重挫折感,阅读者也会心生不爽,暗怨排版者偷懒。排版
装帧精良、品相完好的电子书是每个LaTeX爱好者的追求,而生僻字的处理这一细节也不容小觑。这里我分享一下自己在对付生僻字方面的一些心得,抛出这块
板砖,但愿能引出玉石。希望高手不吝赐教,晒出各自的实践经验,以便大家共同提高。
一、原装正版方案:安装字库
最直接,同时也是最有效的处理方法,莫过于安装大字库。这里的大字库包括两方面,简单来说就是,源文件的字库和PDF的字库。
源文件的字库是为了让排版者看清楚所要处理的内容是什么。生僻字在tex文件中一抹黑全是乱码,在生成的PDF中却是可读汉字,这样的事情
不是不可能。这说明源文件所依赖的计算机环境中,字体信息不全。而PDF所使用的字体却可以与计算机环境字体相对独立,因此出现上面所说的怪事。
我安装了GB18030 Support Package的SimSun18030.ttc以及方正超大字符集。这样一来,在计算机中,只要选中了编码和字体,就不存在无法显示的小方框了。
但是,即使能在计算机中正常显示,也未必能在生成的PDF中正常显示。这是因为,latex系统依赖额外的字型描述信息,才能画出正确的汉字。
由于latex的两种字体中,GBK家族字体丰富,字型饱满,虽然支持的汉字有限,但是仍然是主流选择。而utf8家族里,尤其Unicode超大字符集字体,虽然支持更多的汉字,但是由于字体选择少,字型不丰满,较少人选择。
推荐文章:
texlive2005中文定制版(免安装)-CTeXlive2005 (20051018)
二、枪版方案:录制播放
方法要领:使用其它工具画出汉字,保存成图片格式,以便调用。高手可以使用EPS图,中手们使用jpg或png就可以了。
假设要生成左”扌”右”中”这个字,(表示我们要将生僻字握在手中),其字体代码为AA220。
环境:windowsxp+方正超大字符集+office2003+Photoshop CS9.0+CTEX
注意,需要加入\usepackage{graphicx}才能正确编译。
  • 打开word2003,新建文档,插入->符号,在下方的输入框中输入22AA0,如果所示,就会出现左”扌”右”中”这个字,如图所示:

    点击插入,就会在word中出现该字。如图:

    选择并复制该字备用。
  • 打开PS,新建文档,参数如图所示:

    点击”好”按钮。由于72X72较小,需调整显示比例到看着顺眼的比例。
    然后选择”横排文字工具”,点击图像的左中部,显示出跳跃的光标。此时选择”simsun funder extended”字体,字号选72点,其余默认。
  • 在图像中粘贴,如图:

  • 选择图层->栅格化->文字,使文字融入图层。
  • 保存为22aa0.jpg图像备用。
  • 在latex中加入适当语句显示该图片。
    latex语句:左手\lower0.15ex\hbox{\includegraphics[width=.85em]{22aa0ps.jpg}}右中
    效果如图:

    三、DIY方案:仓颉造字
    众所周知,汉字是由笔画、偏旁部首等零部件攒成的。找到正确的零部件,再以适当的方式组合在一起,就可以定制特殊的汉字。此方案为上两种方案的补充。仍以左手右中这个生僻字为例。
    注意,需要加入\usepackage{graphicx}才能正确编译。
    LaTeX语句:\hbox{\scalebox{0.7}[1]{扌}\kern-.3em\scalebox{0.6}[1]{中}}
    语法要点:
    • hbox{}:插入一个水平盒子
    • \scalebox{水平缩放因子}[垂直缩放因子]{对象}
    • kern:水平方向平移一个对象。与之对应,可以使用lower在垂直方向平移对象。

    整句话的意思是,插入一个水平盒子,里面先排版一个”扌”字符,它的宽度缩小到70%,高度不变。之后再排版一个”中”字符,其宽度为60%,高度为普通高度,再将这个”中”向左平移0.3em个单位。
    为什么”扌”的宽度为60%呢?这是因为,它的右侧是空白的,占了一部分空间,如果分配的宽度太小,会使提手旁太难看。另外,由于0.6+0.7==1.3,所以需要使之重合0.3,才能使之正好占100%的一个字的空间,no more, no less。
    我们看一下对比效果:

    可以看出仓颉版的更自然一些。再来补充几句。
    左右结构的汉字要求”左收右放“,即,左边的字要瘦些,右边的字要肥些,搭配才好看。请看图中的“黑猫”两字的比例。

    对应语句为{特立独行的小\hbox\scalebox{0.4}[1]{黑}\kern-.05em\scalebox{0.55}[1]{猫}}真好看
    左边为0.4,右边为0.55,缩进了0.05。如果不信可以看看”林”字,左边的”木”是不是比右边的”木”要瘦小,而且一捺也缩成了点。这种情况,如果没有合适的偏旁,用两个”木”生造出来的”林”字会很难看的。
    反转、倒立、上下结构的也可以制作,例如:

    对应语句为:
    \hbox{\scalebox{-1}
    [1]{特}\lower-1.6ex\hbox{\scalebox{1}[-1]{立}}}独行的\hbox{\scalebox{0.5}
    [0.5]{小}\lower-1.0ex\hbox{\scalebox{1}[0.4]{黑}}\lower.1ex\hbox{\kern-1em
    \scalebox{1}[0.5]{猫}}}真好看
    好了,如果您受累读了这篇文章,欢迎进行这样的思考,权作作业:
  • 半包围的字如何进行排版?例如”边”字。提示:使用kern与lower进行平移。
  • 进阶作业:如何把左右结构、上下结构的模式作成宏,以便快速造字?例如:\leftright{扌}[0.7]{手}[0.6],(表示左边缩至70%,右边缩至60%,同时右边向左边平移0.6+0.7-1=0.3)。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69656/showart_1952549.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP