#!/bin/bash

#
#  LaTeX font installer
#  by Cezary Sobaniec <Cezary.Sobaniec@put.edu.pl>
#
#  $Id: latex-font-inst.sh 129 2012-01-31 08:39:58Z sobaniec $
#

LOCAL_TEXMF=/usr/local/share/texmf

FONT=unknown
TYPE=public

case "$1" in
	luxi)
		FONT=ul9
		SOURCE_URL=ftp://www.ctan.org/tex-archive/fonts/LuxiMono
		TYPE=public
		;;
	bera)
		FONT=bera
		SOURCE_URL=ftp://www.ctan.org/tex-archive/fonts/bera
		TYPE=public
		;;
	gara*)
		FONT=ugm
		SOURCE_URL=ftp://www.ctan.org/tex-archive/fonts/urw/garamond
		TYPE=urw
		;;
	comicsans)
		FONT=comicsans
		SOURCE_URL=http://mirror.ctan.org/macros/latex/contrib/comicsans.zip
		TYPE=microsoft
		;;
	*)
		if [ -n "$1" ]
		then
			echo "Unknown font: $1"
		else
			echo "Usage:  font-inst.sh <luxi|bera|gara|comicsans>"
		fi
		exit 1
esac

if [ ! -d "$LOCAL_TEXMF" ]
then
	mkdir -p $LOCAL_TEXMF || exit 1
fi
if [ ! -w "$LOCAL_TEXMF" ]
then
	echo "Cannot write to $LOCAL_TEXMF"
	exit 1
fi

TYPE1_SUBDIR=fonts/type1/$TYPE/$FONT
PFB_SUBDIR=fonts/type1/$TYPE/$FONT
AFM_SUBDIR=fonts/afm/$TYPE/$FONT
TMPDIR=$(mktemp -d /tmp/font-inst.XXXXXX || exit 1)


function do_exit() {
	rm -rf $TMPDIR
	exit $1
}

function installComicSans() {
	FNT_SDIR=fonts/truetype/microsoft/comicsans
	mkdir -p $LOCAL_TEXMF/$FNT_SDIR
	for FNT in comic.ttf comicbd.ttf
	do
		if [ -z "$(kpsewhich $FNT)" ]
		then
			echo "Install $FNT into $LOCAL_TEXMF/$FNT_SDIR/"
			echo "and run:  texconfig rehash"
			do_exit 1
		fi
	done
	echo "==>  Downloading the font..."
	wget -nv -nH -nd -r $SOURCE_URL || do_exit 1
	unzip comicsans.zip
	cd comicsans
	pdflatex comicsans.ins
	sed 's/^        /	/' Makefile.NOTABS > Makefile
	echo "==>  Compiling ..."
	make
	echo "==>  Running FontForge ..."
	fontforge -script fonttopfb.ff $LOCAL_TEXMF/$FNT_SDIR/comic*.ttf || do_exit 1
	AFM_DIR=$LOCAL_TEXMF/fonts/afm/microsoft/comicsans
	PFB_DIR=$LOCAL_TEXMF/fonts/type1/microsoft/comicsans
	mkdir -p $AFM_DIR $PFB_DIR
	touch comicsans.pdf
	echo "==>  Installing ..."
	make install || do_exit 1
	install ComicSansMS.afm $AFM_DIR/rcomic8r.afm || do_exit 1
	install ComicSansMS.pfb $PFB_DIR/rcomic8r.pfb || do_exit 1
	install ComicSansMS-Bold.afm $AFM_DIR/rcomicbd8r.afm || do_exit 1
	install ComicSansMS-Bold.pfb $PFB_DIR/rcomicbd8r.pfb || do_exit 1
}

function installFont() {
	echo "==>  Downloading the font..."
	wget -nv -nH -nd -r $SOURCE_URL || do_exit 1

	echo "==>  Installing..."
	cd $LOCAL_TEXMF || do_exit 1
	mkdir -p $PFB_SUBDIR || do_exit 1
	mkdir -p $AFM_SUBDIR || do_exit 1
	unzip -o $TMPDIR/$FONT.zip || do_exit 1
	cp -v $TMPDIR/*.pfb $PFB_SUBDIR || do_exit 1
	cp -v $TMPDIR/*.afm $AFM_SUBDIR || do_exit 1
	MAP="$(find fonts/map -name "$FONT.map")"
	if [ -z "$MAP" ]
	then
		cp -v dvips/config/$FONT.map fonts/map/ || do_exit 1
	fi
	rm -f dvips/config/$FONT.map
}

cd $TMPDIR || do_exit 1

if [ "$FONT" = "comicsans" ]
then
	installComicSans
else
	installFont
fi

echo "==>  Configuring..."
texconfig rehash
updmap --nomkmap --disable $FONT.map
updmap --enable Map=$FONT.map
do_exit

