gotta-patch-em: Correct file type of config files

[why]
The config files are called `config.json` while the contents is
INI-like. The usual extension would be `.cfg`.

[how]
We use `.cfg` already for the shell variable configuration.

Combine both config file variants into one (real) cfg file, that is
directly read by the font-patcher and no shell variables files are used
anymore.

This needs some rewrite in gotta-patch-em to get the quoting right.
To make this simpler we remove the `--debug 1` option from the variable
and insert it directly (as it is applied always anyhow).

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
This commit is contained in:
Fini Jastrow 2024-04-19 10:23:46 +02:00
parent b984447921
commit 88d63ff827
55 changed files with 134 additions and 129 deletions

View file

@ -214,32 +214,19 @@ function patch_font {
config_parent_dir=$( cd "$( dirname "$f" )" && cd ".." && pwd) config_parent_dir=$( cd "$( dirname "$f" )" && cd ".." && pwd)
config_dir=$( cd "$( dirname "$f" )" && pwd) config_dir=$( cd "$( dirname "$f" )" && pwd)
# source the font config file if exists: # find the font config file:
# fetches for example config_patch_flags
unset config_patch_flags
if [ -f "$config_dir/config.cfg" ] if [ -f "$config_dir/config.cfg" ]
then then
# shellcheck source=/dev/null font_config="--configfile=$config_dir/config.cfg"
source "$config_dir/config.cfg"
elif [ -f "$config_parent_dir/config.cfg" ] elif [ -f "$config_parent_dir/config.cfg" ]
then then
# shellcheck source=/dev/null font_config="--configfile=$config_parent_dir/config.cfg"
source "$config_parent_dir/config.cfg"
elif [ -f "$(find_font_root "$config_parent_dir")/config.cfg" ] elif [ -f "$(find_font_root "$config_parent_dir")/config.cfg" ]
then then
# shellcheck source=/dev/null font_config="--configfile=$(find_font_root "$config_parent_dir")/config.cfg"
source "$(find_font_root "$config_parent_dir")/config.cfg"
fi
if [ -f "$config_dir/config.json" ]
then
# load font configuration file and remove selected ligatures:
font_config="--removeligatures --configfile $config_dir/config.json"
elif [ -f "$config_parent_dir/config.json" ]
then
font_config="--removeligatures --configfile $config_parent_dir/config.json"
else else
font_config="" # We need to give some argument because empty arguments will break the patcher call
font_config="-q"
fi fi
if [ "$post_process" ] if [ "$post_process" ]
@ -255,38 +242,37 @@ function patch_font {
echo >&2 "# Could not find project parent directory" echo >&2 "# Could not find project parent directory"
exit 3 exit 3
} }
# Add logfile always (but can be overridden by config_patch_flags in config.cfg and env var NERDFONTS) # Add logfile always (but can be overridden by config.cfg and env var NERDFONTS)
config_patch_flags="--debug 1 ${config_patch_flags}"
# Use absolute path to allow fontforge being an AppImage (used in CI) # Use absolute path to allow fontforge being an AppImage (used in CI)
PWD=$(pwd) PWD=$(pwd)
# Create "Nerd Font" # Create "Nerd Font"
if [ -n "${verbose}" ] if [ -n "${verbose}" ]
then then
echo "fontforge -quiet -script \"${PWD}/font-patcher\" \"$f\" -q ${font_config} $post_process -c --no-progressbars --outputdir \"${patched_font_dir}\" $config_patch_flags ${NERDFONTS}" echo "fontforge -quiet -script \"${PWD}/font-patcher\" --debug 1 \"$f\" -q \"${font_config}\" $post_process -c --no-progressbars --outputdir \"${patched_font_dir}\" ${NERDFONTS}"
fi fi
# shellcheck disable=SC2086 # We want splitting for the unquoted variables to get multiple options out of them # shellcheck disable=SC2086 # We want splitting for the unquoted variables to get multiple options out of them
{ OUT=$(fontforge -quiet -script "${PWD}/font-patcher" "$f" -q ${font_config} $post_process -c --no-progressbars \ { OUT=$(fontforge -quiet -script "${PWD}/font-patcher" --debug 1 "$f" -q "${font_config}" $post_process -c --no-progressbars \
--outputdir "${patched_font_dir}" $config_patch_flags ${NERDFONTS} 2>&1 1>&3 3>&- ); } 3>&1 --outputdir "${patched_font_dir}" ${NERDFONTS} 2>&1 1>&3 3>&- ); } 3>&1
# shellcheck disable=SC2181 # Checking the code directly is very unreadable here, as we execute a whole block # shellcheck disable=SC2181 # Checking the code directly is very unreadable here, as we execute a whole block
if [ $? -ne 0 ]; then printf "%s\nPatcher run aborted!\n\n" "$OUT"; fi if [ $? -ne 0 ]; then printf "%s\nPatcher run aborted!\n\n" "$OUT"; fi
# Create "Nerd Font Mono" # Create "Nerd Font Mono"
if [ -n "${verbose}" ] if [ -n "${verbose}" ]
then then
echo "fontforge -quiet -script \"${PWD}/font-patcher\" \"$f\" -q -s ${font_config} $post_process -c --no-progressbars --outputdir \"${patched_font_dir}\" $config_patch_flags ${NERDFONTS}" echo "fontforge -quiet -script \"${PWD}/font-patcher\" --debug 1 \"$f\" -q -s \"${font_config}\" $post_process -c --no-progressbars --outputdir \"${patched_font_dir}\" ${NERDFONTS}"
fi fi
# shellcheck disable=SC2086 # We want splitting for the unquoted variables to get multiple options out of them # shellcheck disable=SC2086 # We want splitting for the unquoted variables to get multiple options out of them
{ OUT=$(fontforge -quiet -script "${PWD}/font-patcher" "$f" -q -s ${font_config} $post_process -c --no-progressbars \ { OUT=$(fontforge -quiet -script "${PWD}/font-patcher" --debug 1 "$f" -q -s "${font_config}" $post_process -c --no-progressbars \
--outputdir "${patched_font_dir}" $config_patch_flags ${NERDFONTS} 2>&1 1>&3 3>&- ); } 3>&1 --outputdir "${patched_font_dir}" ${NERDFONTS} 2>&1 1>&3 3>&- ); } 3>&1
# shellcheck disable=SC2181 # Checking the code directly is very unreadable here, as we execute a whole block # shellcheck disable=SC2181 # Checking the code directly is very unreadable here, as we execute a whole block
if [ $? -ne 0 ]; then printf "%s\nPatcher run aborted!\n\n" "$OUT"; fi if [ $? -ne 0 ]; then printf "%s\nPatcher run aborted!\n\n" "$OUT"; fi
# Create "Nerd Font Propo" # Create "Nerd Font Propo"
if [ -n "${verbose}" ] if [ -n "${verbose}" ]
then then
echo "fontforge -quiet -script \"${PWD}/font-patcher\" \"$f\" -q --variable ${font_config} $post_process -c --no-progressbars --outputdir \"${patched_font_dir}\" $config_patch_flags ${NERDFONTS}" echo "fontforge -quiet -script \"${PWD}/font-patcher\" --debug 1 \"$f\" -q --variable \"${font_config}\" $post_process -c --no-progressbars --outputdir \"${patched_font_dir}\" ${NERDFONTS}"
fi fi
# shellcheck disable=SC2086 # We want splitting for the unquoted variables to get multiple options out of them # shellcheck disable=SC2086 # We want splitting for the unquoted variables to get multiple options out of them
{ OUT=$(fontforge -quiet -script "${PWD}/font-patcher" "$f" -q --variable ${font_config} $post_process -c --no-progressbars \ { OUT=$(fontforge -quiet -script "${PWD}/font-patcher" --debug 1 "$f" -q --variable "${font_config}" $post_process -c --no-progressbars \
--outputdir "${patched_font_dir}" $config_patch_flags ${NERDFONTS} 2>&1 1>&3 3>&- ); } 3>&1 --outputdir "${patched_font_dir}" ${NERDFONTS} 2>&1 1>&3 3>&- ); } 3>&1
# shellcheck disable=SC2181 # Checking the code directly is very unreadable here, as we execute a whole block # shellcheck disable=SC2181 # Checking the code directly is very unreadable here, as we execute a whole block
if [ $? -ne 0 ]; then printf "%s\nPatcher run aborted!\n\n" "$OUT"; fi if [ $? -ne 0 ]; then printf "%s\nPatcher run aborted!\n\n" "$OUT"; fi

