附录

附录

我正在尝试在希腊语文本中使用 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 渲染:

渲染后的 pdf

使用 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 种字体时,他们似乎知道他们在说什么。

相关内容