Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Kompendium der Informationstechnik
 von Sascha Kersken
EDV-Grundlagen, Programmierung, Mediengestaltung
Buch: Kompendium der Informationstechnik
gp Kapitel 11 Datei- und Datenformate
  gp 11.1 Textdateien und Zeichensätze
    gp 11.1.1 Das Problem des Zeilenumbruchs
    gp 11.1.2 Zeichensätze
    gp 11.1.3 Textbasierte Dateiformate
  gp 11.2 Binäre Dateiformate
    gp 11.2.1 Bilddateiformate
    gp 11.2.2 Multimedia-Dateiformate
  gp 11.3 Zusammenfassung

gp

Prüfungsfragen zu diesem Kapitel (extern)

Kapitel 11 Datei- und Datenformate

Kommt Mist rein, kommt Mist raus. Das ist der Grundsatz der Datenverarbeitung.
– Professor Ringhofer, FH Stuttgart

In den vorangegangenen Kapiteln haben Sie zahlreiche Anwendungsprogramme und ihre Arbeitsweise kennen gelernt. Dabei wurde eine Reihe von Dateiformaten verwendet, um Daten aus diesen Anwendungen für verschiedene Zwecke zu speichern. Zwar wurde an der jeweiligen Stelle kurz auf den Haupteinsatzzweck und die Besonderheiten dieser Formate eingegangen, aber näher erläutert wurden sie dort nicht. Dies geschieht zentral im vorliegenden Kapitel.

Die Wahl des richtigen Dateiformats ist unerlässlich, um effizient mit bestimmten Anwendungen zu arbeiten und um jeweils kompatible Daten für den weiteren Workflow zu erzeugen. Deshalb werden in diesem Kapitel die wichtigsten Charakteristika verschiedener Formate für Text, formatierten Text, Grafiken, Bilder und Multimediadaten behandelt.

Beachten Sie, dass dieses Kapitel die Datei- und Datenformate ausschließlich aus Anwendersicht beschreibt. Sie erfahren hier also nicht, wie Sie als Programmierer bestimmte Dateiformate lesen, schreiben und interpretieren können. Dieser spezielle Aspekt von Dateiformaten wird in dem empfehlenswerten Buch Dateiformate, die Referenz von Günther Born (Galileo Press) genau beschrieben.


Galileo Computing

11.1 Textdateien und Zeichensätze  downtop

Die einfachste Dateisorte sind einfache Textdateien, in denen jedes Zeichen sich selbst repräsentiert, in denen also keine binären Steuercodes vorkommen. Reine Textdateien werden trotzdem nicht nur zur Speicherung von Texten in menschlichen Sprachen verwendet. Es existieren auch viele textbasierte Formate, in denen Steuerungs-, Formatierungs- und Strukturbefehle im Klartext gespeichert werden, sodass sie von Menschen gelesen und geändert werden können. Wichtige Beispiele sind XML, HTML, die Satzsprache LaTeX, die Druckseitenbeschreibungssprache PostScript und nicht zuletzt die zahlreichen proprietären Konfigurationsdateien für Betriebssysteme und Anwendungen. Dies macht einen großen Teil der Bedeutung von Textdateien aus.

Sie haben in Kapitel 4, Betriebssysteme, erfahren, wie Textdateien mit Hilfe verschiedener System-Tools und Editoren verarbeitet werden können. In Kapitel 5, Grundlagen der Programmierung, und Kapitel 6, Konzepte der Programmierung, wurde die programmierte Verarbeitung von Textdateien behandelt. Aber bisher wurde noch nicht genau darauf eingegangen, was wirklich in einer Textdatei gespeichert wird.

Formal betrachtet handelt es sich bei einer Textdatei um eine Abfolge gleich großer Speicherblöcke, in denen verschiedene Bitmuster für die unterschiedlichen Zeichen stehen. Wie breit der einzelne Speicherblock ist, hängt dabei vom verwendeten Zeichensatz ab. Beispielsweise wird der verbreitete ASCII-Zeichensatz mit seinen Erweiterungen in der Regel in Dateien und Datenstrukturen mit 8 Bit pro Zeichen gespeichert; für Unicode stehen Varianten mit 16 oder 32 Bit oder mit variabler Bit-Breite zur Verfügung.

Der ursprüngliche ASCII-Zeichensatz (American Standard Code for Information Interchange) wurde in den 60er-Jahren entwickelt. Er entstand durch das einfache Durchnummerieren sämtlicher Zeichen und Funktionen, die eine US-amerikanische Schreibmaschine erzeugen kann. Es gibt also nicht nur ASCII-Codierungen für Buchstaben, Ziffern und einige Sonderzeichen, sondern auch für typische Schreibmaschinenfunktionen wie den Zeilenvorschub (Line Feed), den Wagenrücklauf (Carriage Return) oder sogar die Glocke (Bell), deren Ton das baldige Zeilenende anzeigt. Diese Steuerzeichen werden von den verschiedenen Terminals, Shells oder Texteditoren unterschiedlich genutzt.

