Blob Blame History Raw
#!/bin/bash
#
# Render each and every font weight and size of the Terminus font to a
# single PNG file to allow one at a glance checking that the font has
# been converted correctly.
#
# Requirements:
#   * pango-view to render text to bitmaps
#   * ImageMagick (for identify and montage)

set -e

scriptdir="$(cd "$(dirname "$0")" && pwd)"
imgbaseroot="terminus-font-card"

# Default values
default_identify="/usr/bin/identify"
default_montage="/usr/bin/montage"
default_pv="/usr/bin/pango-view"
default_text_file="${scriptdir}/font-card.txt"

# Unless set explictly, use default value
MONTAGE="${MONTAGE:=${default_montage}}"
IDENTIFY="${IDENTIFY:=${default_identify}}"
PV="${PV:=${default_pv}}"
TEXTFILE="${TEXTFILE:=${default_text_file}}"

print_args() {
    echo "Argument list:"
    for arg
    do
	echo "  * <<${arg}>>"
    done
}

run() {
    local fontname="${1:?No fontname given}"
    local fontsize="${2:?No fontsize given}"
    local image_fname="${3:?No image_fname given}"

    local PV_CMD=(${PV})

    # PV_CMD+=("--annotate=1")
    # PV_CMD+=("--annotate=2")
    # PV_CMD+=("--annotate=3")

    PV_CMD+=("--no-display")
    # PV_CMD+=("--single-par")
    PV_CMD+=("--language=C")
    # PV_CMD+=("--pixels")
    PV_CMD+=("--font=${fontname} ${fontsize}")

    PV_CMD+=("${TEXTFILE}")

    PV_CMD+=("--output=${image_fname}")
    IMAGE_LIST+=("${image_fname}")

    print_args "${PV_CMD[@]}"
    "${PV_CMD[@]}"

    file "${image_fname}"
}


width=480
height=120

MONTAGE_CMD=(${MONTAGE})
IMAGE_LIST=()
FONT_SIZES=(12 14 16 18 20 22 24 28 32)
FONT_NAMES=("Terminus Medium" "Terminus Bold")
FONT_NAMES=("Terminus" "Terminus Bold")
for fontsize in "${FONT_SIZES[@]}"
do
    for fontname in "${FONT_NAMES[@]}"
    do
	image_fname="${scriptdir}/${imgbaseroot}--${fontname}-${fontsize}.png"
	run "$fontname" "$fontsize" "$image_fname"
	MONTAGE_CMD+=(-label "${fontname} ${fontsize} ($(${IDENTIFY} -format "%[fx:w]x%[fx:h]" "${image_fname}"))")
	MONTAGE_CMD+=("$image_fname")
	MONTAGE_CMD+=(-repage "${width}x${height}>")
	MONTAGE_CMD+=(-crop "${width}x${height}>")
    done
done

echo "Images: ${IMAGE_LIST[@]}"

montage_fname="${scriptdir}/${imgbaseroot}.png"
MONTAGE_CMD+=(-tile "${#FONT_NAMES[@]}x${#FONT_SIZES[@]}")
MONTAGE_CMD+=(-frame 5)
MONTAGE_CMD+=(-geometry "${width}x${height}<+2+2>")
MONTAGE_CMD+=(${montage_fname})

print_args "${MONTAGE_CMD[@]}"
"${MONTAGE_CMD[@]}"

file "$montage_fname"

# End of file.