ebgaramond swashy Q,LaTeX 与 Lilypond

ebgaramond swashy Q,LaTeX 与 Lilypond

我正在使用 LaTeX ( pdflatex) 和 Lilypond 制作一个重要的音乐版本,两者都使用 EB Garamond 字体。这两个程序为“Q”提供了不同的字形:LaTeX 提供了常规 Q,而 Lilypond 提供了波浪形 Q。我想要两个文档中的常规 Q。比较下面的 MWE 的结果。

软件包提供的字体ebgaramond提供了花哨的 Q 连字符。默认情况下,使用编码加载的字体版本不启用连字符。显然,在 Lilypond 通过 加载的pdflatex字体T1版本中,默认情况下启用了该连字符pango。Lilypond 的字体加载依赖于系统,我的是 Debian GNU/Linux v8 和 Gnome v3.14.1。

这里还有一个问题(一个大大的花哨“Q”) 展示了如何在 LaTeX 中获得波浪形 Q(使用lualatex并加载带有“Contextuals=Alternate”选项的字体)。但我喜欢默认pdflatex输出,我不想要在 Lilypond 中获得波浪形 Q!

我怎样才能让 Lilypond 加载没有花哨 Q 连字符的字体文件?

为什么这是主题:Lilypond 正在加载由 LaTeX 包提供的字体,ebgaramond但它的加载方式与 LaTeX 加载方式不同。因此,这是关于 Lilypond 与 LaTeX 包的交互,但不一定与 LaTeX 本身交互。

例子

文件texquack.tex——编译pdflatex

\documentclass{article}
\usepackage{ebgaramond}
\usepackage[T1]{fontenc}
\pagestyle{empty}
\begin{document}
Quack
\end{document}

文件lyquack.ly——编译lilypond

\version "2.18.2"
\header {
  title = "Quack"
  tagline = ##f
}
\paper {
  line-width=2\in
  #(define fonts
    (make-pango-font-tree
      "EB Garamond" "" ""
    (/ staff-height pt 20)))
}
\score {
    \new Staff
    <<
      \new Voice { a'1 }
      \new Lyrics \lyricmode { Quack }
    >>
}

LaTeX 输出: 在此处输入图片描述Lilypond 输出: 在此处输入图片描述

答案1

TeXLive 2016 将该文件EBGaramond12-Regular.otf作为ebgaramond软件包的一部分提供。

通过检查fontforge,我可以看到该文件定义了calt“上下文替代”字体功能,其中字形在某些上下文中Q被字形替换Q.long。这些在表“calt”上下文替代查找 95 中的上下文 0 和上下文 1 下定义。替换在单一替换查找表 96 和 97 中定义。

在我的 Debian 系统上,系统会自动加载calt启用该功能的字体。这就是为什么在任何使用系统字体选择机制的程序中,单词Quack都会以 呈现Q.long。LibreOffice 和 Lilypond 中的情况相同。

XeTeXcalt默认加载该功能,但 LuaTeX 不加载。这可能是因为 XeTeX 使用系统字体机制,而 LuaTeX 使用自己的字体机制 ( luaotfload)。

考虑以下示例,清楚的XeTeX 和 LuaTeX。我们必须calt向 LuaTeX 添加该功能(:+calt在字体定义中)才能获得花哨的 Q。或者,我们可以从 XeTeX 中删除该功能以获得常规 Q(:-calt在字体定义中)。

XeTeX (使用以下工具编译xetex):

\font\ebg="EB Garamond" \ebg Quack \bye

LuaTeX(使用‘luatex’编译):

\input luaotfload.sty \font\ebg="EB Garamond:+calt" \ebg Quack \bye

使用时无法使用花哨的 Q,pdflatex因为程序根本没有加载 OpenType 字体,而是加载了从 OpenType 字体改编而来的 LaTeX 字体度量文件(等),而且长 Q 显然不包括在内。

正如@AlanMunn 所说,Lilypond 开发人员正在讨论如何改进 Lilypond 的字体选择机制,包括指定 OpenType 字体功能。稳定版本 2.18.2 中不提供此功能。

TL;DR——可能的解决方案如下:

  1. 拥抱华丽的 Q,放弃。使用默认值或通过选择功能来pdflatex编译 LaTeX 部分。替代上下文也给出了华丽的斜体 Q 和可爱的斜体连字符。xelatexfontspeclualatexcaltfontspeces
  2. 编辑字体文件以更改默认功能(例如,编辑 FontForge 中的查找表)。可能可以通过编写文件来完成.fea,如fontspec文档中所述。
  3. 接受文档中的变量 Q。由于一个是乐谱,另一个是文本,因此不太明显。

相关内容