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

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

echo ---------------------- extracting How-to-install -----------------
sed 's/^,//' << \EOSED > How-to-install
,
,How to install and use PostScript fonts with FrameMaker on a Sun
,================================================================
,
,Algorithm with broad coverage of aspects
,----------------------------------------
,
,This algorithm enables you to install fonts of which you have the 
,font file itself only (i.e. a file with suffix .pfb, .pfa, or .ps) 
,though other files should be made use of if available.
,
,Comments leading to better solutions (especially concerning the 
,generation of screen fonts) or regarding the order of steps 
,(especially covering steps 1 and 2 below) are welcome and may 
,lead to a revised version of this algorithm.
,
,Thomas Wolff
,Freie Universit:at Berlin
,Institut f:ur Informatik
,D-1000 Berlin
,wolff@inf.fu-berlin.de
,
,
,Algorithm
,=========
,
,For every font you may wish to use from FrameMaker perform the 
,following steps. 
,Note: Some of them will require that you use certain programs. 
,      Those I wrote myself are attached to this posting, others 
,      need to be obtained from ftp sources. For screen font generation you 
,      will need to have access to at least one legal copy of any Adobe font 
,      which comes with the 'font foundry' of which you need only 2 programs. 
,      To preview type 1 fonts on window systems which only handle type 3 
,      fonts directly (Sun's NeWS), an emulation procedure is available with 
,      a book that will have to be obtained. Alternatively, the Ghostscript 
,      package can be used for preview.
,
,0. If you've bought the font, you will probably want to skip the next 
,   two steps. Goto step 3.
,
,1. Preview the font to decide whether to keep it or not.
,
,   There are many fonts around which are really not worth the effort 
,   so you'd best determine this first before you continue.
,
,1a. Technical preview.
,
,   You may preview the font either on screen or on a printout.
,   Extract the script 'preview' from below and link it to 'gpreview' 
,   and 'preprint' as alternative names.
,	gpreview uses the ghostscript postscript interpreter which is 
,		available freely from many ftp sites.
,	preview uses the Sun NeWS postscript interpreter via the psh shell.
,	preprint uses your postscript printer.
,   For any of these programs, give the names of the postscript font files 
,   as arguments and you will (hopefully) get a sample page with text 
,   and character sets. (All Windows3.1 "ANSI" characters (which include 
,   all ISO-Latin-1 characters), plus FrameMaker characters and a few more 
,   will be shown if present in the font.)
,   In case your font files define more than one font (e.g., with Type-3 
,   Hershey fonts as found in some distributions), you can optionally 
,   select the fonts to be shown by giving their names explicitly, starting 
,   with "/". Examples:
,
,	gpreview souven.pfb souveni.pfb souvend.pfb souvendi.pfb
,
,	uses 'gs' (from ghostscript) and gives a preview of the 
,	four faces of the Souvenir family as defined in those four files. 
,	Font names will be automatically extracted by gpreview. 
,	The typeface order normal, italic, bold, bolditalic is recommended.
,
,	preview $OPENWINHOME/lib/fonts/HrshRom.ps \
,		$OPENWINHOME/lib/fonts/HrshI.ps /Hershey-Roman /Hershey-Italic
,
,	uses Sun's postscript interpreter and displays two of the type-3 
,	Hershey fonts that can be found on the Sun workstation. (You can see 
,	that they lack a lot of characters. I have also completed them but 
,	that topic doesn't belong here...)
,	The display will be on the window system's background.
,
,   Note	As soon as one explicit font name parameter is given, automatic 
,	font name extraction is overridden. Also this may be necessary, 
,	since the automatic font name extraction does not work for fonts 
,	that have already been loaded into the interpreter.
,
,	preprint utrg.pfa uti.zip utb.Z utbi.pfb
,
,	prints (on your postscript printer as configured with $PRINTER) 
,	the four Utopia fonts where one is in hex type-1 ("ascii") format, 
,	two are compressed (with zip or compress, resp.), and one was 
,	converted to binary type-1 format.
,
,   Note	The scripts assume that compressed files do not contain binary 
,	type-1 format (they usually wouldn't be much smaller anyway).
,	Also, ascii type-1 format (.pfa) which is compressed (.zip, .Z) 
,	will not work with 'preview'. It does with 'gpreview' and 'preprint'.
,
,   Alternative preview methods:
,	- On an MS-DOS PC, using ghostscript, with a similar script 
,	  'preview'/'preprint' available on request.
,	- On a PC with Windows (even without the Adobe Type Manager (ATM)) 
,	  using the program 'pfbview' obtainable from common ftp sources.
,	- On any machine with the Adobe Type Manager (ATM).
,
,Further software required:
,   Note: For 'preview' to work on type-1 fonts, you need two further 
,	pieces of software: a type-1 disassembler and a type-1 emulation.
,	(Both are not needed for 'gpreview' or 'preprint'.)
,
,   I have access to one emulation which is probably not copyright-free, so 
,   you will need to get the file 'disasm\emulate.ps' from the program disk 
,   of the following, most elucidating book on type 1 fonts:
,	Thomas Merz: TerminalBuch PostScript : Fonts und Programmiertechnik
,	M:unchen; Wien: Oldenbourg, 1991. ISBN 3-486-21674-0
,   Install 'emulate.ps' in $HOME/ps/emulate.ps or change its usage in 
,   'preview' according to your preferred location. Or install it in the 
,   directory from which OpenWindows gets started (most probably your home 
,   directory) and change its invocation in 'preview' by clearing it out of 
,   the 'cat' command and uncommenting its loading operation in the 
,   postscript part.
,
,   For disassembling type-1 fonts into readable postscript, use either 
,   the package t1utils or ps-accent, both available from many ftp sites.
,   t1utils also gives you a binary-to-hex converter for .pfb files, but 
,   you can do without it since FrameMaker includes a slow but working 
,   transformer.
,   I seem to remember that I modified the programs of both packages 
,   (t1disasm/t1ascii from t1utils and decrypt/decomp from ps-accent) so 
,   that they also accept standard input and produce standard output. If 
,   the version you obtain cannot do that, you will have to either modify 
,   them or change the 'preview' script to use intermediate files just 
,   like with 'fmAdobePCFont'.
,
,1b. Look at preview.
,
,   Now survey the font preview: Is it a special (decorative, headline, 
,   symbol, etc.) font? Keep it if you like it, otherwise throw it away.
,   Is it a regular text font? Look if its impression on the reader 
,   is not too bad (e.g. through characters dancing on the line, badly 
,   designed character widths/distances etc.) so that you wouldn't mind 
,   to read some lines of text in it.
,   Also look if the font contains both accent marks as defined by the 
,   PostScript standard encoding and accented characters composed of them.
,   If these are missing and you are a European user, the font will in 
,   effect be completely useless to you. If you are not, still consider 
,   that you might someday want to write a foreign name containing some 
,   accent, that someone else at your site might want to write in 
,   another language, and, not least, that they sometimes appear in written 
,   English language usage as well (especially the <ae>). So throw any 
,   trash of this kind away. Amateur font designers who are ignorant about 
,   accented characters actually don't deserve too much attention.
,
,2. Legal considerations.
,
,   Does the font file still contain the copyright notice of a font company?
,   Then it is probably not a legal copy. Consider buying the font from 
,   its legal source.
,
,   Is the font accompanied by a readme file saying it's an original design 
,   distributed as shareware and the author wants a contribution? Consider 
,   paying the contribution.
,
,   Is the font an amateur clone of a classical font design (from previous 
,   centuries)? No copyright problem. Goto step 3.
,
,   Is the font an amateur clone of a contemporary font design? In this 
,   case, it is apparently legal to use the font according to U.S. law. But 
,   it may well be illegal to use it in other countries. Anyway, it is not 
,   fine to retreat to the purely legal point of view ignoring font 
,   designers efforts and moral rights.
,
,   Finally, if you are installing fonts for your employer's machines and 
,   there remains a copyright problem with a font and your employer is not 
,   willing to pay contributions, don't do them the favour to install 
,   illegal font copies! Throw it away (or keep it for your private use only).
,
,3. The technical part of installation.
,
,   This consists of
,   - installing / setting up the font for use in your printer.
,   - generating / installing font metrics for FrameMaker.
,   - configuring FrameMaker for new fonts.
,   - generating / installing screen fonts for FrameMaker's display.
,
,3a. Install font.
,   Basically, you could manually load every type-1 or type-3 font file 
,   into your printer by prepending it with the lines
,%!
,serverdict begin 0 exitserver
,   A simple script could do this for you. But you probably wish to automate 
,   that task more. Also, there is an encoding problem with many publically 
,   available fonts: Amateurs (and some stupid font generating software, too) 
,   are often unaware that text fonts should always contain the definition 
,/Encoding StandardEncoding def
,   instead of setting up an explicit encoding.
,   This is especially a prerequisite for FrameMaker which doesn't otherwise 
,   re-encode the font to the FrameMaker character encoding (which is stupid, 
,   too, since there is an explicit specification of which fonts are text 
,   fonts anyway within the FrameMaker configuration files).
,   So if you don't modify the font file (which is also possible, but not 
,   trivial), the font must be re-encoded to StandardEncoding while or after 
,   loading it into the printer.
,   Below you will find the script 'fontdl' to load a collection of font files 
,   manually into the printer, invoking re-encoding to StandardEncoding for 
,   .pfb files.
,   For use with FrameMaker, you will find a package of scripts along with a 
,   documentation for them, 'fmlpr.doc'. (I posted that package before.) 
,   They enable you to print online from FrameMaker with automatic insertion 
,   of fonts, so the average user will not have to care about downloading 
,   at all. To print a document which was "printed" to a file in PostScript 
,   format, 'fmlpr' will have to be used instead of 'lpr' to insert the 
,   required fonts for the print job. There are also provisions for 
,   downloading fonts across job-boundaries to save time.
,
,3b. (Generate and) install font metric information.
,   If you bought a font you will have an .afm metrics file (or the vendor 
,   sold junk to you). They often come delivered with PC file names, so to 
,   use them with FrameMaker, you need to rename every .afm file to 
,   <FontName>.afm where <FontName> is the name from the FontName entry 
,   of the .afm file itself.
,
,   Some PD/shareware fonts floating around have good quality .afms, too, 
,   but in general:
,   Beware of .afm files that come with publically available fonts! 
,   Especially among those on the famous cica archive and its mirror sites 
,   many are painfully wrong! This is due to the fact that the people who 
,   made them were totally ignorant about accented characters or character 
,   encoding.
,
,   Below you find a script to generate .afm files from .pfb font files. 
,   Kerning information, if available at all, can be taken from previous 
,   .afm files or from .pfm Windows metrics files. In addition to that, 
,   the makeafm script only relies on unix commands (sed, egrep, dd, od) 
,   and one of the type-1 disassembly packages mentioned above.
,   From within the directory where the .pfb file and, optionally, any 
,   previous .afm or .pfm file are located, just type 
,	makeafm <fontfilename>
,   where <fontfilename> is the file name of your .pfb file (with or without 
,   the suffix), and you will get an .afm file which does not contain every 
,   information .afm files usually have but which is sufficient to run with 
,   FrameMaker.
,
,   Once you have a correct .afm file with appropriate name, you can move into 
,   FrameMaker's font installation directory $FMHOME/.fminit2.0/fontdir or 
,   your personal version thereof (which would be <FM>/.fminit2.0/fontdir 
,   where <FM> is $HOME or the directory you usually start FrameMaker from).
,
,3c. Configure FrameMaker.
,   In FrameMaker's font installation directory $FMHOME/.fminit2.0/fontdir or 
,   your personal version thereof (which would be <FM>/.fminit2.0/fontdir 
,   where <FM> is $HOME or the directory you usually start FrameMaker from), 
,   you will find the file 'fontlist' or a copy thereof.
,   Extend the list of font <Family > entries with new family names. In contrast 
,   to, e.g., MS-Windows, you can have as many font styles collected under the 
,   same family name as you wish (i.e. as they belong together). For each 
,   font style you have, extend the list of <Font > entries according to the 
,   rules which are also given in the FrameMaker documentation: In 
,   <Font	FontName	FamilyName StyleAttribute1 StyleAttribute2 ... >
,   FontName is the real font name as also used for the .afm file (see above).
,   FamilyName is your arbitrary choice to put fonts together (but should 
,   resemble the FamilyName entry in the .afm and .pfb files). It is the one 
,   which you put into a <Family FamilyName > entry. What follows is a list of 
,   valid font style attributes as listed in the <Variation >, <Weight >, and 
,   <Angle > entries in 'fontlist' (you can extend that list to your taste, too).
,
,3d. (Generate and) install screen fonts.
,   Let's first see how to install substitute screen fonts if no real ones 
,   can be obtained:
,   FrameMaker for Sun uses two sources for screen display: fixed size 
,   bitmaps if they are available as files named <FontName><size>.bfont in 
,   the 'fontdir' directory, and scalable fonts in the Typescaler format 
,   (.f3b) as specified in the 'fontlist' configuration file.
,   So if you don't have matching screen fonts, choose a substitute font you 
,   have for screen display (which should somehow resemble and should not be 
,   wider than your font to be installed). If that's available in F3 format 
,   (.f3b files), you specify its use in the 'fontlist' file. If it's 
,   available as bitmap font (.bfont files), you can link them to bitmap 
,   fonts for the one to be installed using the script 'linkscreenfonts'.
,
,   If you have Mac screen fonts unpacked from a Mac format file, you can 
,   extract the single Mac screen font files (.mfont) with 'fmScreen2mfonts' 
,   and then convert them to FrameMaker screen font files (.bfont) with 
,   'fmMfont2bfont'. Both steps can be combined with the script 
,   'makemacscreenfonts'.
,
,   If you have access to an MSDOS PC and have the programs 'makebit.exe' and 
,   'makeabf.exe' from Adobe's "font foundry" which comes with any font 
,   bought from them, you can generate screen fonts from any .pfb file.
,   The script 'pfb-abf.bat' has to be called with the font file's base name 
,   as first parameter, and if that has more than 6 characters a second 
,   parameter of at most 6 characters is required. The script will generate 
,   .abf files (and zip them together for transport to Unix - this may easily 
,   be changed). Transport them into a fresh directory on your Unix machine 
,   and call either the script 'makezipbfonts' or 'makeabfbfonts' there, 
,   depending on whether you brought the .abf files or the .zip file over.
,   The script will use another script, 'makebfont', and the program 
,   'fmAbf2bfont' (coming with FrameMaker), and will generate .bfont 
,   screen fonts which you can move into FrameMaker's 'fontdir' directory.
,
,That's it!
EOSED

mkdir .fminit2.0 .fminit2.0/fontdir afm bfont

echo ---------------------- extracting preview -----------------
sed 's/^,//' << \EOSED > preview
,#! /bin/sh
,
,case `basename $0` in
,	gprev*)	show="cat > /tmp/gs-show.ps; gs /tmp/gs-show.ps < /dev/tty; rm -f /tmp/gs-show.ps"; prep="erasepage 20 780 sethome" ;;
,	prev*)	show=psh ; prep="erasepage 20 780 sethome" ;;
,	*)	show=lpr ; prep="12 setfontsize" ;;
,esac
,
,psatops () {
,#	3 further transformations on decomp's output:
,#	^M -> ^J : to edit it on unix machines
,#	< > -> { } : to make it a PostScript program
,#	remove access restriction operators to play around with it in an 
,#		interactive PostScript interpreter
,	sed -e 'y/
,	}
,
,pfbtops () {
,	if t1disasm $1
,	then true	# t1disasm did the job
,	elif decrypt $1 | decomp | psatops
,	then true	# decrypt, decomp did the job
,	else false	# no one found to do the job
,	fi
,	}
,
,pfbtopfa () {
,	if t1ascii $1
,	then true	# t1ascii did the job
,	elif pfb2ps < $1
,	then true	# one of numerous PD programs could do this simple job
,	else	fmAdobePCFont $1 ${TMPDIR-/tmp}/$$.pfa
,		# this should be found in $FMHOME/bin
,		# it runs slower than others
,		cat ${TMPDIR-/tmp}/$$.pfa
,		/bin/rm ${TMPDIR-/tmp}/$$.pfa
,	fi
,	}
,
,((cat
,echo $prep
,if [ "$show" = "psh" ]
,then	cat $HOME/ps/emulate.ps - << \*EOP*
,%!
,% (emulate.ps) run % alternatively to cat-ting it in
,/eexec {pop} def
,/*definefont /definefont load def
,/definefont {dup /FontType get 1 eq
,	{dup length 3 add dict copy
,	 dup /FontType 3 put
,	 dup /Type1EmuDict dup load put
,	 dup /BuildChar dup load put
,	} if
,	1 index registername	% this could be left out if only
,			% new fonts (not preloaded into NeWS) are displayed
,	*definefont
,	} def
,/*closefile /closefile load def
,/closefile {pop} def % NeWS's closefile crashes
,/executeonly {} def
,/noaccess {} def
,/readonly {} def
,*EOP*
,fi
,for param in $*
,do if [ `dirname $param` = / ]
,   then echo $param registername
,	# take this as explicitly specified fontname instead of filename
,   else
,	case $param in
,	*.pfb)	if [ "$show" = "psh" ]
,		then	pfbtops $param
,		else	pfbtopfa $param
,		fi
,		echo appendnewfont ;;
,	*.pfa)	if [ "$show" = "psh" ]
,		then	pfbtops $param
,		else	cat $param
,		fi
,		echo appendnewfont ;;
,	*.Z)	zcat $param
,		echo appendnewfont ;;
,	*.zip)	unzip -p $param
,		echo appendnewfont ;;
,	*)	cat $param
,		echo appendnewfont ;;
,	esac
,   fi
,done ; echo showallfonts showpage quit) | eval $show) << \*EOP*
,%! print font samples and character sets
,/home {leftborder top moveto} def
,/sethome {/top exch def /leftborder exch def} def
,/setfontsize {/fontsize exch def} def
,/setrightborder {/rightborder exch def} def
,40 790 sethome
,18 setfontsize
,550 setrightborder
,/leading 4 def
,/nl {currentpoint exch pop leftborder exch fontsize sub leading sub moveto} def
,
,/fontN {fontN} def
,/fontB {fontN} def
,/fontI {fontB} def
,/fontBI {fontB} def
,/N {fontN setfont} def
,/B {fontB setfont} def
,/I {fontI setfont} def
,/BI {fontBI setfont} def
,/pushfont {/fontBI /fontI load def
,	/fontI /fontB load def
,	/fontB /fontN load def
,	/fontN currentfont def
,	} def
,/nextfonti 0 def
,/setnextfont {[/fontN /fontI /fontB /fontBI] nextfonti get currentfont def
,	/nextfonti nextfonti 1 add def
,	} def
,
,/namefont {currentfont} def
,/showtext {
,  N
,  (Scoloplos ist euryk. Er ist in der gesamten borealen Region ) show nl
,  (in fast allen marinen Sedimenten zu finden, die einen sandigen ) show nl
,  (Anteil aufweisen. Man findet ihn von ) show B (Grnland ) show 
,	N (bis zum ) show I (Mittelmeer) show N (, ) show nl
,  (in der ) show BI (Nordsee) show 
,	N (, an der kanadischen Kste und im Weien Meer. ) show nl
,  (Er besiedelt sowohl das Eulitoral als auch das Bathyal.) show nl
,	} def
,/showcset {[cs1 cs2 cs3 cs4 cs5 cs6 cs7] {show nl} forall
,	currentfont
,	currentpoint
,	dup fontsize leading add 3 mul add
,		currentfont /FontName get findfont 50 scalefont setfont
,		rightborder (Forqen) stringwidth pop sub exch moveto
,		(Forqen) show
,	moveto
,	setfont
,	} def
,/showname {currentfont namefont setfont
,	dup /FontName get dup length string cvs show
,	setfont nl
,	} def
,/showfont { % param: fontname
,	fontsize ff
,	home
,	showtext
,	showname
,	showcset
,	} def
,/showallfonts {
,	% if registername was used, replace the automatically generated 
,	% fontlist with the explicit one:
,	fontlistr length 0 ne {/fontlist fontlistr def} if
,
,	fontlist {fontsize ff setnextfont} forall
,	home showtext
,	[fontN fontI fontB fontBI] 0 fontlist length getinterval
,	{nl setfont (    ) show showname nl showcset} forall
,	} def
,
,/findfontISO {dup findfont
,	dup maxlength dict begin
,	{1 index /FID ne {def} {pop pop } ifelse} forall
,	/Encoding ISO-Latin-1 def
,	currentdict end
,	definefont
,	} def
,/ff {exch findfontISO exch dup /fontsize exch def scalefont
,	setfont} def
,
,/fontlist [] def
,/fontlistr [] def
,/FontDirectoryKnown FontDirectory dup length 20 add dict copy def
,/appendnewfont {
,	/fontlist [ fontlist aload pop
,	FontDirectoryKnown begin
,	FontDirectory
,	{FontDirectoryKnown 2 index known {pop pop} {2 copy def pop} ifelse
,	} forall
,	end
,	] def
,	} def
,/registerfont {run appendnewfont} def
,/registername {/newfont exch def
,	/fontlistr [ fontlistr aload pop newfont ] def
,	} def
,
,/=dict { % for debugging
,	{2 array astore ==} forall
,	} def
,
,/cs1	( !"#$%&'()*+,-./0123456789:;<=>?) def
,/cs2	(@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_) def
,/cs3	(`abcdefghijklmnopqrstuvwxyz{|}~) def
,/cs4	() def
,/cs5	() def
,/cs6	() def
,/cs7	() def
,
,/ISO-Latin-1 [
,/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
,/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
,/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
,/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
,/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
,%							     or: /quotesingle
,/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
,/zero /one /two /three /four /five /six /seven
,/eight /nine /colon /semicolon /less /equal /greater /question
,/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
,/P /Q /R /S /T /U /V /W
,/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
,/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
,% or: /grave
,/p /q /r /s /t /u /v /w
,/x /y /z /braceleft /bar /braceright /asciitilde /fraction
,% accents not in ISO-Latin-1:
,/dotlessi /ring /circumflex /tilde /breve /dotaccent
,/grave % see comment below
,% FrameMaker characters:
,/quotesingle % comment: must have /quoteleft instead of /grave, or
,		%	/quoteright instead of /quotesingle, resp.,
,		%	depending on which is already present above
,/quotesinglbase /quotedblbase /quotedblleft /quotedblright
,/guilsinglleft /guilsinglright
,/trademark
,/caron /hungarumlaut /ogonek
,/OE /oe
,/fi /fl
,/dagger /daggerdbl /ellipsis /emdash /florin /periodcentered /perthousand
,% DEC-supplemental (also /OE /oe):
,/Ydieresis
,% further PostScript chars:
,/Lslash /lslash
,
,% this must align with 240 octal
,/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
,/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /endash /registered /macron
,/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /bullet
,/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
,/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
,/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
,/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
,/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
,/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
,/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
,/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
,/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
,] def
,
,*EOP*
EOSED

echo ---------------------- extracting fontdl -----------------
sed 's/^,//' << \EOSED > fontdl
,#! /bin/sh
,(
,cat << //EOPS
,%!
,serverdict begin 0 exitserver
,/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
,
,getFontName () {
,	set - `sed -e "\@/FontName [!-~]* def@q" -e d`
,	FontName=$2
,	}
,
,for file in $*
,do	case $file in
,	*.Z)	zcat $file ;;
,	*.zip)	unzip -p $file ;;
,	*.pfb)	fmAdobePCFont $file /tmp/$file.ps
,		cat /tmp/$file.ps
,		getFontName < /tmp/$file.ps
,		echo $FontName makeStandardEncoding
,		/bin/rm /tmp/$file.ps ;;
,	*.pfb-mac)	fmAdobeMacFont $file /tmp/$file.ps
,		cat /tmp/$file.ps
,		getFontName < /tmp/$file.ps
,		echo $FontName makeStandardEncoding
,		/bin/rm /tmp/$file.ps ;;
,	*)	cat $file ;;
,	esac
,done
,) | lpr -h
EOSED

echo ---------------------- extracting afm/makeafm -----------------
sed 's/^,//' << \EOSED > afm/makeafm
,#! /bin/sh
,
,# makeafm: generate .afm file from PostScript type 1 font file
,#	   (leaves out character bounding box information)
,#	It accepts the file formats:
,#	.pfb - type 1 encrypted binary file
,#	.pfa - hex version of .pfb
,#	.psb - first level of decryption; character outlines still encrypted
,#	.psa - second level of decryption; character outlines embedded in 
,#		< > to recognize them for back-encryption; thus not PostScript
,#	.ps - PostScript version of .psa as generated by makeps
,
,# This script uses:
,# - the programs decrypt and decomp posted by Per Lindqvist 
,#   ("ps-accent", comp.lang.postscript:3943, alt.sources:1978, 24 Jan 92)
,#   in a slightly modified version that can also read from stdin
,# or alternatively:
,#   the program t1disasm from the package t1utils posted by 
,#   I. Lee Hetherington with the following modification to t1disasm.c:
,#	look up the line   output(" {\n");
,#	at the beginning of the routine do_charstring and remove the \n .
,
,# The afm's generated can be used with FrameMaker (on Sun's). Since they 
,# do not contain character bounding box information, they cannot be 
,# transformed to tex metrics files (.tfm), nor can Per Lindqvist's accent 
,# making algorithm be applied to them (the programs I got from the posting 
,# don't seem to work anyway, but the algorithm seems to be alright and the 
,# coverage of many accents of many languages and the integration of their 
,# placement specifications seems to be well done so far...)
,
,makeafm () {
,	echo extracting information from $base
,# first, extract all information we need into a separate file since the 
,# source file is very long and we need to scan its information several times
,	sed -e 'y/
,# extract FontName
,	font=` sed -e '\@^/FontName@!{' -e 'd;b' -e '}' -e 's,^/FontName /\([^ ]*\).*,\1,' -e q /tmp/$base.extract `
,	font=${font:-$base}
,	echo making $font.afm
,	echo StartFontMetrics 1.0 > $font.afm
,	echo Comment generated from Type 1 font description >> $font.afm
,# generate fixed Encoding specification (mind!)
,	echo EncodingScheme AdobeStandardEncoding >> $font.afm
,# extract font information items and transform into afm syntax
,	sed -e /FontName/b -e /FullName/b -e /FamilyName/b -e /Weight/b \
,	    -e /ItalicAngle/b -e /Underline/b -e /FontBBox/b \
,	    -e /Notice/b -e /Comment/b \
,	    -e /isFixedPitch/s,i,I, -e /version/s,v,V, -e t -e d \
,	    /tmp/$base.extract | sed \
,		-e 's,^/\([A-z]*\) *[[{(]\(.*\)[]})].*,\1 \2,' -e t \
,		-e 's,^/\([A-z]* [^ ]*\).*,\1,' -e 's,[/()],,g' >> $font.afm
,# determine if the ligatures fi and fl are present
,	fifl=`sed -e 's,^/f\([il]\) .*, L \1 f\1 ;,' -e t -e d /tmp/$base.extract`
,	if [ -n "$fifl" ]
,	then fifl=" `echo $fifl`"
,	# remove newline from $fifl
,	fi
,# now extract the metrics information
,	echo StartCharMetrics >> $font.afm
,	sed -e 's,^/\([A-z0-9]*\) *[<{] *[-0-9]* *\([-0-9]*\) *hsbw *$,C -1 ; WX \2 ; N \1 ;,' \
,	    -e 's,^/\([A-z0-9]*\) *[<{] *[-0-9]* *[-0-9]* *\([-0-9]*\) *\([-0-9]*\) *sbw *$,C -1 ; W \2 \3 ; N \1 ;,' \
,	    -e "s,\( N f .*\)$,\1$fifl," \
,	    -e t -e d /tmp/$base.extract >> $font.afm
,	echo EndCharMetrics >> $font.afm
,# look for a dumped pfm file (if possible, dumppfm $base.pfm > $base.dfm
,#		should have been inserted here)
,##	I used the following generation of kerning information from a 
,##	pfm file dump made by dumppfm before I crypted that extraction 
,##	into dd/od/sed commands myself.
,##	if [ -f $base.dfm ]
,##	then
,##	    pairs=`sed -e 's,.* etmKernPairs *[0-F]* *\([0-9]*\)[^0-9]*,\1,' -e t -e d $base.dfm`
,##	    if [ $pairs -ne 0 ]
,##	    then
,##		echo including $pairs kern pairs from $base.dfm
,##		echo StartKernData >> $font.afm
,##		echo StartKernPairs $pairs >> $font.afm
,##		sed -e 's,^[0-F]* [0-F]* KernPair\[[0-F]*\] *[0-F]* [0-F]* [0-F]* [0-F]* *\([0-z]*\) *\([0-z]*\) *\([-0-9]*\)[^0-9]*,KPX \1 \2 \3,' -e t -e d $base.dfm >> $font.afm
,##		echo EndKernPairs >> $font.afm
,##		echo EndKernData >> $font.afm
,##	    else
,##		echo no kern pairs in $base.dfm
,##	    fi
,##	elif ...
,	if [ -f $base.pfm ]
,	then
,	    set - ` ( /bin/dd ibs=1 skip=195 count=2 < $base.pfm | /bin/dd conv=swab | /bin/od -d ) 2> /dev/null `
,	    pairs=`expr $2 + 0`
,	    if [ $pairs -ne 0 ]
,	    then
,		WinANSI=`dirname $0`/WinANSI
,		len=`expr $pairs \* 4`
,
,		set - ` ( /bin/dd ibs=1 skip=131 count=4 < $base.pfm | /bin/dd conv=swab | /bin/od -d ) 2> /dev/null `
,		start=`expr $3 \* 65536 + $2 + 2`
,
,		echo StartKernData >> $font.afm
,		echo StartKernPairs $pairs >> $font.afm
,
,		/bin/dd ibs=1 skip=$start count=$len < $base.pfm | /bin/dd conv=swab |
,		 /bin/od -vbiw4 |
,		 sed -e '/^0/N' -e 's,^[0-7]* *\([0-7]*\) \([0-7]*\) [0-7]* [0-7]*[^-0-9]*[-0-9]* *\([-0-9]*\)$,KPX C\2 C\1 \3,' -f ${WinANSI}1 |
,		 sed -f ${WinANSI}2 >> $font.afm
,
,		echo EndKernPairs >> $font.afm
,		echo EndKernData >> $font.afm
,	    else
,		echo no kern pairs in $base.pfm
,	    fi
,	fi
,# finally, extract composite character information as available
,	if true	# no Composites entries needed for FrameMaker
,	then
,	    echo StartComposites >> $font.afm
,	# since we will only find character encodings 
,	# (as index into StandardEncoding), we have to translate them into 
,	# their names using the list PCCnames - hopefully being found so:
,	    PCCnames=`dirname $0`/PCCnames
,	    sed -e '\@^/\([A-z0-9]*\) *[<{][-0-9 ]* hsbw *$@h' \
,		-e '\@^/\([A-z0-9]*\) *[<{][-0-9 ]* sbw *$@h' \
,		-e '/ seac *$/G' \
,		-e 's,^ *[-0-9]* *\([-0-9]*\) *\([-0-9]*\) *\([0-9]*\) *\([0-9]*\) *seac *\n/\([A-z0-9]*\) *[<{].*$,CC \5 2 ; PCC \3 0 0 ; PCC \4 \1 \2 ;,' \
,		-e t -e d /tmp/$base.extract | sed -f $PCCnames >> $font.afm
,	# The accent shift values (substituted as \1 and \2 above) 
,	# are not exact. The difference of the "side bearing points" 
,	# (letter - accent) would have to be added to it.
,	    echo EndComposites >> $font.afm
,	fi
,# and finish the job
,	echo EndFontMetrics >> $font.afm
,	/bin/rm /tmp/$base.extract
,	}
,
,disasm () {
,	if t1disasm
,	then true
,	else decrypt | decomp
,	fi
,	}
,
,for file in $*
,do	base=`basename $file .pfb`
,	base=`basename $base .pfa`
,	base=`basename $base .psb`
,	base=`basename $base .psa`
,	base=`basename $base .ps`
,	if [ -f $file ]
,	then case $file in
,	*.pfb | *.pfa)
,		disasm < $file | makeafm ;;
,			# if decomp cannot read stdin, use temp file instead
,	*.psb)	decomp $file | makeafm ;;
,	*.psa | *.ps)	makeafm < $file ;;
,	*)	echo no file found for $file ;;
,	esac
,	else	echo no file found for $file
,	fi
,done
EOSED

echo ---------------------- extracting afm/PCCnames -----------------
sed 's/^,//' << \EOSED > afm/PCCnames
,s,PCC 34,PCC quotedbl,
,s,PCC 42,PCC asterisk,
,s,PCC 43,PCC plus,
,s,PCC 44,PCC comma,
,s,PCC 45,PCC hyphen,
,s,PCC 46,PCC period,
,s,PCC 47,PCC slash,
,s,PCC 58,PCC colon,
,s,PCC 60,PCC less,
,s,PCC 61,PCC equal,
,s,PCC 62,PCC greater,
,s,PCC 65,PCC A,
,s,PCC 66,PCC B,
,s,PCC 67,PCC C,
,s,PCC 68,PCC D,
,s,PCC 69,PCC E,
,s,PCC 70,PCC F,
,s,PCC 71,PCC G,
,s,PCC 72,PCC H,
,s,PCC 73,PCC I,
,s,PCC 74,PCC J,
,s,PCC 75,PCC K,
,s,PCC 76,PCC L,
,s,PCC 77,PCC M,
,s,PCC 78,PCC N,
,s,PCC 79,PCC O,
,s,PCC 80,PCC P,
,s,PCC 81,PCC Q,
,s,PCC 82,PCC R,
,s,PCC 83,PCC S,
,s,PCC 84,PCC T,
,s,PCC 85,PCC U,
,s,PCC 86,PCC V,
,s,PCC 87,PCC W,
,s,PCC 88,PCC X,
,s,PCC 89,PCC Y,
,s,PCC 90,PCC Z,
,s,PCC 92,PCC backslash,
,s,PCC 94,PCC asciicircum,
,s,PCC 95,PCC underscore,
,s,PCC 97,PCC a,
,s,PCC 98,PCC b,
,s,PCC 99,PCC c,
,s,PCC 100,PCC d,
,s,PCC 101,PCC e,
,s,PCC 102,PCC f,
,s,PCC 103,PCC g,
,s,PCC 104,PCC h,
,s,PCC 105,PCC i,
,s,PCC 106,PCC j,
,s,PCC 107,PCC k,
,s,PCC 108,PCC l,
,s,PCC 109,PCC m,
,s,PCC 110,PCC n,
,s,PCC 111,PCC o,
,s,PCC 112,PCC p,
,s,PCC 113,PCC q,
,s,PCC 114,PCC r,
,s,PCC 115,PCC s,
,s,PCC 116,PCC t,
,s,PCC 117,PCC u,
,s,PCC 118,PCC v,
,s,PCC 119,PCC w,
,s,PCC 120,PCC x,
,s,PCC 121,PCC y,
,s,PCC 122,PCC z,
,s,PCC 124,PCC bar,
,s,PCC 126,PCC asciitilde,
,s,PCC 164,PCC fraction,
,s,PCC 169,PCC quotesingle,
,s,PCC 177,PCC endash,
,s,PCC 180,PCC periodcentered,
,s,PCC 183,PCC bullet,
,s,PCC 184,PCC quotesinglbase,
,s,PCC 188,PCC ellipsis,
,s,PCC 193,PCC grave,
,s,PCC 194,PCC acute,
,s,PCC 195,PCC circumflex,
,s,PCC 196,PCC tilde,
,s,PCC 197,PCC macron,
,s,PCC 198,PCC breve,
,s,PCC 199,PCC dotaccent,
,s,PCC 200,PCC dieresis,
,s,PCC 202,PCC ring,
,s,PCC 203,PCC cedilla,
,s,PCC 205,PCC hungarumlaut,
,s,PCC 206,PCC ogonek,
,s,PCC 207,PCC caron,
,s,PCC 208,PCC emdash,
,s,PCC 245,PCC dotlessi,
EOSED

echo ---------------------- extracting afm/WinANSI1 -----------------
sed 's/^,//' << \EOSED > afm/WinANSI1
,s,C040,space,
,s,C041,exclam,
,s,C042,quotedbl,
,s,C043,numbersign,
,s,C044,dollar,
,s,C045,percent,
,s,C046,ampersand,
,s,C047,quotesingle,
,s,C050,parenleft,
,s,C051,parenright,
,s,C052,asterisk,
,s,C053,plus,
,s,C054,comma,
,s,C055,hyphen,
,s,C056,period,
,s,C057,slash,
,s,C060,zero,
,s,C061,one,
,s,C062,two,
,s,C063,three,
,s,C064,four,
,s,C065,five,
,s,C066,six,
,s,C067,seven,
,s,C070,eight,
,s,C071,nine,
,s,C072,colon,
,s,C073,semicolon,
,s,C074,less,
,s,C075,equal,
,s,C076,greater,
,s,C077,question,
,s,C100,at,
,s,C101,A,
,s,C102,B,
,s,C103,C,
,s,C104,D,
,s,C105,E,
,s,C106,F,
,s,C107,G,
,s,C110,H,
,s,C111,I,
,s,C112,J,
,s,C113,K,
,s,C114,L,
,s,C115,M,
,s,C116,N,
,s,C117,O,
,s,C120,P,
,s,C121,Q,
,s,C122,R,
,s,C123,S,
,s,C124,T,
,s,C125,U,
,s,C126,V,
,s,C127,W,
,s,C130,X,
,s,C131,Y,
,s,C132,Z,
,s,C133,bracketleft,
,s,C134,backslash,
,s,C135,bracketright,
,s,C136,asciicircum,
,s,C137,underscore,
,s,C140,grave,
,s,C141,a,
,s,C142,b,
,s,C143,c,
,s,C144,d,
,s,C145,e,
,s,C146,f,
,s,C147,g,
,s,C150,h,
,s,C151,i,
,s,C152,j,
,s,C153,k,
,s,C154,l,
,s,C155,m,
,s,C156,n,
,s,C157,o,
,s,C160,p,
,s,C161,q,
,s,C162,r,
,s,C163,s,
,s,C164,t,
,s,C165,u,
,s,C166,v,
,s,C167,w,
,s,C170,x,
,s,C171,y,
,s,C172,z,
,s,C173,braceleft,
,s,C174,bar,
,s,C175,braceright,
,s,C176,asciitilde,
,s,C177,.notdef,
EOSED

echo ---------------------- extracting afm/WinANSI2 -----------------
sed 's/^,//' << \EOSED > afm/WinANSI2
,s,C200,.notdef,
,s,C201,.notdef,
,s,C202,quotesinglbase,
,s,C203,florin,
,s,C204,quotedblbase,
,s,C205,ellipsis,
,s,C206,dagger,
,s,C207,daggerdbl,
,s,C210,circumflex,
,s,C211,perthousand,
,s,C212,Scaron,
,s,C213,guilsinglleft,
,s,C214,OE,
,s,C215,.notdef,
,s,C216,.notdef,
,s,C217,.notdef,
,s,C220,.notdef,
,s,C221,quoteleft,
,s,C222,quoteright,
,s,C223,quotedblleft,
,s,C224,quotedblright,
,s,C225,bullet,
,s,C226,endash,
,s,C227,emdash,
,s,C230,tilde,
,s,C231,trademark,
,s,C232,scaron,
,s,C233,guilsinglright,
,s,C234,oe,
,s,C235,.notdef,
,s,C236,.notdef,
,s,C237,Ydieresis,
,s,C240,space,
,s,C241,exclamdown,
,s,C242,cent,
,s,C243,sterling,
,s,C244,currency,
,s,C245,yen,
,s,C246,brokenbar,
,s,C247,section,
,s,C250,dieresis,
,s,C251,copyright,
,s,C252,ordfeminine,
,s,C253,guillemotleft,
,s,C254,logicalnot,
,s,C255,endash,
,s,C256,registered,
,s,C257,macron,
,s,C260,degree,
,s,C261,plusminus,
,s,C262,twosuperior,
,s,C263,threesuperior,
,s,C264,acute,
,s,C265,mu,
,s,C266,paragraph,
,s,C267,bullet,
,s,C270,cedilla,
,s,C271,onesuperior,
,s,C272,ordmasculine,
,s,C273,guillemotright,
,s,C274,onequarter,
,s,C275,onehalf,
,s,C276,threequarters,
,s,C277,questiondown,
,s,C300,Agrave,
,s,C301,Aacute,
,s,C302,Acircumflex,
,s,C303,Atilde,
,s,C304,Adieresis,
,s,C305,Aring,
,s,C306,AE,
,s,C307,Ccedilla,
,s,C310,Egrave,
,s,C311,Eacute,
,s,C312,Ecircumflex,
,s,C313,Edieresis,
,s,C314,Igrave,
,s,C315,Iacute,
,s,C316,Icircumflex,
,s,C317,Idieresis,
,s,C320,Eth,
,s,C321,Ntilde,
,s,C322,Ograve,
,s,C323,Oacute,
,s,C324,Ocircumflex,
,s,C325,Otilde,
,s,C326,Odieresis,
,s,C327,multiply,
,s,C330,Oslash,
,s,C331,Ugrave,
,s,C332,Uacute,
,s,C333,Ucircumflex,
,s,C334,Udieresis,
,s,C335,Yacute,
,s,C336,Thorn,
,s,C337,germandbls,
,s,C340,agrave,
,s,C341,aacute,
,s,C342,acircumflex,
,s,C343,atilde,
,s,C344,adieresis,
,s,C345,aring,
,s,C346,ae,
,s,C347,ccedilla,
,s,C350,egrave,
,s,C351,eacute,
,s,C352,ecircumflex,
,s,C353,edieresis,
,s,C354,igrave,
,s,C355,iacute,
,s,C356,icircumflex,
,s,C357,idieresis,
,s,C360,eth,
,s,C361,ntilde,
,s,C362,ograve,
,s,C363,oacute,
,s,C364,ocircumflex,
,s,C365,otilde,
,s,C366,odieresis,
,s,C367,divide,
,s,C370,oslash,
,s,C371,ugrave,
,s,C372,uacute,
,s,C373,ucircumflex,
,s,C374,udieresis,
,s,C375,yacute,
,s,C376,thorn,
,s,C377,ydieresis,
EOSED

echo ---------------------- extracting bfont/makemacscreenfonts -----------------
sed 's/^,//' << \EOSED > bfont/makemacscreenfonts
,fmScreen2mfonts $1 2>&1 | sed 's,Dump font file \(.*\)\.mfont,fmMfont2bfont \1.mfont \1.bfont; /bin/rm \1.mfont,' | sh
EOSED

echo ---------------------- extracting bfont/makeabfbfonts -----------------
sed 's/^,//' << \EOSED > bfont/makeabfbfonts
,#! /bin/sh
,for font in *10.abf
,do	f=`basename $font 10.abf`
,	echo $f
,	makebfont $f
,done
EOSED

echo ---------------------- extracting bfont/makezipbfonts -----------------
sed 's/^,//' << \EOSED > bfont/makezipbfonts
,#! /bin/sh
,for font in *.zip
,do	f=`basename $font .zip`
,	echo $f
,	unzip $f
,	makebfont $f
,done
EOSED

echo ---------------------- extracting bfont/makebfont -----------------
sed 's/^,//' << \EOSED > bfont/makebfont
,#! /bin/sh
,if [ ! -d tmp ]
,then
,   mkdir tmp
,fi
,for font in $*
,do  for file in $font[0-9]*.abf
,    do	size=`echo $file | sed -e "s,$font,," -e "s,[^0-9],,g"`
,	cd tmp
,	fmAbf2bfont ../$file
,	scrf=`basename * .bfont`$size.bfont
,	echo  $scrf
,	mv * ../$scrf
,	cd ..
,    done
,done
,rmdir tmp
EOSED

echo ---------------------- extracting bfont/pfb-abf.bat -----------------
sed 's/^,//' << \EOSED > bfont/pfb-abf.bat
,@ echo off
,
,if not "%1"=="" goto los
,echo pfb-abf fontname outnam [resolutionx] [resolutiony] [suffix]
,echo fontname without .pfb
,echo outnam at most 6 characters
,echo screen resolution defaults to 72 72
,echo suffix optional suffix for final zip-file
,echo SIZES may be set to list of sizes to be generated, defaults to 10 12 14 18 24
,echo an additional starting "-" leaves intermediate files and doesn't zip
,goto end
,
,:los
,rem try to make some space in environment (NC problem):
,set dumvar=
,
,set del=
,if not "%1"=="-" goto mach
,set del=rem
,shift
,:mach
,set name=%1
,set namo=%2
,if "%2"=="" set namo=%1
,if "%sizes%" == "" set sizes=10 12 14 18 24
,set resx=72
,set resy=72
,if not "%3"=="" set resx=%3
,if not "%4"=="" set resy=%4
,set suff=%5
,echo generating for resolution %resx% %resy%
,
,echo StartTypeface > %namo%.mb
,echo Resolution %resx% %resy% >> %namo%.mb
,echo Orientation Portrait >> %namo%.mb
,echo StandardEncoding FRAME.ENC >> %namo%.mb
,echo SpecialEncoding  >> %namo%.mb
,for %%s in (%sizes%) do call makemb %namo% %%s
,echo EndTypeface >> %namo%.mb
,
,MAKEBIT.EXE -i %namo%.MB %name%.pfb
,%del% del %namo%.mb
,
,for %%s in (%sizes%) do MAKEABF.EXE %namo%%%s.BIT
,
,%del% del %namo%*.bit
,
,%del% pkzip %namo%%suff% %namo%*.abf
,%del% del %namo%*.abf
,
,:end
EOSED

echo ---------------------- extracting bfont/makemb.bat -----------------
sed 's/^,//' << \EOSED > bfont/makemb.bat
,set namo=%1
,set size=%2
,echo StartFont >> %namo%.mb
,echo PointSize  %size% >> %namo%.mb
,echo OutFile %namo%%size%.bit >> %namo%.mb
EOSED

echo ---------------------- extracting bfont/frame.enc -----------------
sed 's/^,//' << \EOSED > bfont/frame.enc
,%
,% Copyright 1989 Adobe Systems Inc. All Rights Reserved.
,% This encoding vector represents the differences between the PostScript
,% standard encoding and the MS-Windows ANSI character set.
,% Digby Horner - 01/11/89
,% yh - 08/27/91  Added some characters for Windows 3.1
,% rm - 11-21-91  added tilde @ 152 and circumflex @ 136 for win 3.1
,%
,MaxIndex 255
,MaxEncoded 255
,%
,StartEncoding
,1   breve
,2   caron
,3   dotaccent
,4   dotlessi
,5   fi
,6   fl
,7   hungarumlaut
,8   ogonek
,14  Zcaron
,15  fraction
,16  ring
,17  zcaron
,39  quotesingle
,96  grave
,128 .notdef
,129 .notdef
,130 quotesinglbase
,131 florin
,132 quotedblbase
,133 ellipsis
,134 dagger
,135 daggerdbl
,136 circumflex
,137 perthousand
,138 Scaron
,139 guilsinglleft
,140 OE
,141 .notdef
,142 .notdef
,143 .notdef
,144 .notdef
,145 quoteleft
,146 quoteright
,147 quotedblleft
,148 quotedblright
,149 bullet
,150 endash
,151 emdash
,152 tilde
,153 trademark
,154 scaron
,155 guilsinglright
,156 oe
,157 .notdef
,158 .notdef
,159 Ydieresis
,160 space
,161 exclamdown
,162 cent
,163 sterling
,164 currency
,165 yen
,166 brokenbar
,167 section
,168 dieresis
,169 copyright
,170 ordfeminine
,171 guillemotleft
,172 logicalnot
,173 minus
,174 registered
,175 macron
,176 degree
,177 plusminus
,178 twosuperior
,179 threesuperior
,180 acute
,181 mu
,182 paragraph
,183 periodcentered
,184 cedilla
,185 onesuperior
,186 ordmasculine
,187 guillemotright
,188 onequarter
,189 onehalf
,190 threequarters
,191 questiondown
,192 Agrave
,193 Aacute
,194 Acircumflex
,195 Atilde
,196 Adieresis
,197 Aring
,198 AE
,199 Ccedilla
,200 Egrave
,201 Eacute
,202 Ecircumflex
,203 Edieresis
,204 Igrave
,205 Iacute
,206 Icircumflex
,207 Idieresis
,208 Eth
,209 Ntilde
,210 Ograve
,211 Oacute
,212 Ocircumflex
,213 Otilde
,214 Odieresis
,215 multiply
,216 Oslash
,217 Ugrave
,218 Uacute
,219 Ucircumflex
,220 Udieresis
,221 Yacute
,222 Thorn
,223 germandbls
,224 agrave
,225 aacute
,226 acircumflex
,227 atilde
,228 adieresis
,229 aring
,230 ae
,231 ccedilla
,232 egrave
,233 eacute
,234 ecircumflex
,235 edieresis
,236 igrave
,237 iacute
,238 icircumflex
,239 idieresis
,240 eth
,241 ntilde
,242 ograve
,243 oacute
,244 ocircumflex
,245 otilde
,246 odieresis
,247 divide
,248 oslash
,249 ugrave
,250 uacute
,251 ucircumflex
,252 udieresis
,253 yacute
,254 thorn
,255 ydieresis
,EndEncoding
EOSED

exit 0
Newsgroups: comp.text.frame