OpenType Reference

Page 1

s er re i h tu m ot ea ram r R F og io de e速 r ud an yp n P St ex T e 速 Al pen der tlab O d n un Fo in

g

un




Š 2007 bei Alexander Roth Lamberti Verlag GmbH MellumstraĂ&#x;e 15 26125 Oldenburg Printed in Germany


Alexander Roth OpenType速 Features und deren Programmierung in Fontlab速 Studio

Bad Salzuflen, 2007


Inhaltsverzeichnis Vorwort OpenType速 Fontlab速 Studio Features A aalt Access All Alternates afrc Alternative Fractions C calt Contextual Alternates case Case-Sensitive Forms ccmp Glyph Composition/Decompos. clig Contextual Ligatures cpsp Capital Spacing cswh Contextual Swash c2pc Petite Capitals from Capitals c2sc Small Capitals from Capitals D dlig Discretionary Ligatures dnom Denominators F falt Final Glyph on Line Alternates fina Terminal Forms frac Fractions fwid Full Widths H hist Historical Forms hlig Historical Ligatures

10 14 22 30 32 35 37 39 41 44 46 48 50 52 54 56 58 60 62 64 67 69


Inhaltsverzeichnis I init Initial Forms ital Italics J jalt Justification Alternates K kern Kerning L lfbd Left Bounds liga Ligatures lnum Lining Figures locl Localized Forms M medi Medial Forms mgrk Mathematical Greek N numr Numerators O onum Oldstyle Figures obpd Optical Bounds ordn Ordinals ornm Ornaments P pcap Petite Capitals pnum Proportional Figures pwid Proportional Widths R rand Randomize rtbd Right Bounds S salt Stylistic Alternates sinf Scientific Inferiors smcp Small Capitals ssxx Stylistic Set xx

71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 103 105 108 111 113 115 117 119


Inhaltsverzeichnis S subs Subscript sups Superscript swsh Swash T titl Titling tnum Tabular Figures U unic Unicase Z zero Slashed Zero

121 124 127 129 131 133 135

Quellennachweis Buchinformation

140 142


10


Vorwort

11


Lieber Leser, Sie halten eine Arbeit in Ihren Händen, die mich an die drei Monate Recherche und Umsetzung gekostet hat. Genau diese drei Monate sind die Schwäche dieses Buches. Es ist nahezu unmöglich, in dieser relativ kurzen Zeitspanne hinter all die Facetten des OpenType®-Programmierens zu kommen.   Dieses Buch erklärt nach bestem Wissen und Gewissen, die für den europäischen Raum relevanten OpenType®-Features und ist ausdrücklich für Programmier -­­­­­­Einsteiger verfasst worden, die den Schritt zum OpenType®-Format wagen möchten oder für diejenigen, die sich lediglich informieren wollen, was mit dem neusten Schriftformat alles möglich ist.

12


Fast alle Informationen, die ich in diesem Buch niedergeschrieben habe, lassen sich auch im Internet wiederfinden. Der Nachteil dabei ist jedoch, dass die Informationen über unzählige Seiten verteilt sind und zudem auf Englisch von Ingenieuren für Ingenieure geschrieben worden sind. Für diese Arbeit habe ich die vielen Quellen zusammengetragen, ins Deutsche übersetzt und versucht die Sachverhalte so verständlich wie möglich wiederzugeben.   Nichts desto Trotz sind Kenntnisse im Bereich der Typografie, speziell im Schriftdesign, unbedingt erfor­ derlich, um die Intention und Notwendigkeit einiger Features nachvollziehen zu können und bei Bedarf in die Modifizierung von Glyphen persönlich eingreifen zu können. All denjenigen, die sich mit der OpenType®-Materie näher vertraut machen wollen, wünsche ich viel Vergnügen beim Lesen und anschließend frohes Schaffen. Bad Salzuflen, im November 2007 Alexander Roth

13


14


OpenType速

15


OpenType® ist zur Zeit das aktuellste Schriftformat und wurde ab 1995 anfänglich nur von Microsoft® und ab 1996 in Partnerschaft mit Adobe® entwickelt. Zu der Entwicklung kam es erst, nachdem Microsoft® in den frühen 90ern vergeblich versucht hatte, die »GX Typography®« von Apple® zu lizensieren.   Zuerst lief das Projekt OpenType® unter dem Namen TrueType Open, ehe Adobe® sein Wissen in Bezug auf Outline-Fonts beisteuerte und das gemeinsame Schriftformat auf den Namen OpenType® getauft wurde. Dabei ist die Bezeichnung OpenType® eine Kombination aus Fragmenten des TrueType Open und des Type 1 Formates (TrueType OPEN TYPE 1).

16


Daten für auf Windows® und Macintosh® basierende Systeme in einer OpenType®-Datei.

Unterstützung stark erweiterter Zeichensätze.

Bildquelle: http://www.adobe.com/de/type/browser/pdfs/OTGuide.pdf

17


Im Grunde ist OpenType® aber kein vollständig neues Schriftformat, sondern eine Kombination von Adobes® Type 1 (Postscript®) Technologie und Microsofts® TrueType®-Format. Diese Kombination zweier Schriftformate ist auch heute noch ersichtlich. Während OpenType®-Schriftdateien, die auf der Type 1-Technologie basieren, ein .otf-Suffix drangehängt bekommen, haben auf TrueType® basierende OpenType®-Dateien ein .ttf-, .ttc- oder ebenfalls ein .otf-Suffix.   Letztendlich wurde das Format 1996 veröffentlicht und hat seitdem die nächste Runde der DTP-Typografie eingeläutet. Die Vorteile von OpenType® lassen sich in drei Punkten darstellen: 1. Plattformunabhängigkeit OpenType® ist tatsächlich das erste plattformübergreifende Schriftformat. Man kann dieselbe Datei entweder auf einem Macintosh® Betriebsystem, einem Windows® Rechner oder mithilfe des Open Source-Programms Free Type sogar auf Unix basierenden Computern installieren und benutzen. 2. Erhöhte typografische Kontrolle durch Layout-Funktionen Während das TrueType- und Type 1-Format auf die Aufnahme von maximal 256 Zeichen beschränkt war, bietet OpenType® bis zu 65.536 Zeichen. Diese neue Fülle an

18


möglichen Zeichen, wurde von Schriftdesignern auch dankend angenommen. Neben den Standard-Glyphen, ist eine OpenType®-Schriftdatei in der Lage, alternative Glyphen zu speichern und den Zugriff auf diese über einprogrammierte Features zu erlauben. So wären neben der Standard-Glyphe »A«, auch das Kapitälchen, die Zierglyphe, stilistische Alternativen zum »A«, Ornamente und viele andere Alternativformen zugänglich. In der Vergangenheit wurde diese Fülle an typografischen Finessen auf mehrere Dateien verteilt, die dann ExpertSets genannt wurden. Dank OpenType® ist es möglich, all diese Zeichen in einer einzigen Datei unterzubringen und bequem auf sie zuzugreifen. 3. Sprachunterstützung Wie bereits erwähnt, kann eine OpenType®-Datei bis zu 65.536 Zeichen umfassen. Während dieser mögliche Zeichensatz für lateinische Sprachen überdimensioniert scheint, kommt das Sprachen wie dem Arabischen, Chinesischen, Japanischen und Koreanischen gelegen. Anstatt jeweils einer Schriftdatei für den jeweiligen Sprachraum, ist es mit OpenType® möglich, die jeweiligen Sprachräume umfassenden Glyphen, in einer Datei zu sichern.

19


OpenType Layout Feature Codes

Metrics kerning

kern

Oldstyle (proportional oldstyle)

pnum + onum

Ligatures

liga

Discretionary Ligatures

dlig + hlig

All Caps

case, cpsp

Small Caps

smcp

All Small Caps All Alternates (via glyph palette) Glyph Palette

aalt most other features

Tabular Lining

tnum + lnum

Proportional Lining

pnum + lnum

Tabular Oldstyle

tnum + onum

Fractions

frac

Ordinals

ordn

Titling Alternates

titl

Swash

swsh + cswh

Contextual Alternates

calt + clig

Superscript/Superior

sups

Subscript/Inferior

subs if present, else sinf

Numerator

numr

Denominator

dnom

Stylistic Alternates

Ornaments

ornm •

Slashed Zero

zero

(no UI) Mark Attachment and

mark, mkmk, mset, locl, rlig, ccmp

Positional Forms

Quelle: http://www.adobe.com/de/type/browser/pdfs/OTGuide.pdf

User Interface Label


Mellel 2.2

OpenType Layout Feature Codes

QuarkXPress 7

User Interface Label Metrics kerning

kern

Oldstyle (proportional oldstyle)

pnum + onum

Ligatures

liga

Discretionary Ligatures

dlig + hlig

All Caps

case, cpsp

Small Caps

smcp

All Small Caps All Alternates (via glyph palette)

Quelle: http://www.adobe.com/de/type/browser/pdfs/OTGuide.pdf http://www.typotheque.com/fonts/opentype_feature_support/

Glyph Palette

aalt most other features

Tabular Lining

tnum + lnum

Proportional Lining

pnum + lnum

Tabular Oldstyle

tnum + onum

Fractions

frac

Ordinals

ordn

Titling Alternates

titl

Swash

swsh + cswh

Contextual Alternates

calt + clig

• •

Superscript/Superior

sups

Subscript/Inferior

subs if present, else sinf

Numerator

numr

Denominator

dnom

Stylistic Alternates Ornaments

ornm

Slashed Zero

zero

(no UI) Mark Attachment and

mark, mkmk, mset, locl, rlig, ccmp

Positional Forms

• • •


22


Fontlab速 Studio

23


Der Vorbesitzer von Fontlab Ltd. war Pyrus North America Ltd. Das Unternehmen wurde 1992 gegründet und vermarktete international die Software, die von SoftUnion® Ltd. in St. Petersburg, Russland, programmiert wurde. 1993 erschien das erste Produkt, FontLab® 2.0 für Windows®. Damit war FontLab® einer der ersten Font-Editoren, der für das Windows®-Betriebssystem geschrieben worden war. Aktuell befindet sich FontLab® in der fünften Version und ist unbestritten die Standard-Software zur Herstellung und Editierung digitaler Schriftsätze.   Die folgende Einführung soll anhand eines einfachen Beispiels die grundlegenden Schritte erläutern, die zur Generierung einzelner Glyphen und zur Programmierung von OpenType®-Features notwendig sind. Bildquelle: http://www.fontlab.com/about/

24


Ein in Fontlab® geöffneter Font.

Da uns die Glyphen der Minuskelziffern fehlen, müssen wir sie generieren. Glyph>Generate Glyph (�+G).

25


Die zu generierenden Glyphen benötigen Namen. Die Syntax ist dabei immer: Name.Suffix

Beim Bestätigen auf »OK«, werden die Glyphen generiert und im Hauptfenster an die anderen Zeichen gereiht.

26


Da sich die Ziffern nicht nur im Namen, sondern auch in ihrer Form unterscheiden, muss man die generierten Glyphen entsprechend modifizieren.

So sehen dann die bearbeiteten Ziffern aus und kĂśnnen anschlieĂ&#x;end programmiert werden.

27


Mit einem Klick auf das Plus, erstellt man ein neues Feature.

Damit das Feature auch funktioniert, muss es kompiliert werden. Dazu klickt man auf den Compile-Button.

28


Um zu überprüfen, ob das Feature auch sinngemäß funktioniert, hat man die Möglichkeit dies im Preview Panel zu überprüfen.

Das Preview Panel zeigt anhand eines Vergleichs die Vorher-NachherSituation an.

29


30


Features

31


aalt afrc calt case ccmp clig cpsp

