【问题标题】:Rendering of umlauts (åäö) in IE8 and IE9 with Verdana使用 Verdana 在 IE8 和 IE9 中渲染变音符号 (åäö)
【发布时间】:2012-03-27 00:37:41
【问题描述】:

在某些页面上出现这个奇怪的问题,有时在 IE8 和 IE9 中呈现变音符号 (åäö) 会出错。编码是 utf-8 (大部分网站都有效,所以我知道它是正确的),我试图缩小 css 类的范围,似乎 Verdana 只受到影响。也试过不同的电脑。

我认为我可能与元 X-UA-Compatible 相关,但没有运气就更改为这个标签。

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

它应该是这样的:

这是 IE8 和 IE9 中的结果

【问题讨论】:

  • 这是任何字体大小/粗细的问题吗?
  • 如果您将交付的 HTML 文件的编码更改为 latin1(并适当地设置标签),它是否可以正常工作?您能否向我们展示发生这种情况的 HTML 示例(简单)文件?
  • 有页面链接?我从未在 IE8 中看到过这样的行为,我想亲眼看看。
  • 是的,看起来像是 IE 中的字体渲染错误,但令我惊讶的是,这也发生在 9 中。 8 很差,但 9 稍微好一点。一个链接会很有帮助:)
  • 我遇到了类似的问题,我用 ctrl + 0 解决了(缩放重置为默认值),因为我使用了一次 ctrl- 并且愚蠢的 IE 渲染总是与那个放大 (ctrl-)。希望会奏效。

标签: html internet-explorer-8 fonts internet-explorer-9


【解决方案1】:

问题之所以出现,是因为尽管文本以有效的 UTF-8 编码,但使用了 分解 Unicode 规范化形式,请参阅Unicode equivalence。似乎在 Windows 上,许多字体在使用通常的单个预组合字符时效果最好,而不是使用单独的组合变音符号的基本字母序列。

例如,让我们用十六进制编辑器看一下från这个词。

在您的网站上,它被编码为66 72 61 CC 8A 6E(即拉丁小写字母f、r、a,然后是U+030A 代码点代表上面的组合环,然后是@987654329 @)。

但在 Windows 中,通常的编码是 66 72 C3 A5 6E(即拉丁小写字母 f、r、å、n)。因此,字母 å 通常由单个代码点 U+00E5 表示(而不是序列 U+0061, U+030A)。

如果您使用的是 PHP,请先尝试使用 Normalizer class 规范化文本(只要确保安装了 intl 扩展)。

【讨论】:

  • 就是这样。我使用了以下内容: $normlizer = new \Normalizer(); $content = $normlizer->normalize($content, \Normalizer::FORM_C);基本上 FORM_C 和 FORM_KC 可以很好地解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 2018-06-28
  • 2012-09-17
  • 2011-08-24
  • 2016-05-16
  • 1970-01-01
  • 2013-04-01
  • 2012-09-16
相关资源
最近更新 更多