From: wolff@inf.fu-berlin.de (Thomas Wolff)
Subject: How to install PostScript fonts with FrameMaker (2)
Organization: Free University of Berlin, Germany
Date: Fri, 18 Dec 1992 14:52:39 GMT

#! /bin/sh
: This is a sharchive -- extract the files by running through sh

echo ---------------------- extracting .fminit2.0/fmlpr.doc -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fmlpr.doc
,
,To achieve automatic downloading of font files when printing with FrameMaker, 
,I wrote the following package.
,
,FrameMaker's central printing filter, "FMlpr" (to be found in ".fminit.../"), 
,is modified to do this:
,- scan the PostScript file for fonts
,- check with a list of font download files ("fontdir/fontfilelist")
,- maintain pre-loading information for efficiency:
,  check font files needed with font files already loaded
,		("/usr/local/tmp/fmprinterfonts.$PRINTER")
,  and leave out those files said there to be already loaded
,  (unfortunately, this information cannot be kept 100% reliable, since 
,   if someone switches off the printer for a moment, the contents of this 
,   information file will not automatically be cleared)
,
,The font files may be in one of several formats:
,- .pfb	unpacking into hex format is done by "fmAdobePCFont"
,- .pfb-mac	unpacking into hex format is done by "fmAdobeMacFont"
,- compressed with "compress" (.Z) or "zip" (.zip)
,  (but not both .pfb and compressed since .pfb files are hardly compressable)
,- directly downloadable PostScript (other or no suffix)
,Also, remedy is provided for some (public domain) font files which are so 
,stupid as to contain special encoding information instead of using standard 
,encoding although they are only text fonts. This would stop FrameMaker from 
,re-encoding them and thus not make available many accented and other special 
,characters for printing although they are contained in the font. (Since 
,FrameMaker's font installation file "fontdir/fontlist" does contain entries 
,specifying which fonts are non-text (e.g., <NonText Symbol >) anyway, its 
,re-encoding behaviour depending on the font's /Encoding entry is not clever, 
,either!)
,The remedy is that, depending on an explicit entry in the download file list 
,("fontdir/fontfilelist"), re-encoding towards StandardEncoding is performed 
,after downloading.
,
,The downloading is organized to allow that some fonts may require more than 
,one file to be installed (I use this for my adaptation of Hershey fonts which 
,share common PostScript routines to generate accented characters). Also, if 
,a font file is needed to install more than one font, it will be loaded only 
,once (for this reason, the information on already loaded fonts is based on 
,filenames, not font names).
,
,
,I wrote some more scripts to supply easy handling of several downloading 
,related tasks. Short descriptions of them follow.
,
,I also generate the download file list ("fontdir/fontfilelist") automatically 
,and supply all information needed for this.
,
,FrameMaker 2.x note: The font setup command in the PostScript prologue 
,was FMDEFINEFONT instead of FMFONTDEFINE before FrameMaker 3.0. You will 
,have to change this is some of the scripts to make them work with 2.x.
,
,
,commands and files
,==================
,
,FMlpr
,	is the modified FrameMaker filter and printer as described above.
,	It inserts all font download files needed by the PostScript input 
,	and not already pre-loaded into the printer (see below).
,	It can also be called explicitly to print a PostScript file 
,	generated by FrameMaker. Then it only needs to know the filename 
,	provided the printer is indicated by $PRINTER (defaults to ps) or 
,	you can tell it the printer's name first (without -P):
,		FMlpr [<printer>] <docu.ps>
,
,fmloadfonts
,	pre-loads the fonts needed by the given file into the printer. To 
,	be more precise, all fonts that would be inserted by "FMlpr".
,	It also updates the pre-loaded file information 
,	("/usr/local/tmp/fmprinterfonts.$PRINTER") by the added font files.
,	Call
,		fmloadfonts [<printer>] <docu.ps>
,
,fmclearfonts
,	may be used to reach a well-defined consistent state (of no fonts 
,	pre-loaded) by clearing the pre-loaded file information in 
,	"/usr/local/tmp/fmprinterfonts.$PRINTER" and resetting the printer:
,		fmclearfonts [<printer>]
,
,fmfonts
,	is for information on fonts and files to be downloaded for a 
,	given PostScript file:
,		fmfonts <docu.ps>
,
,fmaddfonts
,	attaches download fonts to a PostScript file and generates a 
,	combined file on standard output, which then contains all fonts 
,	needed to print and thus can be printed anytime on any PostScript 
,	printer. The pre-loaded file information is not used to leave out 
,	any font files. Call:
,		fmaddfonts <docu.ps> > <docu-fonts.ps>
,
,All scripts described so far expect "fontdir/" to reside in the directory 
,which the script is called from. So if you copy or link them to a public 
,place, a link to "fontdir/" is also required there (or some modification 
,of the scripts).
,
,
,makefontfilelist
,	This command is located in the "fontdir/" directory and should be 
,	called from there (".fminit.../fontdir/").
,	It takes the list of directories in which font files can be found 
,	from the file "fontdirs" and expects a file "fontfiles" to be present 
,	in any of those directories. From them, it generates the file 
,	"fontfilelist" in a format suitable for the above listed scripts.
,
,fontdirs
,	just contains a line with space-separated directory names.
,
,fontfilelist
,	is the collected information on files and fonts.
,
,fontfiles
,	is the local font file information for each directory containing 
,	downloadable fonts. The format of each line is:
,	<filename>	<font name> ... <font name>	<encoding flag>
,	where <filename> is the name of a file containing download 
,		information, 
,	<font name> is the name of a font for which this file is needed 
,		(both more than one font name per entry and more than one 
,		entry per font name are allowed, but with the restriction: 
,		if one file has to be loaded before another one for a font, 
,		its name must be first in alphabetic order), 
,	<encoding flag> is optional and may have the value /NonStdEncoding, 
,		which means that it is a text font whose file creator was 
,		so unaware to place an encoding vector into the font file 
,		instead of just the entry '/Encoding StandardEncoding def', 
,		so that this has to be fixed with downloading. If present, 
,		this flag is copied into the generated "fontfilelist".
,
,slantSymbol.ps
,	is an example to show that font files loaded by this mechanism don't 
,	need to contain font descriptions but can also be used to modify 
,	internal fonts in the printer.
,
,I attach the files "fontdirs", one of my "fontfiles", "slantSymbol.ps", and 
,"fontfilelist" as examples of how they should look like.
,
,Thomas Wolff
,Institut f:ur Informatik
,Freie Universit:at Berlin
,Nestorstr. 8-9, D-1000 Berlin 31 (until end of 1992)
,private: Hebbelstr 3, D-1000 Berlin 10
,wolff@inf.fu-berlin.de
,Donations would not be rejected (e.g. 15 ECU cheque)
,
EOSED

