finalcut/fonts/bdfmerge.sh

64 lines
926 B
Bash
Raw Normal View History

#!/bin/bash
FONT1="$1"
FONT2="$2"
DELIMITER=$(echo -e "\x1d")
function getCode ()
{
echo "$1" | grep "^ENCODING "
}
function getGlyph ()
{
sed -n "/^STARTCHAR /,/^ENDCHAR/p" "$FONT2" \
| sed -e "s/^ENDCHAR/ENDCHAR$DELIMITER/" \
| while read -r -d "$DELIMITER" GLYPH
do
CODE=$(getCode "$GLYPH")
if [ "$CODE" = "$1" ]
then
echo "$GLYPH"
return
else
continue
fi
done
}
function replacementFound ()
{
grep -q -E "${1}\$" "$FONT2"
return $?
}
if [ $# != 2 ]
then
echo "usage: $(basename $0) font1.bdf font2.bdf > newfont.bdf"
exit 1
fi
# Get header
sed -n "1,/^CHARS /p" "$FONT2"
# Get glyphs
sed -n "/^STARTCHAR /,/^ENDCHAR/p" "$FONT1" \
| sed -e "s/^ENDCHAR/ENDCHAR$DELIMITER/" \
| while read -r -d "$DELIMITER" GLYPH
do
CODE=$(getCode "$GLYPH")
if replacementFound "$CODE"
then
getGlyph "$CODE"
else
echo "$GLYPH"
fi
done
echo "ENDFONT"