Der ASCII-Code selbst ist nur 7 Bit breit, enthält also 128 Zeichen. Da er in der Regel in 8 Bit großen Einheiten gespeichert wird, bleibt das erste Bit echter ASCII-Zeichen 0. Der verfügbare Platz von weiteren 128 Zeichen, die bei einer Speicherung in ganzen Bytes übrig bleibt, wurde zuerst von IBM als »erweiterter ASCII-Code« genutzt. In der Folge wurden die verschiedensten Zeichensätze entwickelt, die die ersten 128 Zeichen mit ASCII gemeinsam haben und die restlichen 128 für eigene Erweiterungen nutzen. Eine gängige standardisierte Fassung ist der ANSI-Zeichensatz, der beispielsweise in den Windows-Versionen der meisten lateinisch schreibenden europäischen Sprachen zum Einsatz kommt. Er enthält die wichtigsten west- und mitteleuropäischen Sonderzeichen wie etwa deutsche Umlaute oder französische Buchstaben mit Akzent. ANSI steht für American National Standards Institute, es handelt sich um das US-Pendant zum deutschen DIN oder zur internationalen ISO.


Galileo Computing

11.1.1 Das Problem des Zeilenumbruchs  downtop

Das einzige Sonderzeichen, das in jeder Textdatei geduldet wird und eine universelle Bedeutung besitzt, ist der Zeilenumbruch. Er entsteht bei der manuellen Eingabe durch das Drücken der Eingabetaste ((Enter) oder (Enter)). Ärgerlicherweise wird er selbst in ASCII-Textdateien für die verschiedenen Plattformen durch unterschiedliche Zeichen dargestellt:

gp  UNIX-Varianten wie Linux, FreeBSD und Solaris verwenden ein einzelnes LineFeed (LF, ASCII-Code 10).
gp  Mac  OS benutzt traditionellerweise ein einzelnes Carriage Return (CR, ASCII-Code 13). Allerdings verwendet die Darwin-Umgebung in Mac  OS X das LF, da es sich um ein UNIX handelt.
gp  Windows und MS-DOS verwenden eine Kombination aus beiden Zeichen: ein CR, gefolgt von einem LF (in der Regel als CRLF bezeichnet). Diese Zeichenfolge wird übrigens auch in der Netzwerkkommunikation von vielen Protokollen eingesetzt (siehe Kapitel 13, Netzwerkhardware und -protokolle).

Die Verwendung unterschiedlicher Zeichen für Zeilenumbrüche führt immer wieder zu Problemen bei der Konvertierung oder beim Öffnen von Textdateien, die unter einem anderen Betriebssystem gespeichert wurden. Beispielsweise sehen Sie beim Öffnen einer Windows-Textdatei unter dem klassischen Mac  OS ein kleines Quadrat (als nicht darstellbares Sonderzeichen) am Anfang jeder neuen Zeile, während Sie unter Windows nur kleine Quadrate anstelle der Zeilenumbrüche sehen, wenn Sie eine Mac- oder UNIX-Textdatei öffnen.

Dieses Problem lässt sich durch intelligente Editoren in den Griff bekommen, beispielsweise erkennt TextPad für Windows (Demoversion unter www.textpad.com) die Fremdformate automatisch und stellt die Dateien intern um. Auch der in Mac  OS X eingebaute GUI-Texteditor TextEdit kann sich auf Windows-Zeilenendungen einstellen. Unter Linux sind spezielle Konverterprogramme für die Konsole verfügbar: fromdos Dateiname konvertiert die angegebene Datei mit Windows-Zeilenumbrüchen auf UNIX-Umbrüche; todos Dateiname erledigt die umgekehrte Aufgabe. Für Mac- und Windows-Benutzer ist zusätzlich das Programm AscOnA nützlich, weil es nicht nur die Zeilenendungen in beide Richtungen konvertiert, sondern auch gleich die Umlaute und andere diakritische Zeichen dem jeweiligen Zeichensatz anpasst. Die Software kann für beide Plattformen kostenlos unter der URL www.medienwerkstatt-online.de/products/ascona/ascona.html heruntergeladen werden.

Wenn Sie innerhalb von Anwendungsprogrammen mit Text arbeiten, haben Sie übrigens kein Problem mit Zeilenumbrüchen: Layoutsoftware wie InDesign und QuarkXPress oder Textverarbeitungsprogramme wie Microsoft Word, die für Windows und Mac  OS verfügbar sind, speichern auch die enthaltenen Texte in ihrem eigenen Format, in dem die Zeilenumbrüche speziell geschützt werden. Dabei spielt es auch keine Rolle, ob das jeweilige Programm ein binäres oder XML-basiertes Dateiformat verwendet.