echo ---------------------- extracting .fminit2.0/FMlpr -----------------
sed 's/^,//' << \EOSED > .fminit2.0/FMlpr
,#! /bin/sh
,# Default Shell File to route a file to a printer
,# The default is to just lpr it with the -r flag, and the -s flag only if the
,#  file didn't fit on /tmp (otherwise /tmp fills up too easily)
,# Edit as needed to, say, execute a filter
,#
,# Inputs are:
,# $1 = printer name
,# $2 = file to print
,# $3 = .fminit2.0 directory path
,# $4 = home directory
,# $5 = 0 or 1 as printfile lives on /tmp or on $HOME
,# $6 = bin directory for maker
,
,echo FMlpr: running $$ >&2
,
,if [ -z "$2" ]
,# enable calling this script by hand with only the file name as parameter
,then	printfile="$1"
,	PRINTER=${PRINTER-ps}
,	delprintfile=false
,else	printfile="$2"
,	PRINTER=${1-ps}
,	delprintfile=true
,fi
,job=`basename $printfile`
,preloadfiles=/usr/local/tmp/fmprinterfonts.$PRINTER
,if [ ! -r $preloadfiles ]
,then	preloadfiles=/dev/null
,fi
,
,getfontdir () {
,	fontdir=`dirname $0`/fontdir	# try to find the fontdir here first,
,			# for if the user installed his/her font directory
,			# the $3 parameter is not of much use here
,	if [ ! -d $fontdir ]
,	then fontdir=$3/fontdir
,	     if [ ! -d $fontdir ]
,	     then
,		set - $FMHOME/.fminit*/fontdir
,		fontdir=$1
,	     fi
,	fi
,	}
,getfontdir
,
,(# generate the postscript output
,# first, copy the first line of FrameMaker's output, may it be %! or %!PS-...
,line < $printfile
,
,# then, insert our code to enforce StandardEncoding if required
,cat << //EOPS
,/copyfont {
,	dup length dict begin
,	{1 index /FID ne {def} {pop pop} ifelse} forall
,	currentdict end
,	} bind def
,/makeStandardEncoding {
,	dup FontDirectory exch known
,	{
,	dup findfont copyfont
,	dup /Encoding StandardEncoding put
,	definefont pop
,	}
,	{pop}
,	ifelse
,	} def
,//EOPS
,
,# now insert all fonts used by $printfile and registered in fontfilelist
,for font in ` sed -e 's,^[0-9]* *[0-9]* */\([^ ]*\) *FMFONTDEFINE$,\1,' -e t \
,		-e 's,^%%.* font \([!-z]*\).*$,\1,' -e t \
,		-e d $printfile |
,	sort | uniq `
,# here we are listing uniquely all fonts used in $printfile
,do	echo "FMlpr: using font $font" >&2
,	cat $fontdir/fontfilelist |
,	sed	-e 's,\(.*\), \1 ,' -e 's,	, ,g' \
,		-e "/ $font /!{" -e 'd;b' -e '}' \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*\(/NonStdEncoding\).*,\1 $font makeStandardEncoding," \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*,\1 $font pop,"
,done | sort | uniq |
,# Here we have a unique list of required font download files
,# (we go through it with a while loop since the shell didn't seem to 
,#  accept a nested for loop: for load in `for font in ... | uniq` do ... ).
,# This is the reason for the following restriction:
,#	if for any font, more than one file is required, their names must be
,#	arranged alphabetically in the order of their required download.
,# The next line is the interface for filtering out permanently loaded fonts.
,fgrep -vxf $preloadfiles |
,while read load
,do	set - $load
,	fontfile=$1
,	font=$2
,	echo "FMlpr: Inserting font file $fontfile for font $font" >&2
,	(cd $fontdir
,	base=`basename $fontfile`
,	case $fontfile in
,	*.Z)	zcat $fontfile ;;
,	*.zip)	unzip -p $fontfile ;;
,	*.pfb)	fmAdobePCFont $fontfile /tmp/$base.ps
,		cat /tmp/$base.ps
,		/bin/rm /tmp/$base.ps ;;
,	*.pfb-mac)	fmAdobeMacFont $fontfile /tmp/$base.ps
,		cat /tmp/$base.ps
,		/bin/rm /tmp/$base.ps ;;
,	?*)	cat $fontfile ;;
,	esac)
,	shift
,	echo /$*
,	# append either /$font makeStandardEncoding or /$font pop , whichever 
,	# was generated above according to the presence of "/NonStdEncoding"
,done
,echo "FMlpr: appending print file $printfile" >&2
,
,# now at last, we append the real output
,cat $printfile
,) > /tmp/$job.ps
,
,if [ $delprintfile = true ]
,# don't delete it if this script was called by hand
,then /bin/rm $printfile
,fi
,
,if test "$5" -eq 1
,then
,	lpr -r -s -P$PRINTER /tmp/$job.ps
,else
,	lpr -r -P$PRINTER /tmp/$job.ps
,fi
,
,# former commands:
,#if test $5 -eq 1
,#then
,#	lpr -r -s -P$1 "$2"
,#else
,#	lpr -r -P$1 "$2"
,#fi
EOSED

