Presentazione 1.4 Codifica dell'informazione testuale Architettura dell'informazione | Prof. Luca A. Ludovico Informazione testuale • Obiettivo: definire e descrivere i principali formati di file per la codifica di informazione testuale • Solo testo semplice? Non necessariamente: sia nell’editoria tradizionale sia in quella digitale, i testi possono essere arricchiti da informazione ulteriore: – Aspetti di formattazione (tipo e dimensione del carattere, colore del testo, …) e di layout (margini, disposizione del testo in colonne, …) – Aggiunta di immagini, grafici, formule matematiche, collegamenti ipertestuali, suoni, … – Strutturazione logica del documento (titoli di vario livello, citazioni, …) Architettura dell'informazione Prof. Luca A. Ludovico Testo semplice Parte 1 Testo semplice (plain text) • Il formato più semplice per codificare testo digitale è il cosiddetto testo semplice, o plain text • Si tratta del contenuto di un file binario interpretabile come materiale testuale semplicemente traducendo la codifica dei caratteri uno ad uno, senza ricorrere a ulteriori elaborazioni • La codifica storicamente ha utilizzato i caratteri della tabella ASCII e i suoi derivati Architettura dell'informazione Prof. Luca A. Ludovico ASCII • L’American Standard Code for Information Interchange (pronuncia fonetica: /ˈæski/ ass-kee) è uno schema di codifica dei caratteri basato originariamente sull’alfabeto inglese • La standardizzazione trae origine dal mondo dei codici telegrafici, e ha inizio nel 1960 presso i laboratori Bell. I codici telegrafici vengono migliorati per quanto riguarda l’ordine dei caratteri e il supporto di caratteristiche superiori rispetto alle telescriventi dell’epoca • Al giorno d’oggi si utilizzano schemi estesi con un maggior numero di caratteri (si veda ad es. l’UTF-8 più avanti), ma spesso basati sulla codifica ASCII Architettura dell'informazione Prof. Luca A. Ludovico ASCII • ASCII utilizza una codifica a 7 bit. Ne consegue la possibilità di rappresentare 27 diverse combinazioni di caratteri binari {0000000..1111111}2 = {0..127}10 • ASCII fornisce la definizione di 128 caratteri: – 33 caratteri di controllo non stampabili (parecchi obsoleti) che riguardano il controllo dei dispositivi di stampa Ad esempio, il carattere 8 è il backspace mentre il 10 rappresenta la funzione "line feed“, che provoca l’avanzamento della carta in una stampante – 95 caratteri stampabili, tra cui le cifre 0..9, le lettere minuscole a..z e le corrispettive maiuscole A..Z, comuni segni di punteggiatura e il carattere spazio (segno grafico invisibile) Architettura dell'informazione Prof. Luca A. Ludovico ASCII Tabella dei codici ASCII a 7 bit {0..127} Esempio di file TXT • Creiamo un file di testo contenente la stringa: Ciao alunni! • Una volta salvato, ha dimensione 12 Byte = 12 · 8 bit – Coerente con la codifica ASCII estesa, in quanto il file contiene 12 caratteri da 8 bit ciascuno • Apriamo il file con un viewer esadecimale – Ad esempio, si può sfruttare il servizio on-line gratuito offerto da http://webhex.net/ 43 69 61 6F C i a o Architettura dell'informazione Prof. Luca A. Ludovico 20 61 6C 75 6E 6E 69 21 a l u n n i ! ASCII esteso Aggiungendo un ottavo bit, si raddoppia lo spazio di indirizzamento e di conseguenza il numero di caratteri rappresentabili. Alla tabella precedente {0..127} si aggiungono i caratteri qui mostrati {128..255} Curiosità: ASCII art • L’ASCII art è una tecnica grafica per la creazione di immagini facendo uso di combinazioni opportune dei 95 caratteri stampabili ASCII • Un’opera in ASCII art può essere creata con qualsiasi editor di testo semplice • La maggior parte degli esempi richiede per la visualizzazione l’adozione di un font monospaziato, quale il Courier – In un font monospaziato, ogni carattere tipografico occupa un ugual numero di punti, che sia “largo” (ad esempio “m”) o stretto (ad esempio “l”) Architettura dell'informazione Prof. Luca A. Ludovico Emoticon e smiley • Sono le forme più semplici di ASCII art: combinazioni di pochi caratteri, convenzionalmente usate per esprimere emozioni all’interno di messaggi di testo semplice – SMS, applicazioni di messaggistica istantanea, … :-) :-( :’( :D =D • Al contrario, i kaomoji o ASCII face non richiedono la rotazione mentale dell’immagine (O.O) Architettura dell'informazione Prof. Luca A. Ludovico (-.-') (>.<) http://upload.wikimedia.org/wikipedia/commons/4/4a/Wikipedia-Ascii.png Esempio ASCII art converter Esempio di software di conversione online (gratuito): http://picascii.com/ Esempi di conversione: http://www.text-image.com/samples.html Architettura dell'informazione Prof. Luca A. Ludovico Evoluzioni dell’ASCII: ISO/IEC 8859 • Standard per la codifica di caratteri ad 8 bit per il trattamento informatico di testi. La norma è divisa in parti numerate pubblicate separatamente (ISO/IEC 8859-1, ISO/IEC 8859-2, etc), ognuna delle quali può essere considerata standard a sé stante. Ci sono attualmente 15 parti definite, escludendo la ISO/IEC 8859-12, abbandonata. • Idea: usando l'ottavo bit del byte, si definiscono altri 128 caratteri rispetto ad ASCII. Vengono dunque sviluppate diverse mappe di caratteri, in cui i 128 caratteri aggiuntivi si fanno corrispondere a simboli differenti a seconda della mappa – Una decina di mappe copre le sole lingue latine Architettura dell'informazione Prof. Luca A. Ludovico Comparazione tra le parti di ISO 8859 Binario Oct Dec Hex 1010 0000 240 160 A0 1010 0001 241 161 A1 ¡ 1010 0010 242 162 A2 ¢ 1010 0011 243 163 A3 £ 1010 0100 244 164 A4 1010 0101 245 165 A5 ¥ Ľ 1010 0110 246 166 A6 ¦ Ś 1010 0111 247 167 A7 § Ї 1010 1000 250 168 A8 ¨ Ј ¨ Ļ จ 1010 1001 251 169 A9 © Š Љ © Đ ฉ 1010 1010 252 170 AA ª Ē Њ Š ช Ŗ Ẃ 1010 1011 253 171 AB « Ť Ğ Ģ Ћ « Ŧ ซ « ḋ 1010 1100 254 172 AC ¬ Ź Ĵ Ŧ Ќ ¬ Ž ฌ ¬ Ỳ 1010 1101 255 173 AD 1010 1110 256 174 AE ® 1010 1111 257 175 AF ¯ 1011 0000 260 176 B0 1011 0001 261 177 B1 … 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 ¡ Ą ก ” Ḃ ¡ Ą ¢ Ē ข ¢ ḃ ¢ ą Ģ ฃ Non-breaking space (NBSP) Ą Ħ ˘ Ł £ Ą Ё ‘ ĸ Ђ ’ Ŗ Ѓ ¤ Є Ĥ Š İ Ş Ĩ Ѕ Ļ І ¢ £ ¤ € ¤ Ī ค ¤ Ċ ₯ ¥ Ĩ ฅ „ ċ Ķ ฆ ¦ Ḋ ¦ § ͺ ، ª × Ż Ž Ў ¯ Џ А ° ± ą ħ ą Б Ø ¥ „ Š š © ª Ș « ¬ Ź SHY ® Ū ฎ ¯ Ŋ ฏ Æ Ÿ ฐ ° Ḟ ° ฑ ± ḟ ± ° ± € Ẁ ญ ― Ł § ง soft hyphen (SHY) Ž £ ą ® ź ¯ Ż Evoluzioni dell’ASCII: Unicode • Unicode è un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzato • Unicode incorpora, nella primissima parte, la codifica ISO/IEC 8859-1, ma va molto oltre, codificando i caratteri usati in quasi tutte le lingue vive e in alcune lingue morte, nonché simboli matematici e chimici, cartografici, l'alfabeto Braille, ideogrammi ecc. • Il codice assegnato al carattere viene rappresentato con U+, seguito dalle quattro (o sei) cifre esadecimali del numero che lo individua – Esempio: in Windows, si apra Mappa caratteri relativa al font Times New Roman Architettura dell'informazione Prof. Luca A. Ludovico Evoluzioni dell’ASCII: Unicode • Unicode è un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzato • Il codice assegnato al carattere viene rappresentato con U+, seguito dalle quattro (o sei) cifre esadecimali del numero che lo individua • Unicode incorpora, nella primissima parte, la codifica ISO/IEC 8859-1, ma va molto oltre, codificando i caratteri usati in quasi tutte le lingue vive e in alcune lingue morte, nonché simboli matematici e chimici, cartografici, l'alfabeto Braille, ideogrammi ecc. Architettura dell'informazione Prof. Luca A. Ludovico UTF-8 • UTF-8 (Unicode Transformation Format, 8 bit) è una codifica dei caratteri Unicode in sequenze di lunghezza variabile di byte • UTF-8 usa da 1 a 4 byte per rappresentare un carattere Unicode. Per esempio un solo byte è necessario per rappresentare i 128 caratteri dell'alfabeto ASCII, corrispondenti alle posizioni Unicode da U+0000 a U+007F. • La IETF (Internet Engineering Task Force) richiede che tutti i protocolli Internet identifichino la codifica dei caratteri utilizzata, e che siano in grado di utilizzare UTF-8 Architettura dell'informazione Prof. Luca A. Ludovico Codifica dei caratteri in UTF-8 • Quanti caratteri differenti si possono rappresentare in UTF-8? In teoria 232 = 4.294.967.296 = circa 4 miliardi • In realtà le sequenze di byte godono di queste proprietà: – – – Il bit più significativo di ogni sequenza composta di un singolo byte è sempre 0. I bit più significativi del primo di una sequenza di più byte indicano la lunghezza della sequenza. Questi bit sono 110 per le sequenze di due byte, e 1110 per quelle di tre. I byte successivi al primo in una sequenza composta da più byte hanno sempre 10 come bit più significativi • UTF-8 è stato progettato per soddisfare queste tre proprietà, in modo da garantire che nessuna sequenza di byte corrispondente a uno specifico carattere sia contenuta in una sequenza più lunga, usata per codificare un carattere diverso. Architettura dell'informazione Prof. Luca A. Ludovico Testo formattato Parte 2 Plain text vs. styled (rich) text • Secondo lo standard Unicode, esistono due proprietà che permettono di distinguere immediatamente il testo semplice da quello formattato: 1. Il testo semplice è il contenuto cui si può applicare la formattazione «Plain text is the underlying content stream to which formatting can be applied» 2. Il testo semplice è pubblico, standard e universalmente leggibile «Plain text is public, standardized, and universally readable» Architettura dell'informazione Prof. Luca A. Ludovico Rich Text Format (RTF) • Formato proprietario per documenti multipiattaforma, sviluppato nel 1981 e perfezionato nel 1987 da Microsoft • La maggior parte degli editor di testo e dei word processor disponibili per Microsoft Windows, Mac OS e Linux sono in grado di leggere e scrivere documenti RTF → interoperabilità (anche se è un formato proprietario e mai standardizzato, spesso «protetto» da Microsoft contro i concorrenti) • Un documento RTF è un file ASCII con stringhe di comandi speciali in grado di controllare le informazioni riguardanti la formattazione del testo: il tipo di carattere e il colore, i margini, i bordi ecc. Architettura dell'informazione Prof. Luca A. Ludovico Caratteristiche supportate in RTF • Immagini: JPEG, Portable Network Graphics (PNG), Enhanced Metafile (EMF), Windows Metafile (WMF), Apple PICT, Windows bitmap • Oggetti disegnati: rettangoli, ellissi, ecc. • Font: inclusione di font specifici (spesso non gestita dai software) e di generiche famiglie di font per le sostituzioni: roman (serif), swiss (sans-serif), modern (monospace), ecc. • Commenti e metadati (titolo, autore, …) Architettura dell'informazione Prof. Luca A. Ludovico Un semplice esempio RTF { \rtf Ciao!\par Ecco del testo in {\b grassetto}.\par } Ciao! Ecco del testo in grassetto. • • • • La barra rovesciata (backslash) indica l'inizio di un codice di comando RTF Il comando \par introduce una nuova riga Il comando \b attiva il testo in grassetto Le parentesi graffe { e } definiscono un gruppo per limitare il raggio d'azione di un comando • Tutto il resto viene trattato come testo semplice o da formattare • Un documento RTF valido è un gruppo il cui primo comando è \rtf Architettura dell'informazione Prof. Luca A. Ludovico Markup (vedi prossima lezione) • Un linguaggio di marcatura (markup) è un insieme di regole (convenzioni) che descrivono i meccanismi di rappresentazione di un testo. Un file in un linguaggio di marcatura contiene dati testuali e metadati strutturali, semantici o presentazionali. • Situazione ambigua: – i file contenenti markup generalmente sono considerati plain text in quanto contengono testo semplice (anche i marcatori sono espressi in testo semplice) – però contengono anche informazione di formattazione (si pensi ad HTML e RTF) Architettura dell'informazione Prof. Luca A. Ludovico Conclusioni Il plain text nelle definizioni Unicode Plain text represents the basic, interchangeable content of text. Plain text represents character content only, not its appearance. It can be displayed in a variety of ways and requires a rendering process to make it visible with a particular appearance. If the same plain text sequence is given to disparate rendering processes, there is no expectation that rendered text in each instance should have the same appearance. Instead, the disparate rendering processes are simply required to make the text legible according to the intended reading. The relationship between appearance and content of plain text may be summarized as follows: Plain text must contain enough information to permit the text to be rendered legibly, and nothing more. Architettura dell'informazione Prof. Luca A. Ludovico Contesti d’uso • Indipendenza da software e architetture HW – I file plain text si possono aprire, leggere e modificare con numerosissime applicazioni, tra cui Notepad (Windows), edit (DOS), ed, emacs, vi, vim, Gedit or nano (Unix, Linux), SimpleText (Mac OS) e TextEdit (Mac OS X). • Uso radicato per alcune applicazioni, quali i file di configurazione e di avvio, la posta elettronica e i web browser testuali (ad es. Lynx) • Scrittura di codice sorgente (istruzioni) nei linguaggi di programmazione ad alto livello (ad es. C++, Java, HTML) Architettura dell'informazione Prof. Luca A. Ludovico