[Mapnik-de] Beschriftung mit name:de (name)

Max Berger max at dianacht.de
Mo Jun 23 18:31:47 CEST 2014


Am Dienstag, den 17.06.2014, 20:24 +0000 schrieb Sven Geggus:
> 
> Ich habe in der Diskussion auf der SoTM.EU ein weiteres Problem
> entdeckt. Bei Klammernamen kann es vorkommen, dass nicht lateinische
> Zeichen in Klammer stehen.
> 
> Pro Label kann aber nur ein Font verwendet werden. Das führt dazu,
> dass beim Fallback auf Unifont automatisch der lateinische Teil
> der beschriftung häßlich wird.
> 

Hi Sven,

Du hast recht, die Schrift wird hässlich, allerdings eher der nicht
lateinische Teil, sondern der exotische. Thai und benachbarte Sprachen
sehen jedenfalls deutlich uneleganter aus als auf osm.org

Ich lasse lieber die Finger von exotischen Schriften. Eigentlich kann
man dort auch das bisherige Rendern beibehalten. Die Steine des
Anstosses liegen ja in Gebieten mit lateinischer oder kyrillischer
Schrift.


In meiner Sandbox liegt jetzt ein Kartenstil, der Ortsnamen, Straßen und
"alles andere" getrennt gehandelt.

Vielleicht treffen diese Regeln ja auf Zustimmung:

* Ortsnamen werden als "Diedenhofen (Thionville)" oder "Lemberg (Львів)"
geschrieben, solange das Endonym auf Lateinisch, Griechisch oder
Kyrillisch geschrieben ist. Exotischere Schriften werden nicht
verwendet, "Rangun" und "Teheran" bleiben also ohne Klammerzusatz.

* Straßennamen werden genau so behandelt, allerdings wird da der
deutsche Teil ein bisschen gekürzt (Dr. Prof. Str.). Die Kürzung
betrifft auch Straßen in Deutschland. Falls Klammerzusätze verwendet
werden, wird auch "Gasse" nach "G." und "Platz" nach "Pl." verkürzt. Das
ist zwar hässlich, finde ich (gerade das G.), spart aber Platz.

* Gewässer werden wie Ortsnamen behandelt: "Dnjepr (Днепр)"

* Bei Bahnhöfen wird nur "name" verwendet, und auch nicht
transliteriert. Das hilft vermutlich Bahnfahrern, schadet aber den
Bahnhistorikern....

* Alles andere wird wie gewohnt behandelt. Kirchen, Kneipen, Parks,
Denkmäler und Gipfel werden also bevorzugt mit name:de ohne Endonym in
Klammern versehen. Ohne name:de wird name, name:int, name:en oder
Transliteration von name genommen.

* Sollte der name:de Teil von name sein, wird nur name:de verwendet. Ist
bei den doppelnamigen Orten und Straßen in Südtirol interessant
(name="Bressanone Brixen" und name:de"Brixen" wird zu "Brixen"), führt
gelegentlich zu unerwarteten Ergebnissen ("Mosel" steckt auch in "La
Moselle"...).


Die Eingriffe in den Stil sind nicht sehr gross, ich habe nur von
"get_name" (das was bisher schon da war), "get_placename" (Für Orte) und
"get_streetname" (für Straßen) auf die Abfragen verteilt.

Plätze, (also highway=* area=yes) hatten bisher keinen eigenen Stil, die
kamen einfach mit allen anderen Flächen mit. Die haben jetzt eigene
Regeln in osm-de.xml ("road-area-text"), damit auch die mit
get_streetname abgefragt werden. Ausserdem werden die jetzt schwarz
beschriftet wie Straßen, bisher waren die grün.

In views/get_localized_name.sql steckt die meiste Arbeit. Da gibt es
jetzt drei statt einer Funktion für die Namen, eine Funktion
"is_latinorgreek()", die von der vorhandenen "is_latin()" abgeschrieben
wurde und noch eine "abbreviation()", die Professor in Prof verwandelt.

Die Funktionen für die geklammerten Ausdrücke sind mit einen Parameter
umschaltbar, falls wir lieber "Napoli (Neapel)" wollen statt umgekehrt.


viele Grüße,
             Max