64 lines
926 B
Bash
64 lines
926 B
Bash
|
#!/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"
|
||
|
|