这个问题“之前已经回答过了”,但不是直接针对这个问题。我的问题只涉及LuaLaTeX
,只涉及使用 UTF-8 编码的 OpenType 字体,只涉及文本模式(不是数学),只涉及常规主字体(已经选择)。此外,没有 shell 转义。
我寻求一个真/假测试,关于当前字体(主字体)是否具有特定 Unicode 字符的字形。如果有,我就使用它。如果没有,那么字体中肯定存在另一个字符,所以我将改用该字符。
具体情况:U+2015 HORIZONTAL BAR 在某些语言中经常用于表示引言或对话的开始。并非所有字体都有此字符。如果没有,那么我可以用相同字体中的 U+2014 EM DASH 代替。伪代码示例:
\documentclass{article}
\usepackage{fontspec} % Compile only with lualatex
\setmainfont{EB Garamond} % Or any OpenType font.
% begin pseudo-code:
\IfFontHasCharTF{\mainfont}{"2015}{\def\myowndash{"2015}}{\def\myowndash{"2014}}
% end pseudo-code
\begin{document}
They were speaking:\par
\myowndash Hello, Harry.\par
\myowndash Hello, Sue.\par
It was a brief conversation.\par
\end{document}
是的,我确实看过fontspec
文档。在文档末尾,似乎有某种 Luaaux
宏可以解决这个问题,但我不知道如何使用它。
询问之前进行了搜索,但结果要么使用了不同的编译器,要么不是 UTF-8,要么涉及替换字体(而不是来自相同字体的不同字符)。
编辑:我上面的例子在语言上是不正确的。一个英语资源说法语尽可能使用 U+2015。但几个法语资源(我能读懂法语)说使用的是 U+2014(EM DASH),而不是 U+2015。
编辑2(实际上是3,感谢Ingmar):当地大学图书馆有一本海上劳工由维克多·雨果 (Victor Hugo) 所著,1980 年在巴黎重印(因此不会与互联网混淆)。我可以看到引号破折号 (les tirets) 比我预期的长。它们像任何段落一样缩进,并与文本以一个完整的空格分隔。因此,尽管我在第一次编辑中写了什么,但 U+2015 似乎对印刷作品是正确的;U+2014 用于互联网。实际上,一旦打印到纸上,重要的是外观,而不是字符代码。