Access All Alternates Ermöglicht den Zugriff auf alle Alternativformen eines Zeichens. Dieses Feature macht alle Variationen eines Buchstabens zugänglich. So ist es in der Adobe® InDesign®-Reihe möglich, über die Paletten-Optionen im Schriftenmenü (�+t) oder das Glyphen-Fenster (Type>Glyphs), die alternativen Glyphen eines Buchstabens anzusteuern. Vorraussetzung ist selbstverständlich, dass es auch Alternativen zu den jeweiligen Zeichen gibt. So verfügen besonders viele Schriften aus der Gruppe der Schreibschriften und der Hanschriftlichen Antiqua nach DIN 16518, über mehrere verschiedene Glyphen eines Zeichens, um den gewünschten Eindruck eines zufälligen Schriftcharakters zu simulieren. Besonders wünschenswert sind Alternativglyphen bei einer Folge von gleichen Buchstaben, wie bei Schifffahrt, welches drei f in Folge aufweist. In solchen Fällen erweisen sich die alternativen Formen desselben Buchstabens als besonders ästhetisch, da sie ein interessanteres und spontaneres Schriftbild ergeben.   Mit dem Access All Alternates-Feature ist man in der Lage, die einzelnen Glyphen manuell anzusteuern, eine vorhandene Alternativform zu wählen und einzusetzen.

32


aalt afrc calt case ccmp clig cpsp Ăœber die PalettenOptionen lassen sich die einzelnen Features ansteuern. Ausgeklammert bedeutet, dass dieses Feature im Font nicht vorhanden ist.

Mit dem GlyphenFenster kommt man an die Glyphen der einzelnen Features. Man beachte, dass das Fenster alle Features anzeigt, die im Font vorhanden sind. Wogegen die Paletten-Optionen lediglich eine feste Auswahl anzeigen.

33


