# Formatos y procesamiento de texto

En esta lección se expondrá algunos de los formatos de texto y del procesamiento del mismo. Se incorporarán imágenes para ayudar a explicar y entender el tema. También se incluye una sección de conclusiones con el resumen de las cosas más importantes de la lección. Finalmente se puede realizar un test para comprobar que se han entendido todos los contenidos y conceptos expuestos en la lección.

## ¿Qué es un documento de texto?

Un documento de texto es un archivo en el que se guardan caracteres en cierto formato. Este puede tener distintas extensiones, las cuales serán explicadas más adelante.
Se pueden distinguir dos tipos generales de archivos de texto:
* Archivo de Texto Plano: Es aquel que únicamente contiene texto sin ningún tipo de información acerca de su presentación y atributos como pueden ser el color, tipo o tamaño de la letra. También es conocido como texto puro.
* Archivo de Texto Enriquecido: Es aquel que además del texto contiene información sobre el aspecto del mismo. Estos archivos de texto también pueden contener imágenes o audio.
Una de sus aplicaciones más habituales en el ámbito de la informática es el almacenamiento de variables y valores en archivos (documentos de texto normalmente). De esta manera se evita tener que volver a procesar los datos de entrada por el programa, ya que puede ser muy costoso en tiempo. Si se almacenan estos datos, como pueden ser la solución a un problema o salida del programa, solo tendrán que ser leídos e interpretados.
La información se guarda como caracteres los cuales se pueden representar de muchas maneras (por ejemplo: ASCII). Las diferentes formas de representar los caracteres y la información pueden resultar más o menos óptimas y más o menos adecuadas.
El texto plano, como se ha explicado antes, se utiliza para datos. Si se introduce tamaño, fuente, color y otras propiedades al texto este resulta más pesado, ya que se deben guardar todas estas propiedades asociadas. Este tipo de texto se utiliza para presentaciones o escritos (esta es la forma más común que podemos encontrar). Otra de las formas de almacenamiento son los ficheros binarios, que resultan útiles para almacenar números de un tamaño considerable.
Las ventajas de un texto plano legible por un humano frente al binario es que es más fácil de comprender y se puede modificar de forma más sencilla mediante una herramienta cualquiera que permita la visualización y modificación del mismo. Otra desventaja del texto binario es la complejidad que requiere su modificación obteniendo en ocasiones resultados distinto de los esperados. Esto es debido a que, en un elevado número de ocasiones, su representación interna suele ser desconocida por los programas de texto. Sin embargo, una de las principales ventajas de los archivos binarios es que permiten una representación más optimizada de la información.
Una desventaja clara de los textos enriquecidos (textos con color, fuente, etc.) es que si se desconoce la codificación, y se supone otra distinta, no se es capaz de saber el mensaje original exacto.
Ejemplo: Confusión de formato

## Formatos de Texto

A la hora de hablar sobre formatos de texto se pueden distinguir dos acepciones. Una primera acepción hace referencia a todo lo relacionado con el aspecto del texto y atributos del mismo como el color de la letra, tamaño y fuente de la misma o separación de los caracteres.
El segundo significado esta relacionado con cómo se codifica la información del archivo de texto. El formato es un estándar que establece como ha de codificarse la información de un archivo.

### Formatos y Extensiones de archivos

