如何在Unicode中很好地显示分数15/16?

如何在Unicode中很好地显示分数15/16?,unicode,unicode-escapes,Unicode,Unicode Escapes,今天我了解到,虽然公共分数有专用的Unicode值,但为了形成像这样不太常见的分数/₁₆ 必须使用上标/下标字符,后跟斜杠。这一点已得到证实和确认 这适用于CharStyle/₁₆ 及/₁₆, 但它会被搞得一团糟⁵/₁₆. 你看到5比1高吗?我想这是因为为了将数字5清楚地显示为上标,它需要比1和3更高的高度 这就产生了一个问题。如何将分数15/16很好地显示为Unicode字符?不幸的是,我不能使用sup和sub标签。我没有在HTML页面中显示它。相反,我们将向Java应用程序传递一个字符串,然

今天我了解到,虽然公共分数有专用的Unicode值,但为了形成像这样不太常见的分数/₁₆ 必须使用上标/下标字符,后跟斜杠。这一点已得到证实和确认

这适用于CharStyle/₁₆ 及/₁₆, 但它会被搞得一团糟⁵/₁₆. 你看到5比1高吗?我想这是因为为了将数字5清楚地显示为上标,它需要比1和3更高的高度


这就产生了一个问题。如何将分数15/16很好地显示为Unicode字符?不幸的是,我不能使用sup和sub标签。我没有在HTML页面中显示它。相反,我们将向Java应用程序传递一个字符串,然后该应用程序将呈现这些值。我知道它可以很好地呈现Unicode值,但它无法识别HTML标记。是否有Unicode解决方案?

这确实是一个字体问题,但问题是,在Unicode中,
ª
²
³
属于拉丁语-1补遗块,而其他上标数字属于上标和下标块,并且发生了一些字体替换


更多详情请参阅;它被标记为iOS,但我在macOS上也有同样的问题。

用Unicode编写任意粗俗分数的“正确”方法是根本不使用下标和上标数字,而是利用字符U+2044分数斜杠的特殊属性。您只需键入常规ASCII数字,并用斜杠将它们分开,如:15⁄16。然后,渲染引擎将自动选择正确形式的数字,生成干净、统一的外观


我在引号中加上了“property”一词,因为这种方法不能保证在所有系统上都得到支持,而且一些确实支持它的系统这样做是错误的或不完整的。如果您绝对需要确保100%的收件人(无论系统如何)肯定会看到或多或少正确的内容,那么我仍然(不情愿地)建议使用预格式化的下标和上标作为替代。正如另一个答案所解释的,您遇到的问题是字体问题,如果您无法控制字体设置,则无法解决。

有关显示分数、复制、粘贴和更改的一般答案

ASCII字符 名称 十六进制值 ⁄ 分数斜杠 8260 0 数字0 48 1. 数字1 49 2. 数字2 50 3. 数字3 51 4. 数字4 52 5. 数字5 53 6. 数字6 54 7. 数字7 55 8. 数字8 56 9 数字9 57
你看到5比1高吗?不,我没有。这里看起来不错。这听起来像是字体问题,而不是unicode问题。请注意,如果在斜杠前后使用上标和下标,某些字体渲染器可以正确显示它⁷⁄₂₃所以
1
2
3
可能会以与其他字体完全不同的字体显示?这肯定会导致一些一致性问题。好吧,假设您编写
1\u2044 16
(不带空格)试图将1/16显示为分数图示符。渲染引擎如何知道分数在16之后结束,而不是在1之后结束。也就是说,它如何知道它是1/16而不是1/1后跟6?一旦文本渲染器遇到一个不能作为分数一部分的字符,即不是ASCII数字的字符,分数就结束了。为了扩展这个问题,如果我想显示1和15个十六分之一,而不是115个十六分之一,该怎么办?我是否可以使用unicode字符将“1”与“15”分开,以便渲染引擎知道“1”与“15⁄16”分开?@M.Justin任何零宽度的不可见字符都可以。我个人更喜欢使用U+2064 INVISIBLE PLUS,因为它的编码正好代表这种语义概念,但是像U+200C零宽度非连接符或U+2060字连接符这样的东西也可以工作;只是简单的旧十进制值。