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}

在此輸入影像描述

相關內容