Las extensiones de los archivos se pueden conocer al mirar su nombre. Normalmente serán reconocibles al ir precedidos de un punto (".") tras el cual podremos encontrar la extensión o formato del archivo. Aunque el uso de la notación "nombre.formato" no es obligatorio, se recomienda, ya que permite conocer de antemano el formato y las herramientas con las que podemos manejar el archivo. Su función principal es diferenciar el contenido del archivo de modo que el sistema operativo disponga el procedimiento necesario para ejecutarlo o interpretarlo, sin embargo, la extensión es solamente parte del nombre del archivo y no representa ningún tipo de obligación respecto a su contenido.
Determinados sistemas operativos como Windows utilizan las extensiones para determinar el formato del archivo mientras que otros sistemas operativos, como los basades en Unix, lo utilizan como una convención y no necesariamente se utilizan para determinar su tipo.
A continuación se explican en profundidad algunas de los formatos y extensiones anteriores que pueden resultar mas interesantes.
* ASCII: Esquema para la codificación de caracteres basado en el alfabeto inglés. Se trata de un estándar libre y casi omnipresente en la Informática desde 1963. Con 7 bits para representar 128 caracteres (sólo 95 imprimibles) o, en el caso del ASCII Extendido, 8 bits para representar 256.
* Unicode: Estándar libre para codificar, representar y tratar texto de manera consistente. Aspira a ser universal, abarcando –especialmente desde su versión 2.0- la mayoría de los sistemas de escritura que se utilizan en el mundo. Dos de las variantes más populares son el UTF-8 (el más compatible con ASCII y el que predomina en la Web) y UTF-16.
* RTF: Formato de texto. El formato de fichero para documentos de texto enriquecido que fue propiedad de Microsoft y muy utilizado en sus aplicaciones de ofimática aunque ha caído en desuso desde Word 2010. El hecho de tener control total sobre las especificaciones del estándar le daba a Microsoft una ventaja estratégica para su paquete Office, que siempre funcionaba mejor sobre este formato que los de la competencia.
* HTML: Formato de hipertexto. El lenguaje de marcado estándar para crear páginas web. Tim BernersLee, un físico del CERN, creó este sistema de hipertexto a finales de 1990 y desde 1996 es el World Wide Web Consortium (W3C) el que se hace cargo de su especificación. Actualmente se habla de HTML 5, término que hace referencia a la última versión aparecida en conjunción con las últimas versiones de CSS y JavaScript.
* EPUB: Formato de libros electrónicos, libre y gratuito. Su contenido se ajusta dinámicamente al formato de página que tengamos configurado en el lector. Hay muchos otros formatos, aceptados en los más populares lectores de e-books del mercado.
* PDF: Formato de libros electrónicos independiente del hardware, del sistema operativo y del software de la aplicación que lo maneje. Al igual que PostScript es un formato de gráficos vectoriales que puede contener a su vez otras cosas. Fue propiedad de Adobe hasta 2008, cuando se estandarizó. Seguramente el formato más popular de todo Internet para intercambiar documentos.
* .TXT: Formato de texto plano que se extendió con el sistema operativo Windows y MS/DOS para saber que un archivo contenía únicamente texto. Para modificarlo podremos utilizar cualquier herramienta de texto que permita edición, como Notepad, Notepad++, Gedit y otros muchos. Existen otras herramientas no orientadas al texto plano que permiten guardar archivos en este formato.
* .RTF: Formato de texto enriquecido (Rich). Microsoft desarrolló este formato para poder intercambiar documentos de texto con formato con otros sistemas operativos como GNU/Linux o MACOS. Permite muchas opciones como colores, tamaños imágenes y tablas entre otras características. Su punto débil es que limita el estilo.
* .ODT: Este es el estándar para el texto con formato, es libre y está disponible en la mayoría de procesadores de texto más extendidos. OpenOffice Writer es una de estas herramientas, además es libre, aunque por otro lado la herramienta Word de Microsoft no permitía guardar en este formato (hasta que se convirtió en estándar). Este formato es muy versátil y permite mucha variedad de propiedades, tales como referencias o comentarios.
* .DOC: Este es el primer formato que apareció con Microsoft Word. Es uno de los formatos con más posibilidades para el usuario, sin embargo, al provenir de software propietario, ha sufrido algunos problemas serios de incompatibilidad. Además, los archivos con versiones más recientes pueden no ser compatibles con versiones anteriores. Hoy en día este formato puede ser visualizado por más procesadores de texto además del original (propietario).
* .DOCX: Esta es la versión más reciente del DOC, permite una mejora de compresión además de algunas otras mejoras frente al formato antiguo. Éste se ha decidido lanzar con una licencia libre, para ser mejor aceptado en la comunidad y poder ser estandarizado. Aunque el formato sea libre la herramienta que lo genera no lo es, lo que genera discusión y hace necesario un plugin para las otras herramientas. La replicación del comportamiento de esta no resulta trivial.

