1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
|
<html>
<head>
<!-- Created with AOLpress/2.0 -->
<!-- AP: Created on: 27-Jan-2003 -->
<!-- AP: Last modified: 11-Dec-2005 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Erzeugung akzentuierter Bildzeichen</title>
<link rel="icon" href="../../_static/fftype16.png">
<link rel="stylesheet" type="text/css" href="FontForge.css">
</head>
<body>
<div id="in">
<h1 align=Center>
Tutorial #4
</h1>
<ul>
<li>
<a href="editexample.html#FontCreate">Kreieren eines neuen Schriftsatzes</a>
</li><li>
<a href="editexample.html#CharCreate">Erzeugung eines Bildzeichens (Umrissverfolgung)</a>
</li><li>
<a href="editexample2.html#Navigating">Navigation zu weiteren Bildzeichen</a>
</li><li>
<a href="editexample2.html#Creating-o">Auf zum nächsten Bildzeichen (konsistente Richtungen)</a>
</li><li>
<a href="editexample3.html#consistent-stems">Konsistente Serifen und Stammbreiten</a>
</li><li>
<a href="editexample4.html#accents">Erzeugung akzentuierter Bildzeichen</a>
</li><li>
<a href="editexample4.html#ligature">Erzeugung einer Ligatur</a>
</li><li>
<a href="editexample5.html#metrics">Untersuchung von Metriken</a>
<ul>
<li>
<a href="editexample5.html#baseline">Setzen der Gundlinie zur Grundlinienteilung eines Schriftsatzes</a>
</li></ul>
</li><li>
<a href="editexample5.html#Kerning">Unterschneidung</a>
</li><li>
<a href="editexample6.html#Variants">Bildzeichenvarianten</a>
</li><li>
<a href="editexample6.html#Marks">Ankermarkierungen</a>
</li><li>
<a href="editexample6-5.html#Conditional">Bedingte Eigenschaften</a>
</li><li>
<a href="editexample7.html#checking">Überprüfen des Schriftsatzes</a>
</li><li>
<a href="editexample7.html#Bitmaps">Bitmaps</a>
</li><li>
<a href="editexample7.html#generating">Erzeugung</a>
</li><li>
<a href="editexample7.html#Families">Schriftsatzfamilien</a>
</li><li>
<a href="editexample7.html#summary">Fazit</a>
</li><li>
<a href="scriptnotes.html#Special">Bemerkungen zu verschiedenen Skripten</a>
</li></ul>
<h2>
<a name="accents">Building</A> accented glyphs
</h2>
<p>
In lateinischen, griechischen und kyrillischen Zeichensätzen existieren
jeweils eine Anzahl akzentuierter Zeichen.
FontForge bietet eine Reihe von Möglichkeiten,
akzentuierte Varianten aus deren Grundformen zu erstellen.
</p>
<p>
Die offensichtlichste Methode ist über einfaches Kopieren und Einfügen:
<a href="editmenu.html#Copy">Kopieren</A> des Buchstabens "A" und
<a href="editmenu.html#Paste">Einfügen</A> in "Ã" und
<a href="editmenu.html#Copy">Kopieren</A> des Tilde-Zeichens und
<a href="editmenu.html#PasteInto">Einfügen in</A> nach "Ã"
(das Verhalten von "Einfügen" und "Einfügen in" untescheidet sich
geringfügig voneinander. Während "Einfügen" den Zeicheninhalt vor dem
Einfügen löscht, fügt "Einfügen in" den Inhalt der Zwischenablage
an den Inhalt des Zeichens an).
Danach wird das Bearbeitungsfenster für "Ã" geöffnet und
die Position des Akzents angepasst, so daß er an der richtigen
Stelle über dem A steht.
</p>
<p>
Diese Methode ist nicht besonders effizient: wenn die Form des
Buchstabens "A" geändert wird, müssen auch alle akzentuierten
Formen von "A" angepasst werden. Daher bietet FontForge die
Möglichkeit, eine <a href="../../index.html#References">Referenz</a>
zu einem Zeichen zu erstellen. So kann in diesem Beispiel eine Referenz
zu "A" kopiert und eingefügt werden und dann eine Referenz des
Tildezeichens kopiert und mit "Einfügen in" eingefügt werden, welches
hinterher über der Referenz zu A positioniert wird.
</p>
<p>
Wenn danach die Form des Originals von "A" verändert wird, ändert
sich automatisch auch dessen Form in "Ã", und ggf. auch dessen
Breite.
</p>
<p>
FontForge "weiß", daß "Ã" aus "A" und dem Tildezeichen
zusammengesetzt wurde und kann akzentuierte
Zeichen automatisch selbst erstellen, indem die Referenzen in "Ã"
gesetzt werden und der Akzent über dem A positioniert wird.
(Für Unicode steht eine Datenbank zu Verfügung, in der die einzelnen
Komponenten jedes akzentuierten Zeichens als Unicodes aufgelistet sind).
</p>
<p>
Als Beispiel wird die Datei <code>tutorial/Ambrosia.sfd</code>
geöffnet und alle Zeichen im Codebereich 0xc0-0xff selektiert.
Nach Auswahl des Befehls
<a href="../../ui/menus/elementmenu.html#Accented"><code>Element->Erzeugen->Akzentuiert erzeugen</code></a>
erscheinen alle akzentuierten Zeichen auf magische Weise
(einige Zeichen in diesem Bereich sind nicht akzentuiert und
bleiben daher leer).
</p>
<p>
FontForge enthält eine Heuristik für die Positionierung von Akzenten
(die meisten Akzente liegen zentriert über dem höchsten Punkt des
Zeichens), welche gelegentlich schlechte Ergebnisse produziert
(wenn z.B. einer der beiden Stämme des "u" ein wenig höher ist als
der andere, wird der Akzent über diesem positioniert anstatt über
dem gesamten Zeichen). Aus diesem Grunde sollte nach der Erzeugung der
akzentuierten Zeichen immer nachkontrolliert werden, ggf. müssen
ein oder zwei davon korrigiert werden (evtl. sollte sogar das
Ausgangszeichen leicht verändert werden).
<h2>
<a name="ligature">Erzeugung</a> einer Ligatur
</H2>
</p>
<p>
Unicode enthält eine Reihe von Ligaturzeichen (im Lateinischen
sind dies: Æ, OE, fi, etc. während es in arabische
Zeichensätzen hunderte sind). Auch hier gibt es für Unicode eine
Datenbank für die einzelnen Komponenten jeder Standardligatur.
</p>
<p>
FontForge kann leider Ligaturen nicht automatisch erzeugen,
stattdessen können die Komponenten der Ligatur mit
<a href="../../ui/menus/elementmenu.html#Accented"><code>Element->Erzeugen->Zusammengesetzt erzeugen</code></a>.
in das Zeichen kopiert werden. Dies macht es ein wenig einfacher
(zumindest für lateinische Schriftsätze), Ligaturen zu gestalten.
<table border cellpadding="2">
<caption>
Schritte zur Erstellung einer Ligatur
</caption>
<tr>
<td><p align="center">
<IMG src="../../_images/ffi-refs.png" ALT="ffi ligature as references" WIDTH="154" HEIGHT="277"></TD>
<TD><P ALIGN=Center>
<IMG src="../../_images/ffi-unlink.png" WIDTH="154" HEIGHT="277" ALT="ffi after unlinking references"></TD>
<TD><P ALIGN=Center>
<IMG src="../../_images/ffi-moved.png" WIDTH="154" HEIGHT="277" ALT="ffi after lowering first f"></TD>
<TD><P ALIGN=Center>
<IMG src="../../_images/ffi-rmoverlap.png" ALT="ffi after doing remove overlap" WIDTH="154"
HEIGHT="277"></TD>
<TD><P ALIGN=Center>
<IMG src="../../_images/ffi-caret.png" ALT="ffi after adjusting ligature carets" WIDTH="154"
HEIGHT="277"></TD>
</TR>
<tr valign="Top">
<td>Über den Dialog des Befehls
<a href="../../ui/menus/elementmenu.html#CharInfo">Element ->Zeicheninformation</a>
wird das Zeichen benannt und als Ligatur gekennzeichnet.
Mit <a href="../../ui/menus/elementmenu.html#Accented">Element -> Erzeugen -> Zusammengesetzt erzeugen</a>
werden die Referenzen zu den Ligaturkomponenten eingefügt.</td>
<td>Mit Hilfe des Befehls
<a href="../../ui/menus/editmenu.html#Unlink">Bearbeiten-> Referenzen trennen</A>
werden die Referenzen in Konturen umgewandelt.
</td>
<td>
Die Komponenten werden so angepasst, daß ihr gemeinsames Erscheinungsbild
besser aussieht. In diesem Fall wurde der Stamm des ersten "f" ein wenig
verkürzt.
</td>
<td>
Mit <a href="../../ui/menus/elementmenu.html#Remove">Element -> Überlappungen entfernen</A>
wird das Zeichen bereinigt.
</td>
<td>
Zum Schluss werden die Ligatur-Textmarkierungs-Linien vom Ursprung zu den entsprechenden
Stellen zwischen den einzelnen Komponenten gezogen.
</td>
</tr>
</table>
</p>
<p>
Einige Textverabeitungsprogramme erlauben es, die Textmarkierung innerhalb
einer Ligatur zu positionieren (mit einer Position zwischen jeder Komponente
der Ligatur). Das hat den Vorteil, daß der Benutzer einer Textverarbeitung
nicht zu wissen braucht, daß er/sie es mit einer Ligatur zu tun hat und
sondern stattdessen so gearbeitet werden kann, als wenn die Komponenten
einzeln vorliegen.
Wenn die Textverarbeitung damit umgehen soll, muss der Schriftgestalter
Zusatzinformation bereitstellen, um die Textmarkierung an die richtigen
Stellen zu setzen.
Wenn FontForge weiß, daß es sich bei dem Zeichen um eine Ligatur handelt,
werden genügend Textmarkierungslinien erzeugt, um diese zwischen die
Einzelkomponenten setzen zu können. Diese werden in den Ursprung gesetzt,
und wenn sie dort gelassen werden, ignoriert FontForge diese. Im
Normalfall ist es allerdings empfehlenswert, mit Hilfe des Selektionswerkzeugs
die Textmarkierungslinien vom Ursprung zu den jeweiligen Positionen
zu verschieben (wird lediglich von TrueType und OpenType unterstützt).
</p>
<p>
<font color="red"><strong><big>Warnung: </big></strong></font>
OpenType-Engines verwenden nur solche Features, von denen sie
glauben, daß sie für die aktuelle Schrift relevant sind (für
lateinischen Schriften verwendet Uniscribe 'liga').
Schlimmer noch, einige Anwendungen unterstützen u.U. diese
Funktionen überhaupt nicht (Word unterstützt keine Ligaturen für Latein).
<a href="http://www.microsoft.com/typography/specs/default.htm">Microsoft
versucht zu dokumentieren</a> welche Eigenschaften für welche Schriften in Uniscribe
zur Anwendung kommen, allerdings ist dies wenig hilfreich, da sich Word und Office
nicht standardkonform verhalten.
</p>
<p>
Für indische Schriften werden viele Ligaturen benötigt, allerdings
stellt Unicode für diese keine Kodierung zur Verfügung. Wenn eine
Ligatur erstellt werden soll, die nicht Bestandteil von Unicode
ist, ist dies trotzdem möglich.
Dafür muß zunächst ein
<a href="../../faq.html#new-name">unkodiertes Zeichen erstellt</a>
(oder wenn der Schriftsatz ein Unicode-Font ist, kann ein Codepunkt
in dem Codebereich für die private Nutzung gewählt werden) und
das Zeichen benannt werden. Der Name ist wichtig, da FontForge
bei korrekter Bennenung erkennen kann, daß es sich um eine Ligatur
handelt und aus welchen Komponenten sie zusammengesetzt ist.
Wenn beispielsweise eine Ligatur aus den Zeichen "longs", "longs"
und "l" erstellt werden soll, sollte der Name "longs_longs_l" sein,
wenn die Ligatur aus den Unicode-Zeichen 0D15, 0D4D und 0D15
bestehen soll, dann sollte das Zeichen "uni0D15_uni0D4D_uni0D15"
genannt werden.
</p>
<p>
Nach der Benennung der Ligatur und dem Einfügen der Komponenten
(mit "Zusammengesetzt erzeugen"), kann das Zeichen zur Bearbeitung
geöffnet werden, die <a href="../../ui/menus/editmenu.html#Unlink">Referenzen getrennt</A>
und dann wie im obigen Beispiel gezeigt in die gewünschte Form gebracht
werden.
</p>
<p>
<IMG src="../../_images/charinfo-akhn.png" WIDTH="307" HEIGHT="401" ALT="Char Info for Akhand ligature type"
ALIGN="Right">
Abschliessend sollte überprüft werden, ob das Zeichen als Ligatur
markiert wurde (und die richtige Art von Ligatur).
Mit <a href="../../ui/dialogs/charinfo.html#ligature">Element->Zeicheninformation->Ligatur</A>
wird der Ligaturdialog geöffnet. Zu sehen sein sollte etwas wie:<br>
<tt> liga m longs longs l</tt><br>
oder <br>
<tt> liga m uni0D15 uni0D4D uni0D15</tt><br>
Im ersten Fall kann eine zusätzliche Zeile durch Klicken des
"Neu..."-Knopfes erzeugt werden:
<tt> liga m longs_longs l</tt><br>
(unter der Annahme, daß bereits eine longs_longs ligatur existiert).
Im zweiten Fall könnte die Zeile ausgewählt werden, und nach
Klick auf den "Bearbeiten..."-Knopf der Ligaturtyp von
"liga" zu "akhn" geädert werden (ich weiss selbst nicht genug über
indische Schriften, um diese Unterscheidung zu verstehen), so
daß hinterher folgende Zeile angezeigt wird:<br>
<tt> akhn m uni0D15 uni0D4D uni0D15</tt>
</p>
<P>
</p>
<P>
</p>
<p align="center">
-- <a href="editexample3.html">Vorherige Seite</a> -- <a href="../../index.html">Inhalt</A>
-- <a href="editexample5.html">Nächste Seite</a> --
</p>
</div>
</body></html>
|