Призначення формату файлу "ASCII текст із завищенням"


46

Завантаживши вихідний код для Bash, я переглянув docкаталог і натрапив на такі файли:

  • bash.1- це звичайний файл трофів, який використовується для створення сторінки man .
  • bash.0подібний до простої текстової версії сторінки man - лише те, що він має ^Hкеруючий символом управління простором, який розповсюджується по всій ньому.

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

Запуск fileкоманди на bash.0друкує наступний вихід:

bash.0: ASCII text, with overstriking

Я ніколи раніше не натрапляв на цей формат файлів, і мені було цікаво, що його мета і як він використовується. Пошук в Інтернеті фрази «текст ASCII, з надмірним накресленням» не був дуже освічуючим.

Відповіді:


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 man раніше, коли я досліджував сімейство форматів тексту * roff.
Ентоні Г - справедливість для Моніки

43

Завищення - метод, який використовується в nroff(див. Папір Troff ), щоб запропонувати більше типографічних можливостей, ніж дозволяє звичайний 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: Ідея полягала в тому, щоб ви надіслали цей файл на ударний принтер, наприклад, на принтер з колесом ромашки . Він насправді надрукував би символ, потім перемістився назад, потім надрукував інший символ із результатами, як описано вище. Жирний текст схожий на "ефект хору" в обробці звуку: Другий символ дуже злегка не узгоджений з першим, що призводить до більш товстих ліній.
chirlu

1
@chirlu Це чудове пояснення того, як контрольні символи використовувались для досягнення друкарських ефектів за допомогою застарілого обладнання. Вживання цих конкретних персонажів має зараз багато сенсу. Якщо ви опублікуєте це як відповідь, я можу його правильно відмітити. Редагувати: Стівен уже включив і розширив це.
Ентоні Г - справедливість для Моніки

7

І навіть раніше це був метод друку на принтерах для гольфу з м'ячем, який працював як старі друкарські машинки і мав дуже обмежений набір символів, які вони могли надрукувати. Таким чином, nroff використовує байтовий потік старого телетипного принтера, щоб представити, як слід виглядати на екрані.


nroffнасправді був розроблений спочатку для друку на друкарських машинках, на відміну від troffнацілених набірних машин . Використання екранів для виходу з'явилося пізніше ...
Стівен Кітт

9
Я досить старий, щоб використати механічну машинку, куди ви ввели !текст' BACKSPACE .
Barmar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.