Objetivo do formato de arquivo "texto ASCII, com supervalorização"

46

Depois de baixar o código fonte do Bash, eu estava navegando pelo docdiretório e me deparei com os seguintes arquivos:

Esses caracteres de controle não são exibidos na representação fornecida pela interface da web Git, mas o arquivo real pode ser baixado e examinado no editor de texto, como o Vim.

A execução do filecomando bash.0imprime a seguinte saída:

bash.0: ASCII text, with overstriking

Eu nunca me deparei com esse formato de arquivo antes e fiquei imaginando qual é o seu objetivo e como ele é usado. Pesquisando na Web a frase "texto ASCII, com superexcitação" não foi muito esclarecedora.

Anthony G - justiça para Monica
fonte

Respostas:

14

Uma pesquisa na web por "backspace" e "overstrike" obteria melhores resultados.

O arquivo é uma página manual - formatada usando nroff. Geralmente arquivos como bash.0simplesmente são gerados e descartados. Um tempo atrás, eles foram salvos, para reduzir o trabalho para o manprograma. Em vez disso /usr/share/man/man1, suas páginas de manual seriam lidas /usr/share/man/cat1. Leia a descrição de, catmanpor exemplo.

nroffé o comando Unix para formatar páginas de manual e outros arquivos. Na época em que foi escrito, havia vários outros utilitários, cada um com sua própria linguagem de marcação. Eu usei pelo menos uma dúzia de diferentes. Mas todos resolveram o problema de imprimir o texto enfatizado da mesma maneira: usando o controle de carro. Os backspaces são perceptíveis porque não são usados ​​em outros arquivos de texto sem formatação. Tabs , retornos de carro , linha-feeds e forma-se alimenta todos têm um papel em arquivos de texto simples (embora formam-feeds são muito menos importantes do que eram originalmente).

nroffusa sublinhado para indicar itálico e overstriking para representar negrito . A técnica é datada: é útil para dispositivos de cópia impressa em que mais de um caractere pode ser impresso na mesma posição. Muito poucos terminais de vídeo fazem isso. Em terminfo(5), isso seria

   over_strike               os     os   terminal can over-
                                         strike

ou mais completamente :

Se o terminal overstrikes (em vez de limpar uma posição quando um personagem é atingido mais), então ele deve ter a os capacidade.

No caso usual, o último caractere escrito em uma determinada linha / coluna de um terminal de vídeo seria tudo o que é mostrado. nrofforganizou a saída para que um caractere sublinhado fosse escrito como sublinhado, um backspace e o caractere real. Isso garantiu que os terminais sem o recurso overstrike imprimissem algo útil.

Entre os poucos terminais de vídeo listados que têm capacidade de ultrapassagem, vejo o DEC gt40 , que usei por cerca de três anos (1976-1979). Não havia Unix nesse sistema (ele rodava o RT-11), mas eu escrevi um formatador de texto , usando o mesmo tipo de texto sobrecarregado. Por fim, eu precisava de uma cópia impressa e escrevi um utilitário para fazer isso acontecer - algo como col, talvez - mas resolver um problema relacionado. O terminal foi impresso muito lentamente quando havia muito texto sublinhado, até o meu programa reorganizar o texto para reduzir a quantidade de alternância entre o movimento de avanço / retrocesso.

Com terminais de vídeo, não há necessidade disso. Mas eles não fazem chocantes. Em vez disso, temos programas que reconhecem o sublinhado e mostram sublinhados, ou possuem groff, que podem mostrar texto colorido em vez de sublinhado (e negrito).

Leitura adicional:

Thomas Dickey
fonte
Obrigado pela resposta abrangente com um histórico interessante. É tarde da noite para mim, então vou ler corretamente amanhã. Na verdade, eu votei na sua resposta na geração de páginas de manual hoje mais cedo, quando eu estava pesquisando a família * roff de formatadores de texto.
Anthony G - justice para Monica
43

Overstriking é um método usado em nroff(consulte o artigo de Troff ) para oferecer mais possibilidades tipográficas do que o ASCII comum permitiria:

  • texto em negrito (substituindo o mesmo caractere)
  • texto sublinhado (por ultrapassagem _)
  • acentos e sinais diacríticos ( por exemplo, é produzidos por overtriking ecom )

e vários outros símbolos, conforme permitido pelo dispositivo de saída de destino.

Em bash, esses .0arquivos são produzidos diretamente por nroff, com Makefileregras como

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

Você pode visualizar esses arquivos usando less; processará as seqüências impressionantes e as substituirá conforme apropriado:

less bash.0

Originalmente nroffde saída alvo dispositivos de saída de estilo máquina de escrever, o que fazer backup de cada vez que recebeu um personagem de retrocesso; um impacto excessivo produziria a saída visual desejada. Como apontado por chirlu , golpear o mesmo personagem duas vezes geralmente resultaria em uma aparência mais ousada, graças ao inevitável desalinhamento dos ataques sucessivos; o aumento na quantidade de tinta depositada também ajudaria.

( troffmáquinas tipográficas direcionadas.)

Stephen Kitt
fonte
Obrigado pelo link para o Manual do usuário do Troff e as informações sobre como os arquivos são produzidos. Na minha pergunta, também perguntei como esses arquivos devem ser usados. Tentei rodar nroff bash.0no meu sistema Ubuntu, mas ele produziu uma série de avisos, a saída foi acondicionada em 65 caracteres e não havia formatação especial.
Anthony G - justice for Monica
1
Ah sim, eu esqueci essa parte; Eu editei minha resposta. nroffé usado para produzir esses arquivos, não para visualizá-los.
Stephen Kitt
2
Sim, e é assim que man bashfunciona; ele usa nroff -manpara processar o .1arquivo (ou qualquer seção relevante), que é um nroffarquivo, antes de alimentá-lo no pager apropriado.
Stephen Kitt
5
@ Anthony Geoghegan: A idéia era que você enviasse esse arquivo para uma impressora de impacto, como uma impressora de margarida . Na verdade, ele imprime um caractere, depois recua e depois imprime o outro caractere, com os resultados descritos acima. O texto em negrito é semelhante a um "efeito de coro" no processamento de áudio: o segundo caractere está ligeiramente desalinhado com o primeiro, levando a linhas mais espessas.
Chirlu #
1
@chirlu Essa é uma ótima explicação de como os caracteres de controle foram usados ​​para obter efeitos tipográficos com o hardware herdado. O uso desses personagens em particular faz muito sentido agora. Se você postar isso como uma resposta, eu posso votar corretamente. Edit: Stephen já incorporou e expandiu sobre isso.
Anthony G - justice for Monica
7

E, ainda mais cedo, era um método de impressão em impressoras de bolas de golfe que funcionava como máquinas de escrever antigas e tinha um conjunto muito limitado de caracteres que eles podiam imprimir. Portanto, o nroff usa o fluxo de bytes de uma impressora de teletipo antiga para representar como deve parecer 'na tela'.

dsz
fonte
nroffna verdade, foi projetado inicialmente para imprimir em máquinas de escrever, em vez de troffquais tipógrafos direcionados. Usando telas para saída veio mais tarde ...
Stephen Kitt
9
Tenho idade suficiente para ter usado uma máquina de escrever mecânica, onde você digitou !pela digitação' BACKSPACE .
Barmar