【问题标题】:Strange squares in text on Chrome for WindowsWindows 版 Chrome 上的文本中出现奇怪的方块
【发布时间】:2017-03-19 14:49:04
【问题描述】:

我们在三个定制的 WordPress 网站上遇到了一个奇怪的问题。文本中有随机可见的方块。这些方块仅在 Chrome for Windows 中可见。方块在https://www.dakcheck.nl 可见。 I also made a screenshot of the issue。你知道什么可能导致这个问题吗?

【问题讨论】:

标签: html css text font-face roboto


【解决方案1】:

您似乎使用了latin 子集中不包含的字符。您需要指定包含您在加载字体时使用的字符的附加子集。在您的示例中,您需要替换

https://fonts.googleapis.com/css?family=Roboto:400,700,700italic,900,900italic,500,400italic,500italic,300,300italic

...与:

https://fonts.googleapis.com/css?family=Roboto:400,700,700italic,900,900italic,500,400italic,500italic,300,300italic&subset=latin,latin-ext

注意&subset=latin,latin-ext 后缀。

重要提示:如果奇怪的字符不是与您的语言相关的特殊字母,最可能的原因是您保存的文件和网页之间的编码不同。您需要确保您的 IDE 使用与页面的 <head> 标记中声明的完全相同的编码来保存您的(.php.html.css.js 等)文件。
到目前为止,最好的选择是 UTF-8,但是关于你应该使用什么编码的建议超出了这里的范围。重要的是它们必须匹配。


附加说明:我个人认为您应该简化网站中字体的使用,并尝试大幅限制您当前加载的字体粗细和变体的数量。您当前正在加载300400500700900 的权重normalitalic 变体。您可能只使用400700900,其中一些甚至不需要italic(如果不使用)。
另请注意,您无需更改当前CSS 中的font-weights 即可简化字体使用。如果指定了font-weight 但不存在,浏览器将自动使用最接近的匹配。例如,如果您现在在一个元素上有 font-weight:500,但只加载指定字体的 400700 权重,它将自动在元素上使用 400 而不是 500

在网页开发中,常用的字体粗细有:

  • thinfont-weight 属性的无效值 - 在类定义中定义它)通常 font-weight:200; - 通常与大 font-sizes 结合使用,以显示大而非常薄(~@ 987654353@) 信
  • 正常font-weight 的有效值)通常转换为 font-weight: 400;
  • 粗体font-weight 的有效值)通常转换为 font-weight: 700;
  • extraboldfont-weight 的值无效 - 在类定义中定义)通常为 font-weight:900; - 通常用于标题。

【讨论】:

  • 嗨,Andrei,感谢您提供这些有用的信息,我非常感谢 :)。不幸的是,它并没有解决问题。我已经替换了 Google 字体 URL,还删除了一些未使用的字体权重。这些方块在网站和 WordPress 中仍然可见。我需要手动删除方块还是您有其他解决方案?
  • 您是否也像我建议的那样将&subset=latin,latin-ext 附加到字体链接?这才是真正的答案。其余的只是一个注释。
  • 是的,我做到了。以下是完整代码:<link href="https://fonts.googleapis.com/css?family=Roboto:400,400italic,700,700italic,900,900italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
  • @PatrickHeiloo 因为您是荷兰人,所以我自动推测某些与您的语言有关的字符无法正确显示。那些方块不是来自您的语言的字母,它们应该带有一些口音吗?
  • 不,我只使用没有特殊字符的普通字母。我截取了我的代码:link
【解决方案2】:

我认为您将不得不编辑您的内容文本:存在的内容是控制字符,即 end of text 控制字符出现在不应该出现的位置:

即导航到https://www.dakcheck.nl/ 并调用

var t = document.getElementsByTagName('h1')[0].innerText;
t.charCodeAt(t.indexOf('met ')-1)

在控制台中生成3

这可能是由于从某些(桌面?)富文本编辑器复制粘贴到 WP 中造成的,尽管我认为 WP 编辑器应该处理这个问题。

【讨论】:

  • 感谢您的评论。所有文本都是通过 HTML 完成的,所以它是纯文本。这是截图:link
  • 您是在此处手动输入这些内容文本还是从其他地方粘贴?无论如何,我会尝试删除并在标题中再次写入n m,如果它擦除了不可见的稻草内容。
【解决方案3】:

我已经能够使用 HxD hexeditor 根除类似的幻像字符。您将在右侧看到常规文本,在左侧看到 BinHex。无论幻影字符是什么,用'20'代替它,你会得到一个没有框的常规空格。

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 2012-08-07
    • 2020-09-07
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多