我有一个CJK(中文)文本使用CSS(body { writing-mode: vertical-rl; }
)垂直显示。不幸的是,标点符号默认不居中:
句号和逗号对齐到右上角,而不是中心。我在Firefox 65.0和Chromium 71.0中获得了相同的结果。
是否有一种既定方法可以使标点符号居中?我觉得我必须遗漏一些明显的东西。我所拥有的实体中文书籍都印有中心标点符号,然而阅读W3C article on vertical text和MDN CSS文档却没有找到关于垂直CJK文本的标点符号。
似乎标点符号的对齐受语言属性lang
的影响;例如,在中文中,它取决于属性值是普通的"zh"
还是传统的"zh-Hant"
。
这是我用来测试它的HTML文档(我必须缩短中文文本以允许内联发布):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test Vertical Writing Punctuation</title>
<style>
body { writing-mode: vertical-rl; }
.vertical-text { height: 9em; }
</style>
</head>
<body>
<hr>
<div class="vertical-text" lang="zh">
「體也若有端」五字,張惠言謂為第二條之錯簡,孫從之。
</div>
<hr>
<div class="vertical-text" lang="zh-Hant">
「體也若有端」五字,張惠言謂為第二條之錯簡,孫從之。
</div>
<hr>
</body>
</html>
顺便说一句,我完全不知道从一个随机网站复制的中文文本的含义......
更新:
根据Best Practices for Chinese Layout – Bobby Tung的说法,只有当文本以繁体中文字体显示时,无论书写模式如何(水平或垂直),中文标点似乎都会居中。
Firefox或Safari等Web浏览器遵循lang
属性并自动分配适当的字体进行显示;但是,Chrome似乎忽略了它。额外的:需要lang CSS选择器然后......
这是另一个测试页面,其中包含水平和垂直文本的中心标点符号:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test Centered Punctuation</title>
<style>
:lang(zh-Hant) { font-family: Verdana, Arial, Helvetica, sans-serif, times, Heiti TC, PMingLiU, PMingLiu-ExtB, SimSun, SimSun-ExtB, HanaMinA, HanaMinB; }
.horizontal-text { width: 9em; writing-mode: horizontal-tb; }
.vertical-text { height: 9em; writing-mode: vertical-rl; }
</style>
</head>
<body lang="zh-Hant">
<hr>
<div class="horizontal-text">
「體也若有端」五字,張惠言謂為第二條之錯簡,孫從之。
</div>
<hr>
<div class="vertical-text">
「體也若有端」五字,張惠言謂為第二條之錯簡,孫從之。
</div>
<hr>
</body>
</html>
注意:繁体中文的字体堆栈是中文文本项目网站上使用的字体堆栈。