Propósito del formato de archivo "Texto ASCII, con superposición"


46

Después de descargar el código fuente de Bash, estaba navegando por el docdirectorio y encontré los siguientes archivos:

Estos caracteres de control no se muestran en la representación proporcionada por la interfaz web de Git, pero el archivo real se puede descargar y examinar en un editor de texto como Vim.

Al ejecutar el filecomando se bash.0imprime el siguiente resultado:

bash.0: ASCII text, with overstriking

Nunca me he encontrado con este formato de archivo y me preguntaba cuál es su propósito y cómo se usa. La búsqueda en la Web de la frase "texto ASCII, con exceso" no ha sido muy esclarecedora.

Respuestas:


14

Una búsqueda en la web de "retroceso" y "sobrecarga" obtendría mejores resultados.

El archivo es una página manual, formateada con nroff. Por lo general, los archivos como bash.0simplemente se generan y descartan. Hace un tiempo, se salvaron, para reducir el trabajo del manprograma. En lugar de /usr/share/man/man1, se leerían sus páginas de manual /usr/share/man/cat1. Lea la descripción de catmanpor ejemplo.

nroffes el comando Unix para formatear páginas de manual y otros archivos. Cuando se escribió por primera vez, había varias otras utilidades, cada una con su propio lenguaje de marcado. He usado al menos una docena de diferentes. Pero todos resolvieron el problema de imprimir texto enfatizado de la misma manera: usando el control de carro. Los espacios de retroceso son notables porque no se usan en otros archivos de texto sin formato. Pestañas , retornos de carro , saltos de línea y forma alimenta todos tienen un papel en archivos de texto plano (aunque de forma alimentaciones son mucho menos importantes de lo que eran originalmente).

nroffusa subrayado para indicar itálicas y rayas para representar negrita . La técnica está fechada: es útil para dispositivos de copia impresa donde se puede imprimir más de un carácter en la misma posición. Muy pocas terminales de video hacen eso. En terminfo(5)eso sería

   over_strike               os     os   terminal can over-
                                         strike

o más completamente :

Si el terminal sobrecarga (en lugar de despejar una posición cuando un personaje es golpeado), entonces debería tener la os capacidad.

En el caso habitual, el último carácter escrito en una fila / columna dada de un terminal de video sería todo lo que se muestra. nrofforganizó la salida de modo que un carácter subrayado se escribiera como subrayado, retroceso y el carácter real. Hacer eso aseguró que los terminales sin la función de sobreimpresión imprimirían algo útil.

Entre los pocos terminales de video enumerados que tienen la capacidad de sobrecarga , veo el DEC gt40 , que utilicé durante aproximadamente tres años (1976-1979). No había Unix en ese sistema (ejecutaba RT-11), pero escribí un formateador de texto , usando el mismo tipo de texto sobrecargado. En última instancia, necesitaba una copia impresa y escribí una utilidad para que eso sucediera, algo así col, tal vez, pero resolviendo un problema relacionado. El terminal imprimió muy lentamente cuando tenía mucho texto subrayado, hasta que mi programa reorganizó el texto para reducir la cantidad de cambio entre el movimiento hacia adelante / hacia atrás.

Con terminales de video, no hay necesidad de eso. Pero no hacen extralimitaciones. En cambio, tenemos programas que reconocen el subrayado y muestran subrayados, o tienen groff, que pueden mostrar texto en color en lugar de subrayado (y negrita).

Otras lecturas:


Gracias por la respuesta integral con antecedentes históricos interesantes. Es tarde en la noche para mí, así que lo leeré correctamente mañana. FWIW, en realidad elevé tu respuesta sobre la generación de páginas de manual hoy cuando estaba investigando la familia de formateadores de texto * roff.
Anthony G - justicia para Monica

43

El sobreestribo es un método utilizado en nroff(ver el documento de Troff ) para ofrecer más posibilidades tipográficas de lo que permitiría ASCII simple:

  • texto en negrita (sobrepasando el mismo carácter)
  • texto subrayado (por superposición _)
  • acentos y signos diacríticos ( p . ej.,é producidos por superposición econ )

y varios otros símbolos, según lo permita el dispositivo de salida de destino.

En bash, estos .0archivos son producidos directamente por nroff, con Makefilereglas como

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

Puede ver dichos archivos usando less; procesará las secuencias de superposición y las reemplazará según corresponda:

less bash.0

Originalmente nroffsalida 's dirigido dispositivos de salida de estilo máquina de escribir, lo que una copia de seguridad cada vez que recibieron un carácter de retroceso; la sobrecarga produciría la salida visual deseada. Como señaló chirlu , golpear al mismo personaje dos veces generalmente daría como resultado una apariencia más audaz gracias a la inevitable desalineación de los sucesivos ataques; El aumento en la cantidad de tinta depositada también ayudaría.

( troffmáquinas de composición tipográfica específicas).


Gracias por el enlace al Manual del usuario de Troff y la información sobre cómo se producen los archivos. En mi pregunta, también pregunté cómo se pretenden utilizar estos archivos. Intenté ejecutar nroff bash.0en mi sistema Ubuntu, pero produjo una serie de advertencias, el resultado estaba ajustado a 65 caracteres y no había un formato especial.
Anthony G - justicia para Monica

1
Ah sí, olvidé esa parte; He editado mi respuesta. nroffse usa para producir estos archivos, no para verlos.
Stephen Kitt el

2
Sí, y así es como man bashfunciona; se utiliza nroff -manpara procesar el .1archivo (o la sección que sea relevante), que es un nroffarchivo, antes de enviarlo al localizador apropiado.
Stephen Kitt

55
@Anthony Geoghegan: La idea era que enviarías este archivo a una impresora de impacto, como una impresora tipo margarita . Realmente imprimiría un personaje, luego retrocedería, luego imprimiría el otro personaje, con los resultados descritos anteriormente. El texto en negrita es similar a un "efecto de coro" en el procesamiento de audio: el segundo carácter está ligeramente desalineado con el primero, lo que lleva a líneas más gruesas.
chirlu

1
@chirlu Esa es una gran explicación de cómo se usaron los caracteres de control para lograr efectos tipográficos con hardware heredado. El uso de esos personajes en particular tiene mucho sentido ahora. Si publica esto como respuesta, puedo votarlo correctamente. Editar: Stephen ya se ha incorporado y ampliado en esto.
Anthony G - justicia para Monica

7

E incluso antes, era un método de impresión en impresoras de pelotas de golf que funcionaba como máquinas de escribir antiguas y tenía un conjunto muy limitado de caracteres que podían imprimir. Entonces, nroff usa el flujo de bytes de una antigua impresora de teletipo para representar cómo debe verse 'en pantalla'.


nroffen realidad fue diseñado inicialmente para imprimir en máquinas de escribir, en lugar de las máquinas de escribir troffespecíficas. El uso de pantallas para la salida vino más tarde ...
Stephen Kitt

99
Soy lo suficientemente mayor como para haber usado una máquina de escribir mecánica en la que !' BACKSPACE .
escribiste
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.