Использование переменных глифов с fontspec

Использование переменных глифов с fontspec

Я хотел бы получить доступ к некоторым альтернативным формам глифов с помощью fontspec. Если быть точным, я использую шрифт Garamond Premier Pro и хотел бы использовать альтернативные формы Q (Glyph 245), W (Glyph 246) и & (Glyph 301). Шрифт имеет 4 стилистических набора, но их использование через fontspec не влияет на форму упомянутой буквы.

Вот минимальный код, в котором все еще есть проблема:

\documentclass{article}

\usepackage[no-math]{fontspec}
    \setmainfont[Ligatures=Common, StylisticSet={1,2,3,4}]{Garamond Premier Pro}
        
\title{Title}

\begin{document}
\maketitle
Test: WQ\&.
\end{document}

PS: Использование Style= Alternatefontspec изменяет все, а не только три буквы (оно также выбирает альтернативную форму &, которая мне не нужна).

PPS: Проблема присутствует как в XeLaTeX, так и в LuaLaTeX.

решение1

Я не знаю, у нас одна и та же версия шрифтов, потому что номера глифов, которые вы упоминаете, не совпадают с тем, что я вижу. Но в LuaTeX вы можете сделать это (измените имя амперсанда, если показанный символ ampersand.alt2не ampersand.alt3тот, который вы хотели):

\documentclass[12pt]{article}
\usepackage[no-math]{fontspec}
\directlua{
  fonts.handlers.otf.addfeature{
    name = "malt",
    type = "alternate",
    data =
    {
      Q = "Q.alt",
      ["q.sc"] = "q.scalt",
      W = "W.alt",
      ["w.sc"] = "w.scalt",
      Wcircumflex = "Wcircumflex.alt",
      Wgrave = "Wgrave.alt",
      Wacute = "Wacute.alt",
      Wdieresis = "Wdieresis.alt",
      ["wacute.sc"] = "wacute.scalt",
      ["wcircumflex.sc"] = "wcircumflex.scalt",
      ["wdieresis.sc"] = "wdieresis.scalt",
      ["wgrave.sc"] = "wgrave.scalt",
      ampersand = "ampersand.alt1",
    },
  }
  fonts.handlers.otf.addfeature{
    name = "oops",
    type = "alternate",
    data =
    {
      ["ampersand.alt1"] = "ampersand.sc",
    },
  }
}
\setmainfont{Garamond Premier Pro}[RawFeature=+malt]% “malt” for “my alternates”; choose another name if you like
\begin{document}
Test: W Q \&.

Ẃ Ẁ Ŵ Ẅ

% because the font doesn’t have small cap ampersand variants:
{\addfontfeature{RawFeature=+oops}\textsc{Test: w q \& ẃ ẁ ŵ ẅ}}
\end{document}

выход

Если вы не хотите помнить о необходимости добавлять {\addfontfeature{RawFeature=+oops}...}каждый раз заглавные буквы амперсанда, просто сделайте fontspecэто в преамбуле:

\setmainfont{Garamond Premier Pro}[
  RawFeature=+malt,
  SmallCapsFeatures={RawFeature=+oops}]

ВидетьКак настроить параметры шрифта в LuaTeX?для более подробной информации. Для глифов с длинными хвостами определение контекстной альтернативы часто бывает предпочтительным.

Связанный контент