├── .gitignore
├── CHANGELOG.md
├── LICENSE.md
├── Makefile
├── OFL.txt
├── README.en.md
├── README.md
├── generate.py
├── glyphs
├── _box.svg
├── _circle.svg
├── book.svg
├── chat.svg
├── d10.svg
├── fist.svg
├── gear.svg
├── heart.svg
├── shield.svg
├── suit.svg
├── target.svg
├── time_after.svg
├── time_before.svg
├── tools.svg
└── weight.svg
├── testfont.tex
└── ttf
├── NIPAJIN-Dingbats-Bold.ttf
├── NIPAJIN-Dingbats-Italic.ttf
└── NIPAJIN-Dingbats.ttf
/.gitignore:
--------------------------------------------------------------------------------
1 | out
2 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## v1.0.1 (2015-09-19)
2 |
3 | Noteworthy changes:
4 |
5 | * split according to icon shape in regular (= no additional outline), bold (= dice boxes) and italic (= circles)
6 | * improved margins
7 | * improved relative sizes
8 | * cleaned up some shapes
9 |
10 | ## v1.0.0 (2015-09-15)
11 |
12 | Noteworthy changes:
13 |
14 | * first release
15 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | # License
2 |
3 | Copyright (c) 2015, Markus Leupold-Löwenthal (http://ludus-leonis.com/),
4 | with Reserved Font Name "NIP'AJIN Dingbats".
5 |
6 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
7 |
8 | For a complete version of this license, please refer to [OFL.txt](OFL.txt).
9 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | # (c) 2009-2015 by Markus Leupold-Löwenthal
2 | # This file is released under CC BY-SA 4.0.
3 |
4 | default: font
5 |
6 | all: font
7 |
8 | setup:
9 | mkdir -p out
10 |
11 | font: setup
12 | python generate.py
13 | cp OFL.txt out/OFL.txt
14 |
15 | test: font
16 | xelatex \
17 | -output-driver="xdvipdfmx -V 5 -z 9" \
18 | -jobname=testfont \
19 | -output-directory out testfont
20 |
21 | clean:
22 | rm -rf out/*
23 |
--------------------------------------------------------------------------------
/OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015, Markus Leupold-Löwenthal (http://ludus-leonis.com/),
2 | with Reserved Font Name "NIP'AJIN Dingbats".
3 |
4 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
5 | This license is copied below, and is also available with a FAQ at:
6 | http://scripts.sil.org/OFL
7 |
8 | -----------------------------------------------------------
9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10 | -----------------------------------------------------------
11 |
12 | PREAMBLE
13 | The goals of the Open Font License (OFL) are to stimulate worldwide
14 | development of collaborative font projects, to support the font creation
15 | efforts of academic and linguistic communities, and to provide a free and
16 | open framework in which fonts may be shared and improved in partnership
17 | with others.
18 |
19 | The OFL allows the licensed fonts to be used, studied, modified and
20 | redistributed freely as long as they are not sold by themselves. The
21 | fonts, including any derivative works, can be bundled, embedded,
22 | redistributed and/or sold with any software provided that any reserved
23 | names are not used by derivative works. The fonts and derivatives,
24 | however, cannot be released under any other type of license. The
25 | requirement for fonts to remain under this license does not apply
26 | to any document created using the fonts or their derivatives.
27 |
28 | DEFINITIONS
29 | "Font Software" refers to the set of files released by the Copyright
30 | Holder(s) under this license and clearly marked as such. This may
31 | include source files, build scripts and documentation.
32 |
33 | "Reserved Font Name" refers to any names specified as such after the
34 | copyright statement(s).
35 |
36 | "Original Version" refers to the collection of Font Software components as
37 | distributed by the Copyright Holder(s).
38 |
39 | "Modified Version" refers to any derivative made by adding to, deleting,
40 | or substituting -- in part or in whole -- any of the components of the
41 | Original Version, by changing formats or by porting the Font Software to a
42 | new environment.
43 |
44 | "Author" refers to any designer, engineer, programmer, technical
45 | writer or other person who contributed to the Font Software.
46 |
47 | PERMISSION & CONDITIONS
48 | Permission is hereby granted, free of charge, to any person obtaining
49 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
50 | redistribute, and sell modified and unmodified copies of the Font
51 | Software, subject to the following conditions:
52 |
53 | 1) Neither the Font Software nor any of its individual components,
54 | in Original or Modified Versions, may be sold by itself.
55 |
56 | 2) Original or Modified Versions of the Font Software may be bundled,
57 | redistributed and/or sold with any software, provided that each copy
58 | contains the above copyright notice and this license. These can be
59 | included either as stand-alone text files, human-readable headers or
60 | in the appropriate machine-readable metadata fields within text or
61 | binary files as long as those fields can be easily viewed by the user.
62 |
63 | 3) No Modified Version of the Font Software may use the Reserved Font
64 | Name(s) unless explicit written permission is granted by the corresponding
65 | Copyright Holder. This restriction only applies to the primary font name as
66 | presented to the users.
67 |
68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69 | Software shall not be used to promote, endorse or advertise any
70 | Modified Version, except to acknowledge the contribution(s) of the
71 | Copyright Holder(s) and the Author(s) or with their explicit written
72 | permission.
73 |
74 | 5) The Font Software, modified or unmodified, in part or in whole,
75 | must be distributed entirely under this license, and must not be
76 | distributed under any other license. The requirement for fonts to
77 | remain under this license does not apply to any document created
78 | using the Font Software.
79 |
80 | TERMINATION
81 | This license becomes null and void if any of the above conditions are
82 | not met.
83 |
84 | DISCLAIMER
85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93 | OTHER DEALINGS IN THE FONT SOFTWARE.
94 |
--------------------------------------------------------------------------------
/README.en.md:
--------------------------------------------------------------------------------
1 | # NIP'AJIN Dingbats
2 |
3 | [Deutsch](README.md) | [English](README.en.md).
4 |
5 | ## About
6 |
7 | This repository contains the sources and binaries for the SIL OFL 1.1 licensed font *NIP'AJIN Dingbats*. It contains a few symbols, that are used in the pen'n'paper role playing game NIP'AJIN:
8 |
9 | * `a` - time-after
10 | * `b` - time-before
11 | * `p` - book
12 | * `f` - fist
13 | * `h` - heart
14 | * `s` - shield
15 | * `t` - target
16 |
17 | The regular font contains the symbols as bare icons. The bold fond contains the symbols in rounden squares (dice), the italic font in circles.
18 |
19 | ## Quickstart
20 |
21 | The subdirectory `ttf` contains the ready-to-use fonts. `glyphs` contains a `.svg` file for each letter/symbol of the font. A Python script, `generate.py` can convert them into a TrueType font file. It requires FontForge and the FontForge-Pyhton-bindings being installed. Running
22 |
23 | ```
24 | nipajin-dingbats$ make
25 | ```
26 |
27 | will recreate the `.ttf` files into an `out` folder.
28 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # NIP'AJIN Dingbats
2 |
3 | [Deutsch](README.md) | [English](README.en.md).
4 |
5 | ## Über
6 |
7 | Dieses Repository enthält die Quellen und Binärdateien für die SIL OFL 1.1 lizensierte Symbol-Schriftart *NIP'AJIN Dingbats*. Diese enthält eine Handvoll, im Pen'n'Paper Rollenspiel [NIP'AJIN](http://ludus-leonis.com/nipajin) Verwendung findende Symbole:
8 |
9 | * `a` - Zeit-danach
10 | * `b` - Zeit-davor
11 | * `f` - Faust
12 | * `h` - Herz
13 | * `p` - Buch
14 | * `s` - Schild
15 | * `t` - Zielscheibe
16 |
17 | Der reguläre Schriftschnitt enthält die Symbole auf "weißem" Grund. Der fette Schnitt enthält die Symbole in abgerundeten Quadraten (Würfel), der kursive Schnitt in Kreisen.
18 |
19 | ## Schnellanleitung
20 |
21 | Das Verzeichnis `ttf` enthält die TrueType Schrift-Dateien. In `glyphs` befinden sich für die einzelnen Zeichen/Buchstaben der Schriftart je eine `.svg` Datei. Aus diesen Dateien kann das Python-Script `generate.py` eine TrueType Schriftfamlie generieren. Voraussetzung dafür ist, dass [FontForge](http://fontforge.github.io) und die FontForge-Python-Bindings installiert sind. Dann können mit
22 |
23 | ```
24 | nipajin-dingbats$ make
25 | ```
26 |
27 | die `.ttf` Dateien neu erstellt werden. Diese sind nach dem Lauf im Ordner `out` zu finden.
28 |
--------------------------------------------------------------------------------
/generate.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 | # -*- coding: utf-8 -*-
3 | # simple .svg to .ttf icon font converter, (c) 2015 Markus Leupold-Löwenthal
4 |
5 | import fontforge, psMat
6 |
7 | fontname = "NIPAJIN-Dingbats"
8 | fullname = "NIP'AJIN Dingbats"
9 | familyname = "NIP'AJIN Dingbats"
10 | version = "v1.1"
11 | copyright = "Copyright (c) 2015, LUDUS LEONIS / Markus Leupold-Loewenthal (http://ludus-leonis.com/),\nwith Reserved Font Name \"NIP'AJIN Dingbats\".\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is available with a FAQ at: http://scripts.sil.org/OFL"
12 |
13 | def getGlyphWidth(glyph):
14 | "determine width of a given glyph"
15 | box = glyph.boundingBox()
16 | return box[2] - box[0]
17 |
18 | def getGlyphHeight(glyph):
19 | "determine height of a given glyph"
20 | box = glyph.boundingBox()
21 | return box[3] - box[1]
22 |
23 | def addIcon( font, glyph, svgFileName ):
24 | "add a svg as icon glyph"
25 | glyph = font.createChar(glyph)
26 | glyph.importOutlines(svgFileName)
27 | glyph.correctDirection()
28 | return;
29 |
30 | def addDie( font, glyph, svgFileName, yOffset = 0 ):
31 | "add a svg as glyph (with a box)"
32 | scale = 0.75
33 | glyph = font.createChar(glyph)
34 |
35 | # get and store true width for later, as it will get distorted
36 | glyph.importOutlines("glyphs/_box.svg")
37 | width = glyph.width
38 | glyph.clear()
39 |
40 | # put icon in a die/box
41 | glyph.importOutlines(svgFileName)
42 | glyph.transform(psMat.scale(scale))
43 | glyph.transform(psMat.translate(1000 * (1 - scale) / 2, yOffset + 1000 * (1 - scale) / 2 - 200 * (1 - scale)))
44 | glyph.importOutlines("glyphs/_box.svg")
45 | glyph.correctDirection()
46 |
47 | glyph.width = width
48 | return;
49 |
50 | def addCircle( font, glyph, svgFileName, yOffset = 0 ):
51 | "add a svg as glyph (with a circle)"
52 | scale = 0.75
53 | glyph = font.createChar(glyph)
54 |
55 | # get and store true width for later, as it will get distorted
56 | glyph.importOutlines("glyphs/_circle.svg")
57 | width = glyph.width
58 | glyph.clear()
59 |
60 | # put icon in a die/box
61 | glyph.importOutlines(svgFileName)
62 | glyph.transform(psMat.scale(scale))
63 | glyph.transform(psMat.translate(1000 * (1 - scale) / 2, yOffset + 1000 * (1 - scale) / 2 - 200 * (1 - scale)))
64 | glyph.importOutlines("glyphs/_circle.svg")
65 | glyph.correctDirection()
66 |
67 | glyph.width = width
68 | return;
69 |
70 | # start with a new font
71 | regular = fontforge.font() # shape only
72 | bold = fontforge.font() # box shapes
73 | italic = fontforge.font() # circle shapes
74 |
75 | # add some meta-data
76 | regular.fontname = fontname + "-Regular"
77 | regular.fullname = fullname
78 | regular.familyname = familyname
79 | regular.version = version
80 | regular.copyright = copyright
81 | bold.fontname = fontname + "-Bold"
82 | bold.fullname = fullname + " Bold"
83 | bold.familyname = familyname
84 | bold.version = version
85 | bold.copyright = copyright
86 | bold.fontname = fontname + "-Italic"
87 | bold.fullname = fullname + " Italic"
88 | bold.familyname = familyname
89 | bold.version = version
90 | bold.copyright = copyright
91 |
92 | # add dice
93 | addIcon (regular, ord('4'), "glyphs/d10.svg")
94 | addDie (bold, ord('4'), "glyphs/d10.svg")
95 | addCircle (italic, ord('4'), "glyphs/d10.svg")
96 |
97 | # add symbols
98 | addIcon (regular, ord('f'), "glyphs/fist.svg")
99 | addDie (bold, ord('f'), "glyphs/fist.svg")
100 | addCircle (italic, ord('f'), "glyphs/fist.svg")
101 |
102 | addIcon (regular, ord('s'), "glyphs/shield.svg")
103 | addDie (bold, ord('s'), "glyphs/shield.svg")
104 | addCircle (italic, ord('s'), "glyphs/shield.svg")
105 |
106 | addIcon (regular, ord('h'), "glyphs/heart.svg")
107 | addDie (bold, ord('h'), "glyphs/heart.svg")
108 | addCircle (italic, ord('h'), "glyphs/heart.svg", -20)
109 |
110 | addIcon (regular, ord('p'), "glyphs/book.svg")
111 | addDie (bold, ord('p'), "glyphs/book.svg")
112 | addCircle (italic, ord('p'), "glyphs/book.svg")
113 |
114 | addIcon (regular, ord('t'), "glyphs/target.svg")
115 | addDie (bold, ord('t'), "glyphs/target.svg")
116 | addCircle (italic, ord('t'), "glyphs/target.svg")
117 |
118 | addIcon (regular, ord('C'), "glyphs/chat.svg")
119 | addDie (bold, ord('C'), "glyphs/chat.svg")
120 | addCircle (italic, ord('C'), "glyphs/chat.svg")
121 |
122 | addIcon (regular, ord('G'), "glyphs/gear.svg")
123 | addDie (bold, ord('G'), "glyphs/gear.svg")
124 | addCircle (italic, ord('G'), "glyphs/gear.svg")
125 |
126 | addIcon (regular, ord('S'), "glyphs/suit.svg")
127 | addDie (bold, ord('S'), "glyphs/suit.svg")
128 | addCircle (italic, ord('S'), "glyphs/suit.svg")
129 |
130 | addIcon (regular, ord('T'), "glyphs/tools.svg")
131 | addDie (bold, ord('T'), "glyphs/tools.svg")
132 | addCircle (italic, ord('T'), "glyphs/tools.svg", 10)
133 |
134 | # add other game mechanic symbols
135 | addIcon (regular, ord('b'), "glyphs/time_before.svg")
136 | addIcon (bold, ord('b'), "glyphs/time_before.svg")
137 | addIcon (italic, ord('b'), "glyphs/time_before.svg")
138 |
139 | addIcon (regular, ord('a'), "glyphs/time_after.svg")
140 | addIcon (bold, ord('a'), "glyphs/time_after.svg")
141 | addIcon (italic, ord('a'), "glyphs/time_after.svg")
142 |
143 | addIcon (regular, ord('w'), "glyphs/weight.svg")
144 | addIcon (bold, ord('w'), "glyphs/weight.svg")
145 | addIcon (italic, ord('w'), "glyphs/weight.svg")
146 |
147 | # export to files
148 | flags = ("opentype", "dummy-dsig", "round", "apple")
149 |
150 | regular.generate ("out/NIPAJIN-Dingbats.ttf", flags=flags)
151 | regular.close()
152 |
153 | bold.generate ("out/NIPAJIN-Dingbats-Bold.ttf", flags=flags)
154 | bold.close()
155 |
156 | italic.generate ("out/NIPAJIN-Dingbats-Italic.ttf", flags=flags)
157 | italic.close()
158 |
--------------------------------------------------------------------------------
/glyphs/_box.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
66 |
--------------------------------------------------------------------------------
/glyphs/_circle.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
72 |
--------------------------------------------------------------------------------
/glyphs/book.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
71 |
--------------------------------------------------------------------------------
/glyphs/chat.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
71 |
--------------------------------------------------------------------------------
/glyphs/d10.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
71 |
--------------------------------------------------------------------------------
/glyphs/fist.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
72 |
--------------------------------------------------------------------------------
/glyphs/gear.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
71 |
--------------------------------------------------------------------------------
/glyphs/heart.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
68 |
--------------------------------------------------------------------------------
/glyphs/shield.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
68 |
--------------------------------------------------------------------------------
/glyphs/suit.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
71 |
--------------------------------------------------------------------------------
/glyphs/target.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
76 |
--------------------------------------------------------------------------------
/glyphs/time_after.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
71 |
--------------------------------------------------------------------------------
/glyphs/time_before.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
71 |
--------------------------------------------------------------------------------
/glyphs/tools.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
72 |
--------------------------------------------------------------------------------
/glyphs/weight.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
72 |
--------------------------------------------------------------------------------
/testfont.tex:
--------------------------------------------------------------------------------
1 | \documentclass{article}
2 |
3 | \usepackage{fontspec}
4 |
5 | % This simple LaTeX file will render all NIP'AJIN-Dings glyphs into a PDF.
6 |
7 | \newfontfamily{\ffdings}[
8 | Path=out/,
9 | Mapping=tex-text,
10 | UprightFont={NIPAJIN-Dingbats},
11 | ItalicFont={NIPAJIN-Dingbats-Italic},
12 | BoldFont={NIPAJIN-Dingbats-Bold}
13 | ]{NIPAJIN-Dingbats}
14 |
15 | \begin{document}
16 |
17 | Regular: xxx {\ffdings \textup{tpGChwfSsb4aT}} XXX.
18 |
19 | Italic: xxx {\ffdings \textit{tpGhCwfSsb4aT}} XXX.
20 |
21 | Bold: xxx {\ffdings \textbf{tpGhCfwSsb4aT}} XXX.
22 |
23 | \end{document}
24 |
--------------------------------------------------------------------------------
/ttf/NIPAJIN-Dingbats-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ludus-leonis/nipajin-dingbats/407d94eafcdb0ff40387ac7f22ae1ff4f9a2bfae/ttf/NIPAJIN-Dingbats-Bold.ttf
--------------------------------------------------------------------------------
/ttf/NIPAJIN-Dingbats-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ludus-leonis/nipajin-dingbats/407d94eafcdb0ff40387ac7f22ae1ff4f9a2bfae/ttf/NIPAJIN-Dingbats-Italic.ttf
--------------------------------------------------------------------------------
/ttf/NIPAJIN-Dingbats.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ludus-leonis/nipajin-dingbats/407d94eafcdb0ff40387ac7f22ae1ff4f9a2bfae/ttf/NIPAJIN-Dingbats.ttf
--------------------------------------------------------------------------------