ё
По какой-то причине в некоторых шрифтах отсутствует русская буква , что приводит к
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}