StylisticSet 命令对某些字体不起作用

StylisticSet 命令对某些字体不起作用

在一些 Open-type 字体中,有一些可用的样式集,这有助于选择适合特定语言的字形集。对于我想要使用的语言马拉地语,一些字形(例如 श、ल、५、८)在视觉上与同样使用梵文脚本的印地语不同。

此外,有些连词有两种书写风格。有些是垂直书写,有些是水平书写,例如 क्क、ल्ल、प्ल。许多字体都包含两种替代字形样式,在选择字体时,可以通过 StyleSet 功能在 LaTeX 中选择这些样式。

在我的例子中,我选择了两种 Devanagari 字体,它们都包含上面提到的替代字形。但我可以将它们与一种字体(即 Mukta)一起使用,但不能与另一种字体(即 Noto Serif Devanagari)一起使用。我已经通过在 FontForge 中打开字体来确认这两种字体都有上述替代方案。

请指导我如何使用 Noto Serif Devanagari 中提供的这些替代字形。我使用的 LaTeX 代码如下所示。我使用 xelatex 引擎运行了它。

 \documentclass[a4paper,10pt]{article}
 \usepackage{fontspec}
 \usepackage{xltxtra}
 \usepackage{polyglossia}
 \setdefaultlanguage{marathi}
 \setmainfont{Mukta}[Script=Devanagari, Mapping=devanagarinumerals]
 % ===== Font Selection =====
 % Mukta (https://github.com/EkType/Mukta/tree/master/Mukta-Devanagari) 
 \newfontfamily\Muktaone[Script=Devanagari,Mapping=devanagarinumerals, StylisticSet=1]{Mukta}
 \newfontfamily\Muktatwo[Script=Devanagari,Mapping=devanagarinumerals,StylisticSet=2]{Mukta}
% Noto Serif Devanagari (https://www.google.com/get/noto/#serif-deva)
 \newfontfamily\NSDone[Script=Devanagari,Mapping=devanagarinumerals,StylisticSet=1]{Noto Serif Devanagari}
 \newfontfamily\NSDtwo[Script=Devanagari,Mapping=devanagarinumerals,StylisticSet=2]{Noto Serif Devanagari}

\begin{document}

\section*{Mukta}
\begin{description}
\item [StylisticSet1]{\Muktaone ५, ८, श, ल, क्क, ल्ल, प्ल}
\item [StylisticSet2]{\Muktatwo ५, ८, श, ल, क्क, ल्ल, प्ल}
\end{description}

\section*{Noto Serif Devanagari}
\begin{description}
\item [StylisticSet1]{\NSDone ५, ८, श, ल, क्क, ल्ल, प्ल}
\item [StylisticSet2]{\NSDtwo ५, ८, श, ल, क्क, ल्ल, प्ल}
\end{description}

\end{document}

输出如下所示

在此处输入图片描述

答案1

右键单击U+0936并查看 FontForge 中“字形信息”的“替换”选项卡;它会告诉您想要的形式是由本地化控制的,而不是由风格集控制的:

\documentclass{article}
\usepackage{fontspec,polyglossia}
\setdefaultlanguage{Sanskrit}% https://tex.stackexchange.com/a/382981
\setmainfont{NotoSerifDevanagari-Regular.ttf}[Script=Devanagari,Mapping=devanagarinumerals]
\newfontfamily\NSDone[Script=Devanagari,Mapping=devanagarinumerals]{NotoSerifDevanagari-Regular.ttf}
\newfontfamily\NSDtwo[Script=Devanagari,Language=Marathi,Mapping=devanagarinumerals]{NotoSerifDevanagari-Regular.ttf}% note the addition of Language=Marathi
\begin{document}
{\NSDone ५, ८, श, ल, क्क, ल्ल, प्ल}

\bigskip

{\NSDtwo ५, ८, श, ल, क्क, ल्ल, प्ल}
\end{document}

输出

相关内容