回到纯 TeX 的时代,当时欧米茄是使用 TeX 书写希腊文的默认/唯一方式,默认字体是 OmegaSerif。对于希腊文排版,它具有以下额外(简洁)功能:
当位于词首时,beta 为正常的 β,但位于词中时,beta 会自动转换为 ϐ。
简而言之,phi 应该是 ϕ 而不是 φ。(文本:{phisymbol vs phi},或数学:{phi vs varphi})
现在,它的继任者 FreeSerifGNU 自由字体项目具有相同的字形,但没有 OmegaSerif 的这两个特征。
我可以以某种方式使用 FreeSerif 来实现这些功能吗?或者是否有适用于 LaTeX 的 OmegaSerif?
下面的图片描述了这两个特征。
答案1
\documentclass{article}
\usepackage{fontspec}
\setmainfont{FreeSerif.otf}
% turn on xetex character class feature
\XeTeXinterchartokenstate=1
% character class for beta
\newXeTeXintercharclass\myc
% assign beta to the class
\XeTeXcharclass`β=\myc
% specify that \swapbeta should be inserted between any
% normal character (class zero) and a beta (class \mych)
\XeTeXinterchartoks 0 \myc{\swapbeta}
% define \swapbeta to swallow a β and expand to ϐ
\def\swapbeta β{ϐ}
% To do the same for phi just define a new class and a new \swapphi
% command and set up a substitution for that.
% testing...
\begin{document}
abc βέβα
\end{document}