6

所以土耳其最近决定为他们的里拉创建一个新标志:

在此处输入图像描述

Unicode 6.2(2012 年 9 月发布)将此添加到其曲目U+20BA ₺ TURKISH LIRA SIGN,并且我被要求开始在我正在构建的 Web 应用程序中使用它。问题是目前还没有人支持这一点(显然 Windows 8 除外),而且它没有显示为通常的正方形、问号或块 o' hex,而是各种其他随机的东西。通常可靠的fileformat.info认为它应该是这样的:

在此处输入图像描述

...这也是我在 OS X 上得到的。 Charbase也出错了,但不同的是:

在此处输入图像描述

实际问题:有什么明智的方法可以解决这个问题吗?最大的复杂性是该字符应该被允许出现在任意的、用户可编辑的文本中,因此任何基于图像的解决方案都被排除在外。

还有理论上的问题:据我所知,U+20BA 从来没有分配过一个字符,那么那些奇怪的符号是从哪里冒出来的呢?我没有遇到同样的问题U+20B9 ₹ INDIAN RUPEE SIGN,它几乎是新的并且受到严重支持,但至少失败得更优雅。

4

3 回答 3

10

目前最好的拍摄可能是使用谷歌字体Source Sans Pro。它在其 latin1 子集中包含土耳其里拉。所以你可以使用例如

<link rel=stylesheet href=
"http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,400italic,700italic&amp;subset=latin,latin-ext">
<style>
body { font-family: Source Sans Pro; }
</style>

但是,这意味着您应该考虑使用 Source Sans Pro 作为您的整体字体。这有两个原因。假设您声明font-family: Arial, Source Sans Pro例如。首先,IE 9 无法渲染土耳其里拉(它确实不擅长使用字体)。其次,在技术上使用字体的浏览器上,像“₺50”(土耳其里拉前面的数字)这样的表达式看起来很奇怪,因为数字比货币符号高得多。原因是在 Source Sans Pro 中,TURKISH LIRA 被设计为匹配该字体中数字的高度,而在 Arial 中,数字的高度较小。

作为替代方案,您可以使用相对较大尺寸的土耳其里拉图像并使用img元素来嵌入它,并将height属性设置为em单位以使其缩放到字体大小。尺寸较大的原因是图像通常向下缩放得很好,但向上缩放得不是很好。在我在 HTML 中使用特殊字符的指南中,我建议使用height: 0.8em对于嵌入为图像的字符,但确切的尺寸实际上取决于字符和图像的设计以及它应该如何与字体中的字符相关联。正常的原则是让“$”、“£”和“€”等货币字符与数字占据相同的高度(具体来说,“衬数字”或“大写数字”,这是大多数字体默认具有的; Source Sans Pro 也有“旧式图形”,但需要使用 CSS 进行选择)。

从长远来看,土耳其里拉是 Unicode 中的最新字符,于去年 9 月添加,从一个字符采用 Unicode 到其在字体中普遍可用,通常需要大约十年或更长时间。

PS 这是字体问题,不是浏览器问题,尽管一些浏览器 (IE) 仍然难以从不同字体中提取字符。

于 2013-01-02T12:04:30.090 回答
4

您可以通过以下方式在 Web 上提供您自己的字体:https ://developer.mozilla.org/en-US/docs/CSS/@font-face 并通过http://fontforge.org/创建您自己的字体

如果您使用 XML 并且您的要求不允许它,您可以使用实体来定义一些标记,其中包括暂时的图像标记(以后可以用 Unicode 字符替换),或者通过JS在 HTML 中做类似的事情或 CSS

于 2013-01-02T06:07:01.610 回答
1

我认为“什么都不做”是最好的主意。如果用户的浏览器/字体不支持,那么需要升级的是用户。您在服务器端所做的任何事情都将是 hack(尽管通过 CSS 提供字体并不是一个坏主意)。如果您的应用程序在用户提供的文本中支持任意 Unicode,最终您的应用程序将变得兼容,因为较旧的浏览器和设备会被较新的浏览器和设备取代。

向你的老板解释这一点是困难的部分。

于 2013-01-02T06:24:46.523 回答