Auch Programmiersprachen beschäftigen sich mit dem Problem der unterschiedlichen Zeilenumbrüche. Wenn Sie in den Sprachen, die in diesem Buch näher behandelt werden, also C, Java oder Perl, die Escape-Sequenz \n ausgeben, gilt sie als logischer Zeilenumbruch, es wird also hinter den Kulissen das jeweils passende Zeichen beziehungsweise die korrekte Zeichenfolge erzeugt. Dennoch steht \n eigentlich für das LF, also das Zeichen mit dem ASCII-Code 10, während \r das CR (ASCII-Code 13) repräsentiert.

Die Programmiersprache Perl geht noch einen Schritt weiter: Sie definiert eine spezielle Variable namens $/, den Input Record Separator. Diese enthält das jeweils aktuelle Zeichen oder die Zeichenfolge, die als Zeilentrenner für den Operator <> gilt. Wenn Sie eine Textdatei erhalten, die von einer anderen Plattform stammt, können Sie den Wert der Variablen einfach überschreiben: Entweder sichern Sie ihren Wert in einer zweiten Variablen oder erstellen sich mit Hilfe des Schlüsselworts local eine gleichnamige lokale Variable, die die »offizielle« Variable innerhalb des aktuellen Gültigkeitsbereichs ausblendet. Wenn Sie $/ einen neuen Wert zuweisen, müssen Sie allerdings darauf achten, dass Sie die Zeichen CR und LF nicht einfach durch \r beziehungsweise \n (den logischen Umbruch) darstellen dürfen, sondern über ihre ASCII-Codes ansprechen müssen. Dies geschieht in Perl (genau wie in C oder Java) durch einen Backslash mit dem nachstehenden oktalen Zeichencode: \012 steht für LF, \015 stellt CR dar.

Das folgende kurze Beispiel dient dem zeilenweisen Einlesen einer Mac-Textdatei auf einer beliebigen Plattform:

local $/ = "\012";
open (MAC, "<mactextfile.txt") || die "Geht nicht!\n";
while ($line = <MAC>) {
   chomp $line;
   push @text, $line;
}
close MAC;

Sie können in $/ übrigens auch einfach einen leeren String speichern, um eine Textdatei vollständig auf einmal zu »saugen«:

my $umbr = $/;        # alten Wert schützen
$/ = "";              # "Saug"-Modus
open (FILE, "<test.txt") || die "Geht nicht!\n";
my $text = <FILE>;    # alles auf einmal lesen
close FILE;
$/ = $umbr;           # $/ wiederherstellen

Galileo Computing

11.1.2 Zeichensätze  downtop

In diesem Unterabschnitt werden die Grundlagen einiger Zeichensätze behandelt – vom einfachen ASCII- bis zum komplexen Unicode-Zeichensatz.

ASCII

Der ASCII-Zeichensatz (gesprochen »askie«) ist der wichtigste und grundlegendste aller Computerzeichensätze. Viele klassische Konsolen- oder Netzwerkanwendungen verarbeiten keine Zeichen über reines ASCII hinaus; Bezeichner in traditionellen Programmiersprachen wie C dürfen ebenfalls nur aus ASCII-Zeichen bestehen.

Der ASCII-Zeichensatz geht auf einen ANSI-Vorschlag von 1963 zurück und wurde im Wesentlichen bei IBM ausgearbeitet, vor allem von Robert Bemer (www.bobbemer.com), der unter anderem auch einen entscheidenden Beitrag zur Entwicklung der Programmiersprache COBOL geleistet hat. 1968 wurde der ASCII-Code standardisiert.


Tabelle 11.1   Der ASCII-Zeichensatz

  0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 SP ! » # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

Tabelle 11.1 zeigt zunächst den gesamten ASCII-Zeichensatz. Die Nummerierung ist hexadezimal; in der jeweiligen Zeile ist die hohe (Sechzehner-)Stelle eines Codes zu sehen, in der Spalte die niedrige (Einer-)Stelle. Das Zeichen 'A' besitzt also zum Beispiel den Code 41 (dezimal 65).

Die Zeichen 0 bis 31 (hexadezimal 00 bis 1F) sind Steuerzeichen, die mit ihren traditionellen Kurznamen verzeichnet wurden. Beispielsweise ist 0A (dezimal 10) das bereits erwähnte LineFeed, 0D (13) ist das Carriage Return und 00 (das Zeichen '\0') wird vor allem als Abschlussmarkierung für C-Strings verwendet.

Wie Sie sehen, haben die Entwickler sich bemüht, bestimmte Zeichenklassen an charakteristischen Stellen unterzubringen. Außerdem kommen die Ziffern und die beiden Sätze von Buchstaben in ihrer natürlichen Reihenfolge vor: Die Ziffernzeichen '0' bis '9' befinden sich auf den Positionen 48 bis 57 (hexadezimal 30 bis 39), die Großbuchstaben 'A' bis 'Z' auf 65 bis 90 (hexadezimal 41 bis 5A) und die Kleinbuchstaben 'a' bis 'z' auf 97 bis 122 (hexadezimal 61 bis 7A).

