xelatex CMU Concrete 中的俄语字符不正确

xelatex CMU Concrete 中的俄语字符不正确

XeLaTex 中的 MWE:

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}
\usepackage[russian]{babel}
\begin{document}
Б\'{о}льший №
\end{document}

输出:

在此处输入图片描述

普通 LaTeX 中的相同代码是正确的:

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}
\usepackage[russian]{babel}
\begin{document}
Б\'{о}льший №
\end{document}

在此处输入图片描述

是什么原因?字体?

关于未找到字体的更新

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}
\usepackage{fontspec}
\usepackage{noto}
\setmainfont{Noto Serif} % <- Error
\usepackage[main=russian,english]{babel}
\begin{document}
\noindent
Б\'{о}льший №\\
\textsf{Sans serif text}\\
{\tt True type text}
\end{document}

使用 CMU Concrete 字体进行更新

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}
\usepackage[russian]{babel}
\usepackage{fontspec}
\tracinglostchars=2
\babelfont{rm}[Script=Cyrillic, Language=Russian]{CMU Concrete}
\begin{document}
\setmainfont{CMU Concrete}[Script=Cyrillic, Language=Russian]
Б\'{о}льший №
\end{document}

还是一样:

在此处输入图片描述

答案1

使用能够正确支持您所使用的语言的字体。以下是解决方案 能登

\documentclass[12pt]{article}
\usepackage{noto-serif}
\usepackage{noto-sans}
\usepackage{noto-mono}
\usepackage[russian]{babel}
\begin{document}

  \textrm{Б\'{о}льший №}
  \textsf{Б\'{о}льший №}
  \texttt{Б\'{о}льший №}

\end{document}

在此处输入图片描述

答案2

您实际上并没有加载 CMU Concrete。此 MWE 在 TeX Live 2020 中运行良好:

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}
\usepackage[russian]{babel}

\tracinglostchars=2
\babelfont{rm}{CMU Concrete}

\begin{document}
Б\'{о}льший №
\end{document}

CMU 混凝土样品

\babelfont与其他方法相比,它的一个优点是将使用和babel加载字体,并在您选择俄语时切换到它们。在 LuaLaTeX 上,您甚至可以在输入西里尔文时自动切换,而无需其他命令。Script=CyrillicLanguage=Russian

西里尔字母与拉丁字母非常相似,您通常可以使用默认设置,但某些字体会提供保加利亚字母而不是俄语,除非您选择该语言作为 OpenType 字体功能。

答案3

我认为在并且XeLaTeX字符是unicode...有必要使用,

\usepackage{fontspec}
\setmainfont{Arial} %<---- a random set of characters.

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\usepackage[russian]{babel}
\usepackage{fontspec}
\setmainfont{Arial}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}

\begin{document}
Б\'{о}льший №
\end{document}

在此处输入图片描述

使用Noto Serif

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\usepackage[russian]{babel}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}

\begin{document}
Б\'{о}льший №
\end{document}

答案4

我无法从您提供的第一个例子中重现您的图片,并且只出现最后一个字形,因为它存在于拉丁现代罗马字体中。

另一方面,以下代码使用 XeLaTeX 和 LuaLaTeX 重现了没有奇怪框的字体(CMU Concrete)。

\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\geometry{tmargin=2cm,bmargin=2cm,lmargin=2cm,rmargin=2cm}
\usepackage[russian]{babel}
\usepackage{fontspec}

\setmainfont{CMU Concrete}[Script=Cyrillic]

\begin{document}

Б\'{о}льший №

\end{document}

在此处输入图片描述

相关内容