XeLaTeX:将字符与另一种字体的重音符号结合起来,以处理缺失的字形,而无需定义新命令

XeLaTeX:将字符与另一种字体的重音符号结合起来,以处理缺失的字形,而无需定义新命令

我正在处理一个文档,使用的字体没有 Unicode 0107 带尖音符号的拉丁小写字母 C(或“ć”)的字形。除此之外,我真的很喜欢这个字体,所以我宁愿不因为缺少这个字形而不得不更改它。

不幸的是,这种字体的另一个问题是它也没有 Unicode 0301 组合重音符号或“◌́”的字形。否则,我(可能?)可以做类似的事情\renewcommand{\'}[1]{\add@accent{`^^^^0301}{#1}}

我想做的是从不同的字体中提取组合尖音符字形,并将其放在主字体的“c”字形上。虽然它不会完全匹配,但对于我的目的来说应该足够接近了。

我尝试了一些方法并成功实现了以下操作:

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Baskerville Old Face} 
% not actually what I'm using, 
% but an example of another font lacking the relevant glyphs
\newfontfamily{\ccfont}{TeX Gyre Pagella}
\newfontfamily{\mainfont}{Baskerville Old Face}

\newcommand{\cc}{c\llap{\ccfont\'\ }}

\begin{document}
    \cc
\end{document}

但是,如果不定义新的宏(例如),我似乎无法使其工作\cc。如果我尝试\newcommand{\'c}{...},我会收到一条错误消息,Use of \' doesn't match its definition.是否有办法做到这一点,而不必替换文档和文件中的\'c每个?\cc.bib

答案1

就像在 pdftex 中一样,您可以声明复合:

在此处输入图片描述

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Baskerville Old Face} 
% not actually what I'm using, 
% but an example of another font lacking the relevant glyphs
\newfontfamily{\ccfont}{TeX Gyre Pagella}
\newfontfamily{\mainfont}{Baskerville Old Face}

\DeclareTextCompositeCommand{\'}{TU}{c}{{\ccfont\'{{\mainfont c}}}}

\begin{document}
  ab\'cd
\end{document}

相关内容