ASCII-Erweiterungen

In den 80er-Jahren war es so gut wie selbstverständlich, auf einem Home oder Personal Computer keine deutschen Umlaute und sonstigen Sonderzeichen zur Verfügung zu haben: ASCII ist nur für englische Texte geeignet, alle anderen Sprachen mussten ihre Sonderzeichen umschreiben (ae für ä und so weiter) oder spezielle diakritische Kennzeichnungen einfach weglassen (zum Beispiel Französisch ohne Akzente).

Da Computer jedoch ab einem bestimmten Zeitpunkt im großen Stil Einzug in Firmen und Behörden hielten und die Schreibmaschine als Korrespondenzwerkzeug zunehmend ablösten, war dieser Zustand irgendwann nicht mehr erträglich: Deutscher Text ohne Umlaute und ähnliche falsche Schreibweisen anderer Sprachen sind viel schlechter lesbar als richtig geschriebener Text. Da niemand seinen Kunden solche Notlösungen in Geschäftsbriefen auf Dauer zumuten wollte, mussten also Lösungen her.

Erfreulicherweise verwenden alle heutigen Computer Bytes, die acht Bits groß sind (das war in der Frühzeit der Computergeschichte nicht immer selbstverständlich – der oben genannte ASCII-Entwickler Bob Bemer war einer derjenigen, die sich dafür eingesetzt hatten). Aus diesem Grund war es weit verbreitete Praxis, jedes einzelne eigentlich nur 7 Bits breite ASCII-Zeichen in einem 8 Bits großen Block zu speichern. In einem Byte war also Platz für weitere 128 Zeichen, die man irgendwie ausnutzen konnte.

IBM war das erste Unternehmen, das einen solchen Zeichensatz einführte – der so genannte »erweiterte ASCII-Zeichensatz« enthielt die wichtigsten diakritischen Zeichen west- und mitteleuropäischer Sprachen sowie eine Reihe von geraden und gewinkelten Linien und anderen Grafikzeichen, um konsolenbasierte Benutzeroberflächen realisieren zu können. Dieser Zeichensatz wurde beispielsweise in leicht abgewandelter Form von MS-DOS verwendet.

Andere Hersteller erfanden ihre eigenen erweiterten Zeichensätze. Zum Beispiel entschied sich Apple für eine Eigenentwicklung, in der die 128 Zeichen über ASCII anders belegt wurden. Deswegen können Sie bis heute eine deutsche Mac-Textdatei nur mit Fehlern unter Windows lesen und umgekehrt.

Apropos Windows: Microsoft entschloss sich, für Windows nicht IBMs erweiterten ASCII-Zeichensatz oder die MS-DOS-Variante davon zu verwenden, sondern den inzwischen standardisierten ANSI-Zeichensatz: Da Windows eine grafische Benutzeroberfläche war, wurden die verschiedenen Grafikzeichen nicht mehr gebraucht, um Fenster oder Menüs zu zeichnen. Den frei gewordenen Platz benutzt der ANSI-Zeichensatz für mehr internationale diakritische Zeichen. Das ist der Grund dafür, warum ein Konsolenprogramm, das Sie in einem Windows-Editor schreiben, statt deutscher Umlaute seltsame Sonderzeichen anzeigt. Die von DOS übernommene Windows-Konsole verwendet nach wie vor den alten MS-DOS-Zeichensatz!

Als Computer sich in immer mehr Ländern zu verbreiten begannen, bemerkte man, dass auch die ANSI-Zeichen nicht für alle lateinisch geschriebenen Sprachen geeignet waren. Beispielsweise benutzen Sprachen wie Tschechisch oder Türkisch einige besondere Zeichen, um spezielle Laute zu kennzeichnen.

Die Betriebssystemhersteller begegneten diesem Problem, indem sie für jedes Land, in dem das entsprechende System verkauft wurde, einen angepassten Zeichensatz oder eine so genannte Codepage herstellten, um die Besonderheiten der jeweiligen Sprache darstellen zu können. Neben den verschiedenen Varianten der lateinischen Schrift wurden so auch andere Buchstabenalphabete realisiert, beispielsweise Kyrillisch, Griechisch, Hebräisch oder Arabisch. Für die beiden Letztgenannten musste natürlich zusätzlich das Problem gelöst werden, dass sie von rechts nach links geschrieben werden. Für sich allein genommen ist das noch nicht einmal schwierig, vielmehr bereitet die Mischung mit englischem Text, der für die Programmierung und Ähnliches eingesetzt wird, Kopfzerbrechen.

Mit den betriebssystemabhängigen Lösungen waren einige Jahre lang fast alle recht zufrieden; Anwendungsprogramme, die für Mac  OS und Windows verfügbar waren, verwendeten ohnehin ihre eigenen inneren Mechanismen für den Erhalt des korrekten Zeichensatzes. Zum Problem wurden diese Insellösungen erst, als sich das Internet immer schneller ausbreitete. Deshalb wurde für plattformübergreifende Kompatibilität ein international gültiger Standard für Zeichensätze geschaffen: der ISO-8859. Die wichtigsten ISO-8859-Zeichensätze werden in Tabelle 11.2 gezeigt.


