Fehlende Glyphe in LuaLaTeX automatisch durch eine andere ersetzen

Fehlende Glyphe in LuaLaTeX automatisch durch eine andere ersetzen

Aus irgendeinem Grund ёfehlt der russische Buchstabe in einigen Schriftarten, was dazu führt,

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!

Es ist zwar fast immer akzeptabel, es durch den Buchstaben zu ersetzen е, aber dieser Code funktioniert nicht:

\newunicodechar{ё}{\iffontchar\font`ё ё\else{е}\fi}
\newunicodechar{Ё}{\iffontchar\font`Ё Ё\else{Е}\fi}

Kann ich die automatische Ersetzung durchführenohneerklären, ёein aktiver Charakter zu sein?

Vollständiges 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}

Antwort1

In LuaTeX können Sie Ihre eigene Ersetzungsregel als Schriftart-Feature definieren, sieheWie passe ich Schriftfunktionen in LuaTeX an?

\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}

Bildbeschreibung hier eingeben

verwandte Informationen