浏览器可以渲染存储在代码点 0x09 处的字形吗?

问题描述 投票:0回答:1

我正在尝试向串行端口 Web 应用程序添加功能,该应用程序可以将从

0x00
0xFF
的所有接收字节(包括通常不可打印的字符,例如 ASCII 控制代码)表示为单宽度可见字形。我创建了一种特殊的矢量字体(.woff2 格式),它具有分配给所有这些代码点的可见字形,如图所示:

我基本上已经让它工作了,但是,当尝试在网络应用程序的 HTML 中的 span 元素内显示这些内容时,有些无法正常工作,如下所示(这只是

0x00
,然后
0x01
,然后
0x02
等):

一个例子是水平制表符,代码点

0x09
应在
[BS]
之后打印。浏览器没有显示 HT 字形,而是为选项卡插入空白(我认为由于 HTML 规则,最终会折叠成一个空格)。这是第一个向左箭头指示的空间。

如果重要的话,UI 由一个 span 元素组成,该元素的子文本通过调用

String.fromCharCode(0x09)
设置(这尤其适用于 HT 字符)。 CSS 将我的自定义字体分配给这个范围。

有没有办法阻止浏览器解释特殊的unicode代码点(例如水平制表符)并告诉它从字体渲染字形?

html css fonts ascii glyph
1个回答
0
投票

制表符在 CSS(空白)规则下转换为空格,而不是 HTML 规则,但即便如此,未转换的制表符字符仍意味着“前进到下一个制表位”,而不是“渲染字形”。

我认为 CSS 中没有任何东西可以控制这一点,但浏览器可以渲染完整的 Unicode 空间,而不仅仅是 0x00 到 0xFF,所以我建议您为每个接收到的字符添加 0xE000 偏移量,以便代码点现在位于Unicode 私人使用区。然后构建您的字体以将字形放置在该空间中。

© www.soinside.com 2019 - 2024. All rights reserved.