由於某種原因,某些字體中缺少俄語字母ё
,這導致
warning (file c:/Users/mishk/OneDrive/Stuff/fonts/PTSerifPro-Regular.otf) (cff
): 'seac' character deprecated in type 2 charstring
! error: (file c:/Users/mishk/OneDrive/Stuff/fonts/PTSerifPro-Regular.otf) (cf
f): Type2 Charstring Parser: parsing charstring failed: (status=-1, stack=5)
! ==> Fatal error occurred, no output PDF file produced!
然而,用字母替換它總是可以接受的е
,但此代碼不起作用:
\newunicodechar{ё}{\iffontchar\font`ё ё\else{е}\fi}
\newunicodechar{Ё}{\iffontchar\font`Ё Ё\else{Е}\fi}
可以自動替換嗎沒有宣稱ё
自己是活躍角色?
完整的 LuaLaTeX MWE:
\documentclass{book}
\usepackage{polyglossia}
\usepackage{newunicodechar}
\setmainlanguage{russian}
\newcommand{\MyPath}{C:/Users/mishk/OneDrive/Stuff/fonts/}
\newfontfamily{\cyrillicfont}{PTSerifPro}[
Path = \MyPath,
Extension = .otf,
UprightFont = *-Regular,
]
\newunicodechar{ё}{\iffontchar\font`ё ё\else{е}\fi}
\newunicodechar{Ё}{\iffontchar\font`Ё Ё\else{Е}\fi}
\begin{document}
ааа еее ёёё
\end{document}
答案1
在 LuaTeX 中你可以定義自己的替換規則作為字型特徵,參見如何調整LuaTeX中的字型特性?
\documentclass{article}
\usepackage{fontspec}
\directlua{
fonts.handlers.otf.addfeature {
name = "ediaeresis",
type = "substitution",
prepend = true,
data = {
["ё"] = "e",
["Ё"] = "Е",
}
}
}
\setmainfont{PT Serif}[RawFeature=+ediaeresis]
\begin{document}
ё Ё
\end{document}