### Formatos de fuentes

Se entiende por tipografía el modo o estilo en que está impreso un texto. Se dice que es el arte y la técnica en el manejo y selección de tipos para crear trabajos de impresión. Usualmente se suelen clasificar por formas, distinguiéndose 5 tipos:
* Serif o con serifa: son aquellas tipografías que tienen serifa, remates, terminal o gracia y que son unas pequeñas líneas que se encuentran en las terminaciones de las letras.
* Sans serif, sin serifas, lineales, paloseco o palo seco: son aquellas tipografías que carecen de remates en sus terminaciones.
* Script: tipografías con apariencia o inspirada en la tipografía hecha a mano.
* Graphic, decorativas o fantasía: tipografías que no entran en los grupos anteriores y que fueron creadas con un fin específico.
* Monospace: aquellas cuyos caracteres ocupan todo el mismo espacio.
El formato de fuente define la forma que va a tener un carácter. Los procesadores de textos de los ordenadores actuales disponen de una amplia gama de tipos. A continuación se muestran algunas de las existentes.
* PostScript: Es un lenguaje de descripción de páginas. Se utiliza para describir una imagen de impresión. Las imágenes se describen como una mezcla entre líneas horizontales, píxeles al vuelo, descripciones de curvas de Bezier y tipos de letra de alta calidad a baja resolución. PDF es otro de los lenguajes de descripción de páginas, pero es más sencillo.
* TrueType: Es un formato de tipo estándar escalable. Fue inicialmente desarrollado por Apple a finales de los ochenta. Están compuestas por elementos vectoriales de alta calidad, por lo que ocupan más memoria. Emplean un procesamiento cuadrático, más rápido que en PostScripts. Además, dispone de mejoras para la visualización en resoluciones bajas.
* OpenType: Es un formato de tipo de letra escalable. está basado en su antecesor TrueType. Lo mejora utilizando tablas de datos que permiten el uso de funciones a tipos o familias tipográficas avanzadas. La especificación la desarrolló Microsoft a la que se unió Adobe hasta su lanzamiento en 1996. La especificación experimenta una mejora continua camino de llegar a ser un estándar abierto.
* Multiple Master: También se puede encontrar como MM fonts. Son extensiones al PostScript de Adobe, aunque ahora se ve eclipsado por OpenType. Permite la mezcla de fuentes originales interpoláutilizamo ☂ndolas en un continuo rango de ejes a demanda. La ventaja de utilizar múltiples maestros es que el diseñador puede generar un estilo con la anchura, grosor y tamaño al ojo óptimos. No se sufre pérdida de la integridad y la facilidad de lectura de los caracteres. El efecto es similar a la técnica llamada Morphing.
* AAT: Es un software creado por Apple, para el renderizado avanzado de fuentes es el sucesor de QuickDraw GX, tecnología de mediados de los noventa. Se trata de un conjunto de extensiones de TrueType y características similares a OpenType. También incorpora conceptos de Multiple Master. Las características de fuente de AAT únicamente afectan a la representación de los caracteres durante la conversión llamada Glyph.
* CID-Keyed: Se trata de un formato ideal para conjuntos que contengan un elevado número de caracteres, como los idiomas Chino, Japonés y Coreano. Está diseñado para el uso con Adobe, aunque también para PostScript.
* SVG: Son las siglas de Scalable Vector Graphics. Son una especificación para describir gráficos vectoriales bidimensionales (estáticos y dinámicos). El formato que se sigue es XML. SVG se convirtió en un formato recomendado por W3C en 2001 y se incluyó de forma nativa en su navegador (Amaya). Mozilla Firefox y Opera soportan este formato, ya que lo incorporan en su núcleo. También Chrome, Safari e Inernet Explorer 9 lo soportan sin necesidad de plug-ins necesarios, cosa que no ocurre en versiones antiguas de los anteriormente mencionados.
Los principales formatos usados para tipos de letra en informática son: PS, TrueType y OpenType.

