Можно ли заменить семейство шрифтов по умолчанию «Latin Modern» другим семейством шрифтов?

Можно ли заменить семейство шрифтов по умолчанию «Latin Modern» другим семейством шрифтов?

Я использую xelatex и хотел бы использовать кириллические глифы в математических формулах, как обычные глифы. С помощью следующего кода у меня в формуле в результирующем PDF-файле вместо кириллических глифов есть пробелы:

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

В лог-файле написано:

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!

Использование \mathit и подобных ему для каждого фрагмента кириллицы — это своего рода половинчатое решение.

Можно ли заменить семейство «Latin Modern» в конфигурации, скажем, на семейство «CMU» («Computer Modern Unicode»), которое имеет как кириллицу, так и неплохое покрытие глифов? (Мои попытки решить проблему с помощью пакета «unicode-math» приводят к аналогичной проблеме).

решение1

Без hyperrefи polyglossia(с ними происходит какое-то взаимодействие, которое я не понимаю) я получаю это:

Кириллическая математика

МВЭ

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

Скомпилировано с помощью xelatex (miktex на 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>

решение2

Что на самом деле довольно близко отвечает на мой собственный вопрос, так это подход к переопределению глифов, предложенный @Cicada (ссылки в коде), в сочетании с пакетом 'mathfont' (один клик от домашней страницы CTAN). Работает также в дополнении TexMaths для 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}

введите описание изображения здесь

ОБНОВЛЕНО: Еще лучше использовать пакет 'mathspec', который не конфликтует с 'amsmath', как и 'mathfont'. В том же примере кода замените

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

с

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

Связанный контент