#!/bin/sh
# sarku_LOdEon: skripto por forsarki la ordinarajn tiparojn
# DejaVu kaj PTF el la epubaj versioj de LOdE.
# Uzado:
# Iru en la dosierujon kie estas la sarkota revuo, ekz-e
# $ cd ~/Documents/Books/eo/Gazetoj/LOdE
# voku la skripton, ekz-e
# $ sarku_LOdEon Lo-270.epub
# Se la operacio sucesos, la skripto eligos tian mesagxon:
# "Lo-270.epub sukcese sarkita (je 42 %)"
# kaj sarkita dosiero (en la ekzemplo, "Lo-270.epub") anstatauxos
# la argumenton.
# Averagxe la sarko sxparas 47% el la originala amplekso:
#
# Lo-257.epub 4.5M 2.6M -42 %
# Lo-267.epub 4.2M 2.2M -46 %
# Lo-268.epub 3.8M 1.8M -51 %
# Lo-269.epub 4.0M 2.1M -48 %
# Lo-270.epub 4.6M 2.6M -42 %
# -----------------------------------
# Sume 21.1M 11.2M -47 %
#
# La forsarkotaj tiparoj okupas 3908 kbajt malpakite,
# kaj 2 Mbajt zipite.
set -e
case $# in
1);;
*) echo "Mi atendas ekzakte unu argumenton."; exit 1;;
esac;
case $1 in
*.epub);;
*) echo "Mi atendas epub-dosieron."; exit 2;;
esac;
if [ ! -s $1 ]; then
echo "Dosiero $1 malplenas aux ne ekzistas"
exit 3
fi
sz1=`du -b $1 | cut -f1`
rm -fr /tmp/lode
mkdir /tmp/lode
unzip -qd /tmp/lode $1
cd /tmp/lode/OEBPS/Styles/
perl -i -pe 'BEGIN{undef $/;} s/\bPT[0-9]*\b/DejaVu/g;
s/\@font-face\b[^{}]*\{[^}]*(DejaVu|PTF)[^}]*\}\n*//smg;
s/font-family: *"DejaVu (.*)";/font-family: "Droid \1", "DejaVu \1";/g;
s/^ *color: *[^;}]+;\n?//' Stiloj.css
cd ..
sed -i '/Fonts\/\(DejaVu\|PTF[0-9]*F\)/d
' content.opf
rm -f Fonts/DejaVu*ttf Fonts/PTF*F.ttf
test "$(ls -A Fonts 2>/dev/null)" || rm -fr Fonts
cd /tmp/lode/OEBPS/Text
for i in *.xhtml; do
sed -i 's:\(]*\) height="[0-9]*":\1:g; s:\(]*\) width="[0-9]*":\1:g' $i
done
cd /tmp/lode
rm -f META-INF/calibre_bookmarks.txt
zip -q -X0 lo.epub mimetype && zip -q -Xr lo.epub *
epubcheck lo.epub
sz2=`du -b lo.epub | cut -f1`
mv lo.epub /tmp/nova/$1
sz2=`expr $sz1 - $sz2`
echo "$1 sukcese sarkita (je `expr $sz2 \* 100 / $sz1` %)"
exit 0