向 Junicode 添加功能并使用斜体后出现致命错误

向 Junicode 添加功能并使用斜体后出现致命错误

\emph{sty}在答案中添加以下行访问 Junicode 连字符产生致命错误。

\documentclass{article}
\usepackage{fontspec}
\usepackage{filecontents}

\begin{filecontents*}{junicode.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;

feature liga {
    sub t y by t_y;
} liga;
\end{filecontents*}

\setmainfont[FeatureFile={junicode.fea}]{junicode}

\begin{document}
fifty
nifty
activity
\emph{sty}
\end{document}

问题似乎是字体的斜体部分不存在字形 t_y。该怎么办?

答案1

斜体字形 t_y 确实存在,但位于其私有使用区域。由于字形的命名方式,您需要为直立和斜体连字符分别定义:

\documentclass{article}
\usepackage{fontspec,filecontents}
\begin{filecontents*}{junicode.fea}
languagesystem DFLT dflt;
languagesystem latn dflt;

# upright ligatures
feature ulig {
  sub \t \y  by \t_y;
} ulig;

# italic ligatures
feature ilig {
  sub \t \y  by \uniEEDB;
} ilig;
\end{filecontents*}
\setmainfont{Junicode}[
  FeatureFile={junicode.fea},
  UprightFeatures={RawFeature=+ulig},
  ItalicFeatures={RawFeature=+ilig}]
\begin{document}
fifty
nifty
activity
\emph{sty}
\end{document}

相关内容