Назначение формата файла «ASCII text with overriking»

46

После загрузки исходного кода для Bash я просматривал docкаталог и наткнулся на следующие файлы:

  • bash.1регулярный TROFF файл , используемый для создания страницы человека .
  • bash.0это похоже на текстовую версию справочной страницы - только в том, что она имеет ^Hсимвол управления возвратом, свободно распределенный по ней.

Эти управляющие символы не отображаются в представлении, предоставляемом веб-интерфейсом Git, но сам файл можно загрузить и изучить в текстовом редакторе, таком как Vim.

Выполнение fileкоманды on bash.0выводит следующий вывод:

bash.0: ASCII text, with overstriking

Я никогда раньше не сталкивался с этим форматом файлов, и мне было интересно, какова его цель и как он используется. Поиск в Интернете фразы «ASCII text with overriking» не очень поучителен.

Энтони Дж - справедливость для Моники
источник

Ответы:

14

Веб-поиск по «backspace» и «overstrike» даст лучшие результаты.

Файл представляет собой справочную страницу - отформатирован с использованием 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, я фактически проголосовал за ваш ответ на создание man-страниц ранее сегодня, когда я занимался исследованием семейства форматеров текста * roff.
Энтони Дж. Правосудие для Моники
43

Overstriking - это метод, используемый в nroff(см. Статью Троффа ), чтобы предложить больше типографских возможностей, чем допускает простой ASCII:

  • полужирный текст (перетаскивая тот же символ)
  • подчеркнутый текст (зачеркнут _)
  • акценты и диакритические ( например é , полученные перечеканок eс )

и различные другие символы, как разрешено целевым устройством вывода.

В bash, эти .0файлы создаются напрямую nroff, с Makefileтакими правилами, как

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

Вы можете просматривать такие файлы, используя less; он обработает последовательности перегрузки и заменит их соответствующим образом:

less bash.0

Первоначально nroffвыходные устройства были ориентированы на печатные машинки, которые создавали резервные копии каждый раз, когда получали символ возврата; перенапряжение даст желаемый визуальный вывод. Как отметил Чирлу , удары по одному и тому же персонажу дважды приводят к более смелому виду благодаря неизбежному смещению последовательных ударов; увеличение количества нанесенных чернил также поможет.

( troffцелевые наборные машины.)

Стивен Китт
источник
Спасибо за ссылку на руководство пользователя Troff и информацию о том, как создаются файлы. В моем вопросе я также спросил, как эти файлы предназначены для использования. Я попытался запустить nroff bash.0в своей системе Ubuntu, но он выдал ряд предупреждений, вывод был жестко упакован в 65 символов и не было никакого специального форматирования.
Энтони Дж. - справедливость для Моники
1
Ах да, я забыл эту часть; Я отредактировал свой ответ. nroffиспользуется для создания этих файлов, а не для их просмотра.
Стивен Китт
2
Да, и это в значительной степени man bashработает; он используется nroff -manдля обработки .1файла (или любого другого раздела), который является nroffфайлом, перед передачей его на соответствующий пейджер.
Стивен Китт
5
@Anthony Geoghegan: Идея состояла в том, что вы отправите этот файл на ударный принтер, такой как принтер с гирляндой . На самом деле он напечатает символ, затем вернется назад, затем напечатает другой символ с результатами, как описано выше. Текст, выделенный жирным шрифтом, аналогичен «эффекту хоруса» при обработке звука: второй символ очень немного смещен относительно первого, что приводит к более толстым линиям.
Чирлу
1
@chirlu Это отличное объяснение того, как управляющие символы использовались для достижения типографских эффектов на устаревшем оборудовании. Использование этих конкретных символов теперь имеет большой смысл. Если вы опубликуете это как ответ, я смогу правильно оценить это. Изменить: Стивен уже включил и расширил это.
Энтони Дж. - правосудие для Моники
7

И даже раньше, это был метод печати на принтерах для игры в гольф, который работал как старые пишущие машинки и имел очень ограниченный набор символов, которые они могли печатать. Таким образом, nroff использует поток байтов старого принтера телетайпа, чтобы показать, как должен выглядеть «на экране».

DSZ
источник
nroffфактически изначально предназначался для печати на пишущих машинках, в отличие от troffцелевых наборщиков. Использование экранов для вывода пришло позже ...
Стивен Китт
9
Я достаточно !' BACKSPACE .
взрослый