Noto CJK 字体的撇号

Noto CJK 字体的撇号

在我的文章中,我想显示繁体中文字符。

我在 Overleaf 在线编辑器中使用以下结构:

\documentclass{article}
\usepackage{CJKutf8}
\usepackage{fontspec}
\setmonofont{Noto Sans Mono CJK TC}
\setmainfont{Noto Sans CJK TC}

\begin{document}
\begin{CJK*}{UTF8}{bsmi}

\textbf{Example 2}

你係老師既學生 (means "You are teacher's student.")

\end{CJK*}
\end{document}

输出如下所示:

屏幕截图来显示问题

你可能会注意到撇号、单引号和双引号后面有一些多余的空格;而且第一个双引号的方向不正确。我以为是字体问题。然后我将其更改为Noto Serif CJK TC,但问题仍然存在。

我该如何解决这个问题?

答案1

首先,在 LaTeX 中输入引号和撇号的默认方式是:

``You are teacher's student.''

虽然这会将第一个双引号改为左双引号,但间距问题仍然无法通过这种方式解决。出现奇怪间距的原因是,您选择的字体中的相关字形被设计为全宽,以符合 CJK 排版的印刷要求,传统上所有字形(字符和标点符号)都具有相同的宽度。

您可以使用以下代码片段进行检查:

\documentclass{article}
\usepackage{showcharinbox, anyfontsize}
\usepackage{fontspec}
\setmainfont{Noto Sans CJK TC}

\begin{document}
\begin{center}
\ShowCharInBox{\fontsize{200}{210}\selectfont '}
\end{center}
\end{document}

这表明该字体中的撇号字形具有相当宽的边界框:

在此处输入图片描述


互联网上有各种版本的 Noto CJK 字体,所以我不知道这是否适合你。不过,GitHub 上可用的字体实际上还提供了另一组非全宽的引号和撇号字形,这些字形可通过 OpenType 功能访问(例如使用\addfontfeatures{CharacterWidth=Proportional}或):\addfontfeatures{CharacterWidth=Full}

\documentclass{article}
\usepackage{fontspec}
\setmonofont{Noto Sans Mono CJK TC}
\setmainfont{Noto Sans CJK TC}

\begin{document}

\textbf{Example 2} \\
你係老師既學生 (means ``You are teacher's student.") 

% set features only for selection
\textbf{Example 2} \\
他說:“你係老師既學生” {\addfontfeatures{CharacterWidth=Proportional} (means ``He says: `You are teacher's student'.")}

% set features globally
\addfontfeatures{CharacterWidth=Proportional}
\textbf{Example 2} \\
你係老師既學生 (means ``You are teacher's student.") 

\end{document}

在此处输入图片描述


解决这个问题的另一种方法是使用该xeCJK包(尽管它只适用于 XeLaTeX),它会根据您输入的字符自动选择正确的字体(但是,如果仔细观察,它实际上并不使用全宽字形):

\documentclass{article}
\usepackage{xeCJK}
\setmonofont{Noto Sans Mono}
\setmainfont{Noto Sans}
\setCJKmonofont{Noto Sans Mono CJK TC}
\setCJKmainfont{Noto Sans CJK TC}

\begin{document}

\textbf{Example 2} \\
他說:“你係老師既學生” (means ``He says: `You are teacher's student'.")

\end{document}

在此处输入图片描述

相关内容