“ASCII 文本,加粗”文件格式的目的

Ant*_*gan 50 man documentation text-formatting

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

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

fileon 上运行命令会bash.0打印以下输出:

bash.0: ASCII text, with overstriking
Run Code Online (Sandbox Code Playgroud)

我以前从未遇到过这种文件格式,我想知道它的用途是什么以及如何使用。在 Web 上搜索短语“ASCII 文本,加粗”并不是很有启发性。

Ste*_*itt 44

Overstriking 是一种用于nroff(参见Troff 用户手册)的方法,用于提供比纯 ASCII 允许的更多排版可能性:

  • 粗体文本(通过覆盖相同的字符)
  • 带下划线的文本(通过大写_
  • 口音和附加符号(例如 é通过叠印产生e

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

在 中bash,这些.0文件由 直接生成nroffMakefile规则如下

.1.0:
        $(RM) $@
        -${NROFF} -man $< > $@
Run Code Online (Sandbox Code Playgroud)

您可以使用less;查看此类文件。它将处理重击序列并酌情替换它们:

less bash.0
Run Code Online (Sandbox Code Playgroud)

最初nroff的输出目标是打字机式的输出设备,每次收到退格字符时都会进行备份;过度打击会产生所需的视觉输出。正如chirlu所指出的,由于连续打击不可避免的错位,两次打击同一个角色通常会导致更大胆的外观;油墨沉积量的增加也会有所帮助。

troff有针对性的排版机。)

  • @Anthony Geoghegan:我们的想法是将此文件发送到冲击式打印机,例如 [daisy-wheel 打印机](https://en.wikipedia.org/wiki/Daisy_wheel_printing)。它实际上会打印一个字符,然后移回,然后打印另一个字符,结果如上所述。粗体文本类似于音频处理中的“合唱效果”:第二个字符与第一个字符略微错位,导致线条更粗。 (5认同)
  • 是的,这就是 `man bash` 的工作原理;它使用 `nroff -man` 处理 `.1` 文件(或任何相关的部分),它是一个 `nroff` 文件,然后将其提供给适当的寻呼机。 (2认同)

Tho*_*key 18

在网络上搜索“退格”和“重击”会得到更好的结果。

该文件是一个手册页 - 使用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
Run Code Online (Sandbox Code Playgroud)

或更完整

如果终端重击(而不是在字符被击倒时清除位置),那么它应该有 os 能力。

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

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

有了视频终端,就没有这个必要了。但他们不会过度打击。相反,我们有识别下划线并显示下划线的程序,或者有groff可能显示彩色文本而不是下划线(和粗体)的程序。

进一步阅读:


dsz*_*dsz 7

甚至更早以前,它是一种在高尔夫球打印机上打印的方法,其工作方式类似于旧打字机,并且可以打印的字符集非常有限。因此,nroff 使用旧电传打印机的字节流来表示“在屏幕上”应该如何显示。

  • 我已经足够大了,可以使用机械打字机,您可以通过键入“BACKSPACE”来输入“!”。 (10认同)