为什么我应该对罗马数字使用Unicode的特殊字符?


43

这是为了回答有关罗马数字Unicode字符的此问题的注释中出现的一个问题:

为什么相对于通常键入ai,ai-ai,ai-ai-ai,vee-ai等的常用方法,这是必需的还是优选的?

首先,在Unicode的Number Forms块中,存在罗马数字代码点,乍一看与标准大写拉丁字母或它们的组合(U + 2160 – U + 217F)外观非常相似。例如,U + 2165(罗马数字6)看起来很像VI(拉丁大写字母V和拉丁大写字母I)。

因此,出现了一个问题,为什么人们不应该使用后者来表示那些数字,例如用type Louis VII代替Louis Ⅶ。显然,不使用特殊字符可以避免与不支持特殊字符的字体的兼容性问题。但是,即使我知道将使用支持这些字符的字体来呈现文本,为什么还要麻烦使用它们呢?

Answers:


56

在许多字体中,您确实发现将Unicode字符用于罗马数字与仅由标准拉丁字母组成它们之间几乎没有区别。例如,以下显示了用FreeSans渲染的Louis VII(顶部)和Louis Ⅶ(底部,使用罗马数字的代码点):

在此处输入图片说明

除了间距上的微小差异(这不是故意的)外,输出是相同的。

这是用DejaVu Sans渲染的相同文本:

在此处输入图片说明

尽管字符看起来仍然相同,但间距存在很大差异。后者是否更适合罗马数字可能是个问题,但对于常规全大写字母,紧缩字眼当然不是一个好的选择。

Linux Libertine更进一步:

在此处输入图片说明

在这里,罗马数字比大写字母略小,因此与字体的阿拉伯数字匹配。最重要的是,它们相互连接,再现了通常在手绘罗马数字中发现的功能。

现在,有些人可能仍然认为上面没有任何改进,或者不值得付出这些努力。因此,在这种情况下,不使用Unicode字符会产生可怕的结果:

在此处输入图片说明

(请注意,数字的小尺寸反映了某些实际的历史排版。)对于脚本或书法字体,可能会发生类似的情况。

如果没有罗马数字的特定Unicode点,则只有通过以下方式解决后一个问题:

  • 使用复杂的OpenType功能(或类似功能)尝试检测大写字母序列是否为罗马数字。这将不可避免地引起单词问题,这些单词也将是有效的罗马数字。

  • 使用简单的OpenType功能,需要为每个罗马数字手动激活它。

  • 使用Unicode的专用区域。即使在两种都支持罗马数字的字体之间切换时,也可能会出现兼容性问题。

从Unicode的角度来看,大写拉丁字母和罗马数字之间的巨大语义差异应足以满足罗马数字的单独编码要求。


罗马数字会带来什么不同于首字母缩写词和首字母缩写词的问题,首字母缩写词和首字母缩写词都可以通过使字体包含一组小写字母来适当地处理,而这两者都可以正确处理吗?我希望应该使用大写字母而不是小写字母显示“ VII”的场景与应该同样显示“ NATO”或“ PM”的场景相同。虽然有一种用“ VII”而不是“ VIP”连接横线的方法也许很好,但我不确定当在文本中使用数字时,横线是否应该连接。
2015年

很好,它增加了一些扩展的语义,但是如果您想将其合并到答案中,请随意这样做,否则请删除我的。
joojaa 2015年

@supercat:我不确定您的目标是什么,但是根据我的经验,在现代印刷术中,罗马数字始终具有大写字母的大小,而在德语以外的语言中,可以使用小写字母表示全大写字母。在blackletter印刷中,您会使用罗马字体来表示全大写字母和罗马数字,但是有时您会使用较小的罗马数字(如上所述),并且在某些非常特殊的情况下,您会使用blackletter全大写。
Wrzlprmft

@Wrzlprmft:我希望罗马数字的印刷尺寸与“ PM”或“ NATO”一样。在某些情况下,此类事物被打印为全尺寸大写字母,但在另一些情况下,则使其显得过于突出。如果一种字体有一组大写字母,并且相对于其余字体,其设计适合于“ PM”或“ NATO”,那么我认为它也适合于罗马数字。
2015年

@supercat:对于常规的罗马字体,是的(尽管可以争论这是否是最好的选择)。但是,blackletter和脚本字体呢?另外,您从中得出什么结论?
Wrzlprmft

27

TL; DR Unicode协会建议在可能的情况下使用拉丁字母,而不要使用数字,以与东亚字体兼容。

全文:(有上述主张的理由)

除非您要进行一些东亚印刷术,否则使用unicode(U + 2160 — U + 217F)中的(非古罗马)罗马数字字符是一种技巧。

包含这些字符是为了与Unicode以前的东亚标准兼容。这些字符保持垂直,在此情况下,东亚文本从上到下进行排版,而在这种情况下,通常将拉丁字符(例如名称)的文本横排书写。