View file

@ -1935,7 +1935,7 @@ def setup_arguments():
expert_group = parser.add_argument_group('Expert Options') expert_group = parser.add_argument_group('Expert Options')
expert_group.add_argument('--boxdrawing', dest='forcebox', default=False, action='store_true', help='Force patching in (over existing) box drawing glyphs') expert_group.add_argument('--boxdrawing', dest='forcebox', default=False, action='store_true', help='Force patching in (over existing) box drawing glyphs')
expert_group.add_argument('--configfile', dest='configfile', default=False, type=str, help='Specify a file path for JSON configuration file (see sample: src/config.sample.json)') expert_group.add_argument('--configfile', dest='configfile', default=False, type=str, help='Specify a file path for configuration file (see sample: src/config.sample.cfg)')
expert_group.add_argument('--custom', dest='custom', default=False, type=str, help='Specify a custom symbol font, all glyphs will be copied; absolute path suggested') expert_group.add_argument('--custom', dest='custom', default=False, type=str, help='Specify a custom symbol font, all glyphs will be copied; absolute path suggested')
expert_group.add_argument('--dry', dest='dry_run', default=False, action='store_true', help='Do neither patch nor store the font, to check naming') expert_group.add_argument('--dry', dest='dry_run', default=False, action='store_true', help='Do neither patch nor store the font, to check naming')
@ -1946,7 +1946,7 @@ def setup_arguments():
expert_group.add_argument('--name', dest='force_name', default=None, type=str, help='Specify naming source (\'full\', \'postscript\', \'filename\', or concrete free name-string)') expert_group.add_argument('--name', dest='force_name', default=None, type=str, help='Specify naming source (\'full\', \'postscript\', \'filename\', or concrete free name-string)')
expert_group.add_argument('--postprocess', dest='postprocess', default=False, type=str, help='Specify a Script for Post Processing') expert_group.add_argument('--postprocess', dest='postprocess', default=False, type=str, help='Specify a Script for Post Processing')
progressbars_group_parser = expert_group.add_mutually_exclusive_group(required=False) progressbars_group_parser = expert_group.add_mutually_exclusive_group(required=False)
expert_group.add_argument('--removeligs', '--removeligatures', dest='removeligatures', default=False, action='store_true', help='Removes ligatures specificed in JSON configuration file (needs --configfile)') expert_group.add_argument('--removeligs', '--removeligatures', dest='removeligatures', default=False, action='store_true', help='Removes ligatures specificed in configuration file (needs --configfile)')
expert_group.add_argument('--xavgcharwidth', dest='xavgwidth', default=None, type=int, nargs='?', help='Adjust xAvgCharWidth (optional: concrete value)', const=True) expert_group.add_argument('--xavgcharwidth', dest='xavgwidth', default=None, type=int, nargs='?', help='Adjust xAvgCharWidth (optional: concrete value)', const=True)
# --xavgcharwidth for compatibility with old applications like notepad and non-latin fonts # --xavgcharwidth for compatibility with old applications like notepad and non-latin fonts
# Possible values with examples: # Possible values with examples:

