#! /bin/bash # # Copyright 2000 Peter Ganten # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # default settings TMPDIR=/tmp/fconv.$$; if [ -f `which mktemp` ]; then TFILE=`mktemp -q /tmp/fconv.XXXXXX` else TFILE=`tempfile`; fi # Where the fnt2bdf utility resides FC=`which fnt2bdf`; if [ -z "$FC" ]; then FC=$HOME""/wine/tools/fnt2bdf; fi; # which OEM_CHARSET to use CHARSET="winsys"; TARGET=/usr/X11R6/lib/X11/fonts/misc; BDFTOPCF=/usr/X11R6/bin/bdftopcf; PAT="*.fon"; Q=""; OLDPWD=`pwd`; usage () { echo "usage: "`basename $0`" [-q] [-c charset] [-t fontdir] [-b bdftopcf] [-f fnt2bdf]" echo " [-p pattern] windir" echo echo "this utility scans a directory and its subdirectories for bitmap-fonts" echo "in Windows format, converts them to PCF-fons and installs them. If X" echo "is running, the X fontpath is re-adjusted." echo echo "options:" echo " -q quit operation." echo " -c charset charset name for OEM_CHARSET fonts, default: $CHARSET" echo " -t fontdir directory to install the converted fonts in. This" echo " directory should be a known fontdirectory to X, default:" echo " $TARGET"; echo " -b bdftopcf name of the program to call for bdf to pcf conversion," echo " default: $BDFTOPCF"; echo " -f fnt2bdf name of the program to call for winfont to bdf conversion," echo " default: $FC" echo " -p pattern Shell-Pattern of the filenames to look for. By default, the" echo " utility will look for the pattern "$PAT" (case insensitive)." echo " windir base directory to search." exit 1; } while [ "$1" ]; do case $1 in -c ) shift; if [ "$1" ]; then CHARSET=$1; shift; else usage; fi; ;; -t ) shift; if [ "$1" ]; then TARGET=$1; shift; else usage; fi; ;; -b ) shift; if [ "$1" ]; then BDFTOPCF=$1; shift; else usage; fi; ;; -f ) shift; if [ "$1" ]; then FC=$1; shift; else usage; fi; ;; -p ) shift; if [ "$1" ]; then PAT=$1; shift; else usage; fi; ;; -q ) shift; Q=":"; ;; -* ) usage; ;; * ) if [ "$WIND" ]; then usage; else WIND=$1; shift; fi; ;; esac; done; if [ ! "$WIND" ]; then usage; fi; if [ ! -d "$WIND" ]; then $Q echo "$WIND is not a directory"; exit 1; fi; if [ ! -d "$TARGET" ]; then $Q echo "$TARGET is not a directory"; exit 1; fi; type -p $BDFTOPCF 1>/dev/null || { $Q echo "Can 't execute $BDFTOPCF"; exit 1; } type -p $FC 1>/dev/null || { $Q echo "Can't execute $FC"; exit 1; } $Q echo -n "looking for bitmap fonts (\"$PAT\") in directory \"$WIND\"... "; FONTS=`find $WIND -iname "$PAT" 1>$TFILE 2>/dev/null`; if [ $? -ne 0 ]; then $Q echo "$PAT is a invalid search expression"; exit 1; fi; i=0; { while read dummy; do FONTS[$i]="$dummy"; i=$[$i+1]; done; } < $TFILE rm $TFILE; $Q echo "done." if [ -z "$FONTS" ]; then $Q echo "Can't find any fonts in $WIND"; exit 1; fi; mkdir "$TMPDIR" for i in "${FONTS[@]}"; do cp $i $TMPDIR; done cd "$TMPDIR" for i in "${FONTS[@]}"; do FNT=`basename "$i"`; FNT=${FNT%.???}; $Q echo "converting $i"; if [ "$Q" ]; then $FC -c $CHARSET -f $FNT "$i" 2>/dev/null; else $FC -c $CHARSET -f $FNT "$i"; fi; done; for i in *.bdf; do if [ "$i" = "*.bdf" ]; then echo "No fonts extracted"; rm -rf "$TMPDIR"; exit 0; fi; bdftopcf "$i" | gzip -c > ${i%.???}.pcf.gz; $Q echo "installing ${i%.???}.pcfi.gz"; mv "${i%.???}.pcf.gz" $TARGET 2>/dev/null if [ $? -ne 0 ]; then $Q echo "Can't install fonts to $TARGET. Try again as the root user."; $Q echo "Cleaning up..."; cd "$OLDPWD"; rm -rf "$TMPDIR"; exit 1; fi; rm "$i"; done; cd $TARGET; $Q echo "running mkfontdir"; if [ "$Q" ]; then mkfontdir 1>/dev/null 2>/dev/null; else mkfontdir fi; rm -rf "$TMPDIR" if [ "$DISPLAY" ]; then $Q echo "adjusting X font database"; xset fp rehash; fi;