使用 fontspec 中的功能文件对“oe”字符进行重音定位

使用 fontspec 中的功能文件对“oe”字符进行重音定位

Linux Libertine 中没有“oe”字符的重音符号。尝试形成此字符时,(尖音)重音位于“e”一半的中心。我试图让重音位于整个连字符的中心。

我尝试添加一个功能文件来定位重音,但尚未让它执行任何操作。我想知道我的语法是否有问题 - 还是其他什么问题。

这是我使用 lualatex 进行的最小测试(使用两种方式命名角色):

\documentclass{article}
\usepackage{fontspec}
\setmainfont[FeatureFile=linlib.fea,RawFeature=+mlig;]{Linux Libertine O}
\begin{document}
    \'{\oe}
    \'œ
\end{document}

功能文件如下:

#linlib.fea
languagesystem DFLT dflt; 
languagesystem latn dflt;
lookup markMarkPositioninglookup100 {
  lookupflag 0;
  markClass [\acutecomb \uni0341 ] <anchor -191 682> @TOP_MARK;
  pos base [\oe ] <anchor 250 644> mark @TOP_MARK;
} markMarkPositioninglookup100;

feature mlig {
  script DFLT;       # tested with and without these script/language lines
  language latn dflt ;
  lookup markMarkPositioninglookup100;
} mlig;

我也尝试过使用重音连字符的代码:

lookup markLigPositioninglookup100 {
  lookupflag 0;
 markClass [\acutecomb \uni0341 ] <anchor -191 682> @TOP_MARKS;
  position ligature oe 
      <anchor NULL>    # no mark above the 'o' half
      ligComponent     # specify mark for 'e' half
      <anchor 50 644> mark @TOP_MARKS    # mark above left side of 'e'
      ;
} markLigPositioninglookup100;

但一切都无济于事:重音仍然牢牢地集中在“e”上。

有任何想法吗?

答案1

如果您不介意像这样写字形,您可以在功能文件中使用字距调整´œ

\documentclass{article}
\usepackage{fontspec}
\setmainfont[FeatureFile=linlib.fea,RawFeature=+mlig;]{Linux Libertine O}
\begin{document}
   hell´œworld
\end{document}

使用此功能文件:

languagesystem DFLT dflt ;
languagesystem latn dflt ;

feature kern {
      position acute <200 0 -400 0> oe ;
} kern;

在此处输入图片描述

答案2

我不知道 lualatex,但在常规 LaTeX 中,它的运行完全符合预期:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{libertine}

\begin{document}
    \'{œ}
\end{document}

在此处输入图片描述

相关内容