9
src/config.sample.cfg Normal file
View file

@ -0,0 +1,9 @@
# These config files are read by the font-patcher
# They are INI style files, but some keys have JSON values
[Config]
commandline: --removeligatures --makegroups 2
[Subtables]
ligatures: [
"'dlig' Discretionary Ligatures lookup 9 subtable",
"'dlig' Discretionary Ligatures lookup 11 subtable",
"'dlig' Discretionary Ligatures lookup 12 contextual 0" ]

View file

@ -1,18 +0,0 @@
[Subtables]
ligatures: [
"'dlig' Discretionary Ligatures lookup 9 subtable",
"'dlig' Discretionary Ligatures lookup 11 subtable",
"'dlig' Discretionary Ligatures lookup 12 contextual 0",
"'dlig' Discretionary Ligatures lookup 12 contextual 1",
"'dlig' Discretionary Ligatures lookup 12 contextual 2",
"'dlig' Discretionary Ligatures lookup 18 subtable",
"'dlig' Discretionary Ligatures lookup 19 contextual 0",
"'dlig' Discretionary Ligatures lookup 24 contextual 0",
"'dlig' Discretionary Ligatures lookup 24 contextual 1",
"'dlig' Discretionary Ligatures lookup 24 contextual 2",
"'dlig' Discretionary Ligatures lookup 24 contextual 3",
"'dlig' Discretionary Ligatures lookup 24 contextual 4",
"'dlig' Discretionary Ligatures lookup 24 contextual 5",
"'dlig' Discretionary Ligatures lookup 26 subtable",
"'dlig' Discretionary Ligatures lookup 33 contextual 0",
"'dlig' Discretionary Ligatures lookup 33 contextual 1" ]

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 2" [Config]
commandline: --makegroups 2

