我在QT QLabel中渲染了一些HTML.HTML看起来像这样:
foo\tbar
(请注意,我已将"\ t"放在代码中有标签字符的位置).
这渲染很好,但制表符似乎呈现为八个空格,而我希望它被渲染为4.如何在不更改源HTML的情况下更改它?
根据W3(HTML4):
水平制表符(十进制9 [ISO10646]和[ISO88591])通常是通过可视用户代理解释为最小非零数的必要向上沿着每8个字符是制表位行字符的空格.我们强烈建议使用水平选项卡中预先格式化文本,因为它是常见的做法,在编辑时,要设置制表间距为其他值,导致失调文件.
它是实现定义的,基本上是.大多数(如果不是全部)浏览器/渲染器使用八个空格作为选项卡.这不能在Qt中配置.
然而,通过HTML并使用您希望的多个空格替换选项卡是有点微不足道的.为此编写一个简单的解析器.伪代码:
for eachblock { for each line in block { position_in_line = 0 for each character in line { if character is a tab { remove tab character do { add a space character ++position_in_line } while position_in_line % 8 != 0 } else { ++position_in_line } } } }如果你很好奇,HTML3指定使用八个字符的标签:
内
,的标签应被解释为转移水平列位置到下一个位置,该位置的8在同一行上的倍数; 也就是说,col:=(col + 8)mod 8.