CTeX-org / forum

A temporarily alternate forum of `bbs.ctex.org`
https://t.me/chinesetex
Apache License 2.0
210 stars 16 forks source link

汉字直排行间标点下冒号(及分号)的问题 #276

Closed RadioNoiseE closed 1 year ago

RadioNoiseE commented 1 year ago

检查

编译环境

描述问题

竖排时(比如用思源宋体)且调用OpenType的vrt2vert特性进行直排时,简中字体的冒号及分号为直立,而繁中及日文字体的冒号及分号皆为横向水平放置。似乎是标准(JIS X 4051,GBxxx)如此?LuaTeX的标准直排用JFM中也将冒号同分号设置为width=0.5, align='middle',且与前后字符插入的glue皆为0.25。我有些好奇为何三地的标准会如此差别,这些标准又是基于怎样的考虑设定如此的呢? 另外便是当我试图写一个将标点有选择地「悬挂」于行间时(行间标点)时,若将冒号(与分号一道)悬挂于行间时,只能是当其为直立时。如何在繁中及日文字体下实现呢?

最小工作示例(MWE)

image 上图能够大差不差体现出问题所在。使用如下代码使用LuaHBLaTeX编译即可得到。

\documentclass{ltjtarticle}

\usepackage{xcolor, luatexja-otf, lltjext}

\usepackage{luatexja-fontspec}
%\setmonofont{Courier New}

\def\testfont#1#2#3{\tfont\M=[SourceHanSerif#1-Regular.otf]:jfm=#2;+#3}
\def\testtext#1#2{{\M 從前,有兩個神奇的標點{\color{blue}#1}之一是冒號{\color{blue}#2}之二是分號。}}
\def\test#1#2#3#4#5{\texttt{\small Font:#1, JFM:#2, Feat:#3, Method:\string#4}\\\testfont{#1}{#2}{#3}\testtext{#4}{#5}}

\begin{document}

\obeylines\rensujiskip=0pt\parindent0pt

\test{SC}{ujisv}{vert}{:}{;}
\test{SC}{lgpv}{vrt2}{:}{;}
\test{TC}{ujisv}{vert}{:}{;}
\test{TC}{ujisv}{vrt2}{:}{;}
\test{}{ujisv}{vert}{:}{;}
\test{}{ujisv}{vrt2}{:}{;}
\test{}{ujisv}{vrt2}{\rensuji{:}}{\rensuji{;}}
\test{}{lgpv}{vrt2}{\rensuji{:}}{\rensuji{;}}
\test{}{ujisv}{vrt2}{\UTF{FE30}}{;}
\test{}{lgpv}{vrt2}{\UTF{FE30}}{;}
\test{TC}{ujisv}{vrt2}{\UTF{FE30}}{;}

\end{document}

其中jfm-lgvp是行间标点的文件名,取_L_ine_G_ap _P_unctuations _V_ertical之意(不知道有没有更好的名字呢)。 在Steve Cheung老师的UpTeX虛擬字體與直書排版要素一书第48页提到「一种方法是将字符本身旋转90度,另一种是使用两点符号(U+FE30)」。我分别对两种方法进行了尝试后发现,字体旋转90度(使用lltjext宏集提供的连数字-纵中横宏\rensuji{})与替换字符(\UTF{FE30})在正常情况下的确可以达到效果,但定义的JfM却会因此失效。有哪种方法能够实现希望效果吗?(LuaTeX的jfm或是相关联处理流程中一定有什么是我不知道的。)

结尾

我还是一个可怜的初中生,父母对电子产品使用管的超严,若需回复可能不及时,请见谅? 这个问题可能问的不怎么好,行间标点也只是觉得好玩,并没有什么实际需求,给各位老师添麻烦了。

附件

tanukihee commented 1 year ago

按道理竖排繁中的冒号分号是竖置的,这点我跟北川弘典先生反馈过,他也改了(见这条 ticket)。luatexja 的标准 jfm 是为日语准备的,日语的冒号分号是横置的中点类,需要前后插空,所以如此设置。要在luatexja 下获得较为正确的标点排版效果,请使用 chinese-jfm 宏包提供的 jfm 文件(虽然作者太懒了,说好的要更新现在还在摸)

tanukihee commented 1 year ago

行间标点的话,其实我也有过给 chinese-jfm 加上支持的打算(但是摸了)

tanukihee commented 1 year ago

对于以下代码,编译出来的效果是这样的:

\documentclass{ltjtarticle}
\usepackage[match]{luatexja-fontspec}
\usepackage{lua-visual-debug}

\newjfontfamily\cn{Source Han Serif SC}[Language=Chinese Simplified, TateFeatures={JFM=zh_CN/{vert,quanjiao}}]
\newjfontfamily\tw{Source Han Serif TC}[Language=Chinese Traditional, TateFeatures={JFM=zh_TW/{vert,quanjiao}}]
\newjfontfamily\jp{Source Han Serif}[Language=Japanese, TateFeatures={JFM=ujisv}]

\begin{document}
{\cn あ:ア;漢}

{\tw あ:ア;漢}

{\jp あ:ア;漢}

\end{document}

image

可以看到,至少冒号分号的方向是没有问题的

RadioNoiseE commented 1 year ago

嗯我知道了 谢谢!