CTeX-org / ctex-kit

Macro Packages and Scripts for Chinese TeX users
985 stars 124 forks source link

将U+2E3A视作破折号 & Noto CJK(Source Han)默认破折号字面不居中 #320

Closed ghost closed 6 years ago

ghost commented 7 years ago

单个U+2E3A(TWO-EM DASH)字符是一个中文破折号,可以代替两个U+2014(EM DASH)。 (参见clreq

xeCJK目前未将其视为中文标点:

\documentclass{minimal}
\usepackage{ctex}
\setCJKmainfont{NotoSerifSC-Regular.otf}
\setmainfont{NotoSerifSC-Regular.otf}
\begin{document}
\ \\
% Double U+2014
壬——壬\\
% Single U+2E3A
壬⸺壬
\end{document}

结果: image 应将其加入FullRightMiddlePunct

另:

对于Source Han(或Noto CJK),破折号默认是西文破折号,位置偏下:

\documentclass{minimal}
\usepackage{ctex}
\begin{document}
\begin{tabular}{ll}
Noto &
{\fontspec{NotoSerifSC-Regular.otf}\CJKfontspec{NotoSerifSC-Regular.otf}%
壬——壬……壬⸺壬}\\
Fandol &
{\fontspec{FandolSong-Regular}\CJKfontspec{FandolSong-Regular}%
壬——壬……壬⸺壬}
\end{tabular}
\end{document}

与Fandol的对比: image

Source Han中垂直居中的中文破折号通过locl特性得到(参见SourceHanSerifReadMeLanguage ParticularsProportional & Half-Width CJK Punctuation一节),但似乎fontspec并不支持locl。 无论U+2014还是U+2E3A都无法垂直居中。U+2500可以垂直居中,但不适合作为破折号。 对此是否有workaround?

Man-Ting-Fang commented 7 years ago

您拼错了吧,不是iocl,而是locl,我搜了一下fontspec的文档,是在“不支持”的表中。不过,可以试试fwid

leo-liu commented 7 years ago

U+2E3A 这个破折号,以前大陆这边做的中文字体都不支持,所以没注意到。日文字体好像都会用。现在 Pan-CJK 字体多起来,支持就有必要了。

双破折号这个设置为 FullRight 感觉不大对,因为感觉前后都允许断行更好。目前的 CJK 字符类别偏少,再考虑一下。

xeCJK 对直排目前没有明确支持,有这方面需求直接用 upLaTeX 或 pLaTeX-ng 吧,也不麻烦。

ghost commented 7 years ago

您拼错了吧,不是iocl,而是locl

抱歉。已修改。

不过,可以试试fwid

尝试了一下,确实有用。

双破折号这个设置为 FullRight 感觉不大对

U+2014被设置为FullRight, MiddlePunctLongPunctLongPunct似乎是使第一个字符前可以断行,第一个字符和第二个字符之间不能断行,第二个字符之后可以断行;似乎不能用于单个U+2E3A。