我正在解析一个 XML 文档,该文档包含 Sabon 字体的私有区域中的字符。必须替换这些字符,因为必须将字体更改为 Times New Roman。到目前为止,一切都很好。
现在我需要替换一个看起来像 SS 的字符(双 s,就像两个 s 的连字)。我检查了 Times 并没有找到相应的字符。有人知道unicode中是否有这样的东西吗?
这有点神秘,但我认为您看到的字形是“ß”U+00DF LATIN SMALL LETTER SHARP S 的小型大写字形,通常称为“德语双 s”。对于你在评论中提到的这个词,这没什么意义,因为布鲁索内是法国博物学家,法语不使用“ß”(德语不使用“ß”作为外国名称),所以“谷歌发现的 Broußonet 一定是奇怪的拼写错误。
复制的字符串包含 Sabon 似乎用于小写字母的私人使用代码点。这有点奇怪,因为现在通常将小写大写字母作为字形变体包含在内,可以使用 OpenType 功能而不是 Private Use 代码点进行选择,根据定义,这些代码点是不可移植的。
这仍然不能解释发生了什么,因为从这个意义上说,字符串包含“Broussonet”,“ss”由用于 Sabon 中小型大写字母“s”的私有使用代码点的两个副本表示。据推测,“ss”和“ß”之间的一些转换正在某处发生。无论如何,您第二条评论中的“字符”是 U+E03F,这是一个私人使用代码点,显然用于小型大写字母“ß”,CFF 字形 id Germandbls.sc,在萨本。
但是,如果文本被解释为真的是大写字母,第一个字母以外的字母使用小写大写字母表示,并且如果“SS”随后被解释为或替换为“ß”的大写形式,那么它就是“ẞ” U+1E9E LATIN CAPITAL LETTER SHARP S。在普通德语正字法中,“ß”映射为大写的“SS”(普通字母“S”的两个副本),但现在Unicode也有U+1E9E,以满足保留的需要拼写上的差异,例如在 Strauss 与 Strauß 中,当名称以全大写形式书写时。Times New Roman 的现代版本有“ẞ”字形,旧版本没有(U+1E9E 在 2008 年 4 月的 Unicode 版本 5.1 中添加)。