From 26c3935c9bbbba1a37628ad77cbd8804038d6e0f Mon Sep 17 00:00:00 2001 From: Isidor Zeuner Date: Mon, 7 Dec 2020 13:38:31 +0100 Subject: [PATCH] add texture generation scripts from https://github.com/zeuner/signs-font-generate --- util/LICENSE | 167 +++++++++++++++++++++++++++++++ util/README.md | 36 +++++++ util/create-signs-lib-overlay.sh | 8 ++ util/nonascii-de | 7 ++ util/nonascii-fr | 16 +++ util/nonascii-pl | 16 +++ util/unicode-numbers.sh | 22 ++++ util/write-ascii.sh | 70 +++++++++++++ util/write-nonascii.sh | 57 +++++++++++ 9 files changed, 399 insertions(+) create mode 100644 util/LICENSE create mode 100644 util/README.md create mode 100644 util/create-signs-lib-overlay.sh create mode 100644 util/nonascii-de create mode 100644 util/nonascii-fr create mode 100644 util/nonascii-pl create mode 100644 util/unicode-numbers.sh create mode 100644 util/write-ascii.sh create mode 100644 util/write-nonascii.sh diff --git a/util/LICENSE b/util/LICENSE new file mode 100644 index 0000000..632f852 --- /dev/null +++ b/util/LICENSE @@ -0,0 +1,167 @@ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + diff --git a/util/README.md b/util/README.md new file mode 100644 index 0000000..5bbc924 --- /dev/null +++ b/util/README.md @@ -0,0 +1,36 @@ +# signs-font-generate + +This is a collection of helper shell scripts to create textures for +international characters to be used with the +[signs_lib](https://gitlab.com/VanessaE/signs_lib) Minetest mod. + +They currently expect the +[Liberation Fonts](https://github.com/liberationfonts/liberation-fonts) to be +installed at "/usr/share/fonts/truetype/liberation". + +ImageMagick is also required. + +## Basic usage + +sh create-signs-lib-overlay.sh + +For example, this command will write textures for the non-ASCII characters +of the French language to "/home/user/signs_lib": + +sh create-signs-lib-overlay.sh /home/user/signs_lib fr + +Currently, there is support for German (de), French (fr) and Polish (pl) +non-ASCII characters. + +## Character alignment + +I chose the image processing parameters in order fairly match the alignment of +the existing signs_lib textures. In order to get even better alignment at +the expense of slightly smaller textures, it is possible to also replace +existing ASCII character textures: + +sh write-ascii.sh + +For example, with signs_lib residing at "/home/user/signs_lib": + +sh write-ascii.sh /home/user/signs_lib/textures diff --git a/util/create-signs-lib-overlay.sh b/util/create-signs-lib-overlay.sh new file mode 100644 index 0000000..caed675 --- /dev/null +++ b/util/create-signs-lib-overlay.sh @@ -0,0 +1,8 @@ +mkdir -p "$1/textures" +cat nonascii-$2| +sh write-nonascii.sh "$1/textures" +cat nonascii-$2| +sed 's,.*,sh unicode-numbers.sh "&",'| +sh| +sed 's/.*/signs_lib.unicode_install(&)/'| +sort > "$1/nonascii-$2.lua" diff --git a/util/nonascii-de b/util/nonascii-de new file mode 100644 index 0000000..0b5dfce --- /dev/null +++ b/util/nonascii-de @@ -0,0 +1,7 @@ +ä +ö +ü +ß +Ä +Ö +Ü diff --git a/util/nonascii-fr b/util/nonascii-fr new file mode 100644 index 0000000..0174725 --- /dev/null +++ b/util/nonascii-fr @@ -0,0 +1,16 @@ +à +æ +ç +é +è +ê +ô +ù +À +Æ +Ç +É +È +Ê +Ô +Ù diff --git a/util/nonascii-pl b/util/nonascii-pl new file mode 100644 index 0000000..c43767b --- /dev/null +++ b/util/nonascii-pl @@ -0,0 +1,16 @@ +ż +ź +ć +ś +ó +ą +ę +ł +Ż +Ź +Ć +Ś +Ó +Ą +Ę +Ł diff --git a/util/unicode-numbers.sh b/util/unicode-numbers.sh new file mode 100644 index 0000000..c928643 --- /dev/null +++ b/util/unicode-numbers.sh @@ -0,0 +1,22 @@ +( + echo -n "$1"| + xxd -ps| + sed 's/../echo $((0x&))\n/g'| + sh + echo -n "$1"| + iconv -f utf-8 -t utf-32| + xxd -ps| + sed s/fffe0000//| + sed 's/../&\n/g'| + grep .| + tac| + tr " +" " "| + sed 's/ //g'| + sed s/^00//| + sed s/^00//| + sed 's/.*/"&"/' +)| +tr " +" ","| +sed 's/.*/{&}\n/' diff --git a/util/write-ascii.sh b/util/write-ascii.sh new file mode 100644 index 0000000..9ff862b --- /dev/null +++ b/util/write-ascii.sh @@ -0,0 +1,70 @@ +( + seq $((0x$(echo -n a | xxd -ps))) $((0x$(echo -n z | xxd -ps))) + seq $((0x$(echo -n A | xxd -ps))) $((0x$(echo -n Z | xxd -ps))) + seq $((0x$(echo -n 0 | xxd -ps))) $((0x$(echo -n 9 | xxd -ps))) + echo -n " #$%&'()*+,-./:;<=>?@[]^_{|}~!\"\\\`"| + xxd -ps| + sed 's/../&\n/g'| + grep .| + sed 's/.*/echo $((0x&))/'| + sh +)| +sed 's<^'"'"'"'"'"'"'"'"'>\&"\&"\&>'"'"'\ +/bin/echo -n -e "'"'"'\\\ + "'"$1"'/im-out.png" 2> "'"$1"'/im.err"\ +grep '"'"' width: '"'"' "'"$1"'/im.err"|\ +sed '"'"'s/.* width: //'"'"'|\ +sed '"'"'s/;.*//'"'"'|\ +sed '"'"'s|^|printf \\\"%.0f\\\" |'"'"'|\ +sh|\ +sed '"'"'s%.*%convert\\\ + '"$1"'/im-out.png\\\ + -negate\\\ + -monochrome\\\ + -transparent white\\\ + -crop \\$((\&+1))x15+0+2\\\ + +repage\\\ + '"$1"'/signs_lib_font_15px_&.png%'"'"'|\ +sh -e -x\ +convert\\\ + -debug annotate\\\ + -size 180x180 xc:white\\\ + -font /usr/share/fonts/truetype/liberation/LiberationSans-Bold.ttf\\\ + -gravity northwest\\\ + -pointsize 31\\\ + +antialias\\\ + -annotate 0 '"'"'"\ +/bin/echo -n -e "\\x&"|\ +sed '"'"'s>'"'"'"'"'"'"'"'"'>\&"\&"\&>'"'"'\ +/bin/echo -n -e "'"'"'\\\ + "'"$1"'/im-out.png" 2> "'"$1"'/im.err"\ +grep '"'"' width: '"'"' "'"$1"'/im.err"|\ +sed '"'"'s/.* width: //'"'"'|\ +sed '"'"'s/;.*//'"'"'|\ +sed '"'"'s|^|printf \\\"%.0f\\\" |'"'"'|\ +sh|\ +sed '"'"'s%.*%convert\\\ + '"$1"'/im-out.png\\\ + -negate\\\ + -monochrome\\\ + -transparent white\\\ + -crop \\$((\&+1))x31+0+4\\\ + +repage\\\ + '"$1"'/signs_lib_font_31px_&.png%'"'"'|\ +sh -e -x\ +"<'| +sh| +sh -e -x +rm -f "$1/im-out.png" +rm -f "$1/im.err" diff --git a/util/write-nonascii.sh b/util/write-nonascii.sh new file mode 100644 index 0000000..0b3971a --- /dev/null +++ b/util/write-nonascii.sh @@ -0,0 +1,57 @@ +sed 's,.*,sh unicode-numbers.sh "&",'| +sh| +sed 's/'"'"'/&"&"&/g'| +sed 's/%/&&/g'| +sed "s,.*,printf '&\\\n',"| +sed "s/\([0-9]*\),/'\nprintf '\\\x%.02x' \1\nprintf '/g"| +sh| +sed 's<{\(.*\)"\(.*\)"} "'"$1"'/im.err"\ +grep '"'"' width: '"'"' "'"$1"'/im.err"|\ +sed '"'"'s/.* width: //'"'"'|\ +sed '"'"'s/;.*//'"'"'|\ +sed '"'"'s|^|printf \\\"%.0f\\\" |'"'"'|\ +sh|\ +sed '"'"'s%.*%convert\\\ + '"$1"'/im-out.png\\\ + -negate\\\ + -monochrome\\\ + -transparent white\\\ + -crop \\$((\&+1))x15+0+2\\\ + +repage\\\ + '"$1"'/signs_lib_font_15px_\2.png%'"'"'|\ +sh -e -x\ +convert\\\ + -debug annotate\\\ + -size 180x180 xc:white\\\ + -font /usr/share/fonts/truetype/liberation/LiberationSans-Bold.ttf\\\ + -gravity northwest\\\ + -pointsize 31\\\ + +antialias\\\ + -annotate 0 '"'"'\1'"'"'\\\ + "'"$1"'/im-out.png" 2> "'"$1"'/im.err"\ +grep '"'"' width: '"'"' "'"$1"'/im.err"|\ +sed '"'"'s/.* width: //'"'"'|\ +sed '"'"'s/;.*//'"'"'|\ +sed '"'"'s|^|printf \\\"%.0f\\\" |'"'"'|\ +sh|\ +sed '"'"'s%.*%convert\\\ + '"$1"'/im-out.png\\\ + -negate\\\ + -monochrome\\\ + -transparent white\\\ + -crop \\$((\&+1))x31+0+4\\\ + +repage\\\ + '"$1"'/signs_lib_font_31px_\2.png%'"'"'|\ +sh -e -x"<'| +sh| +sh -e -x +rm -f "$1/im-out.png" +rm -f "$1/im.err"