这个封闭式问题促使我提出一个更普遍的问题和一个我认为这里尚未证明的解决方案。
使用 LuaLaTeX 编译并使用 Unicode 输入时,如何为主字体中没有的特定 Unicode 字符设置后备字体?
我欢迎大家对我所展示的方法提出其他方法或提出批评。
答案1
我们可以定义一个命令来使用 切换到后备字体fontspec
。
然后我们可以用来newunicodechar
将缺失的 Unicode 字符映射到切换到这些字符的后备字体的命令。
\documentclass{article}
\usepackage{fontspec, newunicodechar}
\setmainfont{PT Serif}
\newfontfamily{\fallbackfont}{Linux Libertine O}[Scale=MatchLowercase]
\DeclareTextFontCommand{\textfallback}{\fallbackfont}
\newunicodechar{ɔ}{\textfallback{ɔ}}
\newunicodechar{ϱ}{\textfallback{ϱ}}
\begin{document}
Hellɔ woϱld.
\end{document}
输出pdffonts
显示两种字体均被使用:
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
NUOAQT+PTSerif-Regular CID TrueType yes yes yes 4 0
UAEGUX+LinLibertineO CID Type 0C yes yes yes 5 0
编辑:
我们还可以定义一个通用命令来设置缺失字符。它需要一个可选参数,默认为\textfallback
,但如果需要额外的后备字体,则可以插入不同的字体。
\newcommand{\fallbackchar}[2][\textfallback]{%
\newunicodechar{#2}{#1{#2}}%
}
\fallbackchar{ɔ}
\fallbackchar{ϱ}