![Lato 字体未将字母 ft 和 ti 分开](https://linux22.com/image/440708/Lato%20%E5%AD%97%E4%BD%93%E6%9C%AA%E5%B0%86%E5%AD%97%E6%AF%8D%20ft%20%E5%92%8C%20ti%20%E5%88%86%E5%BC%80.png)
我正在为文档使用 Lato 字体,但只要字母“ft”和“ti”相邻,此字体就无法将字符分开。在输出 pdf 查看器中复制粘贴单词时,会发生奇怪的事情,因为“ti”被视为一个字母。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Lato}
\begin{document}
Simulations \huge{\textbf{Institute, simulations}}
\end{document}
输出:
这不应该是通常的输出。正如人们可以在网站上尝试的那样
https://fonts2u.com/lato-regular.font?ptext=Simulations输出应如下所示(“t”和“i”之间有空格分隔)
答案1
显然,Lato TrueType 字体在liga
(标准连字)功能中除了真正标准的连字之外,还具有特殊的连字。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Lato}
\begin{document}
Institute, simulations
flagstaff finicky official
\end{document}
另一方面,这是我从 PDF 文件中复制粘贴文本得到的结果:
Institute, simulations
flagstaff finicky official
因此奇怪的连字符在此过程中被分裂了。
您可以禁用连字,但只能禁用全部其中。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Lato}[
Ligatures=NoCommon,
]
\begin{document}
Institute, simulations
flagstaff finicky official
\end{document}
事实上,这甚至更好:字形实际上不需要连字。
答案2
这个字体系列的表现令人惊讶。应该可以通过这种方式关闭你不喜欢的连字:
\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.handlers.otf.addfeature{
name = "noft",
type = "multiple",
data = {
['f_f_t.liga'] = { "f", "f", "t" },
['f_t.liga'] = { "f", "t" },
['t_t_i.liga'] = { "t", "t", "i" },
['t_i.liga'] = { "t", "i" },
},
}
}
\setsansfont{Lato}[RawFeature=+noft]
\begin{document}
\sffamily
Institute attic simulations pfft baffle five flying officials
\end{document}
但是,输出充满了 T 连字符。
如果您想要标准连字而不使用其他连字,请关闭liga
并重新添加所需的连字rlig
(默认情况下处于启用状态):
\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.handlers.otf.addfeature{
name = "rlig",
type = "ligature",
data = {
['ffi'] = { "f", "f", "i" },
['ffl'] = { "f", "f", "l" },
['ff'] = { "f", "f" },
['fi'] = { "f", "i" },
['fl'] = { "f", "l" },
},
}
}
\setsansfont{Lato}[Ligatures=NoCommon]
\begin{document}
\sffamily
Institute attic simulations pfft baffle five flying officials
\end{document}
我想不出为什么第二种方法有效而第一种方法无效。解决方案需要使用 进行编译lualatex
。