echo ---------------------- extracting .fminit2.0/fmloadfonts -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fmloadfonts
,#! /bin/sh
,# pre-load font files for fonts used by given FrameMaker-PostScript file
,# to printer
,#
,# Inputs are:
,# $1 = printer name
,# $2 = file to print
,
,if [ -z "$2" ]
,# enable calling this script by hand with only the file name as parameter
,then	printfile="$1"
,	PRINTER=${PRINTER-ps}
,else	printfile="$2"
,	PRINTER=${1-ps}
,fi
,preloadfiles=/usr/local/tmp/fmprinterfonts.$PRINTER
,postloadfiles=$preloadfiles.post
,if [ -r $preloadfiles ]
,then	loadedfiles=$preloadfiles
,else	loadedfiles=/dev/null
,fi
,
,getfontdir () {
,	fontdir=`dirname $0`/fontdir	# try to find the fontdir here first,
,			# for if the user installed his/her font directory
,			# the $3 parameter is not of much use here
,	if [ ! -d $fontdir ]
,	then fontdir=$3/fontdir
,	     if [ ! -d $fontdir ]
,	     then
,		set - $FMHOME/.fminit*/fontdir
,		fontdir=$1
,	     fi
,	fi
,	}
,getfontdir
,
,echo > $postloadfiles
,(# generate the postscript output
,# first, feed code to make permanent changes in printer
,echo %!
,echo serverdict begin 0 exitserver
,
,# then, insert our code to enforce StandardEncoding if required
,cat << //EOPS
,/copyfont {
,	dup length dict begin
,	{1 index /FID ne {def} {pop pop} ifelse} forall
,	currentdict end
,	} bind def
,/makeStandardEncoding {
,	dup FontDirectory exch known
,	{
,	dup findfont copyfont
,	dup /Encoding StandardEncoding put
,	definefont pop
,	}
,	{pop}
,	ifelse
,	} def
,//EOPS
,
,# now insert all fonts used by $printfile and registered in fontfilelist
,for font in ` sed -e 's,^[0-9]* *[0-9]* */\([^ ]*\) *FMFONTDEFINE$,\1,' -e t \
,		-e 's,^%%.* font \([!-z]*\).*$,\1,' -e t \
,		-e d $printfile |
,	sort | uniq `
,# here we are listing uniquely all fonts used in $printfile
,do	echo "fmloadfonts: using font $font" >&2
,	cat $fontdir/fontfilelist |
,	sed	-e 's,\(.*\), \1 ,' -e 's,	, ,g' \
,		-e "/ $font /!{" -e 'd;b' -e '}' \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*\(/NonStdEncoding\).*,\1 $font makeStandardEncoding," \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*,\1 $font pop,"
,done | sort | uniq |
,# Here we have a unique list of required font download files
,# (we go through it with a while loop since the shell didn't seem to 
,#  accept a nested for loop: for load in `for font in ... | uniq` do ... ).
,# This is the reason for the following restriction:
,#	if for any font, more than one file is required, their names must be
,#	arranged alphabetically in the order of their required download.
,# The next line is the interface for filtering out permanently loaded fonts.
,fgrep -vxf $loadedfiles |
,while read load
,do	set - $load
,	echo "$load" >> $postloadfiles
,	fontfile=$1
,	font=$2
,	echo "fmloadfonts: Inserting font file $fontfile for font $font" >&2
,	(cd $fontdir
,	base=`basename $fontfile`
,	case $fontfile in
,	*.Z)	zcat $fontfile ;;
,	*.zip)	unzip -p $fontfile ;;
,	*.pfb)	fmAdobePCFont $fontfile /tmp/$base.ps
,		cat /tmp/$base.ps
,		/bin/rm /tmp/$base.ps ;;
,	*.pfb-mac)	fmAdobeMacFont $fontfile /tmp/$base.ps
,		cat /tmp/$base.ps
,		/bin/rm /tmp/$base.ps ;;
,	?*)	cat $fontfile ;;
,	esac)
,	shift
,	echo /$*
,	# append either /$font makeStandardEncoding or /$font pop , whichever 
,	# was generated above according to the presence of "/NonStdEncoding"
,done
,) | lpr
,
,umask 000
,cat $postloadfiles >> $preloadfiles
,/bin/rm $postloadfiles
EOSED

echo ---------------------- extracting .fminit2.0/fmclearfonts -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fmclearfonts
,#! /bin/sh
,# clear pre-loaded fonts in printer and information about it
,#
,# Inputs are:
,# $1 = printer name
,
,PRINTER=${1-${PRINTER-ps}}
,preloadfiles=/usr/local/tmp/fmprinterfonts.$PRINTER
,
,umask 000
,echo > $preloadfiles
,
,(# generate the postscript output
,# first, feed code to make permanent changes in printer
,echo %!
,echo serverdict begin 0 exitserver
,
,# then, feed code to initialize printer
,echo systemdict /quit get exec
,) | lpr
EOSED