View file

@ -1 +1,2 @@
config_patch_flags="--has-no-italic" [Config]
commandline: --has-no-italic

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -1 +1,2 @@
config_patch_flags="--xavgcharwidth 500" [Config]
commandline: --xavgcharwidth 500

View file

@ -1 +1,2 @@
config_patch_flags="--ext ttf" [Config]
commandline: --ext ttf

View file

@ -1 +1,2 @@
config_patch_flags="--has-no-italic" [Config]
commandline: --has-no-italic

View file

@ -1 +0,0 @@
config_has_powerline=1

View file

@ -1 +0,0 @@
config_has_powerline=1

View file

@ -1,2 +1,2 @@
config_has_powerline=1 [Config]
config_patch_flags="--makegroups 2" commandline: --makegroups 2

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -1 +0,0 @@
config_has_powerline=1

View file

@ -1,2 +1,2 @@
config_has_powerline=1 [Config]
config_patch_flags="--makegroups 2" commandline: --makegroups 2

View file

@ -1 +0,0 @@
config_has_powerline=1

View file

@ -1 +0,0 @@
#config_has_powerline=1

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -1,2 +1,2 @@
config_has_powerline=1 [Config]
config_patch_flags="--makegroups 4" commandline: --makegroups 4

View file

@ -1,2 +1,2 @@
config_has_powerline=1 [Config]
config_patch_flags="--makegroups 4" commandline: --makegroups 4

View file

@ -1,2 +1,2 @@
config_has_powerline=1 [Config]
config_patch_flags="--makegroups 4" commandline: --makegroups 4

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -0,0 +1,6 @@
[Config]
commandline: --removeligatures
[Subtables]
ligatures: [
"'liga' Standard Ligatures in Latin lookup 6 subtable",
"'liga' Standard Ligatures in Latin lookup 5 subtable" ]

View file

@ -1,4 +0,0 @@
[Subtables]
ligatures: [
"'liga' Standard Ligatures in Latin lookup 6 subtable",
"'liga' Standard Ligatures in Latin lookup 5 subtable" ]

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 2" [Config]
commandline: --makegroups 2

View file

@ -1 +1,2 @@
config_patch_flags="--name filename --makegroups 5" [Config]
commandline: --name filename --makegroups 5

View file

@ -1 +0,0 @@
config_has_powerline=1

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -1 +0,0 @@
config_has_powerline=1

View file

@ -1 +1,2 @@
config_patch_flags="--ext ttf --variable-width-glyphs" [Config]
commandline: --ext ttf --variable-width-glyphs

View file

@ -0,0 +1,7 @@
[Config]
commandline: --removeligatures --makegroups 5
[Subtables]
ligatures: [
"Ligature Substitution lookup 15 subtable",
"Ligature Substitution lookup 14 subtable",
"Ligature Substitution lookup 13 subtable" ]

View file

