#!/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.