Por alguna razón ё
falta la letra rusa en algunas fuentes, lo que lleva a
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!
Sin embargo, siempre es aceptable sustituirla por la letra е
, pero este código no funciona:
\newunicodechar{ё}{\iffontchar\font`ё ё\else{е}\fi}
\newunicodechar{Ё}{\iffontchar\font`Ё Ё\else{Е}\fi}
¿Puedo hacer la sustitución automática?sindeclarando ё
ser un personaje activo?
MWE LuaLaTeX completo:
\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}
Respuesta1
En LuaTeX puedes definir tu propia regla de sustitución como característica de fuente, ver¿Cómo ajustar las funciones de fuente en 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}