#!/bin/bash

if [[ ! -f "$1" ]]; then
	echo "Usage: ./glyphs [font.bdf]"
	exit 1
fi

fast_chr() {
	local __octal
	local __char
	printf -v __octal '%03o' "$1"
	printf -v __char \\$__octal
	REPLY="$__char"
}

unichr() {
	local c=$1  # ordinal of char
	local l=0   # byte ctr
	local o=63  # ceiling
	local p=128 # accum. bits
	local s=''  # output string

	if (( c < 0x80 )); then
		fast_chr "$c"
		printf '%s' "$REPLY"
		return
	fi

	while (( c > o )); do
		fast_chr $(( t = 0x80 | c & 0x3f ))
		s="$REPLY$s"
		(( c >>= 6, l++, p += o+1, o>>=1 ))
	done

	fast_chr $((t = p | c))
	printf '%s%s' "$REPLY" "$s"
}

## test harness 
for i in \
	$(grep -E '^ENCODING' "$1" | 
		sed -e 's/ENCODING//' |
		tr -d '\n'); do
	unichr "$i"
done
