为什么⟨ 和⟩ 人物处理得如此奇怪?

Nic*_*ick 9 html character

http://www-archive.mozilla.org/newlayout/testcases/layout/entities.html有一个名为"杂项技术"的部分.该部分中包含的两个字符是"左指角支架"(⟨〈)和"右指角支架"(⟩〉).这些角色有一些奇怪的东西(以下列表中的前三个项目是在我的第一代运行Android 4.4.4的Moto X上测试的):

  1. 在Chrome 43.0.2357.93在Android上,所有四个实体(⟨,〈,⟩〉)是看不见的(它们只是看起来像空格).
  2. 在Android上的Opera 30.0.1856.92967中,所有四个实体都是不可见的(它们看起来像空格).
  3. 在Android上的Firefox 38.0.5中,两个命名实体(⟨⟩)看起来像黑色块,但两个编码实体(〈〉)看起来是正确的.
  4. 我使用Xcode的iOS模拟器来模拟运行iOS 8.3(12F69)的iPhone 5s.然后我在Safari中加载了链接.所有四个实体看起来都是正确的,但两个命名实体(⟨⟩)看起来与两个编码实体(〈〉)非常不同.
  5. 如果将页面转换为HTML5并通过验证器运行它,则会输出" 警告:文本运行不在Unicode规范化表单C中".关于两个编码实体(〈〉),但整个页面上没有其他实体收到任何警告或错误.

我认为上面列表中最有趣的项目是最后三个,因为看起来命名实体和编码实体没有得到同等对待.

所有其他角色看起来都很好,至少从我看到的情况来看.是什么让这些角色如此奇怪?

以下是此问题顶部链接中的"杂项技术"部分,以防链接停止工作:

<h3>Miscellaneous Technical</h3>

<table>
  <caption align=bottom>
    [1] lang is NOT the same character as U+003C 'less than' or U+2039 'single left-pointing angle quotation mark'<br>
    [2] rang is NOT the same character as U+003E 'greater than' or U+203A 'single right-pointing angle quotation mark'
  </caption>
  <tr>
    <th>Entity</th>
    <th>Code</th>
    <th>Named</th>
    <th>Coded</th>
    <th>Description</th>
  </tr>
  <tr>
    <td>lceil</td>
    <td>8968</td>
    <td>"&lceil;"</td>
    <td>"&#8968;"</td>
    <td>left ceiling = apl upstile</td>
  </tr>
  <tr>
    <td>rceil</td>
    <td>8969</td>
    <td>"&rceil;"</td>
    <td>"&#8969;"</td>
    <td>right ceiling</td>
  </tr>
  <tr>
    <td>lfloor</td>
    <td>8970</td>
    <td>"&lfloor;"</td>
    <td>"&#8970;"</td>
    <td>left floor = apl downstile</td>
  </tr>
  <tr>
    <td>rfloor</td>
    <td>8971</td>
    <td>"&rfloor;"</td>
    <td>"&#8971;"</td>
    <td>right floor</td>
  </tr>
  <tr>
    <td>lang</td>
    <td>9001</td>
    <td>"&lang;"</td>
    <td>"&#9001;"</td>
    <td>left-pointing angle bracket = bra [1]</td>
  </tr>
  <tr>
    <td>rang</td>
    <td>9002</td>
    <td>"&rang;"</td>
    <td>"&#9002;"</td>
    <td>right-pointing angle bracket = ket [2]</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

And*_*rey 3

根据HTML5 规范,命名字符引用(实体)的编码与 HTML 4 规范(问题中引用)的编码不同。

&lang;如 U+027E8 ( &#10216;)

&rang;如 U+027E9 ( &#10217;)

实际上,即使对于具有 HTML 4 文档类型的文档,现代浏览器似乎也遵循 HTML5 方法。&lang;它解释了显示和的差异&#9001;

事实上&lang;&rang;在移动浏览器中无法正确呈现可能是因为缺乏字体支持。