我遇到一种情况,需要在字符“j”上方 (U+030A) 放置一个组合环。是的,这很愚蠢,因为环会与“j”上方的点相撞,但我想精确地组合它们以强调这种愚蠢。
但是,我使用的字体 Linux Libertine 非常有用,如果我尝试在“j”上方放置一个圆环,它会自动用无点“ȷ”(U+0237)替换“j”。所以问题是,我如何才能抑制该字符替换(不是针对整个文档,而是仅针对相关文本)?大概是用命令吧\addfontfeatures{}
?
梅威瑟:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\begin{document}
jj\char"030A
\end{document}
答案1
此处的无点 j 替换是通过ccmp
功能1完成的,因此您只需禁用该功能:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\newfontfamily\sillylibertine[RawFeature={-ccmp}]{Linux Libertine O}
\begin{document}
jj\char"030A{\sillylibertine j\char"030A}
\end{document}
1我怎么知道的?通过检查 FontForge 中的字体。
答案2
您可以使用非组合版本 U+02DA RING ABOVE 并手动将其放在“j”上:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\begin{document}
jj\char"030A
j\vbox{
\offinterlineskip
\halign{%
#\cr\hidewidth\char"02DA \hidewidth\cr\noalign{\kern-1.3ex}j\cr
}%
}
\end{document}
看过 Khaled 的版本后,下面介绍如何在不定义新字体系列的情况下模拟它。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\begin{document}
jj\char"030A
j\vbox{
\offinterlineskip
\halign{%
#\cr\hidewidth\kern-.1em\char"02DA \hidewidth\cr\noalign{\kern-1.55ex}j\cr
}%
}
\end{document}