不得不先赞一下现在texlive在linux上的安装已经非常方便了,刚更新2012不久
发现在2011就中一直困扰的ctex包中文字体问题还是没有解决,只好自己动手了
错误信息如下:
|
Invalid fontname `[SIMKAI.TTF]/ICU', contains '[' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! fontspec error: "font-not-found" ! ! The font "[SIMKAI.TTF]" cannot be found. ! ! See the fontspec documentation for further information. ! ! For immediate help type H <return>. !............................................... |
错误说的很清楚,字体名错误,字体找不到
解决方法如下:
修改ctex-xecjk-winfonts.def
Texlive 2012下的相对路径为 /texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def
如果是默认安装位置,完整路径应为 /usr/local/texlive/2012/texmf-dist/tex/latex/ctex/fontset/ctex-xecjk-winfonts.def
原始文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
% ctex-xecjk-winfonts.def: Windows 的 xeCJK 字体设置,默认为六种中易字体 % vim:ft=tex \setCJKmainfont[BoldFont={SimHei},ItalicFont={[SIMKAI.TTF]}] {SimSun} \setCJKsansfont{SimHei} \setCJKmonofont{[SIMFANG.TTF]} \setCJKfamilyfont{zhsong}{SimSun} \setCJKfamilyfont{zhhei}{SimHei} \setCJKfamilyfont{zhkai}{[SIMKAI.TTF]} \setCJKfamilyfont{zhfs}{[SIMFANG.TTF]} % \setCJKfamilyfont{zhli}{LiSu} % \setCJKfamilyfont{zhyou}{YouYuan} \newcommand*{\songti}{\CJKfamily{zhsong}} % 宋体 \newcommand*{\heiti}{\CJKfamily{zhhei}} % 黑体 \newcommand*{\kaishu}{\CJKfamily{zhkai}} % 楷书 \newcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋 % \newcommand*{\lishu}{\CJKfamily{zhli}} % 隶书 % \newcommand*{\youyuan}{\CJKfamily{zhyou}} % 幼圆 \endinput |
其中带中括号的字体名都是需要修改的,这时需运行
来查看系统中的中文字体,记下楷体和仿宋对应的名称,即显示信息中第一个英文
在我的系统中楷体是 KaiTi,仿宋是 FangSong
不过会因为安装的字体版本不同而有所差异
接下来只要将对应的字体修改即可,即
把[SIMKAI.TTF]修改为KaiTi
把[SIMFANG.TTF]修改为FangSong
需要注意不止一处
vim下的替换命令
|
:%s/\[SIMKAI.TTF\]/KaiTi/g :%s/\[SIMFANG.TTF\]/FangSong/g |
其他一些废话:
如果自己安装过ctex包(可能安装在了texmf-local目录下),一定要删去
另一个解决方案是使用Adobe的字体,调用ctex包时增加adobefonts参数即可
关于ctex包这个错误的原因开发者在这里已经说的很清楚,也就不再赘述。
虽然作者不推荐修改,但是确实没有找到更方便的解决办法。欢迎讨论交流。