You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何U+0307 tittle可叠加在tittle上,却无法在带tittle的i、j上正常显示?

我尝试将字符串转换为「tittle大小写」(回应另一个可能存在拼写错误的问题)时,发现部分字符无法添加tittle。

tittle即上标点,是一种小型区分标记,比如小写i、j上方作为变音符号的点就属于tittle。

"上点"(即tittle)对应的UTF-8码位为U+0307。如果将tittle与本身已带有tittle的i或j组合,新增的tittle不可见(可能是因为它的位置刚好和这些字符自带的tittle重合)。但你可以给一个tittle再添加tittle(这看起来很奇怪,毕竟单个tittle无法给已有tittle的字符加标记)。此外,还有很多UTF-8码位(比如黑色上三角U+25B2)会导致tittle无法显示在其上方,本质上此时该码位就不再是tittle或上点了。

那么UTF-8的tittle不总是显示为上点的原因是什么?可能是变音符号可组合的码位范围存在限制,也可能是字体、HTML、浏览器渲染限制导致?下方代码片段演示了上述提到的各类tittle添加问题(我遇到该问题时浏览器默认字体为Times New Roman,因此片段中使用该字体,其他字体可能存在各类不同的渲染问题)。

担心该问题是重复问题的用户可以放心:我搜索了数千条tittle相关问题,意外没有找到任何能解答我疑问的内容。

更新

我最初没意识到,但想来应该很明显:字体选择完全决定了你能否给特定字符添加tittle(毕竟大多数字体仅能忠实渲染UTF-8码位的一个子集)。剩余的问题是,是否存在简单方法,可以判断特定字体下哪些字符可以和tittle这类变音符号或其他组合字符(combining characters)组合,从而提前预判你添加的tittle会显示为上点,而非位置错乱的点。

演示代码

CSS样式

div {
  font-family: "Times New Roman", serif;
}

HTML代码

<div>i上方不可见的tittle: i&#x307</div>
<div>tittle上叠加的可见tittle: &#x307&#x307</div>
<div>三角右侧未对齐的tittle: &#x25B2&#x307</div>
<div>双tittle实现i上方可见tittle: i&#x307&#x307</div>

内容的提问来源于stack exchange,提问作者benvc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:27:01