TrionesType / zhuque

朱雀仿宋/朱雀宋朝/Zhuque Fangsong: An open-source Fangsong typeface project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

顿号显示有问题

tmzqcn opened this issue · comments

commented

latex配置:
\setCJKfamilyfont{zhfs}{FONT_ZhuqueFangsong-Regular.TTF}
\renewcommand*{\fangsong}{\CJKfamily{zhfs}} % 仿宋

代码
{\fangsong 1、2、3、4,全局定位球觉得,}

显示:
https://s1.ax1x.com/2023/08/23/pPYVwse.png

当前的测试版字体只有汉字,并不包含标点符号等字符。如果您使用的是 xeCJK,可以参考这篇文章,为标点符号设定不同的字体。

这个问题,用备用字体更容易解决。

在使用xeCJK时,若当前字符不再当前字体中时,可以启用备用字体来输出,其选项是AutoFallBack

若显式加载xeCJK,那么给宏包加入该选即可:

\usepackage[AutoFallBack]{xeCJK}

若不是显式加载,比如只使用了ctex,那么在ctex宏包选项加载是没用的,这时可以将其放到文档类的选项中,会自动传递给加载的宏包:

\documentclass[AutoFallBack,twoside]{article}
\usepackage{ctex}

上述是一种比较方便的方法,也可以使用其它的方法,比如使用newunicodechar的方法,参考https://tex.stackexchange.com/questions/333171/use-a-different-font-for-characters-not-in-my-main-font。

前面一种方法的本质是在处理字符时,xeCJK利用xetex的XeTeXinterchartoks机制,在字符类别转换时插入的函数\xeCJK_fallback_symbol:NN做判断和处理,根据需要调用备用字体输出。

而后一种使用newunicodechar的方法,则直接可以将标点符号转换字符类后,定义为命令,然后定义命令的替换内容,因此在正文中出现该标点符号时,它就是一个命令,自然会使用其替换内容替换。