echo ---------------------- extracting .fminit2.0/fmfonts -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fmfonts
,#! /bin/sh
,# show font names and associated font files for fonts
,# used by given FrameMaker-PostScript file
,#
,# Inputs are:
,# $1 = printer name
,# $2 = file to print
,
,if [ -z "$2" ]
,# enable calling this script by hand with only the file name as parameter
,then	printfile="$1"
,else	printfile="$2"
,fi
,
,preloadfiles=/usr/local/tmp/fmprinterfonts.$PRINTER
,if [ ! -r $preloadfiles ]
,then	preloadfiles=/dev/null
,fi
,
,getfontdir () {
,	fontdir=`dirname $0`/fontdir	# try to find the fontdir here first,
,			# for if the user installed his/her font directory
,			# the $3 parameter is not of much use here
,	if [ ! -d $fontdir ]
,	then fontdir=$3/fontdir
,	     if [ ! -d $fontdir ]
,	     then
,		set - $FMHOME/.fminit*/fontdir
,		fontdir=$1
,	     fi
,	fi
,	}
,getfontdir
,
,(# look up the fonts
,# now insert all fonts used by $printfile and registered in fontfilelist
,for font in ` sed -e 's,^[0-9]* *[0-9]* */\([^ ]*\) *FMFONTDEFINE$,\1,' -e t \
,		-e 's,^%%.* font \([!-z]*\).*$,\1,' -e t \
,		-e d $printfile |
,	sort | uniq `
,# here we are listing uniquely all fonts used in $printfile
,do	echo "fmfonts - font $font" >&2
,	cat $fontdir/fontfilelist |
,	sed	-e 's,\(.*\), \1 ,' -e 's,	, ,g' \
,		-e "/ $font /!{" -e 'd;b' -e '}' \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*\(/NonStdEncoding\).*,\1 $font makeStandardEncoding," \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*,\1 $font pop,"
,done | sort | uniq |
,(tee /dev/tty
, echo fmfonts: font files still to be loaded: >&2
,) |
,# Here we have a unique list of required font download files
,# (we go through it with a while loop since the shell didn't seem to 
,#  accept a nested for loop: for load in `for font in ... | uniq` do ... ).
,# This is the reason for the following restriction:
,#	if for any font, more than one file is required, their names must be
,#	arranged alphabetically in the order of their required download.
,# The next line is the interface for filtering out permanently loaded fonts.
,fgrep -vxf $preloadfiles
,)
EOSED

echo ---------------------- extracting .fminit2.0/fmaddfonts -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fmaddfonts
,#! /bin/sh
,# add download fonts to a FrameMaker PostScript output
,#
,# Inputs are:
,# $1 = printer name
,# $2 = file to print
,# $3 = .fminit2.0 directory path
,# $4 = home directory
,# $5 = 0 or 1 as printfile lives on /tmp or on $HOME
,# $6 = bin directory for maker
,
,echo fmaddfonts: running $$ >&2
,
,if [ -z "$2" ]
,# enable calling this script by hand with only the file name as parameter
,then	printfile="$1"
,else	printfile="$2"
,fi
,job=`basename $printfile`
,
,getfontdir () {
,	fontdir=`dirname $0`/fontdir	# try to find the fontdir here first,
,			# for if the user installed his/her font directory
,			# the $3 parameter is not of much use here
,	if [ ! -d $fontdir ]
,	then fontdir=$3/fontdir
,	     if [ ! -d $fontdir ]
,	     then
,		set - $FMHOME/.fminit*/fontdir
,		fontdir=$1
,	     fi
,	fi
,	}
,getfontdir
,
,(# generate the postscript output
,# first, copy the first line of FrameMaker's output, may it be %! or %!PS-...
,line < $printfile
,
,# then, insert our code to enforce StandardEncoding if required
,cat << //EOPS
,/copyfont {
,	dup length dict begin
,	{1 index /FID ne {def} {pop pop} ifelse} forall
,	currentdict end
,	} bind def
,/makeStandardEncoding {
,	dup FontDirectory exch known
,	{
,	dup findfont copyfont
,	dup /Encoding StandardEncoding put
,	definefont pop
,	}
,	{pop}
,	ifelse
,	} def
,/makeslantedfont {
,	dup FontDirectory exch known
,	{
,	findfont 0.28 % slantfont:
,			[ 1 0 4 -1 roll 1 0 0 ] makefont copyfont
,	dup /FontName 3 index put
,	definefont pop
,	}
,	{pop pop}
,	ifelse
,	} def
,//EOPS
,
,# now insert all fonts used by $printfile and registered in fontfilelist
,for font in ` sed -e 's,^[0-9]* *[0-9]* */\([^ ]*\) *FMFONTDEFINE$,\1,' -e t \
,		-e 's,^%%.* font \([!-z]*\).*$,\1,' -e t \
,		-e d $printfile |
,	sort | uniq `
,# here we are listing uniquely all fonts used in $printfile
,do	echo "fmaddfonts: using font $font" >&2
,	cat $fontdir/fontfilelist |
,	sed	-e 's,\(.*\), \1 ,' -e 's,	, ,g' \
,		-e "/ $font /!{" -e 'd;b' -e '}' \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*\(/NonStdEncoding\).*,\1 $font makeStandardEncoding," \
,		-e "s,.* \([^ ]*\.[^ ]*\) .*,\1 $font pop,"
,done | sort | uniq |
,# Here we have a unique list of required font download files
,# (we go through it with a while loop since the shell didn't seem to 
,#  accept a nested for loop: for load in `for font in ... | uniq` do ... ).
,# This is the reason for the following restriction:
,#	if for any font, more than one file is required, their names must be
,#	arranged alphabetically in the order of their required download.
,while read load
,do	set - $load
,	fontfile=$1
,	font=$2
,	echo "fmaddfonts: Inserting font file $fontfile for font $font" >&2
,	(cd $fontdir
,	base=`basename $fontfile`
,	case $fontfile in
,	*.Z)	zcat $fontfile ;;
,	*.zip)	unzip -p $fontfile ;;
,	*.pfb)	fmAdobePCFont $fontfile /tmp/$base.ps
,		cat /tmp/$base.ps
,		/bin/rm /tmp/$base.ps ;;
,	*.pfb-mac)	fmAdobeMacFont $fontfile /tmp/$base.ps
,		cat /tmp/$base.ps
,		/bin/rm /tmp/$base.ps ;;
,	?*)	cat $fontfile ;;
,	esac)
,	shift
,	echo /$*
,	# append either /$font makeStandardEncoding or /$font pop , whichever 
,	# was generated above according to the presence of "/NonStdEncoding"
,done
,echo "fmaddfonts: appending print file $printfile" >&2
,
,# now at last, we append the real output
,cat $printfile
,)
EOSED

