\documentclass[a4paper,titlepage]{article}
\usepackage{umlaut,german,graphicx,fancyheadings,textcomp}
\pagestyle{fancy}



\lhead{Erstellung von (ZV-AUT-konformen) Symbolen für den UMN MapServer/MapServer Cheetah mittels FontForge}
%\rhead{}
%\chead{}
\setlength{\headwidth}{17cm}
\setlength{\parindent}{0em}
\setlength{\headsep}{1cm}
\setlength{\voffset}{-1cm}
% \glqq Anführungszeichen.

%\usepackage{german}
%\usepackage[latin1]{inputenc}

\usepackage[a4paper,top=2cm,left=2cm,right=2cm,bottom=0cm]{geometry}

\begin{document}
\begin{titlepage}
\normalsize Autor: Dipl-Geogr. Kai Behncke\\\\
Datum: Dezember 2005\\\\
E-mail: Kai-Behncke@gmx.de\\\\\\



\begin{center} 
\huge Anleitungsskript\\[3cm]

\end{center}

\begin{center}
\Huge Erstellung von (ZV-AUT-konformen) Symbolen für den UMN MapServer/MapServer Cheetah mittels
FontForge
\end{center}



\end{titlepage}
\section{Einleitung}
Dieses Skript soll all jenen eine Hilfe sein, welche sich mit der Entwicklung von Symbolen
für den UMN MapServer beschäftigen. 
Zwar bezieht sich dieses im Schwerpunkt auf die Erstellung von
Symbolen orientiert an den Vorschriften für das automatisierte Zeichnen der Liegenschaftskarte in Nordrhein-Westfalen (ZV-AUT),
kann jedoch selbstverständlich auch unabhängig davon eine Hilfe sein.
Es richtet sich letztlich an Personen, welche eigene TrueType-Font-Symbole erstellen möchten.
In dieser Anleitung geht es nicht darum, FontForge umfassend zu erklären (dafür gibt es gute Dokumentationen), es
wird lediglich eine kurze Einführung gegeben.\\
Die Anleitung stammt aus eigenen
Erfahrungen sowie aus Anregungen aus den folgenden Quellen:

\begin{itemize}
\item Dokumentation zur Nutzung des Font Creator in Verbindung mit der
Symbolerstellung für eine ALK-ZV-AUT konforme Darstellung der Symbole und
Signaturen im Mapbender \\ (http://prdownloads.sourceforge.net/mapbender/Dokumentation\_Font\_Creator.sxw?download)
\item Dokumentation zu FontForge (http://fontforge.sourceforge.net/overview.html)
\item Archiv der FontForge-mailinglist (http://sourceforge.net/mailarchive/forum.php?forum=fontforge-users)
\item Dokumentation zur Symbolerstellung mittels des UMN MapServers 
\\ (http://www.mapmedia.de/dokumente/umn\_signaturen\_howto/index.html)
\item Im Rahmen eines Praktikums viel Input von den netten MitarbeiterInnen der \glqq Intevation GmbH\grqq (welchen an dieser Stelle
noch einmal gesondert gedankt werden soll)
\end{itemize}


Bekannterweise können mittels des UMN MapServers Symbole verschiedenartig dargestellt werden.
Diese können in der Symboldatei als TYPE VECTOR, ELLIPSE, CARTOLINE (zusätzliche Konstruktionsmöglichkeit für Liniensignaturen),
PIXMAP (Grafik), SIMPLE, HATCH (Schraffuren) oder TRUETYPE definiert werden.
Mittels der Implikation von TrueType-Fonts können nahezu alle Symbole, die man sich wünscht, im UMN MapServer dargestellt werden.
\section {FontForge}

FontForge ist ein Fonterstellungsprogramm welches von der Seite\\ \glqq
http://sourceforge.net/project/showfiles.php?group\_id=103338\grqq \space
heruntergeladen werden kann.\\
Um einen Font zu erstellen, starten Sie das Programm und erstellen eine neue Datei (Datei -$>$ Neu).
Anschließend legen Sie die Kodierung fest (Encoding -$>$ Force Encoding -$>$ (z.B.) Unicode, BMP).
Wenn Sie dann in der Übersicht auf eines der leeren Felder klicken, dann öffnet sich der Fonterstellungsmodus und folgendes Fenster
erscheint:\\
\textbf{Abbildung 1: Fonterstellungsumgebung in FontForge}\\
\includegraphics{fontforge.png}\\


Das Font erstellen Sie auf der Ebene des Em-squares (rechtes Fenster der Abbildung 1).\\
Hierzu einige grundsätzliche Äußerungen:\\
Erstellt man in einem Fonterstellungsprogramm ein Symbol, so arbeitet man in einem Koordinatensystem (Em-square).
In diesem wird festgelegt, wie viele Punkte oder besser: \glqq Abstufungen\grqq \space sich darin befinden (z.B. 1000, 1024, 2048).
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 
Symbolgröße.\\

Nach Anleitung durch die FontForge-Dokumentation
(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
(einzustellen unter Element -$>$ Font Info -$>$ General).\\


Es ist innerhalb des Em-squares nun möglich, ein Symbol über die Tools zu erstellen (diese sind im Wesentlichen selbsterklärend).
Besonders sinnvoll für die Symbolerstellung ist im Menü die Option des Transformierens (Element -$>$  Transformations -$>$ Transform).
Hier gibt es z.B. die Möglichkeit, Symbole bzw. Symbolteile zu bewegen, zu skalieren oder zu drehen.
In der Praxis werden sie diese Möglichkeiten zu schätzen wissen.\\

Nachdem dann ein Symbol kreiert wurde, muss dann der Font erstellt werden (Datei -$>$ Generate Fonts (und dann natürlich als *.ttf
abspeichern)).
Der Font (bzw. dessen Symbole) können dann im MapServer verwendet werden.

\section {ZV-AUT-entsprechende Anforderungen an Symbole und praktisches Vorgehen}

Wer sich mit der ZV-AUT auseinandersetzt, weiß, dass deren Vorschriften sehr genau und präzise sind.
So werden Linienwerte teilweise auf hundertstel Millimeter genau angegeben (z.B. Linienbreite 2 = 0,18 mm).
Auch gibt es zahlreiche Symbole, deren millimetergenaue Darstellung durchaus anspruchsvoll ist (siehe Abbildung 2).\\

\textbf{Abbildung 2: OS 3923 aus Folie 082 der ZV-AUT}\\
\framebox{\includegraphics{laufkran1.png}}\\

Dieses Symbol z.B. stammt aus Folie 082 der ZV-AUT (OS 3923) und soll eine Liniendicke von 0,18 mm, eine Gesamtlänge
von 20 mm (5*4 mm) und eine Höhe von 2,5 mm aufweisen.

Innerhalb der ZV-AUT werden die Symbolgrößen im Normalfall in der Spalte \glqq Durchmesser, Seitenlänge\grqq \space angegeben.
Zusätzlich bzw. anstelle dessen findet jedoch auch teilweise eine Größendeklarierung am Symbol selber statt.
Hier ist allerdings zu betonen, dass oftmals nur Teilbereiche des Symbols definiert werden.
Es gilt darauf zu achten, dass die Proportionen des Symbols letztlich in Bezug auf die Gesamtdarstellung erhalten bleiben.\\

Die entscheidende Frage ist, mit welchen Größenangaben die Symbole letztlich in FontForge erstellt und dann im MapServer
dargestellt werden.\\

Bekannt ist, dass der UMN MapSever seine Symbole in Pixeln darstellt.\\
Standardmäßig werden 72 Pixel pro Inch dargestellt (1 inch = 2,54 cm), also
genau 28,3464566929... Pixel pro cm.

Will man also im Mapfile einem Symbol die Größe von 1 cm geben, so muss die SIZE-Angabe im Mapfile bei 28,3464566929...
(für 0,5 cm: 14.17322834645...; für 0.2 cm: 5.6692913386....; etc.) liegen.\\
Für die Darstellung der Symbole auf einer Karte im Browser ist das irrelevant, da SIZE-angaben standardmäßig
als Integer-Wert übernommen werden (und Größendarstellung in einem Internetbrowser natürlich auch immer von der Bildschirgröße und -auflösung
abhängt).\\
Will man jedoch einen ZV-AUT-konformen Druck gewährleisten, so ist es wichtig, die Nachkommastellen zu erhalten.
Mittels eines eigens für den Druck geschriebenen Skriptes können dann die Nachkommastellen berücksichtigt werden
und im Druck genaue Werte erstellen.\\


Nun bleibt noch die Frage zu klären, wie groß ein Symbol in FontForge erstellt werden muss, bzw. mit welchen Einheiten hier gearbeitet
wird.\\
In der Dokumentation zur Nutzung des Font Creator in Verbindung mit der
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 
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
(units) gearbeitet).\\Ich habe letztlich genau die selben Werte ermittelt,
letztlich allerdings mit einem globalen Em-Wert von 2048 Einheiten gearbeitet, so dass die
Werte  hoch skaliert werden. 741,36 Em-units entsprechen dann 1518,30 Einheiten.\\
Dass dieses in Bezug auf die tatsächliche Ausgabegröße ohne Relevanz ist dürfte klar geworden sein.
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
1000 hat.
\\

\textbf{Abbildung 3: OS 3195 aus Folie 082 der ZV-AUT in FontForge}\\
\includegraphics{zeichen.png}\\


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.\\
In der Abbildung erkennt man, dass das Symbol im Em-square in der Horizontalen 1518 Em-units breit ist (genau genommen 1518,30).
Die Länge in der Vertikalen besitzt natürlich den selben Wert.
Die Linienbreite weist eine Länge von 45,549 Em-units auf.\\
\\
\\Die Liniendicke errechnet man mit einem ganz einfachen Dreisatz.
Wenn man weiß, dass das Symbol letztlich 6 mm Durchmesser haben soll und dieser durch 1518,30 Em-units verortet wird, so soll
die Linie bei einer geforderten Dicke von 0,18 mm insgesamt x Em-units aufweisen, also:\\

%\begin{displaymath}
 \[x=\frac{0.18*1518.30}{6}\]

%\end{displaymath}

Es gilt hier aufzupassen: Die Ausgabegröße des Symbols wird ja letztlich  über den SIZE-Wert im Mapfile definiert (hier wäre das also
ein Wert von 17.007874....).\\\\
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
\glqq Symbolwolken\grqq (wie z.B. dem OS 7894 aus Folie 021 (Gartenland, siehe Abbildung 4))) diese Ausdehnung zu verkleinern und dafür im
selben Verhältnis den SIZE-Wert zu erhöhen.\\

\textbf{Abbildung 4: OS 7894 aus Folie 021 der ZV-AUT}\\
\framebox{\includegraphics{gartenland.png}}\\

Wie bereits erwähnt gibt es an einem Symbol für verschiedene Bereiche teilweise auch verschiedene Größendeklarationen.
Diese Größen beziehen sich auf Komponenten in horizontaler und vertikaler Ausdehung.
Es ist zu empfehlen, wie auch in der bereits oben zitierten Dokumentation (Font Creator \& ZV-AUT) geschildert, eine 
Hierarchisierung der Größenangaben durchzuführen, heißt: es wird zuerst den horizontal verlaufenden Größenangaben gefolgt und dann den
vertikal verlaufenden. Dieses bewirkt ein eindeutiges, klares Vorgehen bei der Symbolerstellung.\\

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
belegt werden, dieses kann natürlich dann letztlich dazu führen, dass ein erstelltes Symbol sehr groß wird (siehe Abbildung 5).\\\\\\\\
\textbf{Abbildung 5: OS 3923 aus Folie 082 der ZV-AUT}\\
\includegraphics{laufkran2.png}\\


In Abbildung 5 erkennt man, dass das Gesamtsymbol eine Breite von 7632 Em-units aufweist.\\
Die Komponente, welche in der ZV-AUT eine feste Größenangabe erhalten hat (siehe Abbildung 2) soll ja 4 mm breit sein.\\
Dieser definierte Wert wird in FontForge auf 1518,30 Em-units gesetzt, die Umgebung inklusive der Linien in Relation angepaßt (so entsteht
die enorme Breite des Symbols) und das ganze im Mapfile dann mit dem SIZE-Wert 11.338582677... belegt.
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,
was man haben will).\\

Ein leicht zu übersehender \glqq Fallstrick\grqq \space entsteht in der ZV-AUT dadurch, dass von der Form \glqq gleiche\grqq \space Symbole
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
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
einen Durchmesser von 2,5 mm an).\\

\textbf{Abbildung 6: OS 0118 aus Folie 052 der ZV-AUT}\\
\framebox{\includegraphics{abgemarkter-grenzpunkt.png}}\\


\textbf{Abbildung 7: OS 8011 aus Folie 082 der ZV-AUT}\\
\framebox{\includegraphics{quelle.png}}\\


Hier kann man leicht auf den Gedanken kommen, ein und dasselbe Symbol (hier der Kreis) im Mapfile mit unterschiedlichen SIZE-Werten zu belegen (einmal
mit 4.251968.... und einmal mit 7.0866141....).\\ Jedoch ist zu bedenken, dass dann auch die Breite der Außenlinie (welche ja bei beiden
Symbolen absolut bei 0,18 mm liegen soll) mitskaliert; die Relationen würden sich also verändern.
Es gilt hier erneut mittels des Dreisatzes (siehe oben) die Em-units der Außenlinie zu ermitteln (der Durchmesser der beiden Symbole dann
liegt selbstverständlich jeweils bei 1518,30 Em-units).\\
Auch wenn generell eine Abweichung von ca. 15 Em-units aufgrund der geringen Größe keinerlei Auswirkungen auf die Darstellung hat, so
gilt es selbstverständlich doch, so genau wie möglich zu arbeiten.\\\\

Link zum Projekt Free-ZVAUT: http://wald.intevation.org/projects/freezvaut/




\end{document}