## Codificación del texto

Se conoce como codificación de caracteres al método que permite convertir un carácter de un lenguaje natural en un símbolo de otro sistema de representación, como un número o una secuencia de pulsos eléctricos en un sistema electrónico, aplicando normas o reglas de codificación.
Para ver mejor las consecuencias y el uso de la codificación nos fijaremos en el siguiente ejemplo.
Como ya hemos mencionado antes, la codificación es de la que depende el poder representar los caracteres, así que cuanto mayor es el tamaño del que puede disponer por carácter mayor será el peso del mismo texto en otro formato más limitado. A pesar de esto, en ocasiones nos veremos obligados a tener que utilizar formatos que utilicen más caracteres para la codificación, dependiendo del lenguaje en el que escribamos.
ASCII es un tipo de codificación muy conocido y utilizado, contiene solo 128 caracteres, entre ellos los de control. Como podemos observar, dispone de un repertorio bastante limitado. Por otro lado podemos elegir la codificación UTF que, en función de la versión, dispondrá o no de ciertos caracteres. UTF-8 dispone de 8 bits para el reconocimiento de un carácter, por lo que tendremos 2^8 (256) caracteres, ya que es formato binario (0's y 1's). A medida que sumamos bits en este tipo de codificación (UTF-16, UTF-32) dispondremos de más espacio para poder representar más caracteres (2^16 y 2^32 respectivamente).
Por último también se puede destacar algún otro tipo de codificación como ISO/IEC 8859.

## Procesamiento de texto

La interpretación del texto es la verdadera clave, así podrá desempeñar distintas funciones. Para que nos quede más claro, miremos el siguiente ejemplo.
Por lo general, todo el texto se puede procesar, puede llegar a ser una tarea muy difícil. En un texto informativo, podremos sacar ideas del mensaje, lo que se quiere transmitir. En un código, se sacará un comportamiento programado, este papel lo ocupan los compiladores. En una obra artística, donde se juega con el texto, necesitaremos analizar su forma con un lector o escáner e intentar compararlo con otros objetos.
Hoy en día, las aplicaciones del texto son innumerables, por ello existen procesamientos diferentes según lo que queramos utilizar, ya que suele ser una buena forma de expresarse.

## Conclusiones

Como hemos visto en esta sección de la Wiki, según la finalidad del texto (en Informática) nos interesa guardar en uno u otro formato, esto ayuda al sistema operativo a actuar de forma correcta y apropiada. Sobretodo cuando la misión de este es clara, como en el caso del código.
También hemos visto que necesitamos un intérprete. Este saca provecho y permite realizar la función del texto, como puede ser la de generación de un programa para un fin concreto. Este fin puede estar relacionado con este mismo tema, como en el caso de un corrector ortográfico.
Otra de las cosas aprendidas es, en el caso de ser un texto informativo que requiera comunicar e impactar al lector, para que cale el mensaje, utilizamos un diseño apropiado de la fuente. Por lo general, uno agradable, bonito y que permita una lectura cómoda. También ayuda que sea compatible con muchos dispositivos, ya que seguramente queramos abarcar el máximo público posible. Pero ojo con la codificación, ya que si queremos representar caracteres raros no solo tendremos que preocuparnos de la fuente, sino también de la codificación. La mezcla de todas estas características suele ser explosiva, así que hay que tener cuidado con su elección. Normalmente, puede dar problemas cuando se copia del origen del texto a otro entorno diferente. Aunque, nosotros no tenemos por qué preocupamos de esto, ya que suele haber un software por debajo que nos ayuda en estas decisiones.