LuaLaTeX 无法渲染“ať”中第二行和最后一行的“ť”。XeLaTeX 可以正确渲染。
梅威瑟:
\documentclass[paper=A6]{scrartcl}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\setmainfont[]{Andika New Basic}
\title{Říkanky}
\date{}
\begin{document}
Čistím zoubky řízy, řízy,\\
ať jsou bílé jako břízy.\\
Vlevo, vpravo, vpředu, vzadu,\\
horní a pak dolní řadu,\\
čistím zoubky řízy, říz,\\
ať má každý radost z nich.
\end{document}
对比
更新
现在我仔细查看日志文件,我可以看到
Missing character: There is no ť in font Andika New Basic/OT:script=latn;langua
ge=DFLT;mapping=tex-text;mapping=tex-text;!
答案1
你可以做
\documentclass[paper=A6]{scrartcl}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
%\setmainfont[]{Andika New Basic}
\setmainfont[]{AndikaNewBasic-R.ttf}
\usepackage{newunicodechar}
\newunicodechar{ť}{t^^^^030c}
\title{Říkanky}
\date{}
\begin{document}
Čistím zoubky řízy, řízy,\\
ať jsou bílé jako břízy.\\
Vlevo, vpravo, vpředu, vzadu,\\
horní a pak dolní řadu,\\
čistím zoubky řízy, říz,\\
ať má každý radost z nich.
\end{document}
xetex(或者更确切地说是 harfbuzz)将尝试使用基数和组合重音来填充字体中缺少的复合字符。在这里,我\newunicodechar
在宏级别执行相同的操作,将 ť 声明为要扩展的活动字符,\v{t}
以便它在 luatex 和 xetex 中起作用。
2017 年更新
在即将发布的 2017/01/01 版 latex 和 fontspec 中,将可以使用更简单的声明形式,您可以声明一个没有预组合 ť 的新 unicode 变体编码,因此声明\v{t}
使用默认重音\v
符号,t
后跟组合 v 重音符号,因此产生与上面相同的输出,但无需^^^^030c
明确使用,也不会影响t
文档中使用的可能仍使用预组合字形的其他字体。
\documentclass[paper=A6]{scrartcl}
\usepackage{fontspec}
\DeclareUnicodeEncoding{TUX}{%
\input{tuenc.def}% load usual definitions
\UndeclareComposite{\v}{t}% This variant has no ť
}
\usepackage{newunicodechar}
\newunicodechar{ť}{\v{t}}% make ť act like \v{t}
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
%\setmainfont[]{Andika New Basic}
\setmainfont[NFSSEncoding=TUX]{AndikaNewBasic-R.ttf}
\title{Říkanky}
\date{}
\begin{document}
Čistím zoubky řízy, řízy,\\
ať jsou bílé jako břízy.\\
Vlevo, vpravo, vpředu, vzadu,\\
horní a pak dolní řadu,\\
čistím zoubky řízy, říz,\\
ať má každý radost z nich.
\end{document}