echo ---------------------- extracting .fminit2.0/fontdir/makefontfilelist -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fontdir/makefontfilelist
,#! /bin/sh
,for dir in `cat fontdirs`
,do
,	sed -e '/\.[atp]fm/d' -e "s,^,$dir/," $dir/fontfiles
,done > fontfilelist
EOSED

echo ---------------------- extracting .fminit2.0/fontdir/fontdirs -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fontdir/fontdirs
,. hr ow cica adobe agfa urw fub div wfn
EOSED

echo ---------------------- extracting .fminit2.0/fontdir/fontfiles -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fontdir/fontfiles
,slantSymbol.ps		Symbol-Slanted
,slant.ps	News-Gothic-Oblique	/NonStdEncoding
,slant.ps	News-Gothic-BoldOblique
EOSED

echo ---------------------- extracting .fminit2.0/fontdir/slantSymbol.ps -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fontdir/slantSymbol.ps
,%!
,% serverdict begin 0 exitserver	% use this if downloading directly to printer!
,
,/copyfont {	% param: font
,		% result: font'
,	dup
,	length
,	dict begin
,	{
,	1 index dup /FID ne exch /UniqueID ne and
,	% excluding /UniqueID should make makeslantedfontp work but doesn't
,		{def}
,		{pop pop} ifelse
,	} forall
,	currentdict
,	end
,	} bind def
,/slantfontp {	% params: font slant
,		% result: font'
,	/slantval exch def
,	copyfont dup
,	dup /FontMatrix get [1 0 slantval 1 0 0] matrix concatmatrix
,		/FontMatrix exch put
,	} bind def
,/makeslantedfontp {
,	dup FontDirectory exch known
,	{
,	findfont 0.28 slantfontp
,	dup /FontName 3 index put
,	definefont pop
,	}
,	{pop pop}
,	ifelse
,	} def
,/slantfont {	% params: font slant
,		% result: font'
,	[ 1 0 4 -1 roll 1 0 0 ] makefont copyfont
,	} bind def
,/makeslantedfont {
,	dup FontDirectory exch known
,	{
,	findfont 0.28 slantfont
,	dup /FontName 3 index put
,	definefont pop
,	}
,	{pop pop}
,	ifelse
,	} def
,
,/Symbol-Slanted /Symbol makeslantedfont
EOSED

