main uint/cterm / scripts / fontscale
 1#       fontscale
 2# Font scaling program which converts a vector font to a FONT.bdf
 3# using `otf2bdf`
 4#
 5# This program is licensed under the ISC License.
 6# Copyright 2026 uint
 7# 
 8# Permission to use, copy, modify, and/or distribute this software for any
 9# purpose with or without fee is hereby granted, provided that the above
10# copyright notice and this permission notice appear in all copies.
11# 
12# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
13# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
14# FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
15# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
17# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18# PERFORMANCE OF THIS SOFTWARE.
19
20#!/bin/sh
21set -eu
22
23DIR="$HOME/.local/share/fonts"
24FONT="$DIR/FONT.ttf"
25BDF="$DIR/FONT.bdf"
26META="$DIR/fontscale"
27DPI=96
28
29[ "$#" -eq 1 ] || {
30	echo "Usage: fontscale {+|-}" >&2
31	exit 1
32}
33
34[ -f "$FONT" ] || {
35	echo "Font not found: $FONT" >&2
36	exit 1
37}
38
39[ -f "$META" ] || {
40	echo "Scale file not found: $META" >&2
41	exit 1
42}
43
44scale=$(cat "$META")
45
46case "$scale" in
47	''|*[!0-9]*)
48		echo "Invalid scale in $META: $scale" >&2
49		exit 1
50		;;
51esac
52
53case "$1" in
54	+)
55		scale=$((scale + 1))
56		;;
57	-)
58		[ "$scale" -gt 1 ] || {
59			echo "Scale cannot be less than 1" >&2
60			exit 1
61		}
62		scale=$((scale - 1))
63		;;
64	*)
65		echo "Usage: fontscale [+|-]" >&2
66		exit 1
67		;;
68esac
69
70otf2bdf -n -p "$scale" -r "$DPI" -o "$BDF" "$FONT"
71printf '%s\n' "$scale" >"$META"
72