如何针对不同文字脚本自动补偿CSS下划线?
多语言文本下划线显示异常问题
以下是一段带有下划线的英文文本示例:
诚然,字母"p"的descender(下行部分)会与下划线重叠,但除此之外,下划线明显位于文字下方。
另一方面,我们来看中文的情况:
下划线肯定不在文字上方,但也并非严格位于文字下方,而是处于文字的“底部区域”。可能有人会说“这就像英文里"p"的descender一样”,但我并不这么认为。不含descender的英文文本底部与句号底部对齐,下划线完全位于句号下方(下划线顶部与句号底部对齐):
underline -> ▃ ▀ <- period
但在中文文本中,下划线与句号底部对齐,而非位于其下方(下划线底部与句号底部对齐):
underline -> ▀ ▀ <- period
我测试了另外约8种非拉丁语系文字脚本,其中一半的下划线显示正常,另一半则是“似是而非的下划线”。
我知道可以通过偏移CSS下划线来调整,但不清楚不同脚本需要多少偏移量,且我需要处理超过100种语言。是否有办法让CSS始终将下划线置于文字下方,而非类似删除线的位置?
其他语言情况
- 韩语:问题最轻,只是略有偏移,如果这是最严重的情况,我还能接受。

- 蒙古语:情况不算太差,但显然对“descender”的定义比较宽泛。

- 阿姆哈拉语:情况和中文一样糟,甚至更严重。

以下是颜色反转后的中文示例,问题更加明显:
浏览器差异
编辑补充:该问题仅出现在Chrome/Brave浏览器中。
- Brave浏览器效果:

- Firefox浏览器效果:

使用的字体
- 字体一:

- 字体二:

内容的提问来源于stack exchange,提问作者Peter R
相关产品推荐
相关产品推荐

