2

我想采用 Microsoft Symbol 字体中的字符(取自 docx 文件中的 w:sym 标记)并将它们呈现在 html 中。当我将文档另存为 html 时查看 Word 如何写出字符时,我看到了这一点:

<span style='mso-char-type:symbol;mso-symbol-font-family:Symbol'>Â</span>

这在 Word 和 Word 的 html 输出中都显示为脚本 R。

当我在自己的 html 文件中编写相同的内容时,我看到了常规字体的 A-hat,并且 Chrome 的元素检查器警告说 mso- 属性是未知的。

在 Word 的 html 输出中,有很多特定于 mso 的东西,但我看不到任何东西让 Chrome 知道如何解释 mso-char-type 和 mso-symbol-font。我在 IE 中看到了相同的行为。

有没有简单的方法告诉浏览器使用 Symbol 字体?或者我是否必须将 Symbol 字体字符显式转换为 Unicode(使用静态转换表?)

谢谢,

Wayne
4

2 回答 2

2

Symbol字体是一种私有编码字体,即将各种字形放置在按照字符编码标准应该被其他字符占据的位置。这意味着,只要 Symbol 字体不可用,或者页面样式表被覆盖,或者浏览器行为正确,使用它的网页就会失败:例如,字母“”不能使用 Symbol 字体呈现,所以浏览器将使用后备字体。

正确的方法是在 UTF-8 编码页面中使用 Unicode 编码字符,例如“ℜ”,并font-family在适用的元素上设置包含包含此字符的字体列表。有关这方面的一般说明,请参阅我在 HTML 中使用特殊字符的指南

在一些有问题的浏览器上工作的不恰当方法是以浏览器通常理解的方式将字体设置为 Symbol,例如<font face=Symbol>Â</font><span style="font-family: Symbol">Â</span>。但如前所述,如果这“有效”,请将其视为浏览器错误。

所以是的,如果你现在有使用 Symbol 字体的数据,它应该被映射到 Unicode 字符。

请注意,很少需要像“ℜ”(黑色大写字母 R,而不是脚本 R)这样的字符。特别是,复数z的实部的标准(根据 ISO 80000-2)符号不是 ℜ( z ) 而是 Re z

于 2013-08-29T20:39:57.937 回答
0

好的,只需删除 mso-symbol 并编写 font-family:Symbol 似乎就可以了。但是我怀疑这不是真正的最佳实践......可以在这里找到将符号转换为 unicode 的表格:http ://www.alanwood.net/demos/symbol.html

于 2013-08-29T18:05:55.940 回答