Tabelle 11.2   Die wichtigsten standardisierten ASCII-Erweiterungs-Zeichensätze

ISO-Zeichensatz Alternativer Name Beschreibung
ISO-8859-1 ISO-Latin-1 Entspricht weitgehend dem ANSI-Zeichensatz. Unterstützt die Sprachen von USA und Westeuropa.
ISO-8859-2 ISO-Latin-2 Unterstützt zusätzlich einige slawische Sprachen.
ISO-8859-3 ISO-Latin-3 Unterstützt Esperanto, Maltesisch und Türkisch.
ISO-8859-4 ISO-Latin-4 Dient der Unterstützung der baltischen Sprachen (Estnisch, Lettisch und Litauisch).
ISO-8859-5 Kyrillisch
ISO-8859-6 Arabisch
ISO-8859-7 Griechisch
ISO-8859-8 Hebräisch
ISO-8859-9 ISO-Latin-5 Wie Latin-1; ersetzt aber isländische durch türkische Zeichen. Wird für Türkisch häufiger verwendet als Latin-3.
ISO-8859-10 ISO-Latin-5 Unterstützt Grönländisch und Lappisch.

Beachten Sie, dass es noch weitaus mehr angepasste Zeichensätze gibt als die hier dargestellten. Nicht »totzukriegen« sind beispielsweise die traditionellen Mac-Zeichensätze.

Unicode

Um das ganze Problem der Schriften ein für alle Mal in den Griff zu bekommen, wurde schließlich das Unicode-System erfunden. Hier wurde von vornherein mehr Speicherplatz für das einzelne Zeichen eingeplant, um mehr unterschiedliche Zeichen darstellen zu können. Die ursprünglichen Unicode-Versionen verwendeten 16 Bit pro Zeichen, um bis zu 65.536 Zeichen darstellen zu können; seit Unicode 3.1 gibt es auch spezielle Varianten mit 3 oder 4 Byte, um noch erheblich mehr Zeichen in Unicode unterzubringen.

Das größte Problem, das Unicode mit sicht bringt, ist, dass das System bisher noch nicht von allen Betriebssystemen, Programmiersprachen, APIs und Anwendungen verwendet wird. Um dieses Problem zu verringern, wurde Unicode so konstruiert, dass die untersten 256 Zeichen genau dem Zeichensatz ISO-Latin-1 entsprechen.

Die spezielle Unicode-Codierung UTF-8 kann ASCII-Zeichen sogar einfach in einem Byte darstellen und verwendet spezielle Codes zur Darstellung höherer Zeichen. Auf diese Weise ist UTF-8 zu ASCII abwärts kompatibel.

Die ursprüngliche Teilmenge von Unicode, die 16 Bit breite Zeichen verwendet, wird als Basic Multilingual Pane (BMP) bezeichnet. Es handelt sich um die wichtigsten Zeichen lebender Sprachen, mathematische Sonderzeichen sowie grundlegende Piktogramme, Schmuckelemente und andere Symbole (Dingbats). In Tabelle 9.3 sehen Sie eine Übersicht über einige wichtige Codebereiche des BMP-Bereichs von Unicode. Die Codes von Unicode-Zeichen werden üblicherweise im Hexadezimalcode mit vorangestelltem U+ geschrieben; beim BMP-Bereich werden vier Hexadezimalstellen verwendet, ansonsten je nach Bedarf mehr.


Tabelle 11.3   Einige wichtige Codebereiche im Unicode-Block BMP

Hexadezimal Dezimal Codebereich
U+0000 – U+007F 0 – 127 ASCII
U+0080 – U+00FF 128 – 255 ISO-Latin-1
U+0100 – U+017F 256 – 383 Latin Extended A
(speziellere diakritische Zeichen)
U+0180 – U+024F 384 – 591 Latin Extended B
(spezielle, eigentlich nicht lateinische Zeichen, die in einigen Sprachen verwendet werden)
U+0370 – U+03FF 880 – 1023 Griechisch
U+0400 – U+04FF 1024 – 1279 Kyrillisch
U+0590 – U+05FF 1424 – 1535 Hebräisch
U+0600 – U+06FF 1536 – 1791 Arabisch
U+0900 – U+097F 2304 – 2431 Devanagari
(Schrift der meisten indischen Sprachen)
U+2200 – U+22FF 8704 – 8959 Mathematische Symbole
U+3040 – U+309F 12352 – 12447 Hiragana
(japanische Lautschrift)
U+30A0 – U+30FF 12448 – 12543 Katakana
(japanische Lautschrift)
U+4E00 – U+9FA5 19968 – 40869 CJK Unified Ideographs
(chinesische Zeichen, die z. T. auch für Japanisch und Koreanisch verwendet werden)