echo ---------------------- extracting .fminit2.0/fontdir/fontfilelist -----------------
sed 's/^,//' << \EOSED > .fminit2.0/fontdir/fontfilelist
,./slantSymbol.ps		Symbol-Slanted
,./slant.ps	News-Gothic-Oblique	/NonStdEncoding
,./slant.ps	News-Gothic-BoldOblique
,hr/H-Gothic-E.ps	Hershey-Gothic-English Hershey-Gothic-English-Bold Hershey-Gothic-English-Oblique
,hr/H-Gothic-G.ps	Hershey-Gothic-German Hershey-Gothic-German-Bold Hershey-Gothic-German-Oblique
,hr/H-Gothic-I.ps	Hershey-Gothic-Italian Hershey-Gothic-Italian-Bold Hershey-Gothic-Italian-Oblique
,hr/H-Plain-Duplex-Italic.ps	Hershey-Plain-Duplex-Italic Hershey-Plain-Duplex-Italic-Bold
,hr/H-Plain-Duplex.ps	Hershey-Plain-Duplex Hershey-Plain-Duplex-Bold
,hr/H-Plain-Simplex.ps	Hershey-Plain-Simplex Hershey-Plain-Simplex-Bold Hershey-Plain-Simplex-Oblique Hershey-Plain-Simplex-BoldOblique
,hr/H-Plain-Triplex-Italic.ps	Hershey-Plain-Triplex-Italic Hershey-Plain-Triplex-Italic-Bold
,hr/H-Plain-Triplex.ps	Hershey-Plain-Triplex Hershey-Plain-Triplex-Bold
,hr/H-Plain.ps	Hershey-Plain Hershey-Plain-Bold Hershey-Plain-Oblique Hershey-Plain-BoldOblique
,hr/H-Script-Complex.ps	Hershey-Script-Complex Hershey-Script-Complex-Bold
,hr/H-Script-Simplex.ps	Hershey-Script-Simplex Hershey-Script-Simplex-Bold
,hr/H-Cyrillic.ps	Hershey-Cyrillic
,hr/H-Greek-Complex.ps	Hershey-Greek-Complex
,hr/H-Greek-Simplex.ps	Hershey-Greek-Simplex
,hr/H-Symbol.ps		Hershey-Symbol
,hr/H#Dict	Hershey-Gothic-English Hershey-Gothic-English-Bold Hershey-Gothic-English-Oblique
,hr/H#Dict	Hershey-Gothic-German Hershey-Gothic-German-Bold Hershey-Gothic-German-Oblique
,hr/H#Dict	Hershey-Gothic-Italian Hershey-Gothic-Italian-Bold Hershey-Gothic-Italian-Oblique
,hr/H#Dict	Hershey-Plain-Duplex-Italic Hershey-Plain-Duplex-Italic-Bold
,hr/H#Dict	Hershey-Plain-Duplex Hershey-Plain-Duplex-Bold
,hr/H#Dict	Hershey-Plain-Simplex Hershey-Plain-Simplex-Bold Hershey-Plain-Simplex-Oblique Hershey-Plain-Simplex-BoldOblique
,hr/H#Dict	Hershey-Plain-Triplex-Italic Hershey-Plain-Triplex-Italic-Bold
,hr/H#Dict	Hershey-Plain-Triplex Hershey-Plain-Triplex-Bold
,hr/H#Dict	Hershey-Plain Hershey-Plain-Bold Hershey-Plain-Oblique Hershey-Plain-BoldOblique
,hr/H#Dict	Hershey-Script-Complex Hershey-Script-Complex-Bold
,hr/H#Dict	Hershey-Script-Simplex Hershey-Script-Simplex-Bold
,hr/H#Dict	Hershey-Cyrillic Hershey-Greek-Complex Hershey-Greek-Simplex Hershey-Symbol
,ow/Dijkstra.zip	Dijkstra
,cica/albatros.pfb	Albatross	/NonStdEncoding	v1.3 ShareWare albatros.pfb0 PoBox 1828 Easton MD 21613
,cica/anima___.pfb	Animals		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/ans.pfb	Ann-Stone	/NonStdEncoding	Ann-Stone 1991 by D. Rakowski. All Rights Reserved.
,cica/ariston.pfb	Ariston-ExtraBold-Italic	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/balleeng.pfb	BalletEngraved		Copyright 1990, 1991 FontBank, Inc.
,cica/baskvl.pfb	Baskerville-Normal		Courtesy of PUBLISHERS' PARADISE BBS 205-882-6886 9600 HST
,cica/baskvlb.pfb	Baskerville-Bold		Courtesy of Publishers' Paradise BBS 205-882-6886 9600 HST
,cica/baskvli.pfb	Baskerville-Normal-Italic		Courtesy of Publishers' Paradise BBS 205-882-6886 9600 HST
,cica/becker.pfb	Becker-Medium		Another one from PUBLISHERS' PARADISE BBS (205)882-6886 HST
,cica/bedrock.pfb	Bedrock-Light		MicroCOM BBS, Custom Fonts - (813)646-7347 HST
,cica/beffle__.pfb	Beffle	/NonStdEncoding	Beffle font 1991 by D. Rakowski. All Rights Reserved.
,cica/bi______.pfb	Bizarro		Bizarro font 1992 by D. Rakowski. All rights reserved.
,cica/blippo.pfb	Blippo-Heavy		Courtesy of PUBLISHERS' PARADISE BBS (205)882-6886 HST D/S
,cica/bodacius.pfb	Bodacious-Normal		MicroCOM BBS - We're your Type! - (813)646-7347 HST
,cica/bodidlyb.pfb	BODIDLYbold	/NonStdEncoding	v2.0 . Shareware bodidlyb.pfb0. PoBox 1828 Easton MD 21601
,cica/bodoni.pfb	Bodoni-Normal		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/bodonib.pfb	Bodoni-Bold		Courtesy of PUBLISHERS' PARADISE BBS (205)882-6886 HST D/S
,cica/bodonii.pfb	Bodoni-Normal-Italic		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/broadway.pfb	Broadway-Normal		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/brushscr.pfb	Brush-Script-Normal-Italic		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/calig___.pfb	Caligula		Autotracing by Fontographer 3.2 from a bitmap font. Public Domain.
,cica/casopen.pfb	CASLONOPENFACE-Thin	/NonStdEncoding	e
,cica/cocacol2.pfb	CocaCola	/NonStdEncoding	
,cica/crf_____.pfb	CracklingFire	/NonStdEncoding	Crackling Fire 1991 by David Rakowski. Alle Rechte Vorbehalten.
,cica/crill___.pfb	Crillee	/NonStdEncoding	Converted to PC format for distribution by Reasonbable Solutions
,cica/davyding.pfb	DavysDingbats	/NonStdEncoding	DavysDingbats  1991 by David Rakowski. All Rights Reserved.
,cica/dingbats.pfb	dingbats-Thin	/NonStdEncoding	s
,cica/dragonwi.pfb	Dragonwick	/NonStdEncoding	Dragonwick  1990 by David Rakowski. All Rights Reserved.
,cica/duncan.pfb	Duncan	/NonStdEncoding	Duncan (c)1992 Jim Pearson All Rights Reserved  Shareware
,cica/eurobold.pfb	Eurostile-Bold	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/flora-b.pfb	Flora-Bold	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/flora.pfb	Flora-Normal	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/franktim.pfb	FrankTimes		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/fusion-b.pfb	Fusion-Bold	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/fusion.pfb	Fusion-Normal	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/garmnd.pfb	Garamond-Normal		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/garmndmi.pfb	Garamond-Medium-Italic		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/gocmase_.pfb	GoodCityModern		(c) 1991 GoodcityModern, A.S.Meit; based on J. Gutenberg's 42 line Bible.
,cica/gocmseq_.pfb	GoodCityModern	/NonStdEncoding	(c) 1991 GoodcityModern, A.S.Meit; based on J. Gutenberg's 42 line Bible.
,cica/goudymed.pfb	GoudyMedieval	/NonStdEncoding	
,cica/goudyo.pfb	Goudy-Old-Style-Normal		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/goudyob.pfb	Goudy-Old-Style-Bold		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/goudyoi.pfb	Goudy-Old-Style-Normal-Italic		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/griffdin.pfb	GriffinDingbats	/NonStdEncoding	GriffinDingbats  1991 by Griffin Music Ensemble and D. Rakowski. All Rights Reserved.
,cica/harri___.pfb	Harrington		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/iglesia.pfb	Iglesia-Light		a
,cica/igloolas.pfb	IglooLaser		
,cica/inkwe___.pfb	Inkwell		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/latinwyd.pfb	Latin-Wide-Normal	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/manzanit.pfb	Manzanita	/NonStdEncoding	
,cica/marriage.pfb	Mariage-Normal	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/middleto.pfb	Middleton-Light	/NonStdEncoding	Copyright 199x, ZSoft Corporation, All rights reserved.
,cica/monot___.pfb	Monotony		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/murie___.pfb	Muriel		Copyright 1990, 1991 FontBank, Inc.
,cica/nbskrvl.pfb	NewBaskerville-Light	/NonStdEncoding	n
,cica/newsgoth.pfb	News-Gothic-Normal	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/nwsgth-b.pfb	News-Gothic-Bold	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/oldext-r.pfb	Old-TownExt-Normal	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/oswaldbl.pfb	OSWALDblack	/NonStdEncoding	v 2.0. Shareware oswaldbl.pfb0 PoBox 1828 Easton MD 21601
,cica/parismet.pfb	ParisMetro	/NonStdEncoding	ParisMetro  1991 by David Rakowski. Tous droites reservs.
,cica/parkave.pfb	ParkAvenue-Normal		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/pcmir___.pfb	PCMira		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/pcorn___.pfb	PCOrnaments		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/postcry_.pfb	PostCrypt		Based on Crypt from MacroMind, Inc. Made by Walter Kafton-Minkel. Edited by Earl Allen at Altsys.
,cica/recycle.pfb	Recycle	/NonStdEncoding	
,cica/redlette.pfb	RedLetter	/NonStdEncoding	1990 Robert Schenk
,cica/rodchenk.pfb	Rodchenko		1990 Robert Schenk
,cica/roissy-b.pfb	Roissy-Bold	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/roissy.pfb	Roissy-Normal	/NonStdEncoding	Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/rsand___.pfb	RSAndromeda		
,cica/rscanai.pfb	RSCanaith		
,cica/rscavema.pfb	RSCaveman		
,cica/rsdayton.pfb	RSDaytona		
,cica/rstimmir.pfb	RSTimesMirror		Converted by Reasonable Solutions
,cica/rstoulau.pfb	RSToulouseLautrec		Converted by Reasonable Solutions
,cica/rudelsbe.pfb	Rudelsberg	/NonStdEncoding	Rudelsberg font  1990 David Rakowski. Alle Rechte Vorhalten. This font is free.
,cica/saloon.pfb	SaloonExt		1990 R Schenk Box 404 Rensselaer, IN 47978
,cica/scriptit.pfb	Script-Normal-Italic		(c) Copyright IBM Corp. 1989 
,cica/shaloscr.pfb	ShalomScript		ShalomScript 1.1.2 (IBM) Copyright (c) 1990, 1991, 1992 Jonathan Brecher brecher@husc.harvard.edu
,cica/shalosti.pfb	ShalomStick		ShalomStick 1.1.2 (IBM) Copyright (c) 1990, 1991, 1992 Jonathan Brecher brecher@husc.harvard.edu
,cica/shora___.pfb	Shoraei		Converted to PC format for distribution by Reasonable Solutions, Inc.
,cica/showboat.pfb	Showboat	/NonStdEncoding	Showboat  1991 by David Rakowski. Alle Rechte Vorbehalten.
,cica/slogan.pfb	Slogan-Normal		Courtesy of Publishers' Paradise BBS (205)882-6886 HST D/S
,cica/st000132.pfb	FrutigerCnd-Bold		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000133.pfb	FrutigerCndObl-Bold		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000134.pfb	FrutigerExt-Bold		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000135.pfb	FrutigerExtObl-Bold		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000136.pfb	FrutigerObl-Bold		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000137.pfb	Frutiger-Bold		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000138.pfb	FrutigerCnd-Normal		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000139.pfb	FrutigerCndObl-Normal		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000140.pfb	FrutigerExt-Normal		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000141.pfb	FrutigerExtObl-Normal		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000142.pfb	FrutigerObl-Normal		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/st000143.pfb	Frutiger-Normal		Copyright 1989,1990 URW Unternehmensberatunge and The Compa
,cica/stencilc.pfb	StencilCut	/NonStdEncoding	
,cica/techpho_.pfb	TechPhonetic	/NonStdEncoding	Version 0.9999 Copyright  1990 Rob Kassel and the Massachusetts Institute of Technology
,cica/uncial.pfb	American-Uncial-Normal		American Uncial is a tradename of ----
,cica/varahcap.pfb	VarahCaps	/NonStdEncoding	VarahCaps  1990 by David Rakowski. Alle Rechte Vorhalten.
,cica/windsord.pfb	WindsorDemi	/NonStdEncoding	
,adobe/gdb_____.pfb	AGaramond-Bold
,adobe/gdbi____.pfb	AGaramond-BoldItalic
,adobe/gdi_____.pfb	AGaramond-Italic
,adobe/gdrg____.pfb	AGaramond-Regular
,adobe/gdsb____.pfb	AGaramond-Semibold
,adobe/gdsbi___.pfb	AGaramond-SemiboldItalic
,agfa/gab_____.pfb	Garamond-Bold	
,agfa/gabi____.pfb	Garamond-BoldItalic	
,agfa/gal_____.pfb	Garamond-Light	
,agfa/gali____.pfb	Garamond-LightItalic	
,urw/BarbedorT-Medium.pfb		BarbedorT-Medium
,urw/URWAlcuinT-Regular.pfb		URWAlcuinT-Regular
,urw/URWAntiquaT-Regular.pfb		URWAntiquaT-Regular
,urw/URWGroteskT-Bold.pfb		URWGroteskT-Bold
,fub/utb.pfb		Utopia-Bold	
,fub/utbi.pfb	Utopia-BoldItalic	
,fub/uti.pfb		Utopia-Italic	
,fub/utrg.pfb	Utopia-Regular	
,div/Middleton.pfb	Middleton
,div/pignoset.pfb	PigNoseTyp	/NonStdEncoding	
,div/shal____.pfb	Shelley-AllegroScript	
,div/gn______.pfb	GillSans		
,div/gnb_____.pfb	GillSans-Bold		
,div/gnbi____.pfb	GillSans-BoldItalic	
,div/gni_____.pfb	GillSans-Italic		
,wfn/aachen.pfb	Aachen-Bold
,wfn/amtypeb.pfb	AmericanTypewriter-Bold
,wfn/amtypem.pfb	AmericanTypewriter-Medium
,wfn/bauhausd.pfb	Bauhaus-Demi
,wfn/bauhaush.pfb	Bauhaus-Heavy
,wfn/bauhausl.pfb	Bauhaus-Light
,wfn/bauhausm.pfb	Bauhaus-Medium
,wfn/bengui.pfb	Benguiat-Book
,wfn/benguib.pfb	Benguiat-Bold
,wfn/bodonip.pfb	Bodoni-Poster
,wfn/boecklin.pfb	ArnoldBoecklin
,wfn/carta.pfb	Carta
,wfn/casl540.pfb	CaslonFiveForty-Roman
,wfn/casl540i.pfb	CaslonFiveForty-Italic
,wfn/caslon3.pfb	CaslonThree-Roman
,wfn/caslon3i.pfb	CaslonThree-Italic
,wfn/centold.pfb	CenturyOldStyle-Regular
,wfn/centoldb.pfb	CenturyOldStyle-Bold
,wfn/centoldi.pfb	CenturyOldStyle-Italic
,wfn/cooperi.pfb	CooperBlack-Italic
,wfn/cottwood.pfb	Cottonwood
,wfn/domcasb.pfb	DomCasual-Bold
,wfn/eras.pfb	ItcEras-Book
,wfn/erasb.pfb	ItcEras-Bold
,wfn/erasd.pfb	ItcEras-Demi
,wfn/erasl.pfb	ItcEras-Light
,wfn/erasm.pfb	ItcEras-Medium
,wfn/erasu.pfb	ItcEras-Ultra
,wfn/fettefr.pfb	FetteFraktur
,wfn/frankl.pfb	FranklinGothic-Book
,wfn/frankld.pfb	FranklinGothic-Demi
,wfn/franklh.pfb	FranklinGothic-Heavy
,wfn/freescr.pfb	FreestyleScript
,wfn/frizqua.pfb	FrizQuadrata
,wfn/frizquab.pfb	FrizQuadrata-Bold
,wfn/futura.pfb	Futura
,wfn/helvins.pfb	HelveticaInserat-Roman
,wfn/hobo.pfb	Hobo
,wfn/ironwood.pfb	Ironwood
,wfn/juniper.pfb	Juniper
,wfn/kaufma.pfb	Kaufmann
,wfn/kaufmab.pfb	Kaufmann-Bold
,wfn/letterb.pfb	LetterGothic-Bold
,wfn/linoscri.pfb	Linoscript
,wfn/linotext.pfb	Linotext
,wfn/mistral.pfb	Mistral
,wfn/newbas.pfb	NewBaskerville-Roman
,wfn/newbasb.pfb	NewBaskerville-Bold
,wfn/newbasbi.pfb	NewBaskerville-BoldItalic
,wfn/newbasi.pfb	NewBaskerville-Italic
,wfn/optima.pfb	Optima
,wfn/optimab.pfb	Optima-Bold
,wfn/optimabo.pfb	Optima-BoldOblique
,wfn/optimao.pfb	Optima-Oblique
,wfn/parisian.pfb	Parisian
,wfn/peignotb.pfb	Peignot-Bold
,wfn/peignotd.pfb	Peignot-Demi
,wfn/peignotl.pfb	Peignot-Light
,wfn/posta.pfb	PostAntiqua-Roman
,wfn/postab.pfb	PostAntiqua-Bold
,wfn/present.pfb	Present
,wfn/revue.pfb	Revue
,wfn/sonata.pfb	Sonata
,wfn/souven.pfb	Souvenir-Light
,wfn/souvend.pfb	Souvenir-Demi
,wfn/souvendi.pfb	Souvenir-DemiItalic
,wfn/souveni.pfb	Souvenir-LightItalic
,wfn/stencil.pfb	Stencil
,wfn/tekton.pfb	Tekton
,wfn/tektono.pfb	Tekton-Oblique
,wfn/tiffan.pfb	Tiffany
,wfn/tiffand.pfb	Tiffany-Demi
,wfn/tiffandi.pfb	Tiffany-DemiItalic
,wfn/tiffanh.pfb	Tiffany-Heavy
,wfn/tiffanhi.pfb	Tiffany-HeavyItalic
,wfn/tiffani.pfb	Tiffany-Italic
,wfn/umbra.pfb	Umbra
,wfn/univerb.pfb	Univers-Black
,wfn/univerl.pfb	Univers-Light
,wfn/univrom.pfb	UniversityRoman
,wfn/vagrnd.pfb	VAGRounded
,wfn/vagrndb.pfb	VAGRounded-Black
EOSED

exit 0
Newsgroups: comp.text.frame