LaTeX如何通过xeCJK使用本地字体?

LaTeX如何通过xeCJK使用本地字体?

 

我们在使用LaTex的时候,一般情况下只需要使用系统自带的字体,但是在很多场合我们仍然需要使用一些特殊字体,但是如果按照常规的方法使用字体似乎不可行。

例如,我们查看系统字体,看到系统确实安装了汉仪雪君体简字体

 

 

 

 怎么办?


 

 

在编写的.tex文件的导言区导入宏包: \usepackage{xeCJK}  % 中文字体扩展管理宏包,务必添加!!

 

我们再在LaTex编辑器中写入下面配对命令。注意:本地字体不可以直接在tex中使用,需要转化处理,步骤两步:

1. 首先,将tex系统不认识的这个本地字体加入到CJKfamily大家庭,使其被tex系统识别(理解即可~),操作方法如下:

   

            \setCJKfamilyfont{重新命名的字体,如hyxjj} {系统内的某个字体名,如 汉仪雪君体简.TTF}

 

2. 然后,定义新的字体调用命令。

 

          \newcommand{  \hyxjj } {  \CJKfamily{hyxjj} %创建新字体调用命令

 

之后,就可以在正文中通过调用上面创立的新命令{\hyxjj xxx}实现对文本xxx的修饰

 

举例:

 

\setCJKfamilyfont{hyxjj}{汉仪雪君体简.TTF} %汉仪雪君体简体

\newcommand{\hyxjj}{\CJKfamily{hyxjj}} 

  

然后,在正文部分使用刚才声明的字体:

\hyxjj 循环卷积混叠的产生与消除


然后编译,发现报了如下的错误

fontspec error: "font-not-found" The font "汉仪雪君体简" cannot be found. For immediate help type H <return>. ...family {hyxjj}循环卷积混叠的产生与消除}{1}{section.1.1}
fontspec error: "font-not-found" The font "汉仪雪君体简" cannot be found. For immediate help type H <return>. ...family {hyxjj}循环卷积混叠的产生与消除}{1}{section.1.1}
fontspec error: "font-not-found" The font "汉仪雪君体简" cannot be found. For immediate help type H <return>. ...family {hyxjj}循环卷积混叠的产生与消除}{1}{section.1.1}


显然,在进行编译时,系统找不到汉仪雪君体简的字体库,但是当我们使用其他宋体字体库时就可以,经过多次尝试,我们猜想应该是操作系统确实安装了该字体,但是LaTex在调用该字体时有些问题,这个问题在于字体名与字体库文件名不一致,或者说编码不一致,导致编译时没有正确匹配到字体文件,所以我们现在的方法有两种:

  • 更改LaTex的字体文件匹配编码方式
  • 更改字体文件的字体名,使字体名全部为ASCLL编码方式,或者UTF-8编码方式

显然,我们用方法2简单很多,于是我们开始寻找一种能改变字体名的工具,比较幸运的是,确实有像FontCreator这样的字体生成工具,这个当然可以更改字体名。于是我们使用FontCreator对字体文件进行更改

打开FontCreator,并找到需要更改的字体文件,打开它,然后在字体属性中对文件名进行更改,如下图

 

 

 

 

我们将左图的原文件属性修改为右图的属性,这样就更改了文件的字体名,然后导出为TTF文件,我们再把这个文件粘贴到系统字体路径下,系统就会自动安装刚才的字体,这里注意字体名很有可能不是文件名,为了保险起见,我们将字体名和文件名都改为HYXueJunJ和HYXueJunJ.TTF。
       以上我们就完成了字体名的更改,接下来我们重新使用LaTex尝试编译

\setCJKfamilyfont{hyxjj}{HYXueJunJ.TTF} %汉仪雪君体简体
\newcommand{\hyxjj}{\CJKfamily{hyxjj}} %将调用命令重定义为\hyxjj
然后我们再使用这个命令来码字看看

 

 

和我们预想的一样,确实可以以汉仪雪君体简的形式编译  ,同理我们可以声明其他字体

\setCJKfamilyfont{qxybxsj}{QuanXinYingBiXingShuJ.TTF} %全书硬笔行书简体
\newcommand{\qxybxsj}{\CJKfamily{qxybxsj}}
调用重新定义的字体调用命令,然后编译

 

 

 声明的字体不会影响字号的选择,这样理论上我们就可以安装任何我们想要使用的字体,当然板书的形式是次要的,内容才是核心。

声明:以上涉及使用的字体仅仅是用来学习使用的,严谨作为商业用途,若使用者乱用构成侵权的后果自负。

 

参考:https://blog.csdn.net/C_ElecM/article/details/100802178

汉仪雪君体简.TTF
posted @ 2020-02-26 15:55  Tsingke  阅读(4756)  评论(0编辑  收藏  举报