Fonts¶
Gisaf uses a custom font for symbols: GisafSymbols
.
This same font is used in 2 different ways:
1. as normal font for the web interface, using css: eg, the symbols for the layer list.
1. for mapbox: Mapbox's rendering uses a WebGL component with its own specification, so the font needs to be converted (see below).
Creation and update of characters¶
The main font file is created with BirdFont, and is in the git repository: gisaf-app/src/assets/fonts/gisafSymbols.bf
.
It is then exported as ttf in Birdfont.
Some symbols (e.g. service tree) do not completely show the linework in Birdfont: it is just a problem of visualization according to the zoom level in Birdfont, not in Gisaf. To resolve, it just needs a small re-scalingo f the symbol in Birdfont, and it will show entirely.
Mapping of characters¶
Each character for a layer has a unicode number, which needs to be mapped to the layer it represents.
Mapbox¶
Create the Mapbox "font"¶
Mapbox uses it's own symbol format, embedded in protobuf files.
To build it from the ttf file, run the following in the gisaf-app
directory:
./node_modules/.bin/build-glyphs src/assets/fonts/GisafSymbols.ttf src/assets/fonts/glyphs/GisafSymbols/
Note: build-glyphs
is from Mapbox's fontnik
, which is in NPM dev dependency. Ref: https://github.com/mapbox/node-fontnik
Custom models¶
The Unicode is defined in the symbols
class attribute of the model.
For category-based models¶
The Unicode is defined in the symbol
column of the category table.
The script set_mapbox_icons_from_css.py
changes all the categories automatically. Note: Gisaf needs to be restarted afterwards.
It can also be set in the Gisaf admin, but's very tricky because one would need to copy/paste the exact unicode character.