中文中表示零的字形之一没有出现

中文中表示零的字形之一没有出现

我将 XeLaTeX 与 TeXShop v. 2.47 结合使用,使用 SimSun 和 PMingLiU 字体通常能获得良好的效果。

然而,我发现,在我的一些资料中用于表示零的字形○(U+25CB)在我排版时会输出为空格,无论是通过 Pdftex 还是 TeX 和 DVI,也无论我输入的是字符本身还是显式代码\char"25CB

两种字体中都有这个字形,我可以让它出现在屏幕上,并轻松地使用传统文字处理器将其打印到 PDF 和物理打印机上。

知道哪里出了问题或如何解决吗?

代码如下:

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode

\documentclass{article}
\usepackage{xeCJK}
\usepackage{fontspec}
\setCJKmainfont{PMingLiU} % or SimSun

\begin{document}
Using glyphs: 二○○二年\\
Using codepoint: 二\char"25CB\char"25CB 二年
\end{document}

输出:

在此处输入图片描述

答案1

抱歉,您错误地使用了中文符号。

U+25CB(○)是“白色圆圈”,但不是汉字。你应该改用U+3007(〇)表示“表意数字零”。

xeCJK不将 U+25CB 视为 CJK 符号,因此您的文档中使用拉丁现代罗马字体,并且不输出字形。

这两个符号看起来非常相似。甚至有些中国人误用它们。然而,在某些字体中,例如 Microsoft YaHei,这两个符号看起来完全不同:

在此处输入图片描述


CJKnumb软件包中的 包CJK通常用于生成 CJK 数字和数字。虽然它不是为 设计的xeCJK,但xeCJK有一个CJKnumber选项可以修复问题并使其可用:

\documentclass{article}
\usepackage[CJKnumber]{xeCJK}
\setCJKmainfont{PMingLiU}

\begin{document}

二〇〇二年

\CJKdigits{2002}年

\end{document}

另外,你可以使用李清的新zhnumber包裹生成 CJK 数字和数字。它与 配合得很好xeCJK。例如:

\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{PMingLiU}

\usepackage{zhnumber}

\begin{document}

二〇〇二年

\zhdigits{2002}年

\end{document}

zhnumber是 的现代替代CJKnumb。我们计划在bundle 和其他中文工具的未来版本中使用zhnumber来代替。CJKnumbctex


对于符号用法,您当然可以随意使用○和●。但是,您应该指定非CJK字体而不是CJK字体。例如,您可以使用\setmainfont以下符号设置字体:

\documentclass{article}
\usepackage{xeCJK}
\setmainfont{Linux Libertine O} % for solution 1
\newfontfamily\simsun{SimSun}   % for solution 2
\setCJKmainfont{SimSun}
\begin{document}

\section{Use a western main font with Unicode symbol support}

十六字令

天。休使圆蟾照客眠。人何在?桂影自婵娟。

○。[●]●○○●●○。○○●,[●]●●○○。(Linux Libertine)

\section{Use a Chinese font as a normal font}

{\simsun ○。[●]●○○●●○。○○●,[●]●●○○。}(SimSun)

\section{Configure xeCJK to treat the symbols as CJK symbols}

\xeCJKsetcharclass{`●}{`●}{1}% DO NOT use this
\xeCJKsetcharclass{`○}{`○}{1}% DO NOT use this

○。[●]●○○●●○。○○●,[●]●●○○。(SimSun, without affecting brackets)

\end{document}

但请记住:不要使用U+25CB作为CJK编号,您应该修改源代码。

相关内容