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