zoukankan      html  css  js  c++  java
  • LaTeX如何通过xeCJK使用本地字体?

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

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

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

     

     怎么办?


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

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

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

       

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

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

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

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

    举例:

    setCJKfamilyfont{hyxjj}{汉仪雪君体简.TTF} %汉仪雪君体简体
    
    
    ewcommand{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} %汉仪雪君体简体
    ewcommand{hyxjj}{CJKfamily{hyxjj}} %将调用命令重定义为hyxjj
    然后我们再使用这个命令来码字看看

     

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

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

     

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

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

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

    汉仪雪君体简.TTF
  • 相关阅读:
    在VSCode中使用码云
    自定义博客样式
    bolb、bloburl、file、base64间的转换
    html2canvas的使用:vue中将div导出成图片
    vue-to-pdf的使用:vue中将div转换为pdf文件
    早期javac编译器优化
    HttpClient4.3 连接池参数配置及源码解读
    Java编译程序和运行过程详解
    JVM中的常量池详解
    MySQL索引背后的数据结构及原理
  • 原文地址:https://www.cnblogs.com/tsingke/p/12367423.html
Copyright © 2011-2022 走看看