【发布时间】:2016-03-03 20:33:01
【问题描述】:
我发现 css direction: rtl 在文本中交换 < 和 > 符号。我查看了 w3c 规范,但没有发现任何提及这一点。问题是关于浏览器支持和可能的陷阱。以这种方式替换哪些字符?如果我使用带有< 而没有> 字符的自定义字体会怎样?
【问题讨论】:
我发现 css direction: rtl 在文本中交换 < 和 > 符号。我查看了 w3c 规范,但没有发现任何提及这一点。问题是关于浏览器支持和可能的陷阱。以这种方式替换哪些字符?如果我使用带有< 而没有> 字符的自定义字体会怎样?
【问题讨论】:
问题“以这种方式替换了哪些字符?”在标题属性定义下的Unicode Character Database 中提到:
BidiMirroring.txt
用于在双向镜像实现中替换字符的信息映射。这会将具有 Bidi_Mirrored 属性的字符子集映射到通常与相应镜像字形一起显示的其他字符。当具有 Bidi_Mirrored 属性的字符具有 Bidi_Mirroring_Glyph 的默认值时,这意味着不存在其字形适合基于字符的字形镜像的其他字符。然后,实现必须使用其他机制来为 Unicode 双向算法实现这些字符的镜像。参见 Unicode 标准附件 #9,“Unicode 双向算法”[UAX9]。不要将此属性与 Bidi_Mirrored 属性本身混淆。
BidiMirroring.txt 文件可以在这里找到:http://unicode.org/Public/UNIDATA/BidiMirroring.txt
包含
0028; 0029 # LEFT PARENTHESIS
0029; 0028 # RIGHT PARENTHESIS
003C; 003E # LESS-THAN SIGN
003E; 003C # GREATER-THAN SIGN
005B; 005D # LEFT SQUARE BRACKET
005D; 005B # RIGHT SQUARE BRACKET
007B; 007D # LEFT CURLY BRACKET
007D; 007B # RIGHT CURLY BRACKET
还有更多!
然后是浏览器支持:一个快速而肮脏且绝不是权威的测试表明它在 IE8、FF3.6、Chrome 20 和 Opera 11 之前的浏览器中都受支持。
目前无法测试带有> 但没有< 字形的字体,抱歉。
【讨论】: