https://www.infl.moe/programming/2018/02/26/jekyll-pangu/
如果有更好的基于 CSS 的方法,求教。
1
Showfom 2018-02-28 02:48:13 +08:00 via iPhone
|
2
geelaw 2018-02-28 03:11:19 +08:00 via iPhone
我个人是倾向于(在已经接受手工加空格的 hack 的前提下)在 `` 两边加空格的——在拉丁文本里显然是要加的,这样可以拉丁文本、中日韩文本保持一致。
好了,解决了空白问题,让我们把目光转移到引号、省略号的正确排版吧! 更好看的 66 99 引号需要:在拉丁文本中使用窄样式,在汉字文本中使用宽样式。 更好看的省略号需要:在拉丁文本中靠下,在汉字文本中纵向居中。 我目前解决这个问题的方法是恰当地加上 lang 并用自定义 font-face 专门显示正确的标点。 |
3
geelaw 2018-02-28 03:19:23 +08:00 via iPhone
另外 Markdown 并不能真的帮你做到内容和样式分离。
举例子:在法语文本里复杂的标点空格规则下,你必须手写不同的空格来实现正确的排版,比如 Bonjour ! 完整规则:数字里的分隔符无空格;配对标点中,括号内侧无空格,引号内侧有非断开空格;冒号、分号、问号、叹号前面有一个非断开空格;逗号、句号、省略号、冒号、分号、问号、叹号后面有一个空格,除非紧跟着关闭括号或到达段落结尾;由前述规则没有确定为非断开空格的,是可断开空格。 即使是 Word 也只能做到自动插入一个正确的空格(非断开空格)。 |
4
geelaw 2018-02-28 03:23:51 +08:00 via iPhone
最后,这类插件有意外插入空白的可能,我觉得更有用的是一个检查器,可以检查出“可能不符合规则的缺少空白”并报告。日积月累,检查算法将能覆盖更多的 corner cases。(如果是自动插入空白,之后没有重新 proofread 的话你可能无法发现意外插入的空白。
我看了一眼,是直接用的 pangu,然而由于我个人总是手加(是的,我就是这么古法)所以无法对效能做出评价。 |
5
WildCat 2018-02-28 04:12:32 +08:00 via iPhone
一直手加路过
|
6
inflationaaron OP @Showfom 我用的就是这个库的 regex,但是默认的标准空格宽度太宽了。
@geelaw 我这个确实是属于一个 hack,理想情况下 Markdown 只承载内容,而样式交给不同的排版引擎来实现。但是现有的浏览器对于中西文间距没有很好的解决方案,text-space 被放到了 level 4,等到猴年马月才可能被实现。 至于标点符号以及更高级的排版需求,我参考过中文排版需求和汉字标准格式这个 CSS + JS 库,它实现了包括首尾标点悬挂、标点挤压等功能。本来是想用一下的,但是跟我现有的格式不太兼容,没仔细调过,等以后有时间了再看一看。 手加空格只能算是对于排版引擎的妥协,我更愿意让程序完成这些操作。 |