Eine Übersicht über alle Zeichenbereiche von Unicode erhalten Sie auf der Website des Unicode-Konsortiums: www.unicode.org. Dort finden Sie außerdem PDF-Dokumente zum Download, in denen jedes einzelne Zeichen zu sehen ist.

Unicode wird inzwischen von den meisten Betriebssystemen unterstützt. Den Anfang machte Windows NT 4.0, das 1996 auf den Markt kam und den damaligen 16-Bit-Unicode als festgelegtes Textformat verwendete. Inzwischen sind auch neuere UNIX- und Linux-Versionen mit Unicode-Unterstützung ausgestattet.

Bei den Programmiersprachen machte Java den Anfang: die Sprache verwendete von Anfang an Unicode in verschiedenen Codierungen. Der Java-Datentyp char (einzelnes Zeichen) besitzt eine Breite von 16 Bit und ist somit groß genug, um ein BMP-Unicode-Zeichen aufzunehmen. In C wurde dazu nachträglich der 16 Bit breite Datentyp wchar_t eingeführt. Perl unterstützt Unicode erst seit der aktuellsten Version 5.8.

Auch immer mehr Anwendungsprogramme unterstützen Unicode. Wichtig ist dies besonders für Layout- und Textverarbeitungsprogramme. Das in Kapitel 9, DTP und digitale Druckvorstufe, vorgestellte InDesign arbeitet beispielsweise von Hause aus mit Unicode; der Konkurrent QuarkXPress unterstützt Unicode bisher nicht. Die Unicode-Verwendung in Anwendungsprogrammen geht einher mit der Unterstützung des neuen OpenType-Schriftformats, das ebenfalls in Kapitel 9 angesprochen wurde.

Schrift- und Tastatureinstellungen

Die in den vorigen Abschnitten besprochene theoretische Unterstützung verschiedener lokaler Zeichensätze oder des Unicode-Systems nutzt in der Praxis natürlich nur dann etwas, wenn auf dem verwendeten Rechner entsprechende Schriften installiert sind und die Tastaturbelegung so geändert werden kann, dass die speziellen Zeichen anderer Schriftsysteme über die Tastatur eingegeben werden können.

Die reine Anzeige fremder Schriften ist besonders für Webseiten wichtig. Folgerichtig bieten Webbrowser wie der Microsoft Internet Explorer ein relativ einfaches System zum Umstellen der Zeichencodierung und zum Nachladen verschiedenster Zeichensätze an. Diese Darstellung anderer Zeichensätze ermöglicht aber noch lange nicht deren Eingabe!

Die meisten aktuellen Betriebssysteme bieten eine einfache Möglichkeit, das Tastaturlayout auf viele verschiedene Schriften umzustellen und entsprechende Zeichensätze zu installieren. Unter Windows XP nehmen Sie die Einstellung der auswählbaren Tastaturlayouts beispielsweise folgendermaßen vor:

1. Wählen Sie Start • Systemsteuerung • Regions- und Spracheinstellungen.
       
2. Wechseln Sie auf die Registerkarte Sprachen. Über den Button Details können Sie die eigentlichen Einstellungen für Tastatur-Eingabeschemata vornehmen.
       
3. Mit Hinzufügen können Sie zahlreiche Sprachen und Eingabeschemata installieren.
       
4. Nachdem Sie die Auswahl bestätigt haben, steht Ihnen in der Taskleiste ein Umschalter zur Verfügung, mit dessen Hilfe Sie die verschiedenen Sprachen und Gebietsschemata nach Länderkürzel aussuchen können. Moderne Anwendungen wie Word oder InDesign suchen beim Umschalten in der Regel auch gleich eine Schrift aus, die die benötigten Zeichen darstellen kann. Auch das Umschalten der Schreibrichtung für verschiedene Sprachen funktioniert normalerweise problemlos.
       

Unter Mac  OS X steht Ihnen ein sehr ähnliches Verfahren zur Verfügung; hier finden Sie die erforderlichen Einstellungen unter Systemeinstellungen • Landeseinstellungen.

Nun müssen Sie nur noch herausfinden, mit welcher Taste welches Zeichen einer Sprache produziert wird. Bei lateinisch geschriebenen Sprachen kann die Belegung geringfügig (Z und Y sowie einige Satzzeichen vertauscht bei englischer Tastaturbelegung), aber auch erheblich von der deutschen abweichen (zum Beispiel AZERTY statt QWERTZ bei französischem Tastaturlayout). Für nichtlateinische Schriften gelten dagegen völlig andere Regeln: Fremde Buchstabenschriften (Griechisch, Arabisch und so weiter) sind natürlich irgendwie auf die Tasten der Tastatur verteilt.

