1 |
\documentclass[a4paper,titlepage]{article} |
2 |
\usepackage{umlaut,german,graphicx,fancyheadings,textcomp} |
3 |
\pagestyle{fancy} |
4 |
|
5 |
|
6 |
|
7 |
\lhead{Erstellung von (ZV-AUT-konformen) Symbolen für den UMN MapServer/MapServer Cheetah mittels FontForge} |
8 |
%\rhead{} |
9 |
%\chead{} |
10 |
\setlength{\headwidth}{17cm} |
11 |
\setlength{\parindent}{0em} |
12 |
\setlength{\headsep}{1cm} |
13 |
\setlength{\voffset}{-1cm} |
14 |
% \glqq Anführungszeichen. |
15 |
|
16 |
%\usepackage{german} |
17 |
%\usepackage[latin1]{inputenc} |
18 |
|
19 |
\usepackage[a4paper,top=2cm,left=2cm,right=2cm,bottom=0cm]{geometry} |
20 |
|
21 |
\begin{document} |
22 |
\begin{titlepage} |
23 |
\normalsize Autor: Dipl-Geogr. Kai Behncke\\\\ |
24 |
Datum: Dezember 2005\\\\ |
25 |
E-mail: [email protected]\\\\\\ |
26 |
|
27 |
|
28 |
|
29 |
\begin{center} |
30 |
\huge Anleitungsskript\\[3cm] |
31 |
|
32 |
\end{center} |
33 |
|
34 |
\begin{center} |
35 |
\Huge Erstellung von (ZV-AUT-konformen) Symbolen für den UMN MapServer/MapServer Cheetah mittels |
36 |
FontForge |
37 |
\end{center} |
38 |
|
39 |
|
40 |
|
41 |
\end{titlepage} |
42 |
\section{Einleitung} |
43 |
Dieses Skript soll all jenen eine Hilfe sein, welche sich mit der Entwicklung von Symbolen |
44 |
für den UMN MapServer beschäftigen. |
45 |
Zwar bezieht sich dieses im Schwerpunkt auf die Erstellung von |
46 |
Symbolen orientiert an den Vorschriften für das automatisierte Zeichnen der Liegenschaftskarte in Nordrhein-Westfalen (ZV-AUT), |
47 |
kann jedoch selbstverständlich auch unabhängig davon eine Hilfe sein. |
48 |
Es richtet sich letztlich an Personen, welche eigene TrueType-Font-Symbole erstellen möchten. |
49 |
In dieser Anleitung geht es nicht darum, FontForge umfassend zu erklären (dafür gibt es gute Dokumentationen), es |
50 |
wird lediglich eine kurze Einführung gegeben.\\ |
51 |
Die Anleitung stammt aus eigenen |
52 |
Erfahrungen sowie aus Anregungen aus den folgenden Quellen: |
53 |
|
54 |
\begin{itemize} |
55 |
\item Dokumentation zur Nutzung des Font Creator in Verbindung mit der |
56 |
Symbolerstellung für eine ALK-ZV-AUT konforme Darstellung der Symbole und |
57 |
Signaturen im Mapbender \\ (http://prdownloads.sourceforge.net/mapbender/Dokumentation\_Font\_Creator.sxw?download) |
58 |
\item Dokumentation zu FontForge (http://fontforge.sourceforge.net/overview.html) |
59 |
\item Archiv der FontForge-mailinglist (http://sourceforge.net/mailarchive/forum.php?forum=fontforge-users) |
60 |
\item Dokumentation zur Symbolerstellung mittels des UMN MapServers |
61 |
\\ (http://www.mapmedia.de/dokumente/umn\_signaturen\_howto/index.html) |
62 |
\item Im Rahmen eines Praktikums viel Input von den netten MitarbeiterInnen der \glqq Intevation GmbH\grqq (welchen an dieser Stelle |
63 |
noch einmal gesondert gedankt werden soll) |
64 |
\end{itemize} |
65 |
|
66 |
|
67 |
Bekannterweise können mittels des UMN MapServers Symbole verschiedenartig dargestellt werden. |
68 |
Diese können in der Symboldatei als TYPE VECTOR, ELLIPSE, CARTOLINE (zusätzliche Konstruktionsmöglichkeit für Liniensignaturen), |
69 |
PIXMAP (Grafik), SIMPLE, HATCH (Schraffuren) oder TRUETYPE definiert werden. |
70 |
Mittels der Implikation von TrueType-Fonts können nahezu alle Symbole, die man sich wünscht, im UMN MapServer dargestellt werden. |
71 |
\section {FontForge} |
72 |
|
73 |
FontForge ist ein Fonterstellungsprogramm welches von der Seite\\ \glqq |
74 |
http://sourceforge.net/project/showfiles.php?group\_id=103338\grqq \space |
75 |
heruntergeladen werden kann.\\ |
76 |
Um einen Font zu erstellen, starten Sie das Programm und erstellen eine neue Datei (Datei -$>$ Neu). |
77 |
Anschließend legen Sie die Kodierung fest (Encoding -$>$ Force Encoding -$>$ (z.B.) Unicode, BMP). |
78 |
Wenn Sie dann in der Übersicht auf eines der leeren Felder klicken, dann öffnet sich der Fonterstellungsmodus und folgendes Fenster |
79 |
erscheint:\\ |
80 |
\textbf{Abbildung 1: Fonterstellungsumgebung in FontForge}\\ |
81 |
\includegraphics{fontforge.png}\\ |
82 |
|
83 |
|
84 |
Das Font erstellen Sie auf der Ebene des Em-squares (rechtes Fenster der Abbildung 1).\\ |
85 |
Hierzu einige grundsätzliche Äußerungen:\\ |
86 |
Erstellt man in einem Fonterstellungsprogramm ein Symbol, so arbeitet man in einem Koordinatensystem (Em-square). |
87 |
In diesem wird festgelegt, wie viele Punkte oder besser: \glqq Abstufungen\grqq \space sich darin befinden (z.B. 1000, 1024, 2048). |
88 |
In Bezug auf die Größe des auszugebenden Symbols hat der Em-square (auch: Em-Wert) keine Relevanz, was aber DARIN passiert bestimmt natürlich sehr wohl die |
89 |
Symbolgröße.\\ |
90 |
|
91 |
Nach Anleitung durch die FontForge-Dokumentation |
92 |
(http://fontforge.sourceforge.net/fontinfo.html\#PS-General) wird für die Erstellung von TrueType-Fonts mit einem globalen Em-Wert von 2048 Einheiten gearbeitet |
93 |
(einzustellen unter Element -$>$ Font Info -$>$ General).\\ |
94 |
|
95 |
|
96 |
Es ist innerhalb des Em-squares nun möglich, ein Symbol über die Tools zu erstellen (diese sind im Wesentlichen selbsterklärend). |
97 |
Besonders sinnvoll für die Symbolerstellung ist im Menü die Option des Transformierens (Element -$>$ Transformations -$>$ Transform). |
98 |
Hier gibt es z.B. die Möglichkeit, Symbole bzw. Symbolteile zu bewegen, zu skalieren oder zu drehen. |
99 |
In der Praxis werden sie diese Möglichkeiten zu schätzen wissen.\\ |
100 |
|
101 |
Nachdem dann ein Symbol kreiert wurde, muss dann der Font erstellt werden (Datei -$>$ Generate Fonts (und dann natürlich als *.ttf |
102 |
abspeichern)). |
103 |
Der Font (bzw. dessen Symbole) können dann im MapServer verwendet werden. |
104 |
|
105 |
\section {ZV-AUT-entsprechende Anforderungen an Symbole und praktisches Vorgehen} |
106 |
|
107 |
Wer sich mit der ZV-AUT auseinandersetzt, weiß, dass deren Vorschriften sehr genau und präzise sind. |
108 |
So werden Linienwerte teilweise auf hundertstel Millimeter genau angegeben (z.B. Linienbreite 2 = 0,18 mm). |
109 |
Auch gibt es zahlreiche Symbole, deren millimetergenaue Darstellung durchaus anspruchsvoll ist (siehe Abbildung 2).\\ |
110 |
|
111 |
\textbf{Abbildung 2: OS 3923 aus Folie 082 der ZV-AUT}\\ |
112 |
\framebox{\includegraphics{laufkran1.png}}\\ |
113 |
|
114 |
Dieses Symbol z.B. stammt aus Folie 082 der ZV-AUT (OS 3923) und soll eine Liniendicke von 0,18 mm, eine Gesamtlänge |
115 |
von 20 mm (5*4 mm) und eine Höhe von 2,5 mm aufweisen. |
116 |
|
117 |
Innerhalb der ZV-AUT werden die Symbolgrößen im Normalfall in der Spalte \glqq Durchmesser, Seitenlänge\grqq \space angegeben. |
118 |
Zusätzlich bzw. anstelle dessen findet jedoch auch teilweise eine Größendeklarierung am Symbol selber statt. |
119 |
Hier ist allerdings zu betonen, dass oftmals nur Teilbereiche des Symbols definiert werden. |
120 |
Es gilt darauf zu achten, dass die Proportionen des Symbols letztlich in Bezug auf die Gesamtdarstellung erhalten bleiben.\\ |
121 |
|
122 |
Die entscheidende Frage ist, mit welchen Größenangaben die Symbole letztlich in FontForge erstellt und dann im MapServer |
123 |
dargestellt werden.\\ |
124 |
|
125 |
Bekannt ist, dass der UMN MapSever seine Symbole in Pixeln darstellt.\\ |
126 |
Standardmäßig werden 72 Pixel pro Inch dargestellt (1 inch = 2,54 cm), also |
127 |
genau 28,3464566929... Pixel pro cm. |
128 |
|
129 |
Will man also im Mapfile einem Symbol die Größe von 1 cm geben, so muss die SIZE-Angabe im Mapfile bei 28,3464566929... |
130 |
(für 0,5 cm: 14.17322834645...; für 0.2 cm: 5.6692913386....; etc.) liegen.\\ |
131 |
Für die Darstellung der Symbole auf einer Karte im Browser ist das irrelevant, da SIZE-angaben standardmäßig |
132 |
als Integer-Wert übernommen werden (und Größendarstellung in einem Internetbrowser natürlich auch immer von der Bildschirgröße und -auflösung |
133 |
abhängt).\\ |
134 |
Will man jedoch einen ZV-AUT-konformen Druck gewährleisten, so ist es wichtig, die Nachkommastellen zu erhalten. |
135 |
Mittels eines eigens für den Druck geschriebenen Skriptes können dann die Nachkommastellen berücksichtigt werden |
136 |
und im Druck genaue Werte erstellen.\\ |
137 |
|
138 |
|
139 |
Nun bleibt noch die Frage zu klären, wie groß ein Symbol in FontForge erstellt werden muss, bzw. mit welchen Einheiten hier gearbeitet |
140 |
wird.\\ |
141 |
In der Dokumentation zur Nutzung des Font Creator in Verbindung mit der |
142 |
Symbolerstellung für eine ALK-ZV-AUT konforme Darstellung (siehe oben) ist zu lesen, dass einem Objekt für einen Druck von 8 mm der SIZE-wert von 22.6771653543...zuzuschreiben ist |
143 |
und das Objekt im \glqq Fontcreator\grqq eine Ausdehung von 741,36 em-units hat (hier wird mit einem globalen Em-Wert von 1000 Einheiten |
144 |
(units) gearbeitet).\\Ich habe letztlich genau die selben Werte ermittelt, |
145 |
letztlich allerdings mit einem globalen Em-Wert von 2048 Einheiten gearbeitet, so dass die |
146 |
Werte hoch skaliert werden. 741,36 Em-units entsprechen dann 1518,30 Einheiten.\\ |
147 |
Dass dieses in Bezug auf die tatsächliche Ausgabegröße ohne Relevanz ist dürfte klar geworden sein. |
148 |
Ein Symbol, welches 1000 Em-units bei einem EM-Wert von 2000 hat, wäre genauso groß, wie ein Zeichen, das 500 Einheiten bei einem EM-Wert von |
149 |
1000 hat. |
150 |
\\ |
151 |
|
152 |
\textbf{Abbildung 3: OS 3195 aus Folie 082 der ZV-AUT in FontForge}\\ |
153 |
\includegraphics{zeichen.png}\\ |
154 |
|
155 |
|
156 |
Die ZV-AUT-Vorgabe zu dem Symbol aus Abbildung 3 sagt, dass es einen Durchmesser von 6 mm und eine Liniendicke von 1,8 mm haben soll.\\ |
157 |
In der Abbildung erkennt man, dass das Symbol im Em-square in der Horizontalen 1518 Em-units breit ist (genau genommen 1518,30). |
158 |
Die Länge in der Vertikalen besitzt natürlich den selben Wert. |
159 |
Die Linienbreite weist eine Länge von 45,549 Em-units auf.\\ |
160 |
\\ |
161 |
\\Die Liniendicke errechnet man mit einem ganz einfachen Dreisatz. |
162 |
Wenn man weiß, dass das Symbol letztlich 6 mm Durchmesser haben soll und dieser durch 1518,30 Em-units verortet wird, so soll |
163 |
die Linie bei einer geforderten Dicke von 0,18 mm insgesamt x Em-units aufweisen, also:\\ |
164 |
|
165 |
%\begin{displaymath} |
166 |
\[x=\frac{0.18*1518.30}{6}\] |
167 |
|
168 |
%\end{displaymath} |
169 |
|
170 |
Es gilt hier aufzupassen: Die Ausgabegröße des Symbols wird ja letztlich über den SIZE-Wert im Mapfile definiert (hier wäre das also |
171 |
ein Wert von 17.007874....).\\\\ |
172 |
Der mit einer Größe definierte Bereich sollte dann im Em-square von FontForge 1518,30 units breit sein (denkbar ist es natürlich bei |
173 |
\glqq Symbolwolken\grqq (wie z.B. dem OS 7894 aus Folie 021 (Gartenland, siehe Abbildung 4))) diese Ausdehnung zu verkleinern und dafür im |
174 |
selben Verhältnis den SIZE-Wert zu erhöhen.\\ |
175 |
|
176 |
\textbf{Abbildung 4: OS 7894 aus Folie 021 der ZV-AUT}\\ |
177 |
\framebox{\includegraphics{gartenland.png}}\\ |
178 |
|
179 |
Wie bereits erwähnt gibt es an einem Symbol für verschiedene Bereiche teilweise auch verschiedene Größendeklarationen. |
180 |
Diese Größen beziehen sich auf Komponenten in horizontaler und vertikaler Ausdehung. |
181 |
Es ist zu empfehlen, wie auch in der bereits oben zitierten Dokumentation (Font Creator \& ZV-AUT) geschildert, eine |
182 |
Hierarchisierung der Größenangaben durchzuführen, heißt: es wird zuerst den horizontal verlaufenden Größenangaben gefolgt und dann den |
183 |
vertikal verlaufenden. Dieses bewirkt ein eindeutiges, klares Vorgehen bei der Symbolerstellung.\\ |
184 |
|
185 |
Für den Fall dass bei einem Symbol ein Teilausschnitt definiert wird, sollte dieser Teilausschnitt im Em-square mit dem Wert von 1518,30 units |
186 |
belegt werden, dieses kann natürlich dann letztlich dazu führen, dass ein erstelltes Symbol sehr groß wird (siehe Abbildung 5).\\\\\\\\ |
187 |
\textbf{Abbildung 5: OS 3923 aus Folie 082 der ZV-AUT}\\ |
188 |
\includegraphics{laufkran2.png}\\ |
189 |
|
190 |
|
191 |
In Abbildung 5 erkennt man, dass das Gesamtsymbol eine Breite von 7632 Em-units aufweist.\\ |
192 |
Die Komponente, welche in der ZV-AUT eine feste Größenangabe erhalten hat (siehe Abbildung 2) soll ja 4 mm breit sein.\\ |
193 |
Dieser definierte Wert wird in FontForge auf 1518,30 Em-units gesetzt, die Umgebung inklusive der Linien in Relation angepaßt (so entsteht |
194 |
die enorme Breite des Symbols) und das ganze im Mapfile dann mit dem SIZE-Wert 11.338582677... belegt. |
195 |
In der Ausgabe ist dann die definierte Komponente logischerweise 4 mm breit und das ganze Symbol weist eine Breite von 20 mm auf (genau das, |
196 |
was man haben will).\\ |
197 |
|
198 |
Ein leicht zu übersehender \glqq Fallstrick\grqq \space entsteht in der ZV-AUT dadurch, dass von der Form \glqq gleiche\grqq \space Symbole |
199 |
unterschiedliche Größen aufweisen; so z.B. OS 0118, Folie 052: \glqq Abgemarkter Grenzpunkt\grqq (siehe Abbildung 6)(soll eine Liniendicke von 0,18 mm und |
200 |
einen Durchmesser von 1,5 mm haben) und OS 8011, Folie 082 \glqq Quelle\grqq (siehe Abbildung 7)(die Vorschrift gibt eine Liniendicke von 0.18 mm und einen |
201 |
einen Durchmesser von 2,5 mm an).\\ |
202 |
|
203 |
\textbf{Abbildung 6: OS 0118 aus Folie 052 der ZV-AUT}\\ |
204 |
\framebox{\includegraphics{abgemarkter-grenzpunkt.png}}\\ |
205 |
|
206 |
|
207 |
\textbf{Abbildung 7: OS 8011 aus Folie 082 der ZV-AUT}\\ |
208 |
\framebox{\includegraphics{quelle.png}}\\ |
209 |
|
210 |
|
211 |
Hier kann man leicht auf den Gedanken kommen, ein und dasselbe Symbol (hier der Kreis) im Mapfile mit unterschiedlichen SIZE-Werten zu belegen (einmal |
212 |
mit 4.251968.... und einmal mit 7.0866141....).\\ Jedoch ist zu bedenken, dass dann auch die Breite der Außenlinie (welche ja bei beiden |
213 |
Symbolen absolut bei 0,18 mm liegen soll) mitskaliert; die Relationen würden sich also verändern. |
214 |
Es gilt hier erneut mittels des Dreisatzes (siehe oben) die Em-units der Außenlinie zu ermitteln (der Durchmesser der beiden Symbole dann |
215 |
liegt selbstverständlich jeweils bei 1518,30 Em-units).\\ |
216 |
Auch wenn generell eine Abweichung von ca. 15 Em-units aufgrund der geringen Größe keinerlei Auswirkungen auf die Darstellung hat, so |
217 |
gilt es selbstverständlich doch, so genau wie möglich zu arbeiten.\\\\ |
218 |
|
219 |
Link zum Projekt Free-ZVAUT: http://wald.intevation.org/projects/freezvaut/ |
220 |
|
221 |
|
222 |
|
223 |
|
224 |
\end{document} |
225 |
|
226 |
|
227 |
|
228 |
|
229 |
|