@ -1,5 +0,0 @@
[Subtables]
ligatures: [
"Ligature Substitution lookup 15 subtable",
"Ligature Substitution lookup 14 subtable",
"Ligature Substitution lookup 13 subtable" ]

View file

@ -0,0 +1,8 @@
[Config]
commandline: --removeligatures --makegroups 5
[Subtables]
ligatures: [
"'liga' Standard Ligatures lookup 41 subtable",
"Ligature Substitution lookup 15 subtable",
"Ligature Substitution lookup 14 subtable",
"Ligature Substitution lookup 13 subtable" ]

View file

@ -1,6 +0,0 @@
[Subtables]
ligatures: [
"'liga' Standard Ligatures lookup 41 subtable",
"Ligature Substitution lookup 15 subtable",
"Ligature Substitution lookup 14 subtable",
"Ligature Substitution lookup 13 subtable" ]

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 5" [Config]
commandline: --makegroups 5

View file

@ -0,0 +1,8 @@
[Config]
commandline: --removeligatures
[Subtables]
ligatures: [
"Ligature Substitution lookup 8 subtable",
"Ligature Substitution lookup 7 subtable",
"'liga' Standard Ligature lookup 7 subtable",
"'liga' Standard Ligature lookup 4 subtable" ]

View file

@ -1,6 +0,0 @@
[Subtables]
ligatures: [
"Ligature Substitution lookup 8 subtable",
"Ligature Substitution lookup 7 subtable",
"'liga' Standard Ligature lookup 7 subtable",
"'liga' Standard Ligature lookup 4 subtable" ]

View file

@ -0,0 +1,5 @@
[Config]
commandline: --removeligatures --makegroups 2
[Subtables]
ligatures: [
"Ligature Substitution lookup 23 subtable" ]

View file

@ -1,3 +0,0 @@
[Subtables]
ligatures: [
"Ligature Substitution lookup 23 subtable" ]

View file

@ -0,0 +1,6 @@
[Config]
commandline: --removeligatures --makegroups 2
[Subtables]
ligatures: [
"Ligature Substitution lookup 20 subtable",
"'liga' Standard Ligatures in Latin lookup 18 subtable" ]

View file

@ -1,4 +0,0 @@
[Subtables]
ligatures: [
"Ligature Substitution lookup 20 subtable",
"'liga' Standard Ligatures in Latin lookup 18 subtable" ]

View file

@ -1 +0,0 @@
config_patch_flags="--makegroups 2"

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 3" [Config]
commandline: --makegroups 3

View file

@ -1,2 +1,2 @@
config_has_powerline=1 [Config]
config_patch_flags="--makegroups 4" commandline: --makegroups 4

View file

@ -0,0 +1,6 @@
[Config]
commandline: --removeligatures
[Subtables]
ligatures: [
"'liga' Standard Ligatures in Latin lookup 9 subtable",
"'liga' Standard Ligatures in Latin lookup 8 subtable" ]

View file

@ -1,4 +0,0 @@
[Subtables]
ligatures: [
"'liga' Standard Ligatures in Latin lookup 9 subtable",
"'liga' Standard Ligatures in Latin lookup 8 subtable" ]

View file

@ -1 +1,7 @@
config_patch_flags="--makegroups 2" [Config]
commandline: --removeligatures --makegroups 2
[Subtables]
ligatures: [
"'liga' Standard Ligatures in Latin lookup 20 subtable",
"'liga' Standard Ligatures in Greek lookup 21 subtable",
"'liga' Standard Ligatures in Cyrillic lookup 22 subtable" ]

View file

@ -1,5 +0,0 @@
[Subtables]
ligatures: [
"'liga' Standard Ligatures in Latin lookup 20 subtable",
"'liga' Standard Ligatures in Greek lookup 21 subtable",
"'liga' Standard Ligatures in Cyrillic lookup 22 subtable" ]

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 2" [Config]
commandline: --makegroups 2

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 5" [Config]
commandline: --makegroups 5

View file

@ -1 +1,2 @@
config_patch_flags="--makegroups 4" [Config]
commandline: --makegroups 4