Ist es möglich, die Standardschriftfamilie „Latin Modern“ durch eine andere Schriftfamilie zu ersetzen?

Ist es möglich, die Standardschriftfamilie „Latin Modern“ durch eine andere Schriftfamilie zu ersetzen?

Ich verwende xelatex und möchte kyrillische Glyphen in mathematischen Formeln genauso verwenden wie normale Glyphen. Mit dem folgenden Code habe ich in der resultierenden PDF-Datei Leerzeichen anstelle von kyrillischen Glyphen in der Formel:

\documentclass{letter}
\usepackage{fontspec}
\setmainfont{Liberation Serif}
\setmathrm{Liberation Serif}
\begin{document}
Cyrillics: {абВ 0123456789} \it{абВ 0123456789}
$ abC = 1,234567890 = абВ = \sin {1,234567890 {абВ}_{абВ} } \Phi \alpha $
\end{document}

Im Logfile steht

Missing character: There is no а in font cmmi10!
Missing character: There is no б in font cmmi10!
Missing character: There is no В in font cmmi10!
Missing character: There is no а in font cmmi7!
Missing character: There is no б in font cmmi7!
Missing character: There is no В in font cmmi7!

Die Verwendung von \mathit und ähnlichen Programmen für jeden kyrillischen Zeichenausschnitt ist eine Art Halblösung.

Ist es möglich, die Familie „Latin Modern“ in der Konfiguration beispielsweise durch die Familie „CMU“ („Computer Modern Unicode“) zu ersetzen, die sowohl kyrillische Schriftzeichen als auch eine anständige Glyphenabdeckung bietet? (Meine Versuche, das Problem mit dem Paket „unicode-math“ zu lösen, führen zu einem ähnlichen Problem.)

Antwort1

Ohne hyperrefund polyglossia(dabei findet eine Interaktion statt, die ich nicht verstehe) erhalte ich Folgendes:

Kyrillische Mathematik

MWE

\documentclass[12pt]{article}

\usepackage{amsmath,amssymb}
\usepackage{unicode-math}
%\usepackage{polyglossia}
%\setdefaultlanguage{russian}
%\setotherlanguage{english}
%\newcommand\cyrillicfont{Noto Serif}

\setmainfont{Liberation Serif}
\setmathrm{Liberation Serif}

%\usepackage[russian]{hyperref}

\setmathfont{XITS Math}



%See: https://tex.stackexchange.com/questions/201239/cant-get-unicode-symbols-in-math-mode

\DeclareSymbolFont{cyrletters}{\encodingdefault}{\familydefault}{m}{it}
\newcommand{\makecyrmathletter}[1]{%
  \begingroup\lccode`a=#1\lowercase{\endgroup
  \Umathcode`a}="0 \csname symcyrletters\endcsname\space #1
}
\count255="409
\loop\ifnum\count255<"44F
  \advance\count255 by 1
  \makecyrmathletter{\count255}
\repeat

\begin{document}
\[
(д+ф)^{2}=д^{2}+2дф+ф^{2}м
\]

\[
г л а м н я^{2^{i}}
\]

Inline math mode: $ abC = 1,234 = абВ = \sin ({1,67895 \times {абВ}_{абВ} }) \Phi \alpha $

xxx $а + ц ж + е$ xxx

\end{document}

Kompiliert mit xelatex (miktex unter Windows):

This is XeTeX, Version 3.14159265-2.6-0.999992 (MiKTeX 2.9.7300 64-bit) entering extended mode (cyrillic_maths_egreg2a.tex LaTeX2e <2020-02-02> patch level 5 L3 programming layer <2020-03-06>

Antwort2

Was meine eigene Frage eigentlich ziemlich genau beantwortet, ist der von @Cicada vorgeschlagene Ansatz zur Neudefinition von Glyphen (Referenzen im Code), kombiniert mit dem Paket „mathfont“ (einen Klick von der CTAN-Homepage entfernt). Funktioniert auch im TexMaths-Add-on von OpenOffice.

\documentclass{letter}
\usepackage{mathfont}
\setmainfont{Liberation Serif}
\mathfont{Liberation Serif}
% The glyphs redefinition code by https://tex.stackexchange.com/users/182648/cicada
% as posted at https://tex.stackexchange.com/a/534590/210048
% See also: https://tex.stackexchange.com/questions/201239/cant-get-unicode-symbols-in-math-mode
\DeclareSymbolFont{cyrletters}{\encodingdefault}{\familydefault}{m}{it}
\newcommand{\makecyrmathletter}[1]{%
  \begingroup\lccode`a=#1\lowercase{\endgroup
  \Umathcode`a}="0 \csname symcyrletters\endcsname\space #1
}
\count255="409
\loop\ifnum\count255<"44F
  \advance\count255 by 1
  \makecyrmathletter{\count255}
\repeat
\begin{document}
Text: {\it{abC}} = 1,234567890 = {\it{абВ}\footnotesize{абВ}} = {sin} 1,234567890 \, {Φ} {\it{α}}
Math: $ abC = 1,234567890 = {абВ}_{абВ} = \sin {1,234567890} \, \Phi \, \alpha $
\end{document}

Bildbeschreibung hier eingeben

AKTUALISIERT: Noch besser ist es, das Paket „mathspec“ zu verwenden, das nicht mit „amsmath“ in Konflikt steht, ebenso wie „mathfont“. Ersetzen Sie im selben Beispielcode

\usepackage{mathfont}
\setmainfont{Liberation Serif}
\mathfont{Liberation Serif}

mit

\usepackage{amsmath}
\usepackage{mathspec}
\setmainfont{Liberation Serif}
\setallmainfonts{Liberation Serif}

verwandte Informationen