Unicode 上标一、二和三 […] 是 […] 相同的“高度”。Unicode 上标四和五 [...] 是 [...] 相同的“高度”,但所说的高度似乎与 Unicode 上标一、二和三的高度不同。
Unicode 是关于编码字符而不是关于它们的详细形状。例如,Unicode 字符 U+0067(拉丁文小写字母 G)可能因字体不同而看起来完全不同,例如,它的下行字符可以打开或关闭——Unicode 不在乎。
类似地,Unicode 没有规定任何关于上标数字的高度。然而,目的是实现这些字符以相互匹配,即具有相同的高度。但照顾好这个是字体设计师的工作。
Unicode 上标一、二和三似乎是同时完成的 […]。Unicode 上标四和五似乎是同时完成的,但与一、二和三的时间不同 […]
这实际上只是一个历史事件,可能是由于与旧编码或类似编码的向后兼容性。人们可以深入研究 Unicode 的历史以找出究竟发生了什么,但这并不重要。
这样做的主要影响是前三个上标位于 Unicode Block Latin-1 Supplement 中。由于字体的字形覆盖通常在支持的 Unicode 块中指定和宣传,而Latin-1 Supplement是一个重要的块(例如,包含大多数使用拉丁字母表的欧洲语言所需的特殊字符),许多字体设计师将实现这个块中的所有字符,唯一的原因是它们的字体覆盖了这个块,即使是现在几乎不再使用的像 ¬、¦ 和 ¤ (U+00A4、U+00A6 和 U+00AC)这样的字符。
这些类型设计器也可能不支持包含其他上标数字的上标和下标块。此外,由于创建正确的上标数字需要时间(见下文),一些字体设计师可能决定只支持第一个,最重要的数字。
当您使用仅支持前三个上标数字的字体时,无论呈现您的文本,都将为其他数字使用备用字体,因此它们将不匹配。这很可能是引起您问题的观察结果。
我希望不必<super></super>
为每个人使用。
正如上面已经暗示的那样,印刷良好的上标数字不仅仅是重新调整的正常数字 - 您通常会在使用<sup>
或类似时得到它¹。重新缩放的正常数字通常会太细,或者在其他方面与正常文本不一致。这个问题类似于光学尺寸的问题。此外,默认数字可能是小写数字,您不想将其用于上标数字。
以下是一些支持上标数字的字体示例(然后相互匹配)。为了比较,在右侧,您有通过调整常规数字大小生成的上标数字。

在所有示例中,指定的上标数字比按比例缩放的常规数字更粗、更宽和更小。(当然,您可以将常规数字缩放得更小,但这会加剧其他差异。)
请注意,在第一个示例中,上标数字的衬线与字母的衬线大小相同。在第四个示例中,上标数字与常规数字(也恰好是小写数字)的风格完全不同。
¹ 除非您的字体支持 OpenType 功能Superscript Forms ( sups
) 并且您的浏览器尽可能使用此功能作为<sup>
标记。但是,据我所知,目前还没有浏览器这样做。