引用Unicode标准的最新版本(v 7.0,第22章,第20页)

罗马数字。对于大多数目的,最好由适当的拉丁字母序列组成罗马数字。但是,罗马数字到12的大写和小写变体以及L,C,D和M已在Number Forms块(U + 2150..U + 218F)中进行了编码,以与东亚标准兼容。与拉丁字母序列不同,这些符号在垂直布局中保持直立。此外,在某些语言环境中,紧凑的日期格式使用罗马数字表示月份,但可能希望使用单个字符。

因此,从理论上讲,罗马数字和字母之间的区别是富文本的问题,例如斜体,字体更改或可选的连字。就是说,如@Wrzlprmft所示,某些字体使用它来避免每个罗马数字的字体更改,同时保持良好的排版。

XII而不是XIII的字符存在意味着同一数字存在多种不同的编码,这会导致文本搜索困难:如果您撰写有关Louis XII和Louis XIII的文字,则可能会将XIII编写为X + I + I + I,但是您将XII写为一个字符吗?还是X + I + I与XIII保持一致?使用罗马数字字符时,没有一个很好的答案,这就是为什么Unicode联合会建议在可能的情况下使用拉丁字母而不是数字。

编辑: 在开始时添加了TL; DR断言


9
Unicode协会建议尽可能使用拉丁字母而不是数字。” 这应该比目前更加突出。
Ixrec 2015年

1
从Unicode语义的角度来看,这是迄今为止最好的答案。某些字体可能会出于实际原因而偏爱罗马数字字符,这当然是独立的图形设计考虑因素,但从语义上讲,它们始终是错误的。
R.,

13

从外观上看可能没有太大区别。因此,如果您只出版印刷材料,那么除了Wrzlprmft在他的出色回答中指出的某些字体外,没有什么区别。

语义很重要

语义上的差异是巨大的。通过使用罗马数字,可以清楚地知道您是在说数字5而不是字母V。确保它们看起来相同,但含义不同。这意味着当您搜索“ XX版本5”时,搜索引擎可能更有可能找到“ XX标记V”。

实际上,某些事情表现不佳的原因是因为我们没有嵌入语义信息。如果我们愿意,世界的确将是一个更好的地方。因此,使用正确的语义含义与在文字处理器中使用样式与手动样式大致相同。在人的方面差异不大,但是自动化方面却具有强大的力量。

字体应使用不同的罗马数字

字体制造商并没有真正使用它们,因为它们很少使用。但是通过使用这些,您可以在字母上得到罗马数字平板,从而将它们与文本区分开。因此该功能未得到充分利用,因为它很少使用。字体并不能真正实现所有功能,也不应该实现。通过使用它们,如果它们存在,您将受益。

结论

这肯定是鸡和蛋类型的问题。如果人们不使用特殊字符范围,则不会为这些范围设置特殊津贴。因此,字体将不支持特殊样式的罗马文字,因为这样做只会浪费精力在没人使用的功能上。同样适用于搜索:如果没有人使用罗马文字,那么搜索引擎将找不到罗马文字,并且语义会丢失。语义学因没有采用正确的语义而受苦。同样的事情当然也适用于更大范围的Unicode字符。

至于输入的复杂性,是的,大多数用户不能编写扩展字符,但这不是有知识的人在合理的情况下跳过这样做的借口。如果没有人能使事情变得更好,那么就不会取得进展。甚至连地狱单词都有通过键入/ alpha来编写alpha的模式。因此,实际上没有理由没有简单的方法来标记数字,甚至无法自动建议它们。同样,如果没有人这样做,它将永远不会得到更广泛的采用。


实际上,当搜索“ Louis VII”而不是“ LouisⅦ”时,搜索引擎会返回更好的结果,因为实际上,大多数内容是使用不允许这种精细语义区分的工具生成的。
xpereta 2015年

1
@xpereta是的,因为人们不在乎语义。但是,如果他们愿意的话,您也很容易将数字匹配为7。世界上大部分的不了解是因为人们认为在很容易做到的时候明确指出事物的语义差异并不重要。即使人类愿意,计算机也确实不知道区别
joojaa 2015年

1
@joojaa在这种情况下,它可能与VII比easier更容易键入数量级有关。我不确定这是否会改变。
Ixrec 2015年

我将在最后一段稍加扩展,以得出您的结论,即像这样的特殊字符的更广泛使用将鼓励更广泛的字体实现。
内森·塔吉

2
我强烈质疑这个关于语义的答案。Unicode罗马数字字符<compat>等效于拉丁字母的相应序列,这强烈暗示了它们完全采用Unicode的唯一原因是为了与具有它们的某些旧式(可能是CJK)字符集实现往返兼容性。除了忠实地以旧版编码创建往返文档外,通常不应使用此类字符。
R..
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.