5

在网页 textarea 或 div 中,我想让空白可见,即,将空格显示为小点 ∙,将制表符显示为“⇥”,以及带有另一个字符的换行符。以便:

These are spaces
These   are tabs

将显示为:

These∙are∙spaces↵
These⇥are⇥tabs↵

这可以通过将“”字符替换为“∙”等的 javascript 来完成,尽管这有点混乱,您必须处理捕获用户键入空格或粘贴的问题。此外,如果用户对文本“这些是”进行查找(ctrl-f),她将找不到文本,因为空格实际上是 ∙ 字符。

相反,我发现似乎是一个更清洁的解决方案:创建一个自定义字体,其中空格只是一个可见字符。它适用于空间 - 不需要凌乱的 JavaScript!但是,我无法确定是否可以使用我发现的非常糟糕的免费字体编辑软件来编辑字体中的制表符或换行符。

有谁知道是否可以编辑字体中的制表符和/或换行符,如果可以,你能推荐一个对我来说最容易做到的字体编辑器程序吗?

4

2 回答 2

1

我认为您不能为特殊字符(例如“制表符”等)创建带有字符的字体。

我不会用 javascript 替换这些字符,而是使用 javascript 来更改选项卡的样式。

These   are tabs

会成为

These<span class="tabs">   </span>are tabs

并且选项卡 css 类可以具有例如红色背景。

.tabs{
background-color: red;
}
于 2012-11-03T15:53:28.760 回答
0

直觉上,我希望用一些字形替换空格是可行的,但通常需要注意的是(可下载字体并非绝对普遍适用),但制表符和换行符是一个不同的问题。它们不会被渲染,以便从字体中提取字形并显示。相反,它们会导致格式化操作,例如离开水平空间并移动到下一行的开头。

一个快速的实验支持这种分析。使用 FontForge,我将字体中的空格字形替换为图形字形,然后显示它而不是空格。但是对 tab 做同样的事情并不会改变任何东西。制表符只是导致间距,这取决于它在一行中的位置,如 HTML 规范中所定义。

于 2012-11-03T17:23:07.090 回答