feature aalt { # Minion     feature cpsp; afrc     feature kern; calt case     feature aalt; ccmp     feature locl; clig     feature frac; cpsp     feature c2sc;     feature smcp; Der Programmcode    feature fina; von Adobe® Minion     feature onum; und Adobe® Caslon.     feature case;     feature lnum; Nur die Features, die hier aufgezählt     feature pnum; werden, werden     feature tnum; auch tatsächlich im     feature sups; Glyphen-Fenster aufgelistet.     feature sinf;     feature numr; Auf der anderen Seite ist dieses Fea-     feature dnom; ture sehr hilfreich,     feature ss01; um auf den ersten     feature ss02; Blick Aufschluss     feature salt; über die vorhandenen OT-Funk    feature hist; tionen zu erlangen.     feature ornm;     feature zero;   } aalt; aalt

34

feature aalt { # Caslon   feature cpsp;   feature kern;   feature aalt;   feature ornm;   feature locl;   feature c2sc;   feature smcp;   feature onum;   feature case;   feature lnum;   feature pnum;   feature tnum;   feature sups;   feature hist;   feature sinf;   feature numr;   feature dnom;   feature frac;   feature ordn;   feature zero; } aalt;


afrc

Alternative Fractions

calt case ccmp clig cpsp cswh

Erlaubt eine alternative Notation von Brüchen undzwar mit einem waagrechten Bruchstrich.

Beim Aufschreiben von Brüchen gibt es grundsätzlich zwei Möglichkeiten den Zähler vom Nenner zu trennen. Zum einen mit einem schrägen Bruchstrich und zum anderen mit einem waagerechten Bruchstrich, der nahezu immer zur Notation von Brüchen in schriftlicher Form zur Anwendung kommt. Diese, durch einen waagerechten Bruchstrich getrennten Brüche, werden im englischen Sprachraum als »nut« fractions oder stack fractions bezeichnet.   Während das Fractions-Feature eher mit dem Schrägstrich als Bruchstrich arbeitet, befasst sich das Alternativ Fractions-Feature mit der Darstellung von Brüchen mithilfe des waagerechten Bruchstrichs. Das ist dann besonders nützlich, wenn die darzustellenden Informa-

35


afrc calt case ccmp clig cpsp cswh

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

tionen auf einen engeren Raum untergebracht werden müssen. Um dies zu erreichen, sind die Zähler und Nenner etwas kleiner gezeichnet als Index- und Exponentenziffern. Aus diesem Sachverhalt lässt sich auch die englische Bezeichnung »nut« fraction ableiten. Der Bruch wird so genannt, weil die Ziffern auf einem En, einem Halbgeviert (engl.: »nut«), beruhen.   substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Der Code ersetzt die Folge einer Zahl, eines Slash oder Bruchstriches und einer weiteren Zahl durch   einen vordefinierten   Bruch, der vor dem   Compilen dieses Features bereits   vorliegen muss.

feature afrc {   sub one [slash fraction] two by onehalf.nut;   sub one [slash fraction] three by onethird.nut; } afrc;

feature afrc {   sub @sonderzeichen by @sonderzeichen_frac;   sub @regular_figures by figures_frac;   sub @oldstyle_figures by figures_frac;   sub slash by fraction.nut;   } afrc;

36


calt

Contextual Alternates Ersetzt ausgewählte Zeichen durch Alternativen, die eine bessere Verbindung zwischen einzelnen Zeichen gewährleisten.

Die Contextual Alternates werden besonders in der Gruppe der Schreibschriften und der Handschriftlichen Antiqua gemäß DIN 16518 verwendet. Wie der Name »Contextual« schon besagt, tritt die Ligatur nur in einem bestimmten Kontext auf, um zum Beispiel zu gewährleisten, dass alle Buchstaben in einer Schrift nahtlos verbunden sind. Da die Ein- und Ausläufe einer Schreibschrift ja nach Buchstabe in der Höhe bzw. Position variieren, ist es nötig, alternative Formen zu erstellen, die eine lückenlose Verbindung zu jedem Zeichen des kreierten Alphabets herstellen.

37

case ccmp clig cpsp cswh c2pc


calt case ccmp clig cpsp cswh c2pc

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

Ein sehr gutes Beispiel dafür ist Adobe® Caflish Script Pro von Robert Slimbach. Nahezu jeder Buchstabe verfügt über eine Alternativform.   Der Programmcode der Adobe® Caflish Script Pro reizt viele Möglichkeiten des kontextbedingten Buchstabenwechsels aus und ist daher ein gutes Vorbild, um die unterschiedlichen Möglichkeiten kennenzulernen.   substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt einfach   jedes »a« durch eine   Alternative.

feature calt {   sub a by a.alt; } calt;

Ersetzt nur das »a«,   wenn »a«, »b« oder   »c« folgt.

feature calt {   sub a’ [a b c] by a.alt2;   } calt;

Nur bei einer Buchstabenkombination von »da«, »ea« und »fa« wird die entsprechende alternative Form angewandt.

feature calt {   sub [d e f] a’ by a.alt3;   } calt;

38


case

Case-Sensitive Forms

ccmp clig cpsp cswh c2pc c2sc

Verschiebt die Position von Sonderzeichen entsprechend der verwendeten Buchstaben.

Der Einsatz des Case-Sensitive Forms-Features ist eher eine typografische Finesse als eine Notwendigkeit. Trotzdem ist der Einsatz des Features oftmals notwendig, um qualitativ hochwertige Publikationen zu gestalten.   Die meisten Sonderzeichen, inklusive arithmetischer Zeichen, sind je nach Schnitt darauf ausgelegt, eine geschlossene Einheit mit den Ziffern zu bilden. Nun verfügen viele OpenType®-Schriften über mehrere Zifferngarnituren, aber lediglich über eine Version von Sonderzeichen. Diese sind entweder auf die Majuskel- oder Minuskelziffern vertikal ausgerichtet und machen sich unschön bemerkbar, sobald man sie mit Ziffern zusammen bringt, für die sie nicht ausgerichtet worden sind.

39


case ccmp clig cpsp cswh c2pc c2sc

In einem solchen Fall kommt das Case-Sensitive FormsFeature zum Einsatz und hebt bzw. senkt die Sonderzeichen auf die entsprechende vertikale Position, sodass wieder eine optische Homogenität zwischen den Ziffern und den Sonderzeichen hergestellt ist. Die Syntax für die Positionierung von Zeichen:   position <glyph|glyphclass> <valuerecord> Der valuerecord setzt sich aus folgenden Koordinaten zusammen: X, Y, X advance, Y advance. Während die ersten beiden Werte das bezeichnete Zeichen verschieben, bewegt das X advance und Y advance, die nachfolgenden Zeichen. Dabei bewegen positive Werte das Zeichen nach links bzw. oben und negative Werte nach rechts bzw. unten. Beispiel:   feature case {    pos [parenleft parenright] <0 60 0 0>;    pos [plus minus] <0 65 0 0>;   } case;

40


ccmp

Glyph Composition/Decomposition

clig cpsp cswh c2pc c2sc dlig

Ermöglicht das Hinzufügen von Buchstaben, die nicht im Unicode-Standard festgelegt sind.

Der Einsatz dieses Features beschränkt sich auf Sprachen, deren Sonderzeichen und vor allem Akzente nicht im Unicode-Spektrum als eigenständige Glyphen festgelegt sind. Buchstaben wie É mit einem Punkt drunter, sind zum Beispiel für die afrikanische Sprache Yoruba nötig. Dieser Buchstabe ist nicht im Unicode-Standard festgelegt und benötigt das ccmp-Feature.   Als aller erstes sollte man sich im Klaren sein, welche »Zutaten« man für die Darstellung eines benötigten Zeichens benötigt. Im dem Fall des É mit Punkt unten drunter, ist es das »E«, das Akut und der Punkt.   Im Unicode werden die einzelnen Zeichen wie folgt codiert:

41


ccmp clig cpsp cswh c2pc c2sc dlig

• \u0045 entspricht dem »E« • \u0323 entspricht dem Punkt • \0301 entspricht dem Akut Gemäß der Unicode Normalization Form D (NFD) ist die Zusammensetzung des benötigten Zeichens: \u0045\u0323\u0301 Der Name des Zeichens lässt sich , in uni004503230301 abgekürzen. Man sollte jedoch nicht vergessen, dass viele Zeichen bereits im Unicode-Standard notiert sind und womöglich gewollte Akzente aufweisen und lediglich um ein weiteres Zeichen ergänzt werden müssen. In diesem Fall ist es überflüssig ein Zeichen komplett aus Einzelteilen zusammenzusetzen: • \u00C9 entspricht É • \u1EB8 entspricht E mit Punkt drunter Das Zeichen aus dem Beispiel lässt sich somit mit folgenden Kombinationen zusammensetzen: • \u0045\u0323\u0301 • \u0045\u0301\u0323 • \u00C9\u0323

42


ccmp

• \u1EB8\u0301 Um das gewünschte Zeichen in Fontlab® Studio zu erzeugen, generiert man eine Glyphe mit folgenden Namen: E+dotbelowcomb+acutecomb=uni004503230301

clig cpsp cswh c2pc c2sc dlig

Anschließend verfeinert man das Zeichen, indem man die Komponenten an die richtige Stelle rückt und öffnet das OpenType®-Fenster zum programmieren. feature ccmp {   sub E dotbelowcomb acutecomb by uni004503230301;   sub E acutecomb dotbelowcomb by uni004503230301;   sub Eacute dotbelowcomb by uni004503230301;   sub uni1EB8 acutecomb by uni004503230301; } ccmp; Nun kompiliert man das Feature und testet es im Preview Panel, indem man folgendes eintippt: \u0045\u0323\u0301 \u0045\u0301\u0323 \u00C9\u0323 \u1EB8\u0301

Aus dem Englischen übersetzt. Ursprünglich von Adam Twardoch.

Quelle: http://groups.msn.com/FontLab/tipsandtricks.msnw?action=get_ message&mview=0&ID_Message=3403

43


clig cpsp cswh c2pc c2sc dlig dnom

Contextual Ligatures Ersetzt eine Folge von mindestens zwei Zeichen durch eine kontextbedingte Ligatur.

Dieses Feature ersetzt eine Folge von Zeichen durch eine Ligatur. Im Gegensatz zu den anderen Ligatur-Features wie Ligatures (liga), Discretionary Ligatures (dlig) und Historical Ligatures (hlig), sind die Contextual Ligatures keine historisch begründeten Ligaturen, sondern ein Hilfsmittel zur lückenlosen Verbindung von Zeichen. Sie tauchen überwiegend in der Gruppe der Schreibschriften und der Handschriftlichen Antiqua nach DIN 16518 auf.   Während die Buchstabenkombinationen, die durch eine Ligatur ersetzt werden, bei den anderen LigaturFeatures seit Jahrhunderten fest verwurzelt sind (fi, ffi etc.), ist man bei den Contextual Ligatures an nahezu keine typografischen Bräuche und Regeln gebunden.

44


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

clig cpsp cswh c2pc c2sc dlig dnom

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature clig {     sub o f t by o_f_t;   } clig;

Einfache Substitution. Ersetzt einfach jede Folge »oft« durch eine Ligatur.

feature clig {     sub o’ f’ t’ [a b c] by o_f_t;   } clig;

Ersetzt nur die Folge »oft«, wenn »a«, »b« oder »c« folgt.

feature clig {   sub [d e f] o’ f’ t’ by o_f_t;   } clig;

Nur wenn »d«, »e« oder »f« vor der Folge »oft« steht, wird die Substitution durchgeführt.

45


cpsp cswh c2pc c2sc dlig dnom falt

Capital Spacing Sperrt beim Versalsatz die Majuskeln entsprechend den programmierten Parametern.

Majuskeln werden bei der Gestaltung und beim Spacing so ausgerichtet, dass sie eine typografische Einheit mit den Minuskeln bilden. Werden jedoch ausschließlich Majuskeln für ein Wort oder einen Textausschnitt verwendet, der sogenannte Versalsatz, so erscheinen die Großbuchstaben viel zu eng und weisen darüber hinaus, besonders in der Kombination mit Buchstaben, die eine Diagonale aufweisen, störende Lücken im Buchstabenabstand auf. Um dieses typografische Fauxpas zu vermeiden, müssen die Versalien ein wenig gesperrt werden.   Das Capital Spacing-Feature automatisiert dabei diesen lästigen Vorgang und passt den Buchstabenabstand entsprechend den programmierten Parametern an.

46


cpsp

Die Syntax für die Positionierung von Zeichen:   position <glyph|glyphclass> <valuerecord> Der valuerecord setzt sich aus folgenden Koordinaten zusammen: X, Y, X advance, Y advance. Während die ersten beiden Werte das bezeichnete Zeichen verschieben, bewegt das X advance und Y advance, die nachfolgenden Zeichen. Dabei bewegen positive Werte das Zeichen nach links bzw. oben und negative Werte nach rechts bzw. unten.

cswh c2pc c2sc dlig dnom falt

feature cpsp {    pos Ampersand <10 0 5 0>;   } cpsp;

Sperrung von einzelnen Zeichen.

feature cpsp {    pos [A V W X Y] <5 0 10 0>;     pos [H I N M] <8 0 7 0>;   } cpsp;

Sperrung von Zeichen zusammengefasst in einer Gruppe.

feature cpsp {    pos @Klasse1 <5 0 10 0>;    pos @Klasse2 <5 0 10 0>;   } cpsp;

Sperrung von Zeichen in Klassen.

47


cswh c2pc c2sc dlig dnom falt fina

Contextual Swash Ersetzt eine Auswahl von Zeichen in einem bestimmten Kontext durch entsprechende Zierglyphen.

Swashes sind alternative Zierglyphen eines Buchstabens. Diese werden nahezu ausschließlich am Ende eines Buchstabens, Satzes etc. eingesetzt, weil die Zeichen sonst durch ihre ausladenden Endstriche oder sonstige ungewöhnliche Formen, den Wortfluss erheblich stören würden. Aus diesem Grund wurde das Contextual Swash-Feature geschaffen, um entweder das Auftauchen der Zierglyphen mitten im Wort zu verhindern oder die Zierglyphen in Folge einer bestimmen Zeichenkombination einzusetzen.   Dieses Feature ersetzt bestimmte Buchstaben durch ihre Swash-Alternativform in Abhängigkeit der nachfolgenden Zeichen.

48


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

cswh c2pc c2sc dlig dnom falt fina

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature cswh {     sub Z by Z.cswh;   } cswh;

Kontextunabhängiger Austausch.

feature cswh {     sub Z’ [a b c] by Z.cswh;   } cswh;   feature cswh {     ignore sub Z’ @minuskeln;   } cswh;

Austausch erfolgt nur, wenn »a«, »b« oder »c« folgt. Unerwünschter Austausch, da er mitten im Wort auftaucht. Man verhindert einen Austausch mittels ignore, solange noch Zeichen folgen.

feature cswh {   sub [d e f] Z’ by Z.cswh;   } cswh;

Austausch nur, wenn »d«, »e« oder »f« davor steht.

49


c2pc c2sc dlig dnom falt fina frac

Petite Capitals From Capitals Wandelt eine Auswahl von Zeichen in mitteleuropäische Kapitälchen um.

Es existieren zwei Arten von Kapitälchen. Die angelsächsischen und die mitteleuropäischen Kapitälchen. Während die mitteleuropäischen Kapitälchen lediglich die optische Größe der x-Höhe aufweisen und petite caps genannt werden, sind Kapitälchen im angelsächsischen Sprachraum um ca. 10% höher als die x-Höhe und tragen den Namen small caps.   Dieses Feature ermöglicht die Umwandlung von Majuskeln zu diesen mitteleuropäischen Kapitälchen. Kapitälchen werden vor allem häufig für Akronyme gebraucht und auch gerne im Textfluss für Eigennamen, um den Satzspiegel vor unangenehm herausstechenden Majuskeln zu wahren.

50


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

c2pc c2sc dlig dnom falt fina frac

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature c2pc {     sub A by A.pc;   } c2pc;

Austausch von einzelnen Glyphen.

feature c2pc {     sub @minuskeln by @minuskeln_pc;     sub @majuskeln by @majuskeln_pc;    sub @ziffern by @ziffern_pc;     sub @sonderzeichen by @sonderzeichen_pc;   } c2pc;

Austausch der Zeichen unterteilt in einzelne Klassen.

feature c2pc {     sub @alle_zeichen by @alle_pc;   } c2pc;

Austausch von Zeichen zusammengefasst in einer einzelnen Klasse.

51


c2sc dlig dnom falt fina frac fwid

Small Capitals From Capitals Wandelt eine Auswahl von Zeichen in angelsächsische Kapitälchen um.

Es existieren zwei Arten von Kapitälchen. Die angelsächsischen und die mitteleuropäischen Kapitälchen. Während die mitteleuropäischen Kapitälchen lediglich die optische Größe der x-Höhe aufweisen und petite caps genannt werden, sind Kapitälchen im angelsächsischen Sprachraum um ca. 10% höher als die x-Höhe und tragen den Namen small caps.   Dieses Feature ermöglicht die Umwandlung von Majuskeln zu diesen angelsächsischen Kapitälchen. Kapitälchen werden vor allem häufig für Akronyme gebraucht und auch gerne im Textfluss für Eigennamen, um den Satzspiegel vor unangenehm herausstechenden Majuskeln zu wahren.

52


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

c2sc dlig dnom falt fina frac fwid

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature c2sc {     sub A by A.sc;   } c2sc;

Austausch von einzelnen Glyphen.

feature c2sc {     sub @minuskeln by @minuskeln_sc;     sub @majuskeln by @majuskeln_sc;    sub @ziffern by @ziffern_sc;     sub @sonderzeichen by @sonderzeichen_sc;   } c2sc;

Austausch der Zeichen unterteilt in einzelne Klassen.

feature c2sc {     sub @alle_zeichen by @alle_sc;   } c2sc;

Austausch von Zeichen zusammengefasst in einer einzelnen Klasse.

53


dlig dnom falt fina frac fwid hist

Discretionary Ligatures Ersetzt eine Folge von mindestens zwei Zeichen durch eine Schwungligatur.

Discretionary Ligatures sind zu Deutsch Schwungligaturen. Eines der häufigsten Beispiele ist die Kombination von ck oder ct, wo ein Bogen die beiden Buchstaben miteinander verbindet. Der Einsatz solcher Discretionary Ligatures sollte sparsam sein, denn sie stören mit ihren Bögen oftmals den Lesefluss und wirken besonders in Mengentexten mit vielen Ligaturen auf den Leser sehr ermüdend. 1517 geschriebene Ethica des Aristoteles. Deutlich erkennbar die Schwungligatur in der zweiten Zeile über affectus.

54


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

dlig dnom falt fina frac fwid hist

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature dlig {     sub s t by s_t.dlig;   } dlig;

Einfache Substitution. Ersetzt einfach jede Folge »st« durch eine Schwungligatur.

feature dlig {     sub s’ t’ [a b c] by s_t.dlig;   } dlig;

Ersetzt nur die Folge »st«, wenn »a«, »b« oder »c« folgt.

feature dlig {   sub [d e f] s’ t’ by s_t.dlig;   } dlig;

Nur wenn »d«, »e« oder »f« vor der Folge »st« steht, wird die Substitution durchgeführt.

55


dnom falt fina frac fwid hist hlig

Denominators Wandelt Ziffern in Nenner um.

Denominators sind Nenner in Brüchen. Diese unterscheiden sich optisch häufig durch eine geringere Größe von den restlichen Ziffern. Mit diesem Feature ist man im Stande, alle Ziffern durch optisch eindeutige Nenner zu ersetzen.

50%

40%

Adobe® Chaparral und Adobe® Caslon im Vergleich. 50%

60%

56


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

dnom falt fina frac fwid hist hlig

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature dnom {     sub two by two.dnom;   } dnom;

Einfache Substitution. Ersetzt eine 2 durch einen Nenner.

feature dnom {    sub @lining_figures by @denominators;    sub @oldstyle_figures by @denominators;   } dnom;

Ersetzt einzelne Gruppen durch Nenner.

feature dnom {    sub @alle_ziffern by @alle_denominators;   } dnom;

Substituiert alle Ziffern zusammengefasst in einer Gruppe.

57


falt fina frac fwid hist hlig init

Final Glyph on Line Alternates Das letzte Zeichen einer Zeile wird durch eine platzsparende Alternative substituiert.

Wie der Name schon besagt, ersetzt dieses Feature den letzten Buchstaben am Ende einer Zeile durch eine Alternativform. Diese Alternativform ist oftmals darauf ausgerichtet Platz zu sparen, damit ein schöner Blocksatz zustande kommt, oder die Textpassage auf einen limitierten Raum passt.   Innerhalb von Fontlab® Studio lässt sich dieses Feature nicht testen, denn das Preview Panel unterstützt nach Aussagen von Adam Twardoch lediglich simple OpenType®-Features.   Soweit mir bekannt, wird das falt-Feature weder von Adobe® noch von Quark® unterstützt und ist damit nahezu bedeutungslos für den Normalverbraucher.

58


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

falt fina frac fwid hist hlig init

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature falt {     sub M by M.falt;   } falt;

Einfache Substitution. Ersetzt das weite »M« durch ein schmales.

feature falt {   sub [d e f] M’ by M.falt;   } falt;

Nur wenn »d«, »e« oder »f« vor dem »M« steht, wird die Substitution durchgeführt.

59


fina frac fwid hist hlig init ital

Terminal Forms Ersetzt jeweils das letzte Zeichen eines Wortes durch eine vordefinierte Alternativform.

Als Ergänzung zu dem Final Glyph on Line AlternatesFeature, ersetzt dieses Feature den letzten Buchstaben jedes Wortes durch eine entsprechende Alternativform. Diese Alternativform ist oftmals darauf ausgerichtet Platz zu sparen, damit ein schöner Blocksatz zustande kommt, oder die Textpassage auf einen limitierten Raum passt. Diese Anweisung wird sehr häufig in der Gruppe der Schreibschriften und der Gruppe der Handschriftlichen Antiqua nach DIN 16518 verwendet. Darüber hinaus findet das Feature oft Anwendung in nicht-lateinischen Schriften, wie dem Arabischen.   Zur Zeit unterstützen lediglich Adobe® InDesign® CS3 und RedleX Mellel® 2.2 dieses Feature.

60


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

fina frac fwid hist hlig init ital

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature fina {     sub R by R.falt;   } fina;

Einfache Substitution. Ersetzt das weite »R« durch ein schmales.

feature fina {     sub R’ [a b c] by R.falt;   } fina;

Ersetzt nur das »R«, wenn »a«, »b« oder »c« folgt.

feature fina {   sub [d e f] R’ by R.falt;   } fina;

Nur wenn »d«, »e« oder »f« vor dem »R« steht, wird die Substitution durchgeführt.

61


frac fwid hist hlig init ital jalt

Fractions Substituiert Zahlen getrennt durch einen Schrägstrich in echte Brüche.

Brüche werden auf dem Computer, auf Grund der Beschränkung der Klaviatur, nicht korrekt eingegeben. Fälschlicherweise hat sich eingebürgert 3/4, statt 3/4 zu setzen. Zum einem weil die Zähler und Nenner nicht direkt bzw. nicht ohne Umwege via Tastatur erreichbar sind und zum anderen, weil die vereinfachte Schreibweise schneller zu tippen ist.   Mit dem Fractions-Feature ist es möglich, ohne Zeitverlust die weit aus schönere und korrekte Schreiweise zu gebrauchen. Dazu ersetzt die OpenType-Programmschleife die Folge einer Zahl, eines Bruchstrichs und einer weiteren Zahl um einen Bruch mit einem optisch offensichtlichen Zähler und Nenner.

62


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.    substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

frac fwid hist hlig init ital jalt

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature frac {   sub one [slash fraction] two by onehalf;   sub one [slash fraction] four by onequarter; } frac;

Substitution von einzelnen Zeichen.

feature frac {   sub @sonderzeichen by @sonderzeichen_frac;   sub @regular_figures by figures_frac;   sub @oldstyle_figures by figures_frac;   sub slash by fraction; } frac;

Ersetzt Zeichen durch entsprechende Alternativen wie Superiors oder Inferiors und das Slash durch einen echten Bruchstrich.

63


fwid hist hlig init ital jalt kern

Full Widths Ersetzt proportionale Zeichen durch nicht-proportionale mit identischer Buchstabenbreite.

Grundsätzlich wird in der Typografie zwischen proportionalen und nicht-proportionalen Schriften unterschieden. Proportionale Schriften sind alle die Schriften, deren Breite nicht einheitlich festgelegt ist und bei nahezu allen Schriftzeichen unterschiedlich ist. Seit Anbeginn der Schriftgeschichte waren die proportionalen Schriften durch alle technischen Evolution hindurch die Regel. Erst durch das Aufkommen der Schreibmaschine und später des Computers kamen allmählich die nichtproportionalen Schriften zum Vorschein. Dabei handelt es sich um Schriften mit identischer Laufweite. Auch nach der Schreibmaschinen-Ära kamen die nicht-proportionalen Schriften zum Einsatz, um zum Beispiel einen

64


handgetippten Brief auf dem Computer zu simulieren. Eher um die Praktik anstatt der Ästhetik, geht es bei der Abbildung von Programmcodes, wie sie auch in diesem Buch vorkommen. Dabei haben sich nicht-proportionale Schriften wie die Systemschriftart Courier bewiesen, da sie identische Laufweiten haben und sich somit angenehm vertikal ausrichten lassen. Grundsätzlich sollte dabei beachtet werden, dass sich nicht-propotionale Schriften eher weniger für lange Textpassagen eignen und zudem auch verschwenderisch mit dem gegebenen Weißraum umgehen.   Mit dem Full Widths-Feature lassen sich proportionale Buchstaben in nicht-proportionale Buchstaben mit der Breite eines Gevierts umwandeln.   Leider wird das Feature zur Zeit von keiner DTP-Software im europäischen oder nordamerikanischen Raum unterstützt, da das Feature vorwiegend für asiatische Sprachräume konzipiert wurde.

Lorem ipsum dolor sit amet, con sectetuer adipiscing elit, sed diam nonummy nibh euismod tincid unt ut laoreet dolore magna ali quam erat volutpat.

fwid hist hlig init ital jalt kern

Blindtext gesetzt in Courier New, einer nicht-proportionalen Schrift.

65


fwid hist hlig init ital jalt kern

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt das proportionale »i« durch ein nicht-proportionales »i«.

feature fwid {     sub i by i.fwid;   } fwid;   feature fwid { sub @sonderzeichen by @sonderzeichen_fwid; sub @majuskeln by @majuskeln_fwid; sub @minuskeln by @minuskeln_fwid; sub @proportional_figures by @tabular_figures;   } fwid;

Substitution     von in Gruppen zusammengefasster     Zeichen mit der    selben Charakte-    ristik.

feature fwid {   sub @alle_zeichen by @alle_zeichen_fwid;   } fwid;

Kompletter Austausch aller Zeichen.

66


hist

Historical Forms

hlig init ital jalt kern lfbd

Tauscht ausgewählte Zeichen durch entsprechend historische Formen aus.

Einige Buchstabenformen haben sich durch die Geschichte hinweg in ihrer Form verändert. Das geläufigste Beispiel ist das lange s, welches früher eingesetzt wurde, heute aber in Texten anachronistisch wirkt. Mit diesem Feature ersetzt man die moderne Form eines Buchstabens durch seine klassische Form.   Im Gegensatz zum folgenden Feature, welches historische Ligaturen behandeln, konzentriert sich dieses Feature nur auf einzelne Buchstaben.   Beim Gebrauch solch altertümlicher Buchstabenformen, sollte man sich zuallererst mit den grammatikalischen Regeln auseinandersetzen, denen die Anwendung zugrunde liegt.

67


hist hlig init ital jalt kern lfbd

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt das runde »s« durch ein langes »s«.

feature hist {     sub s by s_long;   } hist;

Ersetzt nur das »s«, wenn »a«, »b« oder »c« folgt. Wichtig beim langen »s«.

feature hist {     sub s’ [a b c] by s_long;   } hist;

Nur wenn »d«, »e« oder »f« vor dem »s« steht, wird die Substitution durchgeführt.

feature hist {   sub [d e f] s’ by s_long;   } hist;

68


hlig

Historical Ligatures

init ital jalt kern lfbd liga

Ersetzt eine Folge von mindestens zwei Zeichen durch eine historische Ligatur.

Einige Buchstabenformen haben sich durch die Geschichte hinweg in ihrer Form verändert. Das geläufigste Beispiel ist das lange ſ, welches früher eingesetzt wurde, heute aber in Texten anachronistisch wirkt. Mit diesem Feature ersetzt man die moderne Form eines Buchstabens durch seine klassische Form.   Ähnlich wie das Historical Forms-Feature, behandelt dieses Feature altertümliche Buchstabenformen. In diesem Fall die historischen Ligaturen. Dazu zählt zum Beispiel die Kombination von langem ſ und einem Konsonanten. Die geläufigen Formen der Ligatur mit dem langen ſ sind ſh ſi ſl ſſ und ſt.

69


hlig init ital jalt kern lfbd liga

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt einfach jede Folge »st« durch  eine historische   Ligatur

feature hlig {   sub s t by s_t.hlig; } hlig;

Ersetzt nur die Folge »st«, wenn »a«, »b« oder »c« folgt.

feature hlig {     sub s’ t’ [a b c] by s_t.hlig;   } hlig;

Nur wenn »d«, »e« oder »f« vor der Folge »st« steht, wird die Substitution durchgeführt.

feature hlig {   sub [d e f] s’ t’ by s_t.hlig;   } hlig;

70


init

Initial Forms

ital jalt kern lfbd liga lnum

Mit diesem Feature werden die Anfangsbuchstaben jedes Wortes durch ein entsprechendes Initial ersetzt.

Das Initial war ursprünglich ein schöner, großer, reich verzierter Anfangsbuchstabe einer neuen Seite oder einer Textpassage. Auch heute noch wird das Initial in Tageszeitung und sogar vereinzelt in Büchern eingesetzt. Meistens jedoch nicht in einer verzierten Form, sondern einfach ein Buchstabe derselben Schrift in einem größeren Schriftgrad.   Mit diesem Feature ist der automatische Einsatz solch eines Initials möglich. Dabei wird der Anfangsbuchstabe jedes Wortes in ein Initial umgewandelt. Das ist in lateinischen Kursiven oft einfach eine typografische Finesse, ist aber in vielen nicht-lateinischen Schriften wie dem Arabischen nötig.

71


init ital jalt kern lfbd liga lnum

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt einfach jedes »A« durch ein   Initial.

feature init {   sub A by A.init; } init;

Ersetzt nur das »A«,   wenn »a«, »b« oder   »c« folgt.

feature init {   sub A’ [a b c] by A.init;   } init;

Nur wenn »d«, »e« oder »f« vor dem »A« steht, wird die Substitution durchgeführt.

feature init {   sub [d e f] A’ by A.init;   } init;

72


ital

Italics

jalt kern lfbd liga lnum locl

Dieses Feature wandelt eine Auswahl von Zeichen in entsprechende kursive Formen um.

Das TrueType®-Format mit der Endung *.ttf, welches heute immer noch das am weitesten verbreitete Schriftenformat ist, ist limitiert auf eine Anzahl von 256 Zeichen. Schon aus diesem Grund müssen bei ausgewachsene Schriften, Schriftschnitte wie die Kursive auf weitere TrueType®-Dateien verteilt werden. Beim Gebrauch des OpenType®-Formats ist dieser Kompromiss nicht notwendig, da man die Kursive und den Normalschnitt in einer Datei abspeichern kann, da das Limit einer *.otf-Datei bei 65.536 Zeichen liegt.   Mit dem Italics-Feature hat man Zugriff auf die kursiven Formen des Alphabets, welche sich in derselben OpenType®-Datei befinden.

73


ital jalt kern lfbd liga lnum locl

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt das normale »a« durch ein kursives »a«.

feature ital {     sub a by a.ital;   } ital;   feature ital { sub @sonderzeichen by @sonderzeichen_ital; sub @majuskeln by majuskeln_ital; sub @minusklen by minuskeln_ital; sub @ziffern by ziffern_ital;   } ital;

Substitution     von in Gruppen zusammengefasster     Zeichen mit der    selben Charakte-    ristik.

feature ital {   sub @alle_zeichen by alle_zeichen_ital;   } ital;

Kompletter Austausch aller Zeichen.

74


jalt

Justification Alternates

kern lfbd liga lnum locl medi

Ersetzt eine Auswahl von Zeichen durch Platz sparende Alternativen.

Dieses Feature kommt überwiegend in kursiven als auch in nicht-lateinischen Schriften vor. Dabei werden die Buchstaben durch platzsparende Pendants ersetzt. Diese Alternativform ist oftmals darauf ausgerichtet, Platz zu sparen, damit ein schöner Blocksatz zustande kommt, oder die Textpassage auf einen limitierten Raum passt. Diese Anweisung wird sehr häufig in der Gruppe der Schreibschriften und der Gruppe der Handschriftlichen Antiqua nach DIN 16518 verwendet.    Leider wird dieses Feature nur von RedleX® Mellel® 2.2 unterstützt. Weder Quark® noch die Adobe® Creative Suite® kann diese Funktion auch in der dritten Version handhaben.

75


jalt kern lfbd liga lnum locl medi

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt das weite »R« durch ein schmaleres »R«.

feature jalt {     sub R by R.jalt;   } jalt;   feature jalt { sub @sonderzeichen by @sonderzeichen_jalt; sub @majuskeln by majuskeln_jalt; sub @minusklen by minuskeln_jalt; sub @ziffern by ziffern_jalt;   } jalt;

Substitution     von in Gruppen zusammengefasster     Zeichen mit der    selben Charakte-    ristik.

feature jalt {   sub @alle_zeichen by alle_zeichen_jalt;   } jalt;

Kompletter Austausch aller Zeichen.

76


kern

Kerning

lfbd liga lnum locl medi mgrk

Gleicht die Buchstabenabstände optisch an, sodass keine störenden Lücken entstehen.

Das Kerning, oder zu Deutsch Unterschneiden, wird bei besonders schwierigen Buchstabenkombinationen angewandt. Zwar sollten gut ausgeglichene Schriften auch ohne das Kerning funktionieren, doch manchmal ist es unvermeidbar Unterschneidungspaare hinzuzufügen. So ist zum Beispiel die Kombination von V und A problematisch, da sie ohne das Kerning zuviel Weißraum einschließt und somit im Wortfluss heller erscheint als zum Beispiel eine Folge von vertikalen Buchstaben wie dem I.   Dieses Feature ermöglicht das Programmieren der Kerning-Paare, welches sich im Gegensatz zum manuellen Unterschneiden abspeichern und somit auf weitere Schriften anwenden lässt.

77


kern lfbd liga lnum locl medi mgrk

Die Syntax für die Positionierung von Zeichen:   position <glyph|glyphclass> <glyph|glyphclass> <value> Der value ist der Wert, um welchen das zweite Zeichen in der Eingabe, verschoben werden soll. Dabei sind positive und negative Werte möglich. Während ein positiver Wert die Glyphen voneinander weiter entfernt, rückt ein negativer Wert diese wieder zusammen. Beispiele:

Unterschneidung von einzelnen Zeichen.

feature kern {    pos V A -50;   } kern;

Unterschneidung von Klassen mit einzelnen Zeichen.

feature kern {    pos @majuskeln period +15;   } kern;

Kerning von Gruppen

feature kern {    pos [A V T W Y] [H I N M] -35;   } kern;

78


lfbd

Left Bounds

liga lnum locl medi mgrk numr

Richtet den linken Rand eines Textblocks aus, damit er optisch bündig erscheint.

Bei der vertikalen Ausrichtung eines Textes können die einzelnen Zeilen zwar durch den Rahmen, der den Text Umgibt, ausgerichtet sein, doch erscheint er optisch oft wellenförmig, wenn viele Buchstaben mit diagonalen Strichen oder Bindestriche sich entlang dieses Rahmens befinden.   Um diesem Phänomen entgegenzuwirken und optisch bündige Zeilen zu erzielen, gibt es die Optical Bounds Features, in diesem Fall spezifisch das Left Bounds-Feature. Das verschiebt bei einem Flattersatz auf Links die problematischen Buchstaben noch weiter nach Links, damit die Zeilen auf der linken Seite besser ausgerichtet sind.

79


lfbd liga lnum locl medi mgrk numr

Die Syntax für die Positionierung von Zeichen:   position <glyph|glyphclass> <valuerecord> Der valuerecord setzt sich aus folgenden Koordinaten zusammen: X, Y, X advance, Y advance. Während die ersten beiden Werte das bezeichnete Zeichen verschieben, bewegt das X advance und Y advance, die nachfolgenden Zeichen. Dabei bewegen positive Werte das Zeichen nach links bzw. oben und negative Werte nach rechts bzw. unten.

Ausrichtung von einzelnen Zeichen.

feature lfbd {   pos A <-8 0 0 0>;   pos Hyphen <-10 0 0 0>; } lfbd;

Ausrichtung von Zeichen zusammengefasst in einer Gruppe.

feature lfbd {     pos [A V W X Y] <-8 0 0 0>;   } lfbd;

Ausrichtung von Zeichen in Klassen.

feature lfbd {    pos @Klasse1 <-15 0 0 0>;    pos @Klasse2 <-5 0 10 0>;   } lfbd;

80


liga

Standard Ligatures

lnum locl medi mgrk numr onum

Ersetzt eine Folge von mindestens zwei Zeichen durch eine vom Designer definierte Standardligatur.

Es wird eine Folge von Buchstaben durch eine Ligatur ersetzt. Dabei sollte es um solche Ligaturen handeln, die von dem Designer als Standard für die Schrift konzipiert wurden. Dazu zählen die üblichen f-Ligaturen wie fl, fi und ffi.   Konträr dazu erscheinen entweder die Contextual Ligatures, die Discretionary Ligatures oder die Historical Ligatures. Diese Ligaturen können ungewöhnliche Formen aufweisen, die den Lesefluss stören können und besonders im Mengentext mit zahlreichen aufkommenden Ligaturen ermüdend wirken.

81


liga lnum locl medi mgrk numr onum

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt einfach jede Folge »fi« durch   eine Ligatur

feature liga {   sub f i by f_i; } liga;

Ersetzt nur die   Folge »fi«, wenn »a«,  »b« oder »c« folgt.

feature liga {   sub f’ i’ [a b c] by f_i;   } liga;

Nur wenn »d«, »e« oder »f« vor der Folge »fi« steht, wird die Substitution durchgeführt.

feature liga {   sub [d e f] f’ i’ by f_i;   } liga;

82


lnum

Lining Figures

locl medi mgrk numr onum opbd

Wandelt ausgewählte Ziffern in gewöhnliche Majuskelziffern um.

Lining Figures sind zu Deutsch Majuskelziffern. Im Gegensatz zu den Minuskelziffern, die ebenso wie Buchstaben Ober- und Unterlänge aufweisen und im Mengentext, was den Kontrast betrifft nicht auffallen, basieren die Tabellenziffern wie Großbuchstaben auf dem zweiLinien-Prinzip. Sie wirken oft störend im Fließtext, da sie auf Grund ihrer Größe und Form herausstechen, aber eignen sich vorzüglich zur Darstellung von Ziffernfolgen außerhalb eines Fließtextes. Dazu zählen allerlei Nummerierungen, Telefonnummern und Preisangaben.   Dieses Feature wandelt alle vorkommenden Ziffern in Majuskelziffern um, die quasi als Standardziffern in allen Textverarbeitungsprogrammen gelten.

83


lnum locl medi mgrk numr onum opbd

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt eine   Mediävalziffer durch eine »gewöhn-   liche« Ziffer.

feature lnum {   sub two.onum by two; } lnum;

Ersetzt einzelne Gruppen.

feature lnum {    sub @oldstyle_figures by @lining_figures;    sub @tabular_figures by @lining_figures;   } lnum;

Substituiert alle Ziffern zusammengefasst in einer Gruppe.

feature lnum {    sub @alle_ziffern by @alle_lining_figures;   } lnum;

84


locl

Localized Forms

medi mgrk numr onum opbd ordn

Ersetzt ein ausgewähltes Zeichen durch seine geografisch angepasste Glyphe.

Manche Schriften sind dazu konzipiert, mehrere Sprachen über weite geografische Räume abzubilden. Dabei sollte beachtet werden, dass einige Buchstabenformen vereinzelt kleine Unterschiede, je nach geografischer Lage aufweisen können. So weisen das Bulgarische und Serbische etwas veränderte Formen desselben Zeichens im Vergleich zum Russischen auf. Auch die diakritischen Zeichen unterscheiden sich oftmals subtil von Land zu Land (siehe oben: Acute und Kreska).   Das Localized Forms-Feature ersetzt die ausgewählten Buchstaben durch ihre lokal gebräuchliche Variante.   Zur Zeit untersützt lediglich Adobe® InDesign® CS3 diese Funktion.

85


locl medi mgrk numr onum opbd ordn

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt das O Acute durch O Kreska.

feature locl {     sub oacute by okreska;   } locl;

Ersetzt einzelne Gruppen.

Substituiert alle Buchstaben mit einem Acute.

feature locl {     sub @alle_acute by @alle_kreska;   } locl;

feature locl {   sub [cacute nacute oacute sacute zacute]   by [ckreska nkreska okreska skreska zkreska]; } locl;

86


medi

Medial Forms Substituiert alle Zeichen eines Wortes zwischen dem ersten und letzten Buchstaben durch eine Alternativform.

Mit diesem Feature ist man in der Lage, alle Buchstaben zwischen dem Anfangs- und Endbuchstaben durch Alternativformen zu ersetzen. Größtenteils wird diese Funktion in lateinischen Schriften, besonders in der Gruppe der Schreibschriften und der Handschriftlichen Antiqua nach DIN 16518, eingesetzt, ist aber auch oft in nicht-lateinischen Alphabeten wie dem Arabischen erforderlich.   Als Beispiel für interessante Medial Forms könnten die Glyphen der Glasgow von Erik Spiekermann und die FF Govan von Ole Schäfer dienen.   Zur Zeit wird dieses Feature nur von Adobe® InDesign® CS3 und RedleX® Mellel® 2.2 unterstützt.

87

mgrk numr onum opbd ordn ornm


medi mgrk numr onum opbd ordn ornm

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt einfach jedes »a« durch eine   Alternativform.

feature medi {   sub a by a.medi; } medi;

Ersetzt nur das »a«,   wenn »a«, »b« oder   »c« folgt.

feature medi {   sub a’ [a b c] by a.medi;   } medi;

Nur wenn »d«, »e« oder »f« vor dem »a« steht, wird die Substitution durchgeführt.

feature medi {   sub [d e f] a’ by a.medi;   } medi;

88


mgrk

Mathematical Greek

numr onum opbd ordn ornm pcap

Bei diesem Feature werden griechische Buchstaben durch entsprechende mathematische Zeichen ersetzt.

In der Mathematik kommen oft griechischen Buchstaben in der Notation von Formeln und ähnlichem zum Einsatz. Diese Sonderzeichen können sich leicht von dem griechischen Alphabet zur Darstellung der Sprache unterscheiden. Oft sind die mathematischen Zeichen viel größer als die griechischen Buchstaben und können aus diesem Grund nicht für einen Mengentext eingesetzt werden. In der Regel werden griechische Buchstaben für die Benennung von Winkeln verwendet und darüber hinaus für Summen, Produkte sowie physikalische Größen.   Dieses Feature ermöglicht die Umwandlung der griechischen Buchstaben in mathematische Sonderzeichen.

89


mgrk numr onum opbd ordn ornm pcap

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   feature mgrk { tion. Ersetzt einfach jedes Sigma durch    sub sigma by summation; das Summenzeichen.  } mgrk; Ersetzt nur das   feature mgrk { Sigma, wenn Ziffern    sub sigma’ @ziffern folgen.

by summation;

} mgrk;

Nur wenn Ziffern vor dem Sigma stehen, wird die Substitution durchgeführt.

feature mgrk {   sub @ziffern sigma’ by summation;   } mgrk;

90


numr

Numerators

onum opbd ordn ornm pcap pnum

Wandelt die ausgewählten Ziffern in Zähler um.

Numerators sind Zähler in Brüchen. Diese unterscheiden sich optisch häufig durch eine geringere Größe von den restlichen Ziffern. Mit diesem Feature ist man im Stande, einfache Ziffern durch optisch eindeutige Zähler zu ersetzen.

50%

60% Adobe® Chaparral und Adobe® Caslon im Vergleich.

50%

40%

91


numr onum opbd ordn ornm pcap pnum

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt eine 2 durch einen Zähler.

feature numr {     sub two by two.numr;   } numr;

Ersetzt einzelne Gruppen durch Zähler.

feature numr {    sub @lining_figures by @numerators;    sub @oldstyle_figures by @numerators;   } numr;

Substituiert alle Ziffern zusammengefasst in einer Gruppe.

feature numr {    sub @alle_ziffern by @alle_numerators;   } numr;

92


onum

Oldstyle Figures

opbd ordn ornm pcap pnum pwid

Ersetzt eine Auswahl von Ziffern durch Minuskelziffern.

Oldstyle Figures sind zu Deutsch Minuskelziffern oder Mediävalziffern. Diese Art von Ziffern weisen Oberund Unterlängen auf und sind somit für den Einsatz im Mengentext prädestiniert. Durch ihre Konstruktion, beruhend auf vier Linien, fallen sie im Mengentext nicht sonderlich auf. Konträr dazu gibt es die proportionalen Tabellenziffern und die Majuskelziffern, die auf dem selben Konstruktionsprinzip wie die Versalien beruhen. Sie sind eher störend im Fließtext und sollten eher für Nummerierungen, Telefonnummern und Preise verwendet werden.   Dieses Feature ermöglicht die Umwandlung von allen vorhandenen Ziffern (Majuskel-, Tabellenziffern, Zähler, Nenner) zu Mediävalziffern.

93


onum opbd ordn ornm pcap pnum pwid

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt eine Majuskel »2« durch eine Minuskel »2«.

feature onum {     sub three by three.onum;   } onum;

Ersetzt einzelne Gruppen durch Mediävalziffern.

feature onum {    sub @lining_figures by @oldstyle_figures;    sub @tabular_figures by @oldstyle_figures;   } onum;

Substituiert alle Ziffern zusammengefasst in einer Gruppe.

feature onum {    sub @alle_ziffern by @alle_oldstyle_figures;   } onum;

94


opbd

Optical Bounds

ordn ornm pcap pnum pwid rand

Richtet die Ränder eines Textblocks aus, damit sie optisch bündig erscheinen.

Das Feature kontrolliert die optische Ausrichtung von Texten anhand der Verschiebung von einzelnen problematischen Zeichen. Bei der Ausrichtung eines Textes auf Links, verschiebt dieses Feature bei Aktivierung einzelne Buchstaben wie das T, V und X noch weiter nach links, damit der Text optisch bündig auf Links ausgerichtet ist. Dasselbe passiert auch bei einer Ausrichtung auf Rechts. Dabei werden problematische Buchstaben noch weiter nach rechts verschoben und somit eine schönere Ausrichtung erreicht.   Soweit mir bekannt ist, wird dieses Feature von keiner einzigen Mainstream DTP-Software unterstützt und ist somit unzugänglich für Normalverbraucher.

95


opbd ordn ornm pcap pnum pwid rand

Die Syntax für die Positionierung von Zeichen:   position <glyph|glyphclass> <valuerecord> Der valuerecord setzt sich aus folgenden Koordinaten zusammen: X, Y, X advance, Y advance. Während die ersten beiden Werte das bezeichnete Zeichen verschieben, bewegt das X adavance und Y advance, die nachfolgenden Zeichen. Dabei bewegen positive Werte das Zeichen nach links bzw. oben und negative Werte nach rechts bzw. unten.

Ausrichtung von einzelnen Zeichen.

feature opbd {   pos V <-8 0 0 0>;   pos Slash <-10 0 0 0>; } opbd;

Ausrichtung von Zeichen zusammengefasst in einer Gruppe.

feature opbd {     pos [A V W X Y] <-8 0 0 0>;   } opbd;

Ausrichtung von Zeichen in Klassen.

feature opbd {    pos @Klasse1 <-15 0 0 0>;    pos @Klasse2 <-5 0 10 0>;   } opbd;

96


ordn

Ordinals

ornm pcap pnum pwid rand rtbd

Ersetzt eine Folge von Zeichen durch entsprechende Abkürzungen für Ordnungnszahlen.

Ordinals sind Ordnungszahlen. Im Deutschen erfolgt die Kennzeichnung der Ordnungszahlen lediglich durch einen Punkt nach einer Ziffer (z.B.: 1., 2., 3., usw.). Im Englisch sind es Buchstabenfolgen wie das st, nd, rd und th, die einer Ziffer nachgestellt werden (1st, 2nd, 3rd, 4th, usw.). Im Italienischen, Französischen, Spanischen und/ oder Portugiesischen (allgemein romanischen) Sprachraum wird zusätzlich noch das ordfeminine (ª) und ordmaskuline (º) Zeichen gebraucht, um das Geschlecht der Zahl anzugeben.   Bei der Programmierung greift man entweder auf Superscript-Buchstaben zurück oder zeichnet spezielle Glyphen für die Ordnungszahlkennzeichnung.

97


ordn ornm pcap pnum pwid rand rtbd

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Bei einer Folge einer   feature ordn { Ziffer und der pas-     sub one s’ t’ by st.ordn; senden Abkürzung, wird die Kennzeich-     sub two n’ d’ by nd.ordn; nung der Ordnungs-     sub three r’ d’ by rd.ordn; zahl hochgestellt.    sub [four five six seven eight Dazu müssen die Abkürzungen als     by th.ordn; eigenständige Gly-   } ordn; phen vorliegen. Hier werden die Buchstaben durch einzelne hochgestellte Pendants ersetzt. Vorteil: Keine Anfertigung von speziellen Ordnungszahlglyphen notwendig.

nine zero] t’ h’

feature ordn {   sub @ziffern s’ t by s.superior;   sub @ziffern s.superior t’ by t.superior;   } ordn;

98


ornm

Ornaments

pcap pnum pwid rand rtbd salt

Tauscht ausgewählte Zeichen durch Ornamente aus.

Das ist ein Feature, welches zwei Möglichkeiten zur Ansteuerung von Ornamenten ermöglicht. Die erste Möglichkeit ist die Eingabe eines Aufzählungspunktes (alt+ü), wobei dann bei der Aktivierung des OrnamentFeatures die gesamte Palette der vorhandenen Ornamente eingeblendet wird. Das eignet sich für Benutzer, die nicht genau wissen, welches Ornament sie benötigen und die gesamte Palette durchsuchen möchten.   Die zweite Möglichkeit ist die Belegung der einzelnen Buchstaben durch entsprechende Zierzeichen. Das ermöglicht die konsequente Ansteuerung von gewünschten Zeichen und ist für routinierte Benutzer gedacht, die genau wissen, welches Zeichen sie benötigen und unter welcher Taste sich welches Ornament verbirgt.

99


ornm pcap pnum pwid rand rtbd salt

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Ermöglicht den Zugriff auf alle Ornamente durch Eingabe des Aufzählungspunktes. Achtung: Im Test nicht funktioniert.

feature ornm {     sub bullet from @ornamente;   } ornm;

Ersetzt die Klasse   der Buchstaben   durch die Klasse der   Ornamente.

feature ornm {   sub @buchstaben by @ornamente; } ornm;

100


pcap

Petite Capitals

pnum pwid rand rtbd salt sinf

Ersetzt eine Auswahl von Minuskeln durch mitteleuropäische Kapitälchen.

Es existieren zwei Arten von Kapitälchen. Die angelsächsischen und die mitteleuropäischen Kapitälchen. Während die mitteleuropäischen Kapitälchen lediglich die optische Größe der x-Höhe aufweisen und petite caps genannt werden, sind Kapitälchen im angelsächsischen Sprachraum um ca. 10% höher als die x-Höhe und tragen den Namen small caps.   Dieses Feature ermöglicht die Umwandlung von Minuskeln zu diesen mitteleuropäischen Kapitälchen. Kapitälchen werden vor allem häufig für Akronyme gebraucht und auch gerne im Textfluss für Eigennamen, um den Satzspiegel vor unangenehm herausstechenden Majuskeln zu wahren.

101


pcap pnum pwid rand rtbd salt sinf

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Austausch von einzelnen Glyphen.

feature pcap {     sub a by a.pc;   } pcap;

feature pcap {     sub @minuskeln by @minuskeln_pc; Austausch der Zeichen unterteilt in     sub @majuskeln by @majuskeln_pc; einzelne Klassen.    sub @ziffern by @ziffern_pc;     sub @sonderzeichen by @sonderzeichen_pc;   } pcap; Austausch von Zeichen zusammengefasst in einer einzelnen Klasse.

feature pcap {     sub @alle_zeichen by @alle_pc;   } pcap;

102


pnum

Proportinal Figures

pwid rand rtbd salt sinf smcp

Ersetzt nicht-proportionale Ziffern mit identischer Ziffernbreite durch proportionale Ziffern.

Im Gegensatz zu nicht-proportionalen Ziffern, die stets identische Buchstabenbreiten aufweisen und somit für tabellarische Rechnungen prädestiniert sind, da sich die Ziffern dabei schön untereinander reihen, haben proportionale Ziffern variable Breiten und lassen sich auch im Mengentext einsetzen.   Das Proportional Figures-Feature ersetzt nicht-proportionale Ziffern durch Ziffern mit unterschiedlicher Buchstabenbreite. 099,99 123,45 001,89

099,99 123,45 001,89

099,99 123,45 001,89

099,99 123,45 001,89

103

Von Links nach Rechts: Tabular Lining Proportional Lining Tabular Oldstyle Proportional Oldstyle


pnum pwid rand rtbd salt sinf smcp

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt eine proportionale »1« durch eine nichtproportionale »1«.

feature pnum {     sub one by one.pnum;   } pnum;

Ersetzt einzelne Gruppen durch nicht-proportionale Ziffern.

feature pnum {    sub @lining_figures by @proportional_lfigures;    sub @oldstyle_figures by @proportional_ofigures;   } pnum;

Substituiert alle Ziffern zusammengefasst in einer Gruppe.

feature onum {    sub @alle_ziffern by @alle_proportional_figures;   } onum;

104


pwid

Proportional Widths

rand rtbd salt sinf smcp ssxx

Ersetzt nicht-proportionale Zeichen mit identischer Buchstabenbreite durch proportionale Zeichen.

Grundsätzlich wird in der Typografie zwischen proportionalen und nicht-proportionalen Schriften unterschieden. Proportionale Schriften sind alle die Schriften, deren Breite nicht einheitlich festgelegt ist und bei nahezu allen Schriftzeichen unterschiedlich ist. Seit Anbeginn der Schriftgeschichte waren die proportionalen Schriften durch alle technischen Evolution hindurch die Regel. Erst durch das Aufkommen der Schreibmaschine und später des Computers kamen allmählich die nichtproportiona-len Schriften zum Vorschein. Dabei handelt es sich um Schriften mit identischer Laufweite. Auch nach der Schreibmaschinen-Ära kamen die nicht-proportionalen

105


pwid rand rtbd salt sinf smcp ssxx

Blindtext gesetzt in Courier New, einer nicht-proportionalen Schrift.

Schriften zum Einsatz, um zum Beispiel einen handgetippten Brief auf dem Computer zu simulieren. Eher um die Praktik anstatt der Ästhetik, geht es bei der Abbildung von Programmcodes, wie sie auch in diesem Buch vorkommen. Dabei haben sich nicht-proportionale Schriften wie die Systemschriftart Courier bewiesen, da sie identische Laufweiten haben und sich somit angenehm vertikal ausrichten lassen. Grundsätzlich sollte dabei beachtet werden, dass sich nicht-propotionale Schriften eher weniger für lange Textpassagen eignen und zudem auch verschwenderisch mit dem gegebenen Weißraum umgehen.   Mit dem Proportional Widths-Feature lassen sich nicht-proportionale Buchstaben in proportionale Buchstaben mit variabler Breite umwandeln.   Leider wird das Feature zur Zeit von keiner DTP-Software im europäischen oder nordamerikanischen Raum unterstützt, da das Feature vorwiegend für asiatische Sprachräume konzipiert wurde.

Lorem ipsum dolor sit amet,con sectetuer adipiscing elit, sed diam nonummy nibh euismod tinc idunt ut laoreet dolore magna aliquam erat volutpat.

106


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

pwid rand rtbd salt sinf smcp ssxx

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature pwid {     sub i.fwid by i;   } pwid;

Einfache Substitution. Ersetzt das nicht-proportionale »i« durch ein proportionales »i«.

feature pwid {     sub @sonderzeichen_fwid by @sonderzeichen;     sub @majuskeln_fwid by @majuskeln;     sub @minuskeln_fwid by @minuskeln;    sub @tabular_figures by @proportional_figures;   } pwid;

Substitution von in Gruppen zusammengefasster Zeichen mit derselben Charakteristik.

feature pwid {     sub @alle_zeichen_fwid by @alle_zeichen;   } pwid;

Kompletter Austausch aller Zeichen.

107


rand rtbd salt sinf smcp ssxx subs

Randomize Ersetzt per Zufallsprinzip die Folge identischer Buchstaben, durch Alternativformen.

Das Randomize-Feature dient dazu, die Unregelmäßigkeit einer Schrift aus der Gruppe der Schreibschriften und/oder der Gruppe der Handschriftlichen Antiqua nach DIN 16518 zu simulieren. Dazu werden bei einer Folge von identischen Buchstaben, die entsprechenden Alternativformen nach einem zufallsgenerierten Algorithmus eingesetzt.   Dieses Feature wird nach Aussagen von Adam Twardoch, dem Product und Marketing Manager von Fontlab® Ltd., im Augenblick und auch in Zukunft von keiner Software unterstützt. Die Erläuterung dazu findet man auf der gegenüberliegenden Seite.

108


rand

www.typeforum.de - 20.11.2006 um 03:37 Die OpenType-Feature “rand” wird in den MainstreamApplikationen vermutlich nie implementiert. Kaum ein Applikationsentwickler möchte die Gefahr auf sich nehmen, dass sein Programm anfängt, Endlosschleifen zu fahren. Das wäre aber der Fall, wenn z.B. bei jedem Versuch, einen Absatz umzubrechen das Programm das OpenType-Code ausführen würde, und mitunter sich jedes Mal andere Glyphen*dickten* ergäben. Es könnte passieren, dass auf einmal eine Zeile auf die nächste Seite springt, dort wird sie erneut berechnet und aufgrund einer anderen metrischen Kalkulation sie wiederum auf die vorige Seite springt usw.   Ähnlich könnte es passieren, dass nach dem Speichern des Dokuments und dem erneuten öffnen plötzlich das Text anders umgebrochen wäre und z.B. nicht mehr in die definierten Rahmen passt, was dann der Designer u.U. übersehen könnte.   Auch wäre es problematisch, wenn z.B. ein Algorithmus aus irgendwelchen Gründen die Buchstaben eines Textes mehrmals auf dem Bildschirm “aufeinander” zeichnet (sei es, um ein Outline-Effekt oder eine Transparenz o.ä. zu realisieren).   Auch das WYSIWYG-Prinzip wäre u.U. nicht mehr zu realisieren.

109

rtbd salt sinf smcp ssxx subs


rand rtbd salt sinf smcp ssxx subs

Das alles ist für Applikationsdeveloper ein kaum zu unterschätzendes Risiko. Es gibt sicherlich Tausende Zeilen Code, die z.B. darauf vertrauen können, dass jede Glyphe ein konstantes Aussehen und eine konstante Dickte haben. Mit einer echten Randomisierung müßten diese Annahmen müsehlig kontrolliert werden (etwa um sicherzugehen, dass es nicht so ist, dass z.B. eine Prozedur die metrischen Daten nur einmal berechnet und dann zwischenspeichert, während eine andere Prozedur sie immer wieder neu berechnet und jedes Mal ein anderes Ergebnis bekommt, während die erste Prozedur stets nur mit dem ersten Ergebnis arbeitet).   Daher ist es u.U. vorstellbar dass nur Insellösungen wie XeTeX die “rand”-Feature implementieren (wenn überhaupt), ich glaube aber nicht, dass Schriftentwickler ihre Schriften mit dieser Feature versehen werden. Vielmehr weichen Schriftentwickler z.Zt. auf Pseudorandom-Lösungen in der “calt”-Feature, wie etwa das von mir für Linotype GmbH entwickelte OpenType-Code für Zapfino Extra Pro (http://www.linotypefont.com/2762/ introduction.html ) oder das von Tal Leming programmierte Code in Local Gothic (http://talleming.com/pages/work/programming/openType/randomization/). A.

Quelle: http://www.typeforum.de/modules.php?op=modload&name=XForu m&file=print&fid=3&tid=549

110


rtbd

Right Bounds

salt sinf smcp ssxx subs sups

Richtet den rechten Rand eines Textblocks aus, damit er optisch bündig erscheint.

Bei der vertikalen Ausrichtung eines Textes können die einzelnen Zeilen zwar durch den Rahmen, der den Text Umgibt, ausgerichtet sein, doch erscheint er optisch oft wellenförmig, wenn viele Buchstaben mit diagonalen Strichen oder Bindestriche sich entlang dieses Rahmens befinden.   Um diesem Phänomen entgegenzuwirken und optisch bündige Zeilen zu erzielen, gibt es die Optical Bounds Features, in diesem Fall spezifisch das Right BoundsFeature. Das verschiebt bei einem Flattersatz auf Rechts die problematischen Buchstaben noch weiter nach Rechts, damit die Zeilen auf der rechten Seite besser ausgerichtet sind.

111


rtbd salt sinf smcp ssxx subs sups

Die Syntax für die Positionierung von Zeichen:   position <glyph|glyphclass> <valuerecord> Der valuerecord setzt sich aus folgenden Koordinaten zusammen: X, Y, X advance, Y advance. Während die ersten beiden Werte das bezeichnete Zeichen verschieben, bewegt das X und Y advance, die nachfolgenden Zeichen. Dabei bewegen positive Werte das Zeichen nach links bzw. oben und negative Werte nach rechts bzw. unten. Beispiele:

Ausrichtung von einzelnen Zeichen.

feature rtbd {   pos A <-8 0 0 0>;   pos Hyphen <-10 0 0 0>; } rtbd;

Ausrichtung von Zeichen zusammengefasst in einer Gruppe.

feature rtbd {     pos [A V W X Y] <-8 0 0 0>;   } rtbd;

Ausrichtung von Zeichen in Klassen.

feature rtbd {    pos @Klasse1 <-15 0 0 0>;    pos @Klasse2 <-5 0 10 0>;   } rtbd;

112


salt

Stylistic Alternates Ermöglicht den Zugriff auf stilistische Alternativformen eines Zeichens zur ästhetischen Aufwertung eines Textes.

Manche Schriften enthalten Alternativbuchstaben mit einem rein ästhetischen Hintergrund, der sich zwischen den Zierbuchstaben (Swashes) und den historischen Formen befindet. Im Falle der Swashes sind mehrere Glyphen als Alternative möglich, somit dieses Feature zum Einsatz kommt. Darüberhinaus können auch die »gewöhnlichen« Buchstaben stilistische Alternativen aufweisen. Ein gutes Beispiel ist die Futura von Paul Renner in der OpenType®-Version von Elsner und Flake. Sie enthält neben den Standardglyphen auch die, die Paul Renner auf Druck der Druckerei rausgenommen hat. Ein weiteres Beispiel sind Schriften von Erik Spiekermann, die oftmals Alternativen für das »a« und »g« enthalten.

113

sinf smcp ssxx subs sups swsh


salt sinf smcp ssxx subs sups swsh

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt einfach jedes »a« durch eine   Alternativform.

Ermöglicht den Austausch ganzer Klassen.

feature salt {     sub @buchstaben by @buchstaben_salt;   } salt;

Ersetzt nur das »a«,   wenn »a«, »b« oder   »c« folgt.   Nur wenn »d«, »e« oder »f« vor dem »a« steht, wird die Substitution durchgeführt.

feature salt {   sub a by a.salt; } salt;

feature salt {   sub a’ [a b c] by a.salt; } salt;

feature salt {   sub [d e f] a’ by a.salt;   } salt;

114


sinf

Scientific Inferiors

smcp ssxx subs sups swsh titl

Substituiert eine Auswahl von Ziffern bzw. Buchstaben in numerische bzw. alphabetische Indizes.

Die wissenschaftlichen Indizes sind im Gegensatz zu Ziffern in ihrer Größe reduziert und befinden sich außerdem im Vergleich zu einem Nenner unterhalb der Schriftlinie. Diese Indizes werden zur Notation von chemischen und mathematische Formeln verwendet. Neben der Umwandlung von Majuskel- und/oder Minuskelziffern in numerische Indizes, besteht die Möglicheit auch Buchstaben in alphabetische Indizes umzuwandeln.

x3  3 ₃ 115

Von Links nach Rechts: Majuskelziffer Minuskelziffer Nenner wiss. Index


sinf smcp ssxx subs sups swsh titl

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt eine »2« durch einen wiss. Index.

feature sinf {     sub two by two.sinf;   } sinf;   feature sinf { sub @lining_figures by @s_inferiors; sub @oldstyle_figures by @s_inferiors;   } sinf;

Ersetzt einzelne    Gruppen durch wiss.    Indizes.

Substituiert alle Ziffern zusammengefasst in einer Gruppe.

feature sinf {    sub @alle_ziffern by @alle_s_inferiors;   } sinf;

116


smcp

Small Capitals

ssxx subs sups swsh titl tnum

Wandelt eine Auswahl von Zeichen in angelsächsische Kapitälchen um.

Es existieren zwei Arten von Kapitälchen. Die angelsächsischen und die mitteleuropäischen Kapitälchen. Während die mitteleuropäischen Kapitälchen lediglich die optische Größe der x-Höhe aufweisen und petite caps genannt werden, sind Kapitälchen im angelsächsischen Sprachraum um ca. 10% höher als die x-Höhe und tragen den Namen small caps.   Dieses Feature ermöglicht die Umwandlung von Majuskeln zu diesen angelsächsischen Kapitälchen. Kapitälchen werden vor allem häufig für Akronyme gebraucht und auch gerne im Textfluss für Eigennamen, um den Satzspiegel vor unangenehm herausstechenden Majuskeln zu bewahren.

117


smcp ssxx subs sups swsh titl tnum

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Austausch von einzelnen Glyphen.

feature smcp {     sub A by A.sc;   } smcp;

feature smcp {     sub @minuskeln by @minuskeln_sc; Austausch der Zeichen unterteilt in     sub @majuskeln by @majuskeln_sc; einzelne Klassen.    sub @ziffern by @ziffern_sc;     sub @sonderzeichen by @sonderzeichen_sc;   } smcp; Austausch von Zeichen zusammengefasst in einer einzelnen Klasse.

feature smcp {     sub @alle_zeichen by @alle_sc;   } smcp;

118


ssxx

Stylistic Sets Ersetzt eine Auswahl von Zeichen durch einen der zwanzig stilistischen Sets mit voreingestellten Alternativen.

Die stilistischen Sets sind verwandt mit den Stylistic Alternates. Die Sets werden vom Designer geschaffen, um beim Gebrauch von stilistischen Alternativen, eine Homogenität zwischen diesen zu gewährleisten. Während bei den Stylistic Alternates der Benutzer jede stilistischen Alternative anwählen kann und sie nach belieben mischen kann, geben die Stylistic Sets die Alternativen sozusagen vor. Damit wird gewährleistet, dass nur alternative Formen benutzt werden, die tatsächlich auch zusammenpassen und auch als eine Einheit konzipiert wurden. Ohne diese Sets, könnte der Benutzer sich eine bunte Mischung an Alternativformen zusammenstellen, die untereinander nicht harmonieren.

119

subs sups swsh titl tnum unic


ssxx subs sups swsh titl tnum unic

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitution. Ersetzt ein Standard »K« durch eine Alternative.

feature ss01 {     sub K by K.alt;   } ss01;

Ersetzt einzelne Gruppen durch entsprechende Alternativformen.

feature ss01 {     sub [K R k] by [K.alt R.alt k.alt];   } ss01;

Substitution in Klassen.

feature ss02 {   sub @minuskeln by @minuskeln_alt02;   sub @majuskeln by @majuskeln_alt02; } ss02;

120


subs

Subscript

sups swsh titl tnum unic zero

Ersetzt eine Auswahl von Zeichen durch verkleinerte Pendants, die unterhalb der Schriftlinie sitzen.

Beim Subscript handelt es sich um Buchstaben und Ziffern, die sich verkleinert etwas unterhalb der Schriftlinie reihen. Da besteht eine gewisse Parallele zu den wissenschaftlichen Indizes, nur das dieses Feature nicht nur vorrangig Zahlen austauscht, sondern auch Buchstaben und weitere Sonderzeichen. Das Besondere an diesem Feature sind die zwei Möglichkeiten zur Programmierung. Es ist entweder möglich die Zeichen zu ersetzen oder sie einfach nur zu verschieben.

x33₃a

121

Von Links nach Rechts: Majuskelziffer Minuskelziffer Nenner wiss. Index Subscript


subs sups swsh titl tnum unic zero

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Austausch von einzelnen Glyphen.

feature subs {     sub a by a.subs;   } subs;

feature subs {     sub @minuskeln by @minuskeln_subs; Austausch der Zeichen unterteilt in     sub @majuskeln by @majuskeln_subs; einzelne Klassen.    sub @ziffern by @ziffern_subs;     sub @sonderzeichen by @sonderzeichen_subs;   } subs; Austausch von Zeichen zusammengefasst in einer einzelnen Klasse.

feature subs {     sub @alle_zeichen by @alle_subs;   } subs;

122


subs

Die Syntax für die Positionierung von Zeichen:

sups swsh titl tnum unic zero

position <glyph|glyphclass> <valuerecord> Der valuerecord setzt sich aus folgenden Koordinaten zusammen: X, Y, X advance, Y advance. Während die ersten beiden Werte das bezeichnete Zeichen verschieben, bewegt das X advance und Y advance, die nachfolgenden Zeichen. Dabei bewegen positive Werte das Zeichen nach links bzw. oben und negative Werte nach rechts bzw. unten.

feature subs {   pos a <0 -100 0 0>;   pos Hyphen <0 -100 0 0>; } subs;

feature subs {     pos [A V W X Y] <0 -100 0 0>;   } subs;

feature subs {   pos @Klasse1 <0 -100 0 0>;   pos @Klasse2 <0 -100 0 0>; } subs;

Ausrichtung von einzelnen Zeichen.

Ausrichtung von Zeichen zusammengefasst in einer Gruppe.

Ausrichtung von Zeichen in Klassen.

123


sups swsh titl tnum unic zero

Von Links nach Rechts: Majuskelziffer Minuskelziffer Nenner Zähler Superscript

Superscript Ersetzt eine Auswahl von Zeichen durch verkleinerte Pendants, die oberhalb der x-Höhe sitzen.

Beim Superscript handelt es sich um Buchstaben und Ziffern, die sich verkleinert oberhalb der x-Höhe reihen. Da besteht eine gewisse Parallele zu den Zählern, nur das dieses Feature nicht nur vorrangig Zahlen austauscht, sondern auch Buchstaben und weitere Sonderzeichen. Das Besondere an diesem Feature sind die zwei Möglichkeiten zur Programmierung. Es ist entweder möglich die Zeichen zu ersetzen oder sie einfach nur zu verschieben.

x33₃

124

a


Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

sups swsh titl tnum unic zero

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

feature sups {     sub a by a.sups;   } sups;

Austausch von einzelnen Glyphen.

feature sups {     sub @minuskeln by @minuskeln_sups;     sub @majuskeln by @majuskeln_sups;    sub @ziffern by @ziffern_sups;     sub @sonderzeichen by @sonderzeichen_sups;   } sups;   feature sups {     sub @alle_zeichen by @alle_sups;   } sups;

Austausch der Zeichen unterteilt in einzelne Klassen.

Austausch von Zeichen zusammengefasst in einer einzelnen Klasse.

125


sups swsh titl tnum unic zero

Ausrichtung von einzelnen Zeichen.

Ausrichtung von Zeichen zusammengefasst in einer Gruppe.

Ausrichtung von Zeichen in Klassen.

Die Syntax für die Positionierung von Zeichen:   position <glyph|glyphclass> <valuerecord> Der valuerecord setzt sich aus folgenden Koordinaten zusammen: X, Y, X advance, Y advance. Während die ersten beiden Werte das bezeichnete Zeichen verschieben, bewegt das X advance und Y advance, die nachfolgenden Zeichen. Dabei bewegen positive Werte das Zeichen nach links bzw. oben und negative Werte nach rechts bzw. unten.

feature sups {   pos a <0 100 0 0>;   pos Hyphen <0 100 0 0>; } sups;

feature sups {     pos [A V W X Y] <0 100 0 0>;   } sups;

feature sups {   pos @Klasse1 <0 100 0 0>;   pos @Klasse2 <0 100 0 0>; } sups;

126


Swash

swsh

Wandelt eine Auswahl von Zeichen in alternative Zierglyphen um.

titl tnum unic zero

Swashes sind Zierglyphen eines Buchstabens. Sie kommen ursprünglich aus der Kalligrafie und können bei sachkundiger Anwendung, eine Textpassage beeindruckend beleben. Die Zierglyphen werden nahezu ausschließlich am Ende eines Buchstabens, Satzes etc. eingesetzt, weil die Zeichen sonst durch ihre ausladenden Endstriche oder sonstige ungewöhnliche Formen den Wortfluss erheblich stören würden.   Besonders häufig kommen Swashes in der Gruppe der Handschriftlichen Antiqua und der Schreibschriften nach DIN 16518 vor.   Dieses Feature ersetzt ausgewählte Buchstaben durch ihre Swash-Alternativform.

127


swsh titl tnum unic zero

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Kontextunabhängiger Austausch.

feature swsh {     sub e by e.swsh;   } swsh;

Austausch erfolgt nur, wenn »a«, »b«   oder »c« folgt.   Unerwünschter   Austausch, da er mitten im Wort auftaucht. Man   verhindert einen Austausch mittels   ignore, solange noch   Zeichen folgen. Austausch nur, wenn »d«, »e« oder »f« davor stehen.

feature swsh {   sub e’ [a b c] by e.swsh; } swsh; feature swsh {   ignore sub e’ @minuskeln; } swsh;

feature swsh {   sub [d e f] e’ by e.swsh;   } swsh;

128


Titling

titl

Substituiert eine Auswahl von Zeichen, durch entsprechend angepasste Alternativen für den Titelsatz.

tnum unic zero

Diese Funktion ersetzt die üblichen Zeichen, durch die extra für den Titelsatz modifizierten Glyphen. Sie sind oftmals so angepasst, dass sie in größeren Graden ruhiger wirken. Zudem wird der Kontrast überarbeitet, indem man die Buchstaben etwas kontrastärmer macht, da die Intention ist, sie in größeren Graden abzubilden.   Neben einer eher subtilen Modifikation von Zeichen im Gewicht und Spacing, gibt es auch die offensichtliche Veränderung im Sinne der Form. So können Buchstaben für den Titelsatz ausgesprochen verziert sein oder auch in der Form von den gewöhnlichen Glyphen abweichen. Oft werden auch Outline-Versionen der normalen Zeichen für den Titelsatz verwendet.

129


titl tnum unic zero

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Austausch von einzelnen Glyphen.

feature titl {    sub A by A.titl;   } titl;

feature titl {    sub @minuskeln by @minuskeln_titl; Austausch der Zeichen unterteilt in    sub @majuskeln by @majuskeln_titl; einzelne Klassen.    sub @ziffern by @ziffern_titl;    sub @sonderzeichen by @sonderzeichen_titl;   } titl; Austausch von Zeichen zusammengefasst in einer einzelnen Klasse.

feature titl {    sub @alle_zeichen by @alle_titl;   } titl;

130


tnum

Tabular Figures

unic zero

Wandelt ausgewählte Ziffern in nicht-proportionale Ziffern um.

Tabular Figures sind zu Deutsch Tabellenziffern. Unter den Tabellenziffern gibt es sowohl die Majuskel- als auch die Minuskelziffern. Das charakteristische Merkmal an Tabellenziffern ist die identische Breite aller Ziffern. Somit lassen sie sich angenehm untereinander reihen, wie es bei grundlegenden arithmetischen Operationen hilfreich und oftmals nĂśtig ist.   Eine gut ausgebaute Schriftfamilie hat bis zu vier Zifferngarnituren. Die proportionalen und nicht-proportionalen Majuskelziffern sowie die proportionalen und nicht-proportionalen Minuskelziffern.

131


tnum unic zero

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.    substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Einfache Substitu-   tion. Ersetzt eine   proportionale durch eine nicht-propor-   tionale Ziffer.

feature tnum {   sub one by one.tnum; } tnum;

Ersetzt einzelne Gruppen.

feature tnum {    sub @oldstyle_figures by @oldstyle_tabular;    sub @lining_figures by @lining_tabular;   } tnum;

Substituiert alle Ziffern zusammengefasst in einer Gruppe.

feature tnum {    sub @alle_ziffern by @alle_tabular_figures;   } tnum;

132


unic

Unicase

zero

Tauscht eine Auswahl von Minuskeln durch entsprechende Unicase-Glyphen aus.

Als Unicase bezeichnet man Schriften, die Minuskeln und Majuskeln bunt mischen. Das besondere dabei ist jedoch, dass man auf Minuskeln mit Unter- und Oberlängen verzichtet und die restlichen Kleinbuchstaben in der Größe soweit modifiziert, dass sie optisch mit der der Versalien übereinstimmen. So entsteht ein interessantes und auch verspieltes Wortbild, welches durchaus seinen Reiz hat.   Aus heutiger Sicht ist die Unziale eine der ersten historischen Vorbilder für eine Unicase-Schrift. Auffällig sind die Minuskelformen des f, h, m, n, t, u und w im gemischten Unzial-Alphabet.   Ein gutes Beispiel ist dafür die Filosofia von Emigre®.

133


unic zero

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Austausch von einzelnen Glyphen.

Tauscht alle als Unicase tauglichen Minuskeln durch entsprechende Pendants aus. Zeichen, die Oberoder Unterlänge aufweisen, werden durch Majuskeln substituiert.

feature unic {   sub a by a.unic;   sub h by H; } unic;

feature unic {     sub [a e i m n r t u] by [a.unic e.unic i.unic m.unic     n.unic r.unic t.unic u.unic];    sub [b c d f g h j k l o p q s v w x y z] by     [B C D F G H J K L O P Q S V W X Y Z];   } unic;

134


zero

Slashed Zero Tauscht die gewöhnliche Null durch eine durchgestrichene Variante aus.

Manche Schriften enthalten neben der üblichen Null (0) eine weitere Variante mit einem diagonalen Strich durch die Null. Besonders in Condensed-Varianten einer Schrift fällt das Unterscheiden zwischen der Zahl Null und dem Buchstaben O besonders schwer, sodass die Alternativnull mit dem Strich verwendet werden sollte. Dies ist besonders bei kryptischen Buchstaben- und Ziffernmischungen erforderlich.   Die Umwandlung erledigt das Feature Slashed Zero, indem es eine übliche Null durch eine durchgestrichene ersetzt.

135


zero

Grundsätzlich gibt es drei Möglichkeiten, einen Zeichenaustausch zu programmieren. Die einfachste Möglichkeit ist der Austausch von Glyphe zu Glyphe. Darüber hinaus besteht die Möglichkeit einer many-to-one Substitution von Klasse zu Glyphe und der letzten Möglichkeit: Klasse zu Klasse.

Grundsätzlich gibt es 3 Möglichkeiten einen Austausch zu programmieren.

substitute <glyph> by <glyph>; # format A   substitute <glyphclass> by <glyph>; # format B   substitute <glyphclass> by <glyphclass>; # format C

Ersetzt einzelne Gruppen.

feature zero {     sub zero by zero_slahed;   } zero;

Tauscht die Nullen aller Zifferngarnituren durch entsprechende durchgestrichene Varianten aus.

feature zero {   sub [zero zero.lnum zero.onum zero.pnum]   by [zero_slashed zero_slashed.lnum   zero_slashed.onum zero_slashed.pnum]; } zero;

136



138


Anhang

139


Quellennachweis •  http://www.adobe.com/de/type/opentype/ •  http://www.adobe.com/de/type/browser/     pdfs/OTGuide.pdf •  http://www.adobe.com/de/type/opentype/qna.html •  http://www.adobe.com/type/opentype/     CA-Aug02.pdf •  http://www.creativepro.com/story/feature/     6503.html •  http://www.adobe.com/devnet/opentype/afdko/     topic_feature_file_syntax.html •  http://www.microsoft.com/typography/otspec/ •  http://www.microsoft.com/typography/otspec/     features_ae.htm •  http://www.microsoft.com/typography/otspec/     features_fj.htm •  http://www.microsoft.com/typography/otspec/     features_pt.htm •  http://www.microsoft.com/typography/otspec/     features_uz.htm •  http://groups.msn.com/FontLab/     messageboard.msnw •  http://de.wikipedia.org/wiki/OpenType •  http://www.typeforum.de/modules.php?op=modloa     d&name=XForum&file=forumdisplay&fid=36

140


Quellennachweis •  http://www.typeforum.de/modules.php?op=modloa     d&name=XForum&file=print&fid=3&tid=549 •  http://groups.msn.com/FontLab/     tipsandtricks.msnw?action=get_        message&mview=0&ID_Message=3403 •  http://www.fontfont.com/opentype/     FF_OT_UserGuide_v2.pdf •  http://www.twardoch.com/adam/ •  http://www.fontlab.com/font-editor/fontlab-studio/     download-fontlab-studio/ •  http://www.truetype-typography.com/

Stand: 11.November 2007

141


Buchinformation •  Konzept     Alexander Roth •  Umschlaggestaltung     Alexander Roth •  Buchgestaltung     Alexander Roth •  Schrift     Umschlag:        Octo Red von Alexander Roth        Adobe® Chaparral Pro        Regular, Bold        12 pt     Fließtext:        Adobe® Chaparral Pro        Regular, Italic, Semibold        8 pt, 11 pt     Code:        Calibri        Regular        11 pt

142


Buchinformation      Navigationsleiste:        Andale Mono        Regular        11 pt •  Papier Mondi, Color Copy, 160gr/m² •   Farbe     Rot: C=15 M=100 Y=100 K=0     Blau: C=100 M=90 Y=10 K=0     Schwarz     Schwarz: Aufrasterung von 60% bis 10%     Weiß •  Format     Breite: 148mm     Höhe: 210mm •  Kontakt     Alexander Roth     Knonweg 13     32107 Bad Salzuflen      0172.1372398

143




Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.