Viel komplexer wird es dagegen bei den ostasiatischen Silbenschriften: In der Regel werden chinesische oder japanische Zeichen anhand einer Lateinumschrift eingegeben, Sie können sich das passende Zeichen daraufhin aus einer Liste aussuchen. Bestimmte Zeichen erkennt ein solches Eingabesystem sogar bereits aus dem Kontext richtig.


Abbildung 11.1   Eingabe chinesischer Zeichen unter Windows XP

Abbildung
Hier klicken, um das Bild zu Vergrößern



Ein Beispiel: Chinesisch schreiben auf lateinischen Tastaturen In Abbildung 11.1 sehen Sie ein Beispiel für die Eingabe chinesischer Schriftzeichen unter Windows XP. Die chinesische Sprache kennt viele tausend Silbenzeichen, aber nur verhältnismäßig wenige verschiedene Sprechsilben. Erschwerend kommt hinzu, dass es vier verschieden gesprochene, bedeutungsunterscheidende Betonungen gibt, die bei den üblichen Eingabesystemen nicht mit eingegeben werden. In dem Beispiel sind die vereinfachten chinesischen Schriftzeichen zu sehen, die in der Volksrepublik aufgrund einer Schriftreform eingeführt wurden (Taiwan verwendet dagegen bis heute die noch komplexeren traditionellen Schriftzeichen). Die Lateinumschrift wurde ebenfalls vereinheitlicht; die chinesische Regierung hat vor Jahren ein verbindliches System namens Hanyu Pinyin eingeführt. Dies ersetzt die zum Teil abenteuerlichen Versuche portugiesischer Jesuitenpater und englischer Seefahrer; statt »Peking« heißt es beispielsweise korrekt »Beijing«. Um die obigen Zeichen zu produzieren, müssen Sie die folgenden Silben eingeben: NI HAO MA (das Leerzeichen schließt jeweils die Eingabe einer Silbe ab). Da dieser Satz »Wie geht es dir?« bedeutet und sehr häufig vorkommt, hat das System auf Anhieb die korrekten Zeichen ausgewählt. Wird ein Zeichen dagegen falsch erkannt, können Sie einmal auf die linke Pfeiltaste drücken, um die im Bild gezeigte Auswahlleiste zu erhalten. Bei den meisten Silben besteht sie aus mehreren Abschnitten, die Sie durch die Pfeil-Buttons rechts erreichen können. Unter Mac  OS X ist der Mechanismus sehr ähnlich.


Galileo Computing

11.1.3 Textbasierte Dateiformate  toptop

Viele wichtige Dateiformate, die in reinem Text geschrieben werden, lernen Sie in anderen Kapiteln dieses Buches kennen: In Kapitel 15 wird beispielsweise ausführlich die allgemeine Auszeichnungssprache XML behandelt; in Kapitel 16 kommt die Webseitenbeschreibungssprache HTML an die Reihe. Auch die verschiedenen Programmiersprachen und diverse Arten von Konfigurationsdateien lassen sich letzten Endes als Textdateiformate bezeichnen.

An dieser Stelle werden deshalb nur zwei Beispiele für textbasierte Formate angeführt: die Satzsprache LaTeX und die Druckseitenbeschreibungssprache PostScript. Ein drittes Beispiel ist das von Microsoft definierte Rich Text Format (RTF), das als rudimentäres Austauschformat für formatierten Text zwischen verschiedenen Anwendungen eingesetzt werden kann.

LaTeX

Die WYSIWYG-Dokumentenverarbeitung im Bereich des Textsatzes war nicht zu allen Zeiten selbstverständlich. Fotosatzmaschinen und frühe computerbasierte Satz- und Layoutsysteme verwendeten angepasste Spezialsprachen, um das Layout und den Textinhalt von Druckdokumenten zu beschreiben.

Eine der bekanntesten Textsatzsprachen wurde in den 80er-Jahren von Donald E. Knuth entworfen. Hauptberuflich ist er ein sehr bekannter Informatikprofessor – sein Hauptwerk ist das bisher dreibändige, auf sieben Bände ausgelegte »The Art of Computer Programming«. 1982 gab er das Manuskript des ersten Bandes beim Verlag ab und war enttäuscht über den schlechten Satz, der dabei herauskam. Dies veranlasste ihn, mit der Arbeit an seinem eigenen Textsatzsystem zu beginnen, genannt TeX (gesprochen »Tech« – mit ch wie in »Blech«).

Zusammen mit TeX entwickelte Knuth ein weiteres Programm namens METAFONT zur Definition vektorbasierter elektronischer Schriften. Die wichtigsten Ideen von METAFONT führten später zur Entwicklung der Adobe-PostScript-Schriften. In TeX gesetzte Dokumente bestechen durch ihre hohe Qualität, die nicht einmal von professionellen Layoutprogrammen wie InDesign oder QuarkXPress erreicht wird, sondern höchstens von der Kunst des manuellen Bleisatzes. Außerdem ist kein anderes Programm in der Lage, in ähnlicher Perfektion mathematische Formeln zu setzen.

