aboutsummaryrefslogtreecommitdiff
path: root/font_lib
diff options
context:
space:
mode:
authorPierre-Yves Rollo <dev@pyrollo.com>2018-01-13 10:06:47 +0100
committerPierre-Yves Rollo <dev@pyrollo.com>2018-01-13 10:06:47 +0100
commit25a4eba8409b14fd7b897424f608348b37792d96 (patch)
tree338479eb09fd9c90764a6d8d2f15e16ae02dc88d /font_lib
parenta49f2e838f0cd3ec443c7b3d8e0a146bb0cfddcc (diff)
downloaddisplay_modpack-25a4eba8409b14fd7b897424f608348b37792d96.tar.gz
display_modpack-25a4eba8409b14fd7b897424f608348b37792d96.tar.bz2
display_modpack-25a4eba8409b14fd7b897424f608348b37792d96.zip
Version 1.0 - See README.md
Diffstat (limited to 'font_lib')
-rw-r--r--font_lib/settingtypes.txt1
-rwxr-xr-xfont_lib/tools/make_font_textures.sh111
2 files changed, 112 insertions, 0 deletions
diff --git a/font_lib/settingtypes.txt b/font_lib/settingtypes.txt
new file mode 100644
index 0000000..d111159
--- /dev/null
+++ b/font_lib/settingtypes.txt
@@ -0,0 +1 @@
+default_font(Default font) string
diff --git a/font_lib/tools/make_font_textures.sh b/font_lib/tools/make_font_textures.sh
new file mode 100755
index 0000000..ade2e32
--- /dev/null
+++ b/font_lib/tools/make_font_textures.sh
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+# This program generates a bitmap font for font_lib mod for Minetest game.
+# (c) Andrzej Pieńkowski <pienkowski.andrzej@gmail.com>
+# (c) Pierre-Yves Rollo <dev@pyrollo.com>
+# License: GPL
+
+usage() {
+ echo "Usage: $0 fontfile fontname fontsize"
+ echo "fontfile: A TTF font file to use to create textures."
+ echo "fontname: The font name to be used in font_lib (should be simple, with no spaces)."
+ echo "fontsize: Font height to be rendered."
+}
+
+if [ $# -ne 3 ]
+then
+ usage
+ exit 1
+fi
+
+fontfile=$1
+fontname=$2
+fontsize=$3
+
+if [ ! -r "$fontfile" ]
+then
+ echo "$fontfile not readable."
+ exit 1
+fi
+
+# check imagemagick
+hash convert &>/dev/null
+if [ $? -eq 1 ]; then
+ echo -e "Error: This program requires convert from ImageMagick! Please install it by typing 'sudo apt-get install imagemagick' in terminal."
+ abort=1
+fi
+
+# check ttx
+hash ttx &>/dev/null
+if [ $? -eq 1 ]; then
+ echo -e "Error: This program requires ttx from FontTools! Please install it by typing 'sudo apt-get install fonttools' in terminal."
+ abort=1
+fi
+
+if [ $abort ]
+then
+ exit 1
+fi
+
+generate() {
+ for i in $(seq $((0x$1)) $((0x$2)))
+ do
+ if echo "$codepoints" | grep -qi $(printf "0x%x" $i)
+ then
+ hex=$(printf "%04x" $i)
+ echo -e "Generating textures/font_${fontname}_$hex.png file for \"\\U$hex\" char."
+ if [[ "$hex" == "005c" ]] # Backslash char
+ then
+ convert -background none -fill black -font "$fontfile" -pointsize $fontsize label:"\\\\" -colorspace gray -channel alpha -threshold 50% textures/font_${fontname}_$hex.png
+ else
+ convert -background none -fill black -font "$fontfile" -pointsize $fontsize label:"$(echo -en "\\U$hex")" -colorspace gray -channel alpha -threshold 50% textures/font_${fontname}_$hex.png
+ fi
+ fi
+ done
+}
+
+mkdir textures
+
+# Reads all available code points in the font.
+codepoints=$(ttx -o - $fontfile | grep "<map code=" | cut -d \" -f 2)
+
+# Mandatory chars
+generate 0020 007f
+
+# generate space and null characters
+if [ ! -f "textures/font_${fontname}_0030.png" ]; then
+ echo "Error: Something wrong happened! Font was not generated!"
+ exit 1
+else
+ size=$(identify textures/font_${fontname}_0030.png | cut -d " " -f 3)
+ if ! [[ $fontHeight =~ $re ]] ; then
+ echo "Error: Something wrong happened! Generated files might be broken!"
+ exit 1
+ else
+ w=$(expr $(echo $size | cut -d x -f 1) - 1)
+ h=$(expr $(echo $size | cut -d x -f 2) - 1)
+ # Space char
+ convert -size $size xc:transparent -colorspace gray textures/font_${fontname}_0020.png
+ # Null char
+ convert -size $size xc:transparent -colorspace gray -stroke black -fill transparent -strokewidth 1 -draw "rectangle 0,0 $w,$h" textures/font_${fontname}_0000.png
+ fi
+fi
+
+# Optional Unicode pages (see https://en.wikipedia.org/wiki/Unicode) :
+
+# 00a0-00ff Latin-1 Supplement (full)
+generate 00a0 00ff
+# 0100-017f Latin Extended-A (full)
+generate 0100 017f
+# 0370-03ff Greek (full)
+generate 0370 03ff
+# 0400-04ff Cyrilic (full)
+generate 0400 04ff
+# 2000-206f General Punctuation (Limited to Dashes)
+generate 2010 2015
+# 2000-206f General Punctuation (Limited to Quotes)
+generate 2018 201F
+# 20a0-20cf Currency Symbols (Limited to Euro symbol)
+generate 20ac 20ac
+
+