Propósito do formato de arquivo “ASCII text, with overstriking”

44

Depois de baixar o código-fonte do Bash, eu estava navegando pelo diretório doc e encontrei os seguintes arquivos:

  • bash.1 é um regular troff usado para criar a página do manual .
  • bash.0 é como uma versão de texto simples da página man - só que ele tem o ^H caractere de controle de retrocesso amplamente distribuído por ele.

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

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

bash.0: ASCII text, with overstriking

Eu nunca encontrei esse formato de arquivo antes e fiquei me perguntando qual é o objetivo dele e como ele é usado. Pesquisar na Web a frase "texto ASCII, com overstriking" não foi muito esclarecedor.

    
por Anthony Geoghegan 06.04.2016 / 12:36

3 respostas

13

Uma pesquisa na web para "backspace" e "overstrike" teria melhores resultados.

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

nroff é o comando Unix para formatar páginas de manual e outros arquivos. Quando foi escrito pela primeira vez, 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 eles resolveram o problema da impressão do texto enfatizado da mesma maneira: usando o controle do carro. Os Backspaces são apenas perceptíveis porque não são usados em outros arquivos de texto simples. Tabs , retornos de carro , line-feeds e form-feeds têm um papel em arquivos de texto simples (embora feeds de formulários são muito menos importantes do que eram originalmente).

nroff usa o sublinhado para indicar itálico e ultrapassar para representar negrito . A técnica é datada: é útil para dispositivos de cópia impressa onde 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 :

If the terminal overstrikes (rather than clearing a position when a character is struck over) then it should have the os capability.

No caso habitual, o último caractere escrito em uma determinada linha / coluna de um terminal de vídeo seria tudo mostrado. nroff organizou a saída para que um caractere sublinhado fosse escrito como um 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 a capacidade de ultrapassagem, vejo o DEC gt40 , que eu usei por cerca de três anos (1976-1979). Não havia Unix no sistema (rodava RT-11), mas eu escrevi um formatador de texto , usando o mesmo tipo de texto sobrecarregado. Por fim, precisei de cópia impressa e escrevi um utilitário para que isso acontecesse - algo como col , talvez - mas resolvendo um problema relacionado. O terminal imprimiu muito lentamente quando tinha muito texto sublinhado, até que meu programa reorganizou o texto para reduzir a quantidade de alternância entre o movimento para frente / para trás.

Com terminais de vídeo, não há necessidade disso. Mas eles não fazem overstriking. Em vez disso, temos programas que reconhecem os sublinhados e os show sublinhados, ou têm groff , que pode mostrar texto colorido em vez de sublinhado (e em negrito).

Leitura adicional:

por 06.04.2016 / 23:31
41
Overstriking é um método usado em nroff (consulte o artigo do Troff ) para oferecer mais possibilidades tipográficas do que o ASCII simples permitiria:

  • texto em negrito (ao ultrapassar o mesmo caractere)
  • texto sublinhado (por overstriking _ )
  • acentos e sinais diacríticos ( por exemplo, é produzidos por overstriking e com )

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

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

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

Você pode ver esses arquivos usando less ; ele processará as seqüências de overstriking e as substituirá conforme apropriado:

less bash.0

Originalmente os dispositivos de saída no estilo de máquina de escrever com destino a nroff , que seriam salvos sempre que recebessem um caractere de retrocesso; overstriking produziria a saída visual desejada. Como apontado por chirlu , atacar o mesmo personagem duas vezes normalmente resultaria em uma aparência mais ousada, graças ao inevitável desalinhamento de as sucessivas greves; o aumento na quantidade de tinta depositada também ajudaria.

( troff de máquinas de composição segmentada.)

    
por 06.04.2016 / 13:01
7

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

    
por 06.04.2016 / 15:37