在PTT理想的排版里 用的是等宽字体 每个字的宽度不是1就是2
中文日文这些全角字是2 英文数字这些半角字是1
中文用的全角逗号,是2 英文用的半角逗号,是1
这个宽度1或是2,在Unicode定义叫East Asian Width
现实是除中文英文外,还有很多特殊符号,既被中文使用,同时又被英文使用
依照出现在不同场合,宽度可能是1也可能是2
像Ω,δ,π等希腊字母,在PTT上是全角(宽度2)
但在其他非中文的场合,又跟其他英文字母一样被当作半角(宽度1)
这类不确定宽度1或2的字符,被称为Ambiguous character
根据UAX#11建议,在遇到Ambiguous时,得让这个字同时支援显示成半角宽或全角宽
https://www.unicode.org/reports/tr11/#Recommendations
https://i.imgur.com/0PGoOPw.png
最常见的是在看板选单,有未读文章时会出现的勾勾符号U+02C7 ˇ
得用全角显示,才会符合排版
但像我现在用的这个字型,被定义成半角,所以整个接口会歪一格
https://i.imgur.com/HKM2R46.png
另外在PTT输入时,如果遇到Ambiguous,除了排版,还可能发生光标错位问题
随便找几个Ambiguous的符号测试
如果完全遵守UAX#11建议,每个符号都应该显示成全角
U+2018 |‘|
U+25CF |●|
U+00A7 |§|
U+00B6 |¶|
U+00BD |½|
U+00BC |¼|
U+0391 |Ω|
U+027C |ˇ|
U+03C3 |σ|
6个字体就有4种不同的呈现方式,实作根本一团乱
https://i.imgur.com/4K3Hmjn.jpg
一个比较实际的解决办法是不要用PTT
狗屎烂骨董论坛= =