Google字体网址在w3.org上打破HTML5验证

Oct*_*ian 176 html5 w3c-validation google-font-api

我使用此HTML标记加载了3种不同大小的字体:

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic|PT+Serif:400,400italic|Bree+Serif">
Run Code Online (Sandbox Code Playgroud)

Till~1/2周前,w3.org验证器支持HTML5; 现在它给出了这个错误:

 Line 14, Column 163: Bad value http://fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic|PT+Serif:400,400italic|Bree+Serif for attribute href on element link: Illegal character in query: not a URL code point.
Run Code Online (Sandbox Code Playgroud)

W3C Markup Validator现在不喜欢什么?

ste*_*eax 324

URL对属性()中的|(管道字符)进行编码:href%7C

<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic%7CPT+Serif:400,400italic%7CBree+Serif">
Run Code Online (Sandbox Code Playgroud)

  • @MikkoRantalainen,[RFC 1738](https://www.ietf.org/rfc/rfc1738.txt)指出管道字符不安全:其他字符不安全,因为已知网关和其他传输代理有时会修改此类字符.这些字符是"{","}","|","\","^","〜","[","]"和"`". (2认同)
  • 我希望原始UTF-8在UTF-8编码的HTML中有效而不编码其他字符,但用于HTML的那些字符,例如`&`,```和```.那些特殊字符需要用HTML规则编码(例如`&amp; etc).然后,用户代理将遵循RFC 3987并在通过HTTP(https://tools.ietf.org/html/rfc3987)提交之前将IRI转换为百分比编码的UTF-8. (2认同)

小智 7

http://www.utf8-chartable.de/

您必须替换字符| 通过其相应的UTF-8字符给出

href="http://fonts.googleapis.com/css?family=Cookie%7cAmaranth%7cKaushan+Script%7cCousine%7cBilbo+Swash+Caps%7cRancho&amp;effect=shadow-multiple"
Run Code Online (Sandbox Code Playgroud)


小智 7

有两种方法可以解决此验证问题:

  1. URL编码元素属性中的|(垂直条/线)字符(as ):hreflink%7C

    <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic%7CPT+Serif:400,400italic%7CBree+Serif">
    
    Run Code Online (Sandbox Code Playgroud)
  2. 单独包含多个link元素的字体:

    <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic">
    <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=PT+Serif:400,400italic">
    <link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Bree+Serif">
    
    Run Code Online (Sandbox Code Playgroud)

  • 我知道这是较旧的帖子,但有没有人知道分离`<link>`标签是否有任何性能(dis)优势?如果一次通话中有多种字体,Google会压缩吗? (2认同)