LuaTeX 没有找到 liga OpenType 功能

LuaTeX 没有找到 liga OpenType 功能

我在 FontForge 中创建了一个自定义字体并生成了它的 OTF。它包含常见的连字 fi、fl、ff、ffi 和 ffl。我使用字体的方式如下:

\documentclass{article}

\usepackage{fontspec}
\setmainfont[Ligatures={Common}]{MyFont-Regular}

\begin{document}
fi  
\end{document}

调用“lualatex mytest”得到以下结果:

This is LuaTeX, Version 1.10.0 (TeX Live 2019/Debian)
 restricted system commands enabled.
(./mytest.tex
LaTeX2e <2020-02-02> patch level 2
 L3 programming layer <2020-02-14>
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
luaotfload | db : Font names database not found, generating new one.
luaotfload | db : This can take several minutes; please be patient.))
(/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def)))
(/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty)
(/usr/share/texlive/texmf-dist/tex/latex/fontspec/fontspec.cfg)))

Package fontspec Warning: OpenType feature 'Ligatures=Common' (liga) not
(fontspec)                available for font 'MyFont-Regular' with script
(fontspec)                'CustomDefault' and language 'Default'.


Package fontspec Warning: OpenType feature 'Ligatures=Common' (liga) not
(fontspec)                available for font 'MyFont-Regular' with script
(fontspec)                'CustomDefault' and language 'Default'.

(./mytest.aux) (/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd) [1{/var/l
ib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./mytest.aux))
 406 words of node memory still in use:
   3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 4 attribute, 48 glue_spec
, 4 attribute_list, 1 write nodes
   avail lists: 1:1,2:15,3:2,4:1,5:21,6:1,7:14,9:7
</home/bronger/fonts/MyFont-Regular.otf>
Output written on mytest.pdf (1 page, 2424 bytes).
Transcript written on mytest.log.

我在 PDF 中看不到我的 fi 连字符。XeLaTeX 处理完全相同的脚本时没有任何警告,PDF 中也出现了 fi 连字符。此外,LibreOffice Writer 会显示连字符,如果我从字体元数据中删除带有替换表的“查找”“liga”条目,它就不会显示。FontForge 中给出的此查找条目的脚本是“latn{dflt}”。

但是,我这里的专业 OTF 文件确实适用于 LuaTeX,因此应该能够以某种方式使连字表可用于 LuaTeX。不幸的是,我没有看到 FontForge 中的决定性差异。

如何使用 LuaTeX 在 PDF 中获取连字符?(当然,无需手动选择字符。)

(备注:我想使用 LuaTeX 而不是 XeTeX,因为它支持微类型的字符扩展,以实现更好的换行。)

答案1

至少需要以下两点,以便 LuaTeX 将连字识别为 OTF 字体功能:

  • “liga” 功能的脚本/语言元数据需要包含条目“DFLN{dflt}”。FontForge 默认插入此条目以及“latn{dflt}”。
  • 生成 OTF 字体时(我制作了一个 CFF OpenType),您必须选中导出选项“OpenType”的 SFTN 部分并取消标记“Apple”。这也是 FontForge 的默认设置。

后者对我来说有所不同,而且结果是致命的。我不知道为什么对我来说会有所不同。可能我的设置在之前的 FontForge 版本中是默认设置,或者我几年前就摆弄过设置。无论如何。

我应该补充一点,[Ligatures={Common}]如果 OTF 文件中的所有内容都设置正确,则不需要上述内容。

相关内容