Andererseits ist TeX schwer zu benutzen; es müssen Unmengen von Konfigurationsanweisungen geschrieben werden, bevor das eigentliche Dokument gesetzt werden kann. Aus diesem Grund fügten andere Entwickler eine Makrosammlung namens LaTeX hinzu, die viele der Konfigurationsarbeiten durch Zusammenfassung erleichtert, sodass Autoren sich mehr auf den eigentlichen Text konzentrieren können als auf die Satzsprache.

Eine richtige Einführung in LaTeX würde an dieser Stelle erheblich zu weit führen; deshalb soll ein kurzes Beispieldokument genügen:

\begin{document}
\textbf{\Large LaTeX}
LaTeX ist eine Makrosammlung, die auf der Satzsprache Tex von 
\emph{D.E.Knuth}\footnote{Der Autor der bekannten Art Of Computer 
Programming.} basiert. LaTeX bietet eine Reihe von Vorteilen:
\begin{itemize}
\item
Gestochen scharfer Textsatz.
\item
Mathematische Formeln in Perfektion.
\item
Listen, Tabellen und Abbildungen ohne Probleme.
\end{itemize}
\end{document}

Wie Sie sehen, werden Formatierungsbefehle mit \befehl eingeleitet; die Inhalte, die ein Befehl umschließt, stehen in geschweiften Klammern. Der obige Beispielcode würde etwa folgende Ausgabe erzeugen:


LaTeX LaTeX ist eine Makrosammlung, die auf der Satzsprache Tex von D.E.Knuth basiert. LaTeX bietet eine Reihe von Vorteilen: Gestochen scharfer Textsatz. Mathematische Formeln in Perfektion. Listen, Tabellen und Abbildungen ohne Probleme. * Der Autor der bekannten Art Of Computer Programming.

Ein solches Programm erhält die Dateiendung .tex und wird vom eigentlichen LaTeX-Programm in eine DVI-Datei (Device-Independent Print File) umgewandelt, die über das Programm dvips in PostScript umgewandelt werden kann. Die freie PostScript-Implementierung GhostScript ermöglicht schließlich die Vorschau und Ausgabe des Dokuments. Auf einem UNIX-System würden Sie dazu beispielsweise folgende Befehle eingeben:

$ latex latexinfo.tex
$ dvips latexinfo.dvi
$ gs latexinfo.ps

Heutzutage gibt es auch einfache Möglichkeiten, direkt aus LaTeX-Dokumenten das modernere PDF-Format zu generieren.

PostScript

Die von Adobe eingeführte Druckseitenbeschreibungssprache PostScript wurde für die millimetergenaue Platzierung von Text, Vektorgrafik und Bildern erfunden, die für die Ausgabe auf Laserdruckern und Belichtern erforderlich ist. Die Sprache verfügt über eingebaute Funktionen zur Formatierung von Text und zur Anfertigung von Vektorzeichnungen; Pixelbilder werden dagegen mit der PostScript-Datei verknüpft.

Es handelt sich zwar um ein textbasiertes Format, aber in aller Regel gibt es niemand von Hand ein. PostScript-Dokumente werden fast immer von entsprechenden Druckertreibern erzeugt. Eine PPD (Druckerbeschreibungsdatei) wird dabei verwendet, um die speziellen Fähigkeiten des verwendeten Druckers wie Auflösung, Farbfähigkeit und eingebaute Schriften zu bestimmen. Aus diesen Gründen würde es auch keinen Sinn ergeben, hier PostScript-Code darzustellen.

Wenn Sie ein PostScript-Dokument als Datei speichern möchten, müssen Sie Ihren Druckertreiber anweisen, die Druckdaten an die Datei statt an den Drucker selbst zu senden. Das Verfahren wurde bereits in Kapitel 9, DTP und digitale Druckvorstufe, kurz erläutert.

Eine spezielle Variante von PostScript ist das EPS-Format (Encapsulated PostScript). Es wird eher zu den Bilddateiformaten gerechnet, da es von den meisten Grafik- und Bildbearbeitungsprogrammen exportiert und geöffnet werden kann. EPS-Dateien sind die bevorzugte Methode, um Vektorgrafiken oder gemischte Pixel-/Vektorgrafiken in Layoutdokumente zu importieren. Gegenüber dem klassischen PostScript-Format weist EPS die folgenden Besonderheiten auf:

gp  Die Konturen von Schriftarten können ähnlich wie bei PDF mit in das Dokument verpackt werden.
gp  Pixelbilder werden nicht verknüpft, sondern ihr Datenbestand wird grundsätzlich in das EPS eingebettet.
gp  EPS-Dokumente sind auf eine einzige Seite beschränkt, während PostScript beliebig viele Seiten einnehmen kann.





  

Einstieg in PHP 5

Einstieg in Java

C von A bis Z

Einstieg in C++

Einstieg in Linux

Einstieg in XML

Apache 2




Copyright © Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de