“ ASCII文本,带有过度击打”文件格式的目的


46

在下载了Bash的源代码之后,我浏览了doc目录并遇到了以下文件:

这些控制字符不会显示在Git Web界面提供的表示中,但是可以在文本编辑器(如Vim)中下载并检查实际文件

file上运行命令bash.0将输出以下输出:

bash.0: ASCII text, with overstriking

我以前从未遇到过这种文件格式,我想知道其目的是什么以及如何使用它。在网上搜索短语“ ASCII文本,带有过度敲击”并不是很有意义

Answers:


14

在网络上搜索“退格键”和“过分删除”会获得更好的结果。

该文件是手册页-使用格式化nroff。通常,诸如之类的文件bash.0会简单地生成并丢弃。不久前,它们被保存下来,以减少man程序的工作量。而是/usr/share/man/man1从中读取您的手册页/usr/share/man/cat1。阅读catman例如的描述。

nroff是用于格式化手册页和其他文件的Unix命令。最初编写它时,还有其他几个实用程序,每个实用程序都有自己的标记语言。我至少使用了十几种。但是他们都以相同的方式解决了打印强调文本的问题:使用回车控制。 退格仅引起注意,因为它们未在其他纯文本文件中使用。 制表符回车行饲料形式,饲料都在纯文本文件中的作用(虽然形式原料是远远不那么重要比他们原先)。

nroff用下划线表示斜体,用粗体表示粗体。该技术已过时:对于可在同一位置打印多个字符的硬拷贝设备很有用。很少有视频终端可以这样做。在中terminfo(5),那将是

   over_strike               os     os   terminal can over-
                                         strike

或更完整地说

如果终端叠印(而不是当一个字符被击中在清除位置),那么它应该有 os 能力。

在通常情况下,显示在视频终端给定行/列上的最后一个字符将是所显示的全部nroff对输出进行组织,以便将带下划线的字符写为下划线,退格键和实际字符。这样做可以确保没有超行程功能的终端将打印出有用的内容。

在列出的极少数具有超额打击能力的视频终端中,我看到了DEC gt40,我使用了大约三年(1976-1979年)。该系统上没有Unix(运行RT-11),但是我写了一个文本格式化程序,使用的是同类型的过度填入文本。最终,我需要硬拷贝,并编写了一个实用程序来实现这一目标- col也许类似-但解决了相关问题。当终端带有大量带下划线的文本时,终端打印非常缓慢,直到我的程序重新组织了文本以减少向前/向后运动之间的切换量。

对于视频终端,则无需这样做。但是他们并不会过分努力。相反,我们有识别下划线并显示下划线的程序,或者有groff可能显示彩色文本而不是下划线(和粗体)的程序。

进一步阅读:


感谢您提供具有有趣历史背景的综合答案。对我来说是深夜,所以明天我会正确阅读。FWIW,实际上,今天早些时候我在研究* roff系列文本格式化程序时,实际上对您生成手册页的回答表示赞同。
Anthony G-Monica的正义

43

过划线是一种方法nroff(请参阅Troff论文),它提供了比纯ASCII所允许的更多的印刷可能性:

  • 粗体字(通过重复输入相同字符)
  • 带下划线的文字(过分划线_
  • 重音符号和变音符号(例如 é,通过e与的重击而产生

以及目标输出设备允许的其他各种符号。

在中bash,这些.0文件是由产生的nroff,使用Makefile诸如

.1.0:
        $(RM) $@
        -${NROFF} -man $< > $@

您可以使用来查看此类文件less。它将处理过度敲击的序列并适当地替换它们:

less bash.0

Original nroff的输出以打字机式的输出设备为目标,每次接收到退格字符时都会备份该设备;过度打击会产生所需的视觉输出。正如chirlu所指出的,由于连续的打击不可避免地会错位,因此两次击打相同的角色通常会导致外观更大胆。墨水沉积量的增加也将有所帮助。

troff有针对性的排版机。)


感谢您提供给Troff用户手册的链接以及有关如何生成文件的信息。在我的问题中,我还询问如何使用这些文件。我尝试nroff bash.0在Ubuntu系统上运行,但是它产生了许多警告,输出被硬包装为65个字符,并且没有特殊格式。
Anthony G-Monica的正义

1
啊,是的,我忘记了那部分;我已经编辑了答案。nroff用于生成这些文件,而不是查看它们。
Stephen Kitt

2
是的,这几乎是man bash有效的。它用于nroff -man处理.1文件(或相关的任何部分),即nroff文件,然后再将其提供给适当的寻呼机。
史蒂芬·基特

5
@Anthony Geoghegan:想法是您可以将此文件发送给影响打印机,例如菊花轮打印机。它实际上将打印一个字符,然后向后移动,然后打印另一个字符,其结果如上所述。粗体文本类似于音频处理中的“合唱效果”:第二个字符与第一个字符略有不对齐,导致线条更粗。
chirlu '16

1
@chirlu很好地解释了如何使用控制字符在旧版硬件上实现印刷效果。现在,使用这些特殊字符非常有意义。如果您将此作为答案发布,我可以适当地投票。编辑:斯蒂芬已经合并并对此进行了扩展。
Anthony G-Monica的正义

7

甚至在更早的时候,这是一种在高尔夫球打印机上进行打印的方法,该方法像老式打字机一样工作,并且可以打印的字符集非常有限。因此,nroff使用旧电传打字机的字节流来表示应如何在屏幕上显示。


nroff实际上最初是设计用于在打字机上打印的,而不是troff针对的是打字机。晚些时候使用屏幕进行输出...
Stephen Kitt 2016年

9
我长大了,已经习惯了,你键入的机械打字机!键入' BACKSPACE .
Barmar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.