在弄清楚什么字体可以用来打印什么字符时,我想找到一种快速简便的方法来测试它们。我知道有很多非常有用的答案打印字符表字体(另请参阅 这里) 或者测试所有可用的字体,但我希望有一个解决方案,可以快速测试特定字体(我喜欢的)和特定字符(我需要的)。以下是我想出的办法:
\documentclass{article}
\usepackage{fontspec}
\newcommand{\fonttest}[1]{
\newfontfamily\myfont[Ligatures=TeX]{#1}
{\myfont
\textbf{#1} font test:
% here go all the characters that need to be tested, e.g.,
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz? \par
\textit{AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz?} \par
More Characters: Åå Çç Øø
Uncommon Nasals: Ẽẽ Ĩĩ Ũũ Ỹỹ \par
IPA: ʔǝŋɲɾʧɨɔɛʃʤɸɣβɡɑɐɒʙðɕʑɻɚ\par
Greek: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ αβγδεζηθικλμνξοπρσςτυφχψω \par
Ligatures:
fluffier soufflé fisticuffs fb fh ffh fj ffj fk ffk ft fft tt Qu Th ch ck ct \par
\textsc{\ldots{} and testing some Small Caps}\par
% whatever other characters you need to test for ...
\vspace{1em}
}}
\begin{document}
Testing fonts in \LaTeX\ \par
\bigskip
% and here the fonts
\fonttest{Iowan Old Style}
\fonttest{Junicode}
\fonttest{Gentium Plus}
\fonttest{Minion Pro}
%\fonttest{Linux Libertine O}
%\fonttest{your favorite system font goes here}
\end{document}
这适用于 XeLaTeX 和 LuaLaTeX 以及操作系统上安装的字体。只需将系统字体的名称作为\fonttest
宏的参数,然后将所需的任何字符添加到命令本身即可。
现在,(这就是为什么这是一个问题)也许更有经验的人可以修改它(或提出更好的解决方案),以便人们也可以测试与 LaTeX 发行版一起安装的字体。现在的情况是,它在 Lua 中适用于某些 LaTeX 字体,但并非适用于所有字体。
我可以做\fonttest{Linux Libertine O}
,但我做不到\fonttest{Accanthis}
,尽管我已经测试过,\usepackage{accanthis}
在序言中将 Accanthis 设为文档字体)。我不知道为什么会这样。在 XeTeX 中它根本不起作用(因为这只是一个测试,所以这可能不那么重要)。所以我正在寻找一个让我测试的解决方案全部字体、LaTeX 和系统,理想情况下具有相同的机制(至少对于 Lua 而言,如果有人想出一种可以在引擎之间工作的解决方案,那么当然也不会被拒绝;)...)。
顺便说一句,供将来参考,一旦你发现某种字体很漂亮,但没有你需要的那个字符,你可以使用此解决方案定义后备字体。
答案1
只要你请求的字体存在,它就能正常工作。由于 Accanthis 不存在,显然这不是一个选项。我想你可能会争辩说,在这种情况下,测试应该报告字体没有提供任何请求的字符,而不是因为所有可能的字体都存在于柏拉图领域而失败。然而,我认为你还不能指望 LuaTeX 等专为排版而设计的软件能够处理所涉及的形而上学。
如果您坚持使用现有字体(例如 AccanthisADFStdNo3),只要您已将系统配置为了解相关的 TeX 字体目录,它就应该可以正常工作。例如,这些目录需要包含在fontconfig
使用此字体管理的 GNU/Linux 上的配置中。
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage{fontspec}
\newcommand{\fonttest}[1]{%
\newfontfamily\myfont[Ligatures=TeX]{#1}%
{\myfont
\textbf{#1} font test:
% here go all the characters that need to be tested, e.g.,
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz? \par
\textit{AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz?} \par
More Characters: Åå Çç Øø
Uncommon Nasals: Ẽẽ Ĩĩ Ũũ Ỹỹ \par
IPA: ʔǝŋɲɾʧɨɔɛʃʤɸɣβɡɑɐɒʙðɕʑɻɚ\par
Greek: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ αβγδεζηθικλμνξοπρσςτυφχψω \par
Ligatures:
fluffier soufflé fisticuffs fb fh ffh fj ffj fk ffk ft fft tt Qu Th ch ck ct \par
\textsc{\ldots{} and testing some Small Caps}\par
% whatever other characters you need to test for ...
\vspace{1em}%
}%
}
\begin{document}
Testing fonts in \LaTeX\ \par
\bigskip
% and here the fonts
\fonttest{Iwona}
\fonttest{Junicode}
\fonttest{Gentium Plus}
\fonttest{Minion Pro}
\fonttest{Linux Libertine O}
\fonttest{AccanthisADFStdNo3}
\end{document}
但请注意,此输出不一定能告诉您所有您想要知道的信息。例如,某些字体提供小型大写字母,但您需要配置小型大写字母才能使其工作。或者,您可能只在激活某些字体功能时才能看到某些连字。此外,不同的字体可能会激活相同的连字作为不同字体功能的一部分。
当然,这不会告诉您有关以传统方式安装的 type1 或 MetaFont 字体的任何信息。
答案2
只需更好地使用选项:
\documentclass{article}
\usepackage{fontspec}
\NewDocumentCommand{\fonttest}{O{}m}{{%
\par\parindent=0pt
\newfontfamily\myfont[#1]{#2}% limit the scope
\myfont
\textbf{#2} font test:
% here go all the characters that need to be tested, e.g.,
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz? \par
\textit{AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz?} \par
More Characters: Åå Çç Øø
Uncommon Nasals: Ẽẽ Ĩĩ Ũũ Ỹỹ \par
IPA: ʔǝŋɲɾʧɨɔɛʃʤɸɣβɡɑɐɒʙðɕʑɻɚ\par
Greek: ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ αβγδεζηθικλμνξοπρσςτυφχψω \par
Ligatures:
fluffier soufflé fisticuffs fb fh ffh fj ffj fk ffk ft fft tt Qu Th ch ck ct \par
\textsc{\ldots{} and testing some Small Caps}\par
% whatever other characters you need to test for ...
\vspace{1em}
}}
\begin{document}
Testing fonts in \LaTeX\ \par
\bigskip
% and here the fonts
\fonttest{Junicode}
\fonttest[Scale=1.5]{EB Garamond}
\fonttest[Path=/opt/X11/share/fonts/OTF/,Extension=.otf]{SyrCOMJerusalemBold}
\end{document}