Man

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

  • May 9, 2021

下載 Bash 的原始碼後,我瀏覽了doc目錄並發現了以下文件:

這些控製字元不會顯示在 Git Web 界面提供的表示中,但可以下載實際文件並在 Vim 等文本編輯器中檢查。

執行file命令會bash.0列印以下輸出:

bash.0: ASCII text, with overstriking

我以前從未遇到過這種文件格式,我想知道它的目的是什麼以及它是如何使用的。在網上搜尋*“ASCII text, with overstrking”*這個片語並不是很有啟發性。

在網路上搜尋“退格”和“重擊”會得到更好的結果。

該文件是手冊頁 — 使用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可能顯示彩色文本而不是下劃線(和粗體)的程序。

進一步閱讀:

Overstriking 是一種在nroff(參見Troff 使用者手冊)中使用的方法,它提供比普通 ASCII 所允許的更多印刷可能性:

  • 粗體文本(通過覆蓋相同的字元)
  • 帶下劃線的文本(通過 overstriking _
  • 重音符號和變音符號(例如 é通過用 overstrikee產生

以及目標輸出設備允許的各種其他符號。

bash中,這些.0文件由 直接生成nroffMakefile規則如下

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

less您可以使用;查看此類文件 它將處理重擊序列並酌情替換它們:

less bash.0

最初nroff的輸出目標是打字機式的輸出設備,每次收到退格字元時都會備份;過度打擊會產生所需的視覺輸出。正如chirlu所指出的,由於連續打擊不可避免地錯位,兩次打擊同一個角色通常會導致更大膽的外觀;增加沉積的墨水量也會有所幫助。

troff有針對性的排版機。)

引用自:https://unix.stackexchange.com/questions/274658