我正在尝试在希腊语文本中使用 Computer Modern Bright。otf 版本字体具有特定的希腊直立字符,可用于其他应用程序,因此我认为 afm/pfb 字体也具有同样的功能。
该textgreek
软件包似乎可以做到这一点,但是文档(第 2.1 节)说它只能使用 3 种字体,但我认为事实并非如此,因为许多其他字体都有希腊语覆盖。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[greek,english]{babel}
\usepackage{textgreek}
\usepackage{cmbright}
\DeclareUnicodeCharacter{03BF}{\textomikron}
\begin{document}
English text in Computer Modern Bright
Έλληνες κείμενο in cbgreek
\textgreek{'Ellhnes ke'imeno} in cbgreek
\end{document}
使用常规 LaTeX 渲染:
使用 XeLaTeX / LuaLaTeX 按需要渲染:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{CMU Bright}
\begin{document}
English text in CMU Bright
Έλληνες κείμενο in CMU Bright
\end{document}
我遗漏了什么?我应该去哪里找?问题是软件包textgreek
还是 LaTeX 本身的问题?
附录
我使用更现代的 LaTeX 引擎让它运行起来,但对于由于某种原因只能使用标准引擎的用户来说,问题仍然存在。肯定也有办法让他们也这样做吧?
答案1
我认为你可能误解了textgreek
(pdf)TeX 中支持字体的功能和/或要求。该软件包不支持任意字体即使这些字体提供了所需的字符。因此,严格来说,CM Bright 的 type1 版本是否包含您需要的字符无关紧要。(但如果它们包含这些字符,您可以添加对它们的支持,当然,无需先创建字符。)
textgreek
提供对特定字体的支持,并且该软件包仅支持这些特定字体。这就是为什么作者说该软件包支持 3 种字体 - 如果有无数种字体提供直立希腊文,textgreek
仍然只支持其中的 3 种。
要了解原因,我们可以查看内部textgreek.sty
。这是关键命令:
\newcommand*{\textgreekfont}{%
\fontencoding{LGR}%
\edef\textgreek@fontmap{\textgreekfontmap}%
\expandafter\textgreek@findfont\textgreek@fontmap\textgreek@eof%
\selectfont%
}%
所以我们可以看到这是在使用\textgreekfontmap
。让我们看看:
\DeclareOption{cbgreek}{%
\renewcommand*{\textgreekfontmap}{%
{eur/*/*}{U/eur/*/*}
{phv/*/*}{U/psy/*/*}}}%
\DeclareOption{euler}{%
\renewcommand*{\textgreekfontmap}{%
{phv/*/*}{U/psy/*/*}
{*/bx/n}{U/eur/b/n}
{*/b/n}{U/eur/b/n}
{*/*/n}{U/eur/m/n}
{*/*/it}{OML/*/*/*}}}%
\DeclareOption{artemisia}{%
\renewcommand*{\textgreekfontmap}{%
{eur/*/*}{U/eur/*/*}
{phv/*/*}{U/psy/*/*}
{*/b/n}{LGR/artemisia/b/n}
{*/bx/n}{LGR/artemisia/bx/n}
{*/*/n}{LGR/artemisia/m/n}
{*/b/it}{LGR/artemisia/b/it}
{*/bx/it}{LGR/artemisia/bx/it}
{*/*/it}{LGR/artemisia/m/it}
{*/b/sl}{LGR/artemisia/b/sl}
{*/bx/sl}{LGR/artemisia/bx/sl}
{*/*/sl}{LGR/artemisia/m/sl}
{*/*/sc}{LGR/artemisia/m/sc}
{*/*/sco}{LGR/artemisia/m/sco}}}%
\newcommand*{\textgreekfontmap}{}%
这表明\textgreekfontmap
,根据所选的选项(明确选择或作为包默认值),它以 3 种特定方式之一进行定义。
请注意,定义的结构是特定于字体的:定义是根据包支持的 3 种字体量身定制的。
因此,很明显该软件包不支持带有直立希腊字符的任意字体,即使这些字体由 TeX 支持。
因此,当软件包的作者说他们的软件包支持 3 种字体时,他们似乎知道他们在说什么。