Wie hängen Zeichenkodierungen mit Schriftarten zusammen?

Antworten:

7

Zunächst basiert alles auf US-ASCII, einem 7-Bit-Code mit 128 Codepunkten im Satz, nummeriert mit hex 00 bis 7F oder dezimal 0-127. Dies ist Steuercodes, englischen alphanumerischen Zeichen und grundlegenden Interpunktionszeichen zugeordnet

Wenn Sie 1 Bit für einen 8-Bit-Code (Byte) hinzufügen, erhalten Sie weitere 128 Codepunkte oder Extended ASCII.

Zeichensätze / Codepages waren frühzeitig erforderlich, um zu ändern, wie die Codepunkte in den oberen 128 Bits auf Zeichen abgebildet werden, um das Alphabet für die bestimmte Sprache abzudecken, die Sie darstellen möchten. Dies funktioniert für die meisten westeuropäischen Sprachen recht gut. ISO 8859-1 / Latin-1 ist ein Beispiel für einen solchen Zeichensatz. Ein anderes ist Windows-1252, das Änderungen gegenüber ISO 8859-1 aufweist, um mehr oder andere Zeichen abzudecken.

Sprachen mit komplexeren Zeichensätzen wie Chinesisch, Japanisch und Koreanisch übertreffen die Funktionen des 256-Code-Punktsatzes und verwenden einen Doppelbyte-Code, um ihre Darstellung zu ermöglichen.

Unicode UTF-8 ist ein Mehrbyte-Zeichencodierungsschema (1-4 Byte), dessen erste 128 Zeichen die Abwärtskompatibilität mit ISO 8859-1 / Latin-1 sind. Es bietet Platz für über 1 Million Codepunkte, was bedeutet, dass jeder Codepunkt tatsächlich ein Zeichen darstellen kann, im Gegensatz zum Herumspielen mit Extended ASCII, was bedeutet, dass ein Codepunkt je nach Zeichensatz / Codepage / einem anderen Zeichen zugeordnet wird. Codierung.

Schriftarten sind Glyphen, die Codepunkten zugeordnet sind und Zeichen visuell darstellen. Der Inhalt einer Schriftart hängt davon ab, welche Sprachen sie ursprünglich abdecken sollte. Mithilfe der Zeichentabelle können Sie sehen, welche Glyphen in der Schriftart enthalten sind.

Unicode-Schriftarten decken nicht unbedingt alle Codepunkte ab. Sie müssen sehen, wo sie verwendet werden sollen. Zum Beispiel in Windows 7, Feuer Zeichentabelle und sehen Sie die Zeichen in Calibri und sie dann zu Ebrima, Meiryo und Raavi vergleichen. Beachten Sie, dass sie sehr unterschiedlich sind, da jede auf eine andere geografische Region zugeschnitten ist.

In Bezug auf Unicode-Schriftarten und den Windows-1252-Zeichensatz verwendet Windows eine Zuordnungstabelle, um Windows-1252 in Unicode zu übersetzen, wo es nicht mit ISO 8859-1 für ein "Best Fit" -Szenario übereinstimmt, in dem einige Zeichen im Windows-1252-Zeichen enthalten sind Set wird möglicherweise nicht angezeigt.

Fiasko-Labore
quelle
5

Zeichensatz

Ein Zeichensatz ist eine Sammlung von Zeichen, denen jeweils eine Nummer zugewiesen ist.

Ein bekannter Zeichensatz ist ASCII. Dies ist ein Satz von 128 Zeichen, die von 0 bis 127 nummeriert sind. Diese Zahlen können alle in 7 Bit ausgedrückt werden (daher handelt es sich um einen 7-Bit-Zeichensatz).

Die meisten, aber nicht alle anderen Zeichensätze enthalten den ASCII-Satz mit derselben Nummerierung. Beispiele für Zeichensätze, die nicht wie ASCII sind, sind EBCDIC. Es gab auch europäische Varianten von ASCII, die an bestimmten Positionen unterschiedliche Zeichen hatten (z. B. um £ einzuschließen).

Kodierungen

Große Zeichensätze wie Unicode mit mehr als einer Million Zeichen würden drei oder vier Bytes pro Zeichen erfordern, um den großen Zahlenbereich aufzunehmen, der Zeichen zugewiesen wurde. Stattdessen verwenden sie ein System, mit dem diese Nummer als ein, zwei, drei oder mehr Bytes "codiert" werden kann. Beim UTF-8-Codierungsschema werden die Zeichen, die mit den ASCII-Zeichen identisch sind, zufällig mit einzelnen Bytes mit demselben Bytewert wie in ASCII codiert.

Die obigen Codierungen werden beim Speichern von Text in Dateien verwendet.

Schriften

Eine Schriftart ist ein spezifisches Design der visuellen Darstellung (dh der Form) für eine Reihe von Zeichen. Die Formen werden Glyphen genannt. Eine Schrift kann mehrere Glyphen für ein Zeichen enthalten (siehe "a"). Es kann Glyphen für Zeichenpaare enthalten, die als Ligaturen bezeichnet werden (z. B. "ff" oder "fi"). In einer Schriftart unterscheidet sich der Zeichensatz, für den eine Glyphe entworfen wurde, häufig von dem Zeichensatz in bekannten Zeichensätzen (Schriftarten enthalten normalerweise keine Glyphen für ASCII-Steuerzeichen).

Schriftarten

Im Zusammenhang mit Computern bedeutet eine Schriftart eine Datei, die Glyphen enthält, die nach einem bestimmten Nummerierungsschema geordnet sind (was häufig nicht mit der Nummerierung in einem bekannten Zeichensatz übereinstimmt). In der Vergangenheit gab es Bitmap-Schriftarten, die eine bestimmte Größe (in Pixel oder Punkten) einer Schrift darstellten. Derzeit verwenden die meisten Schriftarten mathematische Kurven zur Beschreibung von Glyphen und können daher so skaliert werden, dass sie eine beliebige Schriftgröße darstellen.

Alles zusammenfügen

Wenn Sie eine Textdatei anzeigen, muss dem Computer die in der Datei verwendete Codierung mitgeteilt (oder erraten) werden. Anschließend wird eine andere Nummerierung verwendet (z. B. eine 16-Bit-Variante von Unicode), um den Text im Speicher darzustellen. Anschließend werden Informationen in einer Schriftartdatei verwendet, um die interne Darstellung der in der Schriftartdatei verwendeten Nummerierung (Codierung) zuzuordnen.

RedGrittyBrick
quelle
3

Muss eine Schriftart jede Zeichenkodierung unterstützen?

Nein, ich weiß nicht, ob es überhaupt welche gibt.
Das würde bedeuten, dass sie jeden erdenklichen Charakter "in sich" hätten. Die gebräuchlichsten Schriftarten, mit denen wir Codierungen westlicher Kulturen (Latein) unterstützen.

Oder muss eine Zeichenkodierung jede Schriftart unterstützen?

Die Zeichenkodierung "unterstützt" in gewisser Weise nichts, daher ist dies wirklich die falsche Sichtweise.

Was bedeuten Unicode-Schriftarten? Sind es Schriftarten, die nur Unicode unterstützen, und sie unterstützen beispielsweise nicht Windows-1252?

Unicode ist ein Standard (oder versucht zumindest, einer zu sein), der eine große Anzahl von Zeichen unterstützt und daher viele Codierungen zu einer Teilmenge von sich selbst macht. Windows 1252 oder CP1252 ist eine Codierung mit lateinischen Zeichen und einigen mitteleuropäischen Zeichen. Die meisten davon sind ebenfalls durch Unicode "abgedeckt". Fast alle Unicode-Schriftarten decken auch CP1252 ab.

Turm
quelle
1
Unicode ist eindeutig ein Standard mit der Nummer ISO 10646.
MSalters