From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- fonts/utilities/corelfonts/README | 63 + fonts/utilities/corelfonts/corelfonts | 233 ++++ fonts/utilities/corelfonts/fontinst.sty | 2229 ++++++++++++++++++++++++++++++ fonts/utilities/corelfonts/fontnames.dat | 818 +++++++++++ 4 files changed, 3343 insertions(+) create mode 100644 fonts/utilities/corelfonts/README create mode 100644 fonts/utilities/corelfonts/corelfonts create mode 100644 fonts/utilities/corelfonts/fontinst.sty create mode 100644 fonts/utilities/corelfonts/fontnames.dat (limited to 'fonts/utilities/corelfonts') diff --git a/fonts/utilities/corelfonts/README b/fonts/utilities/corelfonts/README new file mode 100644 index 0000000000..3d3f179c2b --- /dev/null +++ b/fonts/utilities/corelfonts/README @@ -0,0 +1,63 @@ +NAME +corelfonts + +DESCRIPTION +The file corelfonts is a perl script which will install all the PostScript +Type 1 fonts supplied on the Corel Ventura 5 CD (and probably with other +versions of Corel Ventura and Corel Draw). These fonts are from Bitstream. +Running this script will copy the afm and pfb files from the Corel CD and +run fontinst on them to create tfm, vf, fd and sty files for use with +LaTeX. The fonts, font descriptions and LaTeX package files are installed +to subdirectories in your TeXMF tree. + +INSTALLATION +Installation is simply a matter of running the script with perl and telling +your tex system about the new fonts and packages. The instructions here work +for teTeX running on FreeBSD 4.7 and fpTeX running on Windows XP, but they +ought to work with minor variations on other systems. + + Unix: chmod +x corelfonts + ./corelfonts + + Edit your config.ps file (probably located at texmf/dvips/config) + to include the line: + + p +bitstrea.map + + Then run texhash to update the filename database. + + Win32: perl corelfonts + + Edit your updmap.cfg file (probably located at texmf/web2c) + to include the line: + + Map bitstrea.map + + Then run updmap to update the filename database. + +USAGE +Just include a line such as \usepackage{sabon} in the preamble to your +LaTeX document and the default font will be Sabon (Garamond). Have a look +through the texmf/tex/latex/bitstrea directory to see which packages are +available. Each package supplies a font family. + +LICENSE +This material is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license. + +DISCLAIMER +Apart from the fact that I had these Corel (Bitstream) fonts lying around +and wanted to use them with LaTeX, this was simply an exercise in learning +perl for me. If you find the script useful I will be delighted, but I cannot +take responsibility for any problems you might have with it. Please let me +know if you find the script useful though. I can be contacted by email +as tony@thenoc.org.uk + +Tony McClelland +11/02/2003 + + + + + diff --git a/fonts/utilities/corelfonts/corelfonts b/fonts/utilities/corelfonts/corelfonts new file mode 100644 index 0000000000..48d3e47456 --- /dev/null +++ b/fonts/utilities/corelfonts/corelfonts @@ -0,0 +1,233 @@ +#!/usr/bin/perl -w +################################################################# +# corelfonts # +# Tony McClelland 11-Feb-2003 # +# Copy the PostScript Type1 fonts from the Corel Ventura 5 # +# CD into the local TeXMF tree and install these fonts for use # +# with TeX and LaTeX. These fonts are from Bitstream. # +################################################################# + +use strict; +use Cwd 'chdir', 'cwd'; +use File::Copy; + +################################################################# +# Global variables # +################################################################# +my $texmfdir; # Path to local TeXMF directory +my $coreldir; # Where the Corel fonts are +my $scriptdir; # Where this script and support files are +my $afmdir; # Where subdirectories for .afm files are +my $tfmdir; # Where subdirectories for .tfm files are +my $vfdir; # Where subdirectories for .vf files are +my $pfbdir; # Where subdirectories for .pfb files are +my $latexdir; # Where the .sty and .fd files go +my $latexbindir; # Path to the latex/pltotf/vptovf binaries + +################################################################# +# init_paths # +# Set up various paths for the TeXMF tree etc # +################################################################# +sub init_paths { + print "Enter the path for the local TeXMF tree [/usr/local/share/texmf]: "; + my $response = ; + chomp $response; + if ($response eq "") { + $texmfdir = "/usr/local/share/texmf"; + } + else { + $texmfdir = $response; + } + + print "Enter the path for the Corel fonts [/cdrom/Fonts/Type1]: "; + $response = ; + chomp $response; + if ($response eq "") { + $coreldir = "/cdrom/Fonts/Type1"; + } + else { + $coreldir = $response; + } + + print "Enter the full path of the latex executables [/usr/local/bin/]: "; + $response = ; + chomp $response; + if ($response eq "") { + $latexbindir = "/usr/local/bin"; + } + else { + $latexbindir = $response; + } + + $scriptdir = cwd(); + $afmdir = "$texmfdir/fonts/afm/bitstrea"; + $tfmdir = "$texmfdir/fonts/tfm/bitstrea"; + $vfdir = "$texmfdir/fonts/vf/bitstrea"; + $pfbdir = "$texmfdir/fonts/type1/bitstrea"; + $latexdir = "$texmfdir/tex/latex/bitstrea"; + + # Create the directories if necessary + mkdir $afmdir unless -e $afmdir ; + mkdir $tfmdir unless -e $tfmdir; + mkdir $vfdir unless -e $vfdir; + mkdir $pfbdir unless -e $pfbdir; + mkdir $latexdir unless -e $latexdir; +} + + +################################################################# +# Copy fonts from the CD, renaming according to the fontname # +# scheme. The fonts are arranged on the CD in subdirectories # +# under $coreldir named by the first letter of the font name. # +################################################################# +sub copy_fonts { + # Start off with fonts beginning with 'A' + my $oldsubdir = "A"; + chdir("$coreldir/$oldsubdir"); + + # Prepare a map file for dvips + open(MAPFILE, ">$texmfdir/dvips/config/bitstrea.map") + or die "Unable to open the map file: $!"; + + # Use the font name information in fontnames.dat (taken from + # the file bitstrea.map in the fontinst info on CTAN) to copy + # the afm and pfb files and build the dvips map file. + open(FONTNAMES, "$scriptdir/fontnames.dat") + or die "Unable to open the fontnames.dat file: $!"; + + while () { + chomp; + my ($fontname, $prefix, $kbname, $shortname, $shape) = split; + my $subdir = substr($fontname, 0, 1); + + # Only change directory when the first letter changes + if ($subdir ne $oldsubdir) { + $oldsubdir = $subdir; + chdir("$coreldir/$subdir"); + } + + # Set up the name of the AFM and PFB files used by Corel + my $fontfile = "${prefix}A___"; + my $afmfile = "$fontfile.afm"; + my $pfbfile = "$fontfile.pfb"; + + # Not all the files in the bitstrea.map are on the CD. + # Only set up texmf directories for those that are. + if (-e $afmfile) { + # Create subdirectories in the texmf tree + mkdir "$afmdir/$shortname" unless -e "$afmdir/$shortname"; + mkdir "$tfmdir/$shortname" unless -e "$tfmdir/$shortname"; + mkdir "$vfdir/$shortname" unless -e "$vfdir/$shortname"; + mkdir "$pfbdir/$shortname" unless -e "$pfbdir/$shortname"; + + # Copy the font using the fontname scheme + copy($afmfile, "$afmdir/$shortname/$kbname.afm"); + copy($pfbfile, "$pfbdir/$shortname/$kbname.pfb"); + + # Put an entry for this font in the map file + my $reencode = $kbname; + $reencode =~ s/8a/8r/; + print MAPFILE "$reencode $fontname \"TeXBase1Encoding ReEncodeFont\" <8r.enc <$kbname.pfb\n"; + + # If this font is not already italic or oblique, add a fake + # slanted variant to the map file + unless (($fontname =~ /[Oo]blique/) || ($fontname =~ /[Ii]talic/)) { + $reencode =~ s/8r/o8r/; + print MAPFILE "$reencode $fontname \".167 SlantFont TeXBase1Encoding ReEncodeFont\" <8r.enc <$kbname.pfb\n"; + } + } + } + + close(FONTNAMES); + close(MAPFILE); +} + + +################################################################# +# install_fonts # +# Install font families by running fontinst on the afm files # +################################################################# +sub install_fonts { + my %families; # font families and rm, sf or tt shapes + my %famcodes; # 3 letter codes for font families + my %btnames; # Bitstream names for font families + + # Get a list of all the subdirectories containing *.afm files + # organised by font name, for fontinst to work on + open(FONTNAMES, "$scriptdir/fontnames.dat") + or die "Unable to open the file fontnames.dat: $!"; + + while () { + chomp; + my ($fontname, $prefix, $kbname, $shortname, $shape) = split; + if (-e "$afmdir/$shortname") { + $families{$shortname} = $shape; + $famcodes{$shortname} = substr($kbname, 0, 3); + $fontname =~ s/BT.*//; # strip off everything after BT + $btnames{$shortname} = $fontname; + } + } + + close(FONTNAMES); + + # Run fontinst in each subdirectory + foreach my $font (sort keys %families) { + chdir "$afmdir/$font"; + + # Create a tex file to allow latex to be run on fontinst with + # this family of fonts as the \latinfamily + copy("$scriptdir/fontinst.sty", "$afmdir/$font/fontinst.sty"); + open(FONTINST, ">$afmdir/$font/corelfont.tex") + or die "Cannot open the LaTeX file: $!"; + print FONTINST <; + unlink <*.pl>; + unlink <*.mtx>; + unlink <*.tex>; + unlink <*.sty>; + + # Create a LaTeX style file for this font + open(LATEXFILE, ">$latexdir/$font.sty"); + print LATEXFILE "% LaTeX package file for using the Bitstream font $btnames{$font}\n"; + print LATEXFILE "\\ProvidesPackage{$font}[2003/02/11 Bitstream font $btnames{$font}]\n"; + print LATEXFILE "\\renewcommand{\\$families{$font}default}{$famcodes{$font}}\n"; + close(LATEXFILE); + + chdir $afmdir; + } +} + + +################################################################# +# Main program # +################################################################# +init_paths(); +copy_fonts(); +install_fonts(); + +print "Done.\n"; diff --git a/fonts/utilities/corelfonts/fontinst.sty b/fonts/utilities/corelfonts/fontinst.sty new file mode 100644 index 0000000000..8cd29c70f8 --- /dev/null +++ b/fonts/utilities/corelfonts/fontinst.sty @@ -0,0 +1,2229 @@ +%% +%% This is file `fontinst.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fontinst.dtx (with options: `pkg,textcomp,debug') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% You are *not* allowed to modify this file. +%% +%% You are *not* allowed to distribute this file. +%% For distribution of the original source see the terms +%% for copying and modification in the file fontinst.dtx. +%% +%% +\catcode`\{=1 +\catcode`\}=2 +\catcode`\#=6 +\catcode`\^=7 +\def\fontinstversion{1.801} +\def\filedate{1998/07/07} +\def\docdate{1998/07/07} +\ifx\ProvidesPackage\undefined + \def\NeedsTeXFormat#1{} + \def\ProvidesPackage#1[#2]{} +\fi +\ProvidesPackage{fontinst} +[\filedate\space v\fontinstversion\space + fontinst installation package] +\edef\spacecatcode{\the\catcode`\ } +\edef\nlcatcode{\the\catcode`\^^M} +\edef\atcatcode{\the\catcode`\@} +\edef\underscorecatcode{\the\catcode`\_} +\edef\tildecatcode{\the\catcode`\~} +\catcode`\ =9 +\catcode`\^^M=9 +\catcode`\@=11 +\catcode`\_=11 +\catcode`\~=10 +\ifx\@ne\undefined_command + \input fontinst.ini\relax +\fi +\newcount\a_count +\newcount\b_count +\newcount\c_count +\newcount\d_count +\newcount\e_count +\newcount\f_count +\newcount\g_count +\newdimen\a_dimen +\newdimen\b_dimen +\newdimen\c_dimen +\newdimen\d_dimen +\newtoks\a_toks +\newtoks\b_toks +\newtoks\c_toks +\newwrite\out_file +\mathchardef\one_thousand=1000 +\mathchardef\max_mathchardef="7FFF +\let\@tempdima\a_dimen +\let\@tempdimb\b_dimen +\input trig.sty +\def\x_cs#1#2{\expandafter#1\csname#2\endcsname} +\let\x_relax=\relax +\def\g_let{\global\let} +\def\empty_command{} +\def\gobble_one#1{} +\def\gobble_two#1#2{} +\def\gobble_three#1#2#3{} +\def\identity_one#1{#1} +\def\first_of_two#1#2{#1} +\def\second_of_two#1#2{#2} +\bgroup + \catcode`\[=1 + \catcode`\]=2 + \catcode`\%=12 + \catcode`\{=12 + \catcode`\}=12 + \gdef\percent_char[%] + \gdef\left_brace_char[{] + \gdef\right_brace_char[}] +\egroup +{ + \catcode`\p=12 + \catcode`\t=12 + \gdef\lose_measure#1pt{#1} +} +\def\first_char#1#2={#1} +\def\add_to#1#2{ + \ifx#1\relax + \def#1{#2} + \else + \expandafter\def\expandafter#1\expandafter{#1#2} + \fi +} +\def\never_do{\noexpand\do} +\def\open_out#1{ + \immediate\openout\out_file=#1 \def\out_filename{#1}} +\def\close_out#1{ + \immediate\write16{#1~written~on~\out_filename.} + \immediate\closeout\out_file} +\def\out_line#1{\immediate\write\out_file{#1}} +\def\out_lline#1{\out_line{\space\space\space#1}} +\def\out_llline#1{\out_lline{\space\space\space#1}} +\let\then=\iffalse +\def\if_false{\iffalse} +\def\if_true{\iftrue} +\def\if_or#1\or_else#2\then{ + #1\then + \expandafter\if_true + \else + #2\then + \expandafter\expandafter\expandafter\if_true + \else + \expandafter\expandafter\expandafter\if_false + \fi + \fi +} +\def\if_file_exists#1\then{ + \immediate\openin1=#1\relax + \ifeof1\relax + \immediate\closein1 + \expandafter\if_false + \else + \immediate\closein1 + \expandafter\if_true + \fi +} +\x_cs\ifx{@@input}\relax + \let\primitiveinput=\input +\else + \let\primitiveinput=\@@input +\fi +\def\setint#1#2{ + \x_cs\ifx{i-#1}\relax + \resetint{#1}{#2} + \fi +} +\def\setstr#1#2{\x_cs\ifx{s-#1}\relax + \x_cs\edef{s-#1}{#2}\fi} +\def\setdim#1#2{\x_cs\ifx{d-#1}\relax + \a_dimen=#2\relax\x_cs\edef{d-#1}{\the\a_dimen}\fi} +\def\setcommand#1{\ifx#1\undefined_command + \expandafter\def\expandafter#1\else + \expandafter\def\expandafter\a_command\fi} +\def\resetint#1#2{ + \eval_expr{#2} + \ifnum\result<\max_mathchardef + \ifnum\result<0 + \x_cs\edef{i-#1}{\the\result} + \else + \x_cs\mathchardef{i-#1}=\result + \fi + \else + \x_cs\edef{i-#1}{\the\result} + \fi +} +\def\resetstr#1#2{\x_cs\edef{s-#1}{#2}} +\def\resetdim#1#2{\a_dimen=#2\x_cs\edef{d-#1}{\the\a_dimen}} +\def\resetcommand#1{\def#1} +\def\int#1{\csname~i-#1\endcsname} +\def\str#1{\csname~s-#1\endcsname} +\def\dim#1{\csname~d-#1\endcsname} +\def\ifisint#1\then{\x_cs\ifx{i-#1}\relax\expandafter\if_false + \else\expandafter\if_true\fi} +\def\ifisstr#1\then{\x_cs\ifx{s-#1}\relax\expandafter\if_false + \else\expandafter\if_true\fi} +\def\ifisdim#1\then{\x_cs\ifx{d-#1}\relax\expandafter\if_false + \else\expandafter\if_true\fi} +\def\ifiscommand#1\then{\ifx#1\undefined_command\expandafter\if_false + \else\expandafter\if_true\fi} +\def\unsetint#1{\x_cs\let{i-#1}\relax} +\def\unsetstr#1{\x_cs\let{s-#1}\relax} +\def\unsetdim#1{\x_cs\let{d-#1}\relax} +\def\unsetcommand#1{\let#1=\undefined_command} +\newcount\result +\def\eval_expr#1{\global\result=#1\relax} +\def\eval_expr_to#1#2{\eval_expr{#2}#1=\result} +\def\g_eval_expr_to#1#2{\eval_expr{#2}\global#1=\result} +\def\neg#1{#1\global\result=-\result} +\def\add#1#2{#1{\a_count=\result\eval_expr{#2} + \global\advance\result by \a_count}} +\def\sub#1#2{#1{\a_count=\result\eval_expr{#2} + \advance\a_count by -\result + \global\result=\a_count}} +\def\mul#1#2{#1{\a_count=\result\eval_expr{#2} + \global\multiply\result by \a_count}} +\def\div#1#2{#1{\a_count=\result\eval_expr{#2} + \divide\a_count by \result + \global\result=\a_count}} +\def\max#1#2{#1{\a_count=\result\eval_expr{#2} + \ifnum\a_count>\result \global\result=\a_count \fi}} +\def\min#1#2{#1{\a_count=\result\eval_expr{#2} + \ifnum\a_count<\result \global\result=\a_count \fi}} +\def\scale#1#2{#1{\a_count=\result\eval_expr{#2} + \global\multiply\result by \a_count + \global\divide\result by \one_thousand}} +\newif\ifmissingslots +\x_cs\def{o-.notdef}#1{\global\missingslotstrue} +{ + \catcode`\/=\active + \catcode`\]=\active + \gdef\enctoetx#1#2{{ + \catcode`\/=\active + \catcode`\]=\active + \def/##1[{ + \a_count=0 + \global\missingslotsfalse + \def/####1~{ + \csname~o-####1\endcsname{ + \ifmissingslots + \out_line{\string\nextslot{\the\a_count}} + \fi + \global\missingslotsfalse + \out_line{\string\setslot{####1}} + \out_line{\string\endsetslot} + \out_line{} + } + \advance\a_count by 1 + } + } + \def]~def{} + \make_etx{#1}{#2} + }} +} +\def\make_etx#1#2{ + \open_out{\temp_prefix#2.etx} + \out_line{\percent_char~Filename:~#2.etx} + \out_line{\percent_char~Created~by:~tex~\jobname} + \out_line{\percent_char~Created~using:~\string\enctoetx{#1}{#2}} + \out_line{} + \out_line{\percent_char~This~file~contains~the + information~of~#1.enc~in~a~form} + \out_line{\percent_char~more~easily~read~by~TeX. + It~is~used~by~the~fontinst~package.} + \out_line{} + \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} + \out_line{} + \out_line{\string\relax} + \out_line{} + \out_line{\string\documentclass[twocolumn]{article}} + \out_line{\string\usepackage{fontdoc}} + \out_line{} + \out_line{\string\begin{document}} + \out_line{} + \out_line{This~document~describes~the~#1~encoding.} + \out_line{It~was~automatically~generated~by~the} + \out_line{{\string\tt\space~fontinst}~package.} + \out_line{} + \out_line{\string\encoding} + \out_line{} + \out_line{\string\needsfontinstversion{\fontinstversion}} + \out_line{} + \primitiveinput #1.enc\relax + \out_line{} + \out_line{\string\endencoding} + \out_line{} + \out_line{\string\end{document}} + \close_out{Encoding~vector} +} +\def\afmtomtx#1#2{{ + \open_out{\temp_prefix#2.mtx} + \def\raw_font_name{#2} + \_italicfalse + \setint{minimumkern}{0} + \minimum_kern=\int{minimumkern} + \out_line{\percent_char~Filename:~#2.mtx} + \out_line{\percent_char~Created~by:~tex~\jobname} + \out_line{\percent_char~Created~using:~\string\afmtomtx{#1}{#2}} + \out_line{} + \out_line{\percent_char~This~file~contains~the + information~of~#1.afm~in~a~form} + \out_line{\percent_char~more~easily~read~by~TeX.~ + It~is~used~by~the~fontinst~package.} + \out_line{} + \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} + \out_line{} + \out_line{\string\relax} + \out_line{\string\metrics} + \out_line{} + \out_line{\string\needsfontinstversion{\fontinstversion}} + \out_line{} + \catcode`\^^M=12 + \catcode`\ =10 + \expandafter\afm_line\primitiveinput #1.afm\relax + \out_line{} + \out_line{\string\endmetrics} + \close_out{Metrics} +}} +\newcount\minimum_kern +\newif\if_italic +{\catcode`\^^M=12 \gdef\afm_line#1 +{\afm_command#1~\end_of_line\afm_line}} +\def\afm_command#1~{\csname~afm-#1\endcsname\gobble_one_line} +\def\gobble_one_line#1\end_of_line{} +\x_cs\def{afm-EndFontMetrics}#1\afm_line{\endinput} +\def\afm_def#1(#2)#3{\x_cs\def{afm-#1} + \gobble_one_line#2\end_of_line{#3}} +\afm_def{CharWidth}(#1){\charxwidth=#1\relax} +\afm_def{ItalicAngle}(#1){\calculate_it_slant{#1}} +\afm_def{XHeight}(#1){ + \out_line{\string\setint{xheight}{#1}}} +\afm_def{CapHeight}(#1){ + \out_line{\string\setint{capheight}{#1}}} +\afm_def{Ascender}(#1){ + \out_line{\string\setint{ascender}{#1}}} +\afm_def{Descender}(#1){ + \out_line{\string\setint{descender_neg}{#1}}} +\afm_def{UnderlineThickness}(#1){ + \out_line{\string\setint{underlinethickness}{#1}}} +\afm_def{FontBBox}(#1~#2~#3~#4){ + \out_line{\string\setint{maxheight}{#4}} + \out_line{\string\setint{maxdepth_neg}{#2}}} +\afm_def{IsFixedPitch}(#1){ + \if\first_char#1=f + \else\out_line{\string\setint{monowidth}{1}} + \fi +} +\afm_def{KP}(#1~#2~#3~#4){ + \if\first_char#1=.\else + \if\first_char#2=.\else + \ifnum#3>\minimum_kern\relax + \out_line{\string\setkern{#1}{#2}{#3}} + \else\ifnum#3<-\minimum_kern\relax + \out_line{\string\setkern{#1}{#2}{#3}} + \fi\fi + \fi\fi +} +\afm_def{KPX}(#1~#2~#3~#4){ + \if\first_char#1=.\else + \if\first_char#2=.\else + \ifnum#3>\minimum_kern\relax + \out_line{\string\setkern{#1}{#2}{#3}} + \else\ifnum#3<-\minimum_kern\relax + \out_line{\string\setkern{#1}{#2}{#3}} + \fi\fi + \fi\fi +} +\afm_def{C}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char} +\afm_def{CH}(#1~;#2){\init_afm{#1}\do_list[#2]\afm_char} +\afm_def{CC}(#1~#2~;#3){\init_cc{#1}\do_list[#3]\cc_char} +\newcount\char_slot +\newcount\char_x_width +\newcount\x_width +\newcount\bbox_llx +\newcount\bbox_lly +\newcount\bbox_urx +\newcount\bbox_ury +\let\char_name=\empty_command +\def\init_afm#1{ + \char_slot=#1\relax + \x_width=\char_x_width + \bbox_llx=0 + \bbox_lly=0 + \bbox_urx=0 + \bbox_ury=0 + \let\char_name=\empty_command +} +\def\afm_char{ + \a_count=-\bbox_lly + \if_italic + \b_count=-\x_width + \advance\b_count by \bbox_urx + \ifnum\b_count>0\else + \b_count=0 + \fi + \else + \b_count=0 + \fi + \out_line{ + \ifnum\char_slot>-1 + \string\setrawglyph + \else + \string\setnotglyph + \fi + {\char_name} + {\raw_font_name} + {10pt} + {\the\char_slot} + {\the\x_width} + {\the\bbox_ury} + {\the\a_count} + {\the\b_count} + } +} +\def\init_cc#1{% + \out_line{\string\setglyph{#1}} + \def\char_name{#1} +} +\def\cc_char{% + \out_lline{\string\samesize{\char_name-not}} + \out_line{\string\endsetglyph} +} +\def\calculate_it_slant#1{ + \edef\theangle{\strip_spaces#1~\end_strip_spaces} + \CalculateTan{\theangle} + \a_dimen=-\one_thousand sp + \a_dimen=\UseTan{\theangle}\a_dimen + \a_count=\a_dimen + \out_line{\string\setint{italicslant}{\the\a_count}} + \ifnum\a_count>0~\_italictrue \else \_italicfalse \fi +} +\def\strip_spaces#1~#2\end_strip_spaces{#1} +\def\do_list[~#1~#2;~#3]{ + \csname~list-#1\endcsname\gobble_one_semi#2; + \ifx\relax#3\relax\expandafter\gobble_one + \else\expandafter\identity_one\fi + {\do_list[~#3]} +} +\def\gobble_one_semi#1;{} +\def\list_def#1(#2)#3{\x_cs\def{list-#1}\gobble_one_semi#2~;{#3}} +\list_def{W}(#1~#2){\x_width=#1\relax} +\list_def{WX}(#1){\x_width=#1\relax} +\list_def{WY}(#1){} +\list_def{N}(#1){\def\char_name{#1}} +\list_def{B}(#1~#2~#3~#4){ + \bbox_llx=#1\relax + \bbox_lly=#2\relax + \bbox_urx=#3\relax + \bbox_ury=#4\relax +} +\list_def{PCC}(#1~#2~#3){ + \out_lline{\string\glyphpcc{#1}{#2}{#3}} +} +\def\pltomtx#1#2{{ + \def\raw_font_name{#1} + \open_out{\temp_prefix#2.mtx} + \out_line{\percent_char~Filename:~#2.mtx} + \out_line{\percent_char~Created~by:~tex~\jobname} + \out_line{\percent_char~Created~using:~\string\pltomtx{#1}{#2}} + \out_line{} + \out_line{\percent_char~This~file~contains~the~ + information~of~#1.pl~in~a~form} + \out_line{\percent_char~more~easily~read~by~TeX.~ + It~is~used~by~the~fontinst~package.} + \out_line{} + \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} + \out_line{} + \out_line{\string\relax} + \out_line{\string\metrics} + \out_line{} + \out_line{\string\needsfontinstversion{\fontinstversion}} + \out_line{} + \catcode`\(=0 \catcode`\)=9 + \let\/=\ignore_parens + \let\do_pl_glyph=\relax + \primitiveinput #1.pl\relax + \do_pl_glyph + \out_line{} + \out_line{\string\endmetrics} + \close_out{Metrics} +}} +\def\ignore_parens{\bgroup\catcode`(=1 \catcode`)=2 \relax + \expandafter\expandafter\expandafter\gobble_parens + \iftrue\expandafter{\else}\fi} +\def\gobble_parens#1{\egroup} +\def\pl_real#1{\pl_realer(#1000)} +\def\pl_realer(#1.#2#3#4#5){#1#2#3#4} +\def\pl_int#1#2{ + \ifx#1C `#2 + \else\ifx#1D #2 + \else\ifx#1O '#2 + \else\ifx#1H "#2 + \else\errmessage{Unknown~PL~number~prefix~`#1'} + \fi\fi\fi\fi +} +\let\COMMENT=\ignore_parens +\let\FAMILY=\ignore_parens +\let\FACE=\ignore_parens +\let\CHECKSUM=\ignore_parens +\let\BOUNDARYCHAR=\ignore_parens +\let\LIG=\ignore_parens +\let\NEXTLARGER=\ignore_parens +\let\VARCHAR=\ignore_parens +\def\CODINGSCHEME{\bgroup\catcode`\)=12\relax\CODINGSCHEME_cont} +\def\CODINGSCHEME_cont#1){ + \egroup + \x_cs\ifx{enc-#1}\relax + \errhelp{The~encoding~`#1'~has~not~been~declared.^^J + You~should~declare~it~with~\string\declareencoding{#1}{ETXFILE}.^^J + Press~~to~carry~on~with~fingers~crossed,^^J + or~X~~to~exit.} + \errmessage{Undeclared~encoding~`#1'} + \else + \def\do_slot{\x_cs\let{name-\the\slot_number}\slot_name} + \catcode`\(=12 \catcode`\)=12 + \x_cs\inputetx{enc-#1}\relax + \catcode`\(=0 \catcode`\)=9 + \fi +} +\def\DESIGNSIZE~#1~#2~{ + \a_dimen=#2pt + \out_line{\string\setdim{designsize}{\the\a_dimen}} +} +\def\DESIGNUNITS~#1~#2~{ + \a_dimen=#2pt + \out_line{\string\setdim{designunits}{\the\a_dimen}} +} +\let\FONTDIMEN=\relax +\def\SLANT~R~#1~{\out_line{\string\setint{italicslant}{\pl_real{#1}}}} +\def\SPACE~R~#1~{\out_line{\string\setint{interword}{\pl_real{#1}}}} +\def\STRETCH~R~#1~{\out_line{\string\setint{stretchword}{\pl_real{#1}}}} +\def\SHRINK~R~#1~{\out_line{\string\setint{shrinkword}{\pl_real{#1}}}} +\def\XHEIGHT~R~#1~{\out_line{\string\setint{xheight}{\pl_real{#1}}}} +\def\QUAD~R~#1~{\out_line{\string\setint{quad}{\pl_real{#1}}}} +\def\EXTRASPACE~R~#1~{\out_line{\string\setint{extraspace}{\pl_real{#1}}}} +\def\DEFAULTRULETHICKNESS~R~#1~{ + \out_line{\string\setint{underlinethickness}{\pl_real{#1}}} +} +\def\HEADER~#1~#2~#3~#4~{} +\def\SEVENBITSAFEFLAG~#1~{} +\def\PARAMETER~#1~#2~#3~#4~{} +\def\NUM#1~#2~#3~{} +\def\DENOM#1~#2~#3~{} +\def\SUP#1~#2~#3~{} +\def\SUB#1~#2~#3~{} +\def\SUBDROP~#1~#2~{} +\def\SUPDROP~#1~#2~{} +\def\DELIM#1~#2~#3~{} +\def\AXISHEIGHT~#1~#2~{} +\def\BIGOPSPACING#1~#2~#3~{} +\def\LIGTABLE{\let\do=\never_do\let\temp_command\empty_command} +\def\LABEL~#1~#2~{\edef\temp_command{\temp_command\do{\pl_int{#1}{#2}}}} +\def\STOP{\let\temp_command\empty_command} +\def\SKIP~#1~#2~{\immediate\write16{Warning:~SKIP~instruction~ignored.}} +\def\KRN~#1~#2~R~#3~{ + \edef\do{\noexpand\write_pl_krn{\pl_int{#1}{#2}}{\pl_real{#3}}} + \temp_command + \let\do=\never_do +} +\def\write_pl_krn#1#2#3{ + \f_count=#1 + \g_count=#3 + \out_line{\string\setkern{\csname~name-\the\g_count\endcsname} + {\csname~name-\the\f_count\endcsname} + {#2}} +} +\def\CHARWD~R~#1~{\b_count=\pl_real{#1}} +\def\CHARHT~R~#1~{\c_count=\pl_real{#1}} +\def\CHARDP~R~#1~{\d_count=\pl_real{#1}} +\def\CHARIC~R~#1~{\e_count=\pl_real{#1}} +\def\CHARACTER~#1~#2~{ + \do_pl_glyph + \a_count=\pl_int{#1}{#2} + \b_count=0 + \c_count=0 + \d_count=0 + \e_count=0 + \let\do_pl_glyph=\write_pl_glyph +} +\def\write_pl_glyph{ + \x_cs\ifx{name-\the\a_count}\relax\else + \out_line{\string\setrawglyph + {\csname~name-\the\a_count\endcsname} + {\raw_font_name} + {\the\a_dimen} + {\the\a_count} + {\the\b_count} + {\the\c_count} + {\the\d_count} + {\the\e_count}} + \fi + } +\def\inputetx#1{ + \edef\lowercase_file{\lowercase{ + \edef\noexpand\lowercase_file{#1}}} + \lowercase_file + \slot_number=0 + \def\relax{\let\relax=\x_relax\iffalse} + \let\encoding=\fi + \let\endencoding=\endinput + \primitiveinput \lowercase_file.etx\x_relax + \let\relax=\x_relax +} +\def\setslot#1{\edef\slot_name{#1}\do_slot} +\def\endsetslot{\end_do_slot\advance\slot_number by 1\relax} +\let\do_slot\empty_command +\let\do_new_slot\empty_command +\let\end_do_slot\empty_command +\newcount\slot_number +\def\nextslot#1{\slot_number=#1\relax} +\def\skipslots#1{\advance\slot_number by #1\relax} +\let\ligature=\gobble_three +\let\nextlarger=\gobble_one +\let\varchar=\empty_command +\let\endvarchar=\empty_command +\let\comment=\gobble_one +\let\usedas=\gobble_two +\let\vartop=\gobble_one +\let\varmid=\gobble_one +\let\varbot=\gobble_one +\let\varrep=\gobble_one +\let\useexamplefont=\gobble_one +\let\slotexample=\empty_command +\let\setslotcomment=\gobble_one +\let\resetslotcomment=\gobble_one +\let\unsetslotcomment=\empty_command +\def\inputmtx#1{ + \a_count=0 + \def\relax{\let\relax=\x_relax\iffalse} + \let\metrics=\fi + \let\endmetrics=\endinput + \primitiveinput #1.mtx\x_relax + \let\relax=\x_relax +} +\def\setkern#1#2#3{ + \x_cs\ifx{i-rawscale}\relax + \expandafter\set_kern + \csname~r-#1\expandafter\endcsname + \csname~l-#2\endcsname{#3} + \else + \expandafter\set_kern + \csname~r-#1\expandafter\endcsname + \csname~l-#2\endcsname{\scale{#3}{\int{rawscale}}} + \fi +} +\def\set_kern#1#2#3{ + \eval_expr{#3} + \expandafter\set_kern_cs\csname\the\result\endcsname#1#2 +} +\def\set_kern_cs#1#2#3{ + \add_to#2{\k#3#1} + \add_to#3{\k#2#1} +} +\def\setleftkerning#1#2#3{ + \eval_expr_to\b_count{#3} + \expandafter\set_kerning + \csname~l-#1\expandafter\endcsname + \csname~l-#2\endcsname +} +\def\setrightkerning#1#2#3{ + \eval_expr_to\b_count{#3} + \expandafter\set_kerning + \csname~r-#1\expandafter\endcsname + \csname~r-#2\endcsname +} +\def\setleftrightkerning#1#2#3{ + \eval_expr_to\b_count{#3} + \expandafter\set_kerning + \csname~l-#1\expandafter\endcsname + \csname~l-#2\endcsname + \expandafter\set_kerning + \csname~r-#1\expandafter\endcsname + \csname~r-#2\endcsname +} +\def\set_kerning#1#2{ + \if\b_count=\one_thousand + \def\k##1##2{ + \set_kern_cs##2##1#1 + } + \else + \def\k##1##2{ + \set_kern##1#1{ + \scale\b_count{\expandafter\gobble_one\string##2} + } + } + \fi + #2 +} +\def\kerning#1#2{0\relax + \def\k##1{\csname~set-\string##1\endcsname\gobble_one} + \bgroup + \x_cs\def{set-\string\l-#2}##1##2{ + \global\result=\expandafter\gobble_one\string##2\egroup + } + \csname~r-#1\endcsname + \csname~set-\string\l-#2\endcsname\gobble_one{00} +} +\def\width{\glyph_parameter\first_of_six} +\def\height{\glyph_parameter\second_of_six} +\def\depth{\glyph_parameter\third_of_six} +\def\italic{\glyph_parameter\fourth_of_six} +\def\mapcommands{\glyph_parameter\fifth_of_six} +\def\mapfonts{\glyph_parameter\sixth_of_six} +\def\glyph_parameter#1#2{ + \expandafter\expandafter\expandafter + #1\csname~g-#2\endcsname +} +\def\first_of_six#1#2#3#4#5#6{#1} +\def\second_of_six#1#2#3#4#5#6{#2} +\def\third_of_six#1#2#3#4#5#6{#3} +\def\fourth_of_six#1#2#3#4#5#6{#4} +\def\fifth_of_six#1#2#3#4#5#6{#5} +\def\sixth_of_six#1#2#3#4#5#6{#6} +\let\saved_scale\relax +\let\saved_mapfont\relax +\let\saved_raw\relax +\let\saved_rule\relax +\let\saved_special\relax +\let\saved_warning\relax +\let\saved_movert\relax +\let\saved_moveup\relax +\let\saved_push\relax +\let\saved_pop\relax +\newcount\glyph_width +\newcount\glyph_height +\newcount\glyph_depth +\newcount\glyph_italic +\newtoks\glyph_map_commands +\newtoks\glyph_map_fonts +\newcount\glyph_voffset +\def\setglyph#1{ + \ifisglyph{#1}\then + \expandafter\gobble_glyph + \else + \x_cs\def{g-#1}{{\the\glyph_width}{\the + \glyph_height}{\the\glyph_depth}{\the\glyph_italic}{\the + \glyph_map_commands}{\the\glyph_map_fonts}} + \resetglyph{#1} + \fi +} +\long\def\gobble_glyph#1\endsetglyph{} +\def\resetglyph#1{ + \def\glyphname{#1} + \glyph_width=0 + \global\glyph_height=0 + \global\glyph_depth=0 + \global\glyph_italic=0 + \glyph_voffset=0 + \global\glyph_map_commands={} + \global\glyph_map_fonts={} +} +\def\endsetglyph{ + \x_cs\edef{g-\glyphname} + {{\the\glyph_width}{\the\glyph_height} + {\the\glyph_depth}{\the\glyph_italic} + {\the\glyph_map_commands}{\the\glyph_map_fonts}} +} +\let\endresetglyph=\endsetglyph +\def\setrawglyph#1#2#3#4#5#6#7#8{ + \x_cs\ifx{g-#1}\relax + \x_cs\ifx{i-rawscale}\relax + \x_cs\def{g-#1}{ + {#5} + {#6} + {#7} + {#8} + {\saved_raw{#2}{#4}{#1}} + {\saved_mapfont{#2}{#3}} + } + \else + \eval_expr_to\e_count{\int{rawscale}} + \eval_expr_to\a_count{\scale{#5}\e_count} + \eval_expr_to\b_count{\scale{#6}\e_count} + \eval_expr_to\c_count{\scale{#7}\e_count} + \eval_expr_to\d_count{\scale{#8}\e_count} + \x_cs\edef{g-#1}{ + {\the\a_count} + {\the\b_count} + {\the\c_count} + {\the\d_count} + {\saved_scale{\the\e_count} + {\saved_raw{#2}{#4}{#1}}} + {\saved_scale{\the\e_count} + {\saved_mapfont{#2}{#3}}} + } + \fi + \fi +} +\def\setnotglyph#1#2#3#4#5#6#7#8{ + \x_cs\ifx{g-#1-not}\relax + \x_cs\ifx{i-rawscale}\relax + \x_cs\def{g-#1-not}{ + {#5} + {#6} + {#7} + {#8} + {} + {} + } + \else + \eval_expr_to\e_count{\int{rawscale}} + \eval_expr_to\a_count{\scale{#5}\e_count} + \eval_expr_to\b_count{\scale{#6}\e_count} + \eval_expr_to\c_count{\scale{#7}\e_count} + \eval_expr_to\d_count{\scale{#8}\e_count} + \x_cs\edef{g-#1-not}{ + {\the\a_count} + {\the\b_count} + {\the\c_count} + {\the\d_count} + {} + {} + } + \fi + \fi +} +\def\unsetglyph#1{\x_cs\let{g-#1}\relax} +\def\glyph#1#2{ + \eval_expr_to\b_count{#2} + \eval_expr_to\glyph_width{\add\glyph_width{\scale\b_count{\width{#1}}}} + \g_eval_expr_to\glyph_height{\max\glyph_height + {\add{\scale\b_count{\height{#1}}}\glyph_voffset}} + \g_eval_expr_to\glyph_depth{\max\glyph_depth + {\sub{\scale\b_count{\depth{#1}}}\glyph_voffset}} + \g_eval_expr_to\glyph_italic{\scale\b_count{\italic{#1}}} + \edef\temp_command{\the\glyph_map_commands + \saved_scale{\the\b_count}{\mapcommands{#1}}} + \global\glyph_map_commands\expandafter{\temp_command} + \edef\temp_command{\the\glyph_map_fonts + \saved_scale{\the\b_count}{\mapfonts{#1}}} + \global\glyph_map_fonts\expandafter{\temp_command} +} +\def\glyphrule#1#2{ + \eval_expr_to\b_count{#1} \eval_expr_to\c_count{#2} + \advance\glyph_width by \b_count + \g_eval_expr_to\glyph_depth{\max\glyph_depth{-\glyph_voffset}} + \g_eval_expr_to\glyph_height{\max\glyph_height{\add\glyph_voffset\c_count}} + \global\glyph_italic=0 + \edef\temp_command{\the\glyph_map_commands + \saved_rule{\the\b_count}{\the\c_count}} + \global\glyph_map_commands\expandafter{\temp_command} +} +\def\glyphspecial#1{ + \edef\temp_command{\the\glyph_map_commands\saved_special{#1}} + \global\glyph_map_commands\expandafter{\temp_command}} +\def\glyphwarning#1{ + \edef\temp_command{\the\glyph_map_commands\saved_warning{#1}} + \global\glyph_map_commands\expandafter{\temp_command}} +\def\movert#1{ + \eval_expr{#1} + \ifnum\result=0\else + \advance\glyph_width by \result + \edef\temp_command{\the\glyph_map_commands\saved_movert{\the\result}} + \global\glyph_map_commands\expandafter{\temp_command} + \fi} +\def\moveup#1{ + \eval_expr{#1} + \ifnum\result=0\else + \advance\glyph_voffset by \result + \edef\temp_command{\the\glyph_map_commands\saved_moveup{\the\result}} + \global\glyph_map_commands\expandafter{\temp_command} + \fi} +\def\push{\bgroup + \edef\temp_command{\the\glyph_map_commands\saved_push} + \global\glyph_map_commands\expandafter{\temp_command}} +\def\pop{\egroup + \edef\temp_command{\the\glyph_map_commands\saved_pop} + \global\glyph_map_commands\expandafter{\temp_command}} +\def\resetwidth#1{\movert{\sub{#1}\glyph_width}} +\def\resetheight{\g_eval_expr_to\glyph_height} +\def\resetdepth{\g_eval_expr_to\glyph_depth} +\def\resetitalic{\g_eval_expr_to\glyph_italic} +\def\glyphpcc#1#2#3{ + \push + \movert{#2} + \moveup{#3} + \glyph{#1}{\one_thousand} + \pop +} +\def\samesize#1{ + \expandafter\expandafter\expandafter + \same_size\csname g-#1\endcsname +} +\def\same_size#1#2#3#4#5#6{ + \movert{\sub{#1}\glyph_width} + \global\glyph_height=#2 + \global\glyph_depth=#3 + \global\glyph_italic=#4 +} +\def\ifisglyph#1\then{ + \x_cs\ifx{g-#1}\relax + \expandafter\if_false + \else + \expandafter\if_true + \fi +} +\def\etxtovpl#1#2{{ + \def\vpl_extension{vpl} + \def\vpl_title{COMMENT} + \def\vpl_font{virtual~font} + \def\vpl_Font{Virtual~font} + \def\vpl_caller{\string\etxtovpl} + \def\vpl_to_vf##1{vpltovf~##1.vpl~##1.vf~##1.tfm} + \etx_to_font{#1}{#2} +}} +\def\etxtopl#1#2{{ + \def\vpl_extension{pl} + \def\vpl_title{COMMENT} + \def\vpl_font{font} + \def\vpl_Font{Font} + \def\vpl_caller{\string\etxtopl} + \def\vpl_to_vf##1{pltotfm~##1.pl~##1.tfm} + \let\make_mapfonts\gobble_one + \let\do_character_map\relax + \etx_to_font{#1}{#2} +}} +\def\etx_to_font#1#2{ + \def\do_slot{\resetint\slot_name\slot_number} + \inputetx{#1} + \open_out{#2.\vpl_extension} + \out_line{(\vpl_title\space\vpl_font\space + #2~created~by~fontinst~v\fontinstversion)} + \out_line{} + \out_line{(COMMENT~Filename:~#2.\vpl_extension)} + \out_line{(COMMENT~Created~by:~tex~\jobname)} + \out_line{(COMMENT~Created~using:~\vpl_caller{#1}{#2})} + \out_line{} + \out_line{(COMMENT~This~file~can~be~turned~into~a~\vpl_font~with)} + \out_line{(COMMENT~\vpl_to_vf{#2})} + \out_line{} + \out_line{(COMMENT~THIS~FILE~CAN~THEN~BE~DELETED.)} + \out_line{} + \make_font{#1} + \out_line{} + \out_line{(COMMENT~END~OF~FILE~#2.\vpl_extension)} + \close_out{\vpl_Font} +} +\newdimen\scaled_design_size +\def\afm_convert#1=#2;{ + \eval_expr{#2} + #1=\scaled_design_size + \divide#1 by 8 + \multiply #1 by \result + \divide #1 by \one_thousand + \multiply#1 by 8 +} +\def\vpl_real#1{R~\expandafter\lose_measure\the#1} +\def\vpl_int#1{D~\the#1} +\def\make_font#1{ + \make_header{#1} + \make_mapfonts{#1} + \make_fontdimens{#1} + \make_ligtable{#1} + \make_characters{#1} + \make_tidy{#1} +} +\newcount\boundary_char +\newdimen\side_bearings +\newdimen\curr_bearings +\def\make_header#1{ + \global\font_count=0 + \setdim{designsize}{10pt} + \scaled_design_size=\dim{designsize} + \out_line{(DESIGNSIZE~\vpl_real\scaled_design_size)} + \out_line{(DESIGNUNITS~\vpl_real\scaled_design_size)} + \setstr{codingscheme}{UNKNOWN} + \out_line{(CODINGSCHEME~\str{codingscheme})} + \ifisint{boundarychar}\then + \boundary_char=\int{boundarychar} + \out_line{(BOUNDARYCHAR~\vpl_int\boundary_char)} + \else + \boundary_char=-1 + \fi + \setint{letterspacing}{0} + \afm_convert\side_bearings=\div{\int{letterspacing}}{2}; + \ifdim\side_bearings=0pt + \let\do_character_sidebearings=\relax + \fi + \out_line{} +} +\def\make_mapfonts#1{ + \let\saved_scale\vpl_scale + \let\saved_mapfont\vpl_mapfont + \let\saved_raw\vpl_raw + \let\saved_rule\vpl_rule + \let\saved_special\vpl_special + \let\saved_warning\vpl_warning + \let\saved_movert\vpl_movert + \let\saved_moveup\vpl_moveup + \let\saved_push\vpl_push + \let\saved_pop\vpl_pop + \let\do_slot=\do_mapfont + \inputetx{#1} + \out_line{} +} +\def\make_fontdimens#1{ + \out_line{(FONTDIMEN} + \ifisint{fontdimen(1)}\then + \a_dimen=\int{fontdimen(1)}pt + \divide\a_dimen by \one_thousand + \out_lline{(PARAMETER~D~1~\vpl_real\a_dimen)} + \fi + \a_count=2 + \loop\ifnum\a_count<256 + {\ifisint{fontdimen(\the\a_count)}\then + \afm_convert\a_dimen=\int{fontdimen(\the\a_count)}; + \out_lline{(PARAMETER~\vpl_int\a_count\space\vpl_real\a_dimen)} + \fi} + \advance\a_count by 1 \repeat + \out_lline{)} + \out_line{} +} +\def\make_ligtable#1{ + \bgroup + \out_line{(LIGTABLE} + \let\do_slot=\relax + \let\end_do_slot=\vpl_kerning + \let\ligature=\vpl_ligature + \let\k=\vpl_kern + \inputetx{#1} + \out_lline{)} + \egroup + \out_line{} +} +\def\make_characters#1{ + \bgroup + \let\do_slot=\do_character + \let\end_do_slot=\end_do_character + \let\nextlarger=\vpl_nextlarger + \let\varchar=\vpl_varchar + \let\endvarchar=\end_vpl_varchar + \let\vartop=\vpl_vartop + \let\varmid=\vpl_varmid + \let\varbot=\vpl_varbot + \let\varrep=\vpl_varrep + \inputetx{#1} + \egroup +} +\def\make_tidy#1{ + \a_count=0\loop\ifnum\a_count<\font_count + \edef\temp_command{\csname~f-\the\a_count\endcsname} + \global\x_cs\let\temp_command\relax + \advance\a_count by 1 + \repeat + \global\font_count=0 +} +\def\vpl_ligature#1#2#3{ + \ifisint{#2}\then + \ifisint{#3}\then + \ifisglyph{#3}\then + \a_count=\int{#2} + \b_count=\int{#3} + \vpl_liglabel + \out_lline{(#1~\vpl_int\a_count\space \vpl_int\b_count)~ + (COMMENT~#2~#3)} + \else + \immediate\write16{Warning:~\string\ligature\space + for~unknown~slot~`#3'.} + \fi + \else + \immediate\write16{Warning:~\string\ligature\space + for~unknown~slot~`#3'.} + \fi + \else + \immediate\write16{Warning:~\string\ligature\space + for~unknown~slot~`#2'.} + \fi +} +\def\vpl_kerning{\csname~r-\slot_name\endcsname\vpl_ligstop} +\def\vpl_kern#1#2{ + \edef\temp_command{\expandafter\gobble_three\string#1} + \ifisint\temp_command\then + \vpl_liglabel + \a_count=\int\temp_command + \afm_convert\a_dimen=\expandafter\gobble_one\string#2; + \out_lline{ + (KRN~\vpl_int\a_count\space \vpl_real\a_dimen)~ + (COMMENT~\temp_command) + } + \fi +} +\def\out_liglabel{ + \out_lline{(LABEL~\vpl_int\slot_number)~(COMMENT~\slot_name)} + \ifnum\slot_number=\boundary_char + \out_lline{(LABEL~BOUNDARYCHAR)} + \fi + \let\vpl_liglabel=\relax + \let\vpl_ligstop=\out_ligstop +} +\let\vpl_liglabel=\out_liglabel +\def\out_ligstop{\out_lline{(STOP)} + \let\vpl_liglabel=\out_liglabel + \let\vpl_ligstop=\relax} +\let\vpl_ligstop=\relax +\def\do_mapfont{ + \ifisglyph\slot_name\then + \mapfonts\slot_name + \fi +} +\def\vpl_scale#1#2{{ + \divide \scaled_design_size by 8 + \multiply \scaled_design_size by #1 + \divide \scaled_design_size by \one_thousand + \multiply \scaled_design_size by 8 + #2 +}} +\def\vpl_mapfont#1#2{ + \a_dimen=#2 + \x_cs\ifx{#1-\the\scaled_design_size}\relax + \x_cs\xdef{#1-\the\scaled_design_size}{\the\font_count} + \x_cs\xdef{f-\the\font_count}{#1-\the\scaled_design_size} + \out_line{(MAPFONT~\vpl_int\font_count\space + (FONTNAME~#1)~ + (FONTDSIZE~\vpl_real\a_dimen)~ + (FONTAT~\vpl_real\scaled_design_size))} + \global\advance\font_count by 1 + \fi +} +\newcount\font_count +\newcount\next_mapfont +\newcount\prev_mapfont +\def\do_character{ + \x_cs\ifx{g-\slot_name}\relax + \expandafter\gobble_setslot + \else + \ifx\slot_name\notdef_name\else + \out_line{(CHARACTER~\vpl_int\slot_number\space + (COMMENT~\slot_name)} + \afm_convert\a_dimen=\width\slot_name; + \do_character_sidebearings + \out_lline{(CHARWD~\vpl_real\a_dimen)} + \afm_convert\a_dimen=\height\slot_name; + \out_lline{(CHARHT~\vpl_real\a_dimen)} + \afm_convert\a_dimen=\depth\slot_name; + \out_lline{(CHARDP~\vpl_real\a_dimen)} + \afm_convert\a_dimen=\italic\slot_name; + \ifnum\a_dimen>0 + \out_lline{(CHARIC~\vpl_real\a_dimen)} + \fi + \do_character_map + \fi + \fi +} +\def\do_character_sidebearings{ + \ifisint{\slot_name-spacing}\then + \afm_convert\curr_bearings=\int{\slot_name-spacing}; + \divide\curr_bearings by 2 + \else + \curr_bearings=\side_bearings + \fi + \afm_convert\a_dimen=\width\slot_name; + \advance\a_dimen by 2\curr_bearings +} +\def\do_character_map{ + \global\prev_mapfont=0 \out_lline{(MAP} + \ifdim \curr_bearings=0pt + \mapcommands\slot_name + \else + \out_llline{(MOVERIGHT~\vpl_real\curr_bearings)} + \mapcommands\slot_name + \out_llline{(MOVERIGHT~\vpl_real\curr_bearings)} + \fi + \out_llline{)} +} +\def\do_character_no_letterspacing{ + \x_cs\ifx{g-\slot_name}\relax + \expandafter\gobble_setslot + \else + \ifx\slot_name\notdef_name\else + \out_line{(CHARACTER~\vpl_int\slot_number\space + (COMMENT~\slot_name)} + \afm_convert\a_dimen=\width\slot_name; + \out_lline{(CHARWD~\vpl_real\a_dimen)} + \afm_convert\a_dimen=\height\slot_name; + \out_lline{(CHARHT~\vpl_real\a_dimen)} + \afm_convert\a_dimen=\depth\slot_name; + \out_lline{(CHARDP~\vpl_real\a_dimen)} + \afm_convert\a_dimen=\italic\slot_name; + \ifnum\a_dimen>0 \out_lline{(CHARIC~\vpl_real\a_dimen)} \fi + \global\prev_mapfont=0 \out_lline{(MAP} + \mapcommands\slot_name + \out_llline{)} + \fi + \fi +} +\def\gobble_setslot#1\endsetslot{\endsetslot} +\def\end_do_character{ + \ifisglyph\slot_name\then + \out_lline{)} + \fi +} +\def\notdef_name{.notdef} +\def\vpl_nextlarger#1{ + \ifisint{#1}\then + \out_lline{(NEXTLARGER~D~\the\int{#1})~(COMMENT~#1)} + \else + \immediate\write16{Warning:~\string\nextlarger\space + for~unknown~slot~`#1'} + \fi +} +\def\vpl_varchar{\out_lline{(VARCHAR}} +\def\vpl_vartop#1{ + \ifisint{#1}\then + \out_llline{(TOP~D~\the\int{#1})~(COMMENT~#1)} + \else + \immediate\write16{Warning:~\string\vartop\space + for~unknown~slot~`#1'} + \fi +} +\def\vpl_varmid#1{ + \ifisint{#1}\then + \out_llline{(MID~D~\the\int{#1})~(COMMENT~#1)} + \else + \immediate\write16{Warning:~\string\varmid\space + for~unknown~slot~`#1'} + \fi +} +\def\vpl_varbot#1{ + \ifisint{#1}\then + \out_llline{(BOT~D~\the\int{#1})~(COMMENT~#1)} + \else + \immediate\write16{Warning:~\string\varbot\space + for~unknown~slot~`#1'} + \fi +} +\def\vpl_varrep#1{ + \ifisint{#1}\then + \out_llline{(REP~D~\the\int{#1})~(COMMENT~#1)} + \else + \immediate\write16{Warning:~\string\varrep\space + for~unknown~slot~`#1'} + \fi +} +\def\end_vpl_varchar{\out_llline{)}} +\def\vpl_raw#1#2#3{ + \global\next_mapfont=\csname~#1-\the\scaled_design_size\endcsname\relax + \ifnum\next_mapfont=\prev_mapfont\else + \out_llline{(SELECTFONT~\vpl_int\next_mapfont)~ + (COMMENT~#1~at~\the\scaled_design_size)} + \fi + \out_llline{(SETCHAR~D~#2)~(COMMENT~#3)} + \global\prev_mapfont=\next_mapfont +} +\def\vpl_rule#1#2{ + \afm_convert\a_dimen=#1; + \afm_convert\b_dimen=#2; + \out_llline{(SETRULE~\vpl_real\b_dimen\space~\vpl_real\a_dimen)} +} +\def\vpl_special#1{ + \out_llline{(SPECIAL~#1)}} +\def\vpl_warning#1{ + \out_llline{(SPECIAL~Warning:~#1)} + \immediate\write16{Warning:~#1.} +} +\def\vpl_movert#1{ + \afm_convert\a_dimen=#1; + \out_llline{(MOVERIGHT~\vpl_real\a_dimen)} +} +\def\vpl_moveup#1{ + \afm_convert\a_dimen=#1; + \out_llline{(MOVEUP~\vpl_real\a_dimen)} +} +\def\vpl_push{\out_llline{(PUSH)}} +\def\vpl_pop{\out_llline{(POP)}} +\def\mtxtopl#1#2{{ + \open_out{#2.pl} + \out_line{(COMMENT~raw~font~#2~created~by~fontinst~v\fontinstversion)} + \out_line{} + \out_line{(COMMENT~Filename:~#2.pl)} + \out_line{(COMMENT~Created~by:~tex~\jobname)} + \out_line{(COMMENT~Created~using:~\string\mtxtopl{#1}{#2})} + \out_line{} + \out_line{(COMMENT~This~file~can~be~turned~into~a~TeX~font~with)} + \out_line{(COMMENT~pltotfm~#2.pl~#2.tfm)} + \out_line{} + \out_line{(COMMENT~THIS~FILE~CAN~THEN~BE~DELETED.)} + \out_line{} + \out_line{(DESIGNSIZE~R~10.0)} + \out_line{(DESIGNUNITS~R~10.0)} + \out_line{} + \scaled_design_size=10pt + \let\setglyph=\iffalse + \let\endsetglyph=\fi + \let\setkern=\gobble_three + \let\setrawglyph=\pl_raw_glyph + \inputmtx{#1} + \out_line{} + \out_line{(COMMENT~END~OF~FILE~#2.pl)} + \close_out{Raw~font} +}} +\def\pl_raw_glyph#1#2#3#4#5#6#7#8{ + \a_count=#4 + \afm_convert\a_dimen=#5; + \afm_convert\b_dimen=#6; + \afm_convert\c_dimen=#7; + \afm_convert\d_dimen=#8; + \out_line{(CHARACTER~\vpl_int\a_count\space(COMMENT~#1)} + \out_lline{(CHARWD~\vpl_real\a_dimen)} + \out_lline{(CHARHT~\vpl_real\b_dimen)} + \out_lline{(CHARDP~\vpl_real\c_dimen)} + \out_lline{(CHARIC~\vpl_real\d_dimen)} + \out_lline{)} +} +\newtoks\family_toks +\def\installfonts{ + \bgroup + \global\family_toks={} + \gdef\prev_file_list{} +} +\def\installfamily#1#2#3{ + \global\family_toks=\expandafter{\the\family_toks\fd_family{#1}{#2}{#3}} + \global\x_cs\let{#1-#2}\empty_command +} +\def\installfont#1#2#3#4#5#6#7#8{ + \install_font{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{\etxtovpl} +} +\def\installrawfont#1#2#3#4#5#6#7#8{ + \install_font{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{\etxtopl} +} +\def\install_font#1#2#3#4#5#6#7#8#9{ + \xdef\curr_file_list{#2} + \ifx\prev_file_list\curr_file_list\else + \egroup\bgroup + \expandafter\input_mtx_files\curr_file_list, + \relax,\end_input_mtx_files + \global\let\prev_file_list=\curr_file_list + \fi + #9{#3}{#1} + \x_cs\ifx{#4-#5-#6-#7}\relax + \let\do_shape=\relax + \x_cs\xdef{#4-#5}{ + \x_cs\ifx{#4-#5}\relax\else + \csname#4-#5\endcsname + \fi + \do_shape{#4}{#5}{#6}{#7} + } + \fi + \let\do_size=\relax + \x_cs\xdef{#4-#5-#6-#7}{ + \x_cs\ifx{#4-#5-#6-#7}\relax\else + \csname#4-#5-#6-#7\endcsname + \fi + \do_size{#8}{#1} + } +} +\def\endinstallfonts{ + \let\do_shape=\fd_shape + \let\do_size=\fd_size + \the\family_toks + \global\family_toks{} + \egroup +} +\def\input_mtx_files#1,#2\end_input_mtx_files{ + \if\relax#1 + \expandafter\gobble_one + \else + \expandafter\identity_one + \fi{ + \input_mtx_file{#1} + \input_mtx_files#2\end_input_mtx_files + } +} +\def\input_mtx_file#1{ + \if\relax#1\relax\else + \get_file_name #1~scaled~1000~; + \if_file_exists{\file_name.mtx}\then + \inputmtx\file_name + \else + % changed the order (SPQR, 15/01/97) because of cmr*.afm + % files found in TEXMF/fonts/afm hierarchy + \if_file_exists{\file_name.pl}\then + \pltomtx\file_name\file_name + \else + \if_file_exists{\file_name.afm}\then + \afmtomtx\file_name\file_name + \mtxtopl\file_name\file_name + \fi + \fi + \inputmtx\file_name + \fi + \fi +} +\def\get_file_name #1~scaled~#2~#3;{ + \edef\file_name{#1} + \ifnum#2=\one_thousand + \unsetint{rawscale} + \else + \setint{rawscale}{#2} + \fi +} +\def\fd_family#1#2#3{ + \a_toks{#3} + \edef\lowercase_file{\lowercase{ + \edef\noexpand\lowercase_file{#1#2.fd}}} + \lowercase_file + \open_out{\lowercase_file} + \out_line{\percent_char~Filename:~\lowercase_file} + \out_line{\percent_char~Created~by:~tex~\jobname} + \out_line{\percent_char~Created~using~fontinst~v\fontinstversion} + \out_line{} + \out_line{\percent_char~THIS~FILE~SHOULD~BE~PUT~IN~A~TEX~INPUTS~DIRECTORY} + \out_line{} + \out_line{\string\ProvidesFile{\lowercase_file}} + \out_lline{[ + \the\year/ + \ifnum10>\month0\fi\the\month/ + \ifnum10>\day0\fi\the\day\space + Fontinst~v\fontinstversion\space + font~definitions~for~#1/#2. + ]} + \out_line{} + \out_line{\string\DeclareFontFamily{#1}{#2}{\the\a_toks}} + { + \csname #1-#2\endcsname + \out_line{} + \let\do_shape=\substitute_shape + \csname #1-#2\endcsname + \let\do_shape=\remove_shape + \csname #1-#2\endcsname + } + \x_cs\g_let{#1-#2}\relax + \out_line{} + \out_line{\string\endinput} + \close_out{Font~definitions} +} +\def\fd_shape#1#2#3#4{ + \out_line{} + \out_line{\string\DeclareFontShape{#1}{#2}{#3}{#4}\left_brace_char} + \csname #1-#2-#3-#4\endcsname + \x_cs\g_let{#1-#2-#3-#4}\empty_command + \out_line{\right_brace_char{}} +} +\def\fd_size#1#2{ + \x_cs\ifx{siz-#1}\relax + \out_lline{#1~#2} + \else + \out_lline{\csname siz-#1\endcsname\space #2} + \fi +} +\def\remove_shape#1#2#3#4{ + \x_cs\g_let{#1-#2-#3-#4}\relax +} +\def\substitute_shape#1#2#3#4{ + \edef\orig_shape{#4} + \substitute_series{#1}{#2}{#3}{\orig_shape} + \x_cs\ifx{sub-\orig_shape}\relax\else + \edef\subst_shape{\csname sub-\orig_shape\endcsname} + \x_cs\ifx{#1-#2-#3-\subst_shape}\relax + \out_line{ + \string\DeclareFontShape{#1}{#2}{#3}{\subst_shape}{ + <->\csname typ-\orig_shape\endcsname\space *~#2/#3/\orig_shape + }{} + } + \x_cs\let{#1-#2-#3-\subst_shape}\empty_command + \substitute_shape{#1}{#2}{#3}{\subst_shape} + \fi + \fi +} +\def\substitute_series#1#2#3#4{ + \edef\orig_series{#3} + \x_cs\ifx{sub-\orig_series}\relax\else + \edef\subst_series{\csname sub-\orig_series\endcsname} + \x_cs\ifx{#1-#2-\subst_series-#4}\relax + \out_line{ + \string\DeclareFontShape{#1}{#2}{\subst_series}{#4}{ + <->\csname typ-\orig_series\endcsname\space *~#2/\orig_series/#4 + }{} + } + \x_cs\let{#1-#2-\subst_series-#4}\empty_command + \substitute_series{#1}{#2}{\subst_series}{#4} + \fi + \fi +} +\def\substitutesilent#1#2{ + \x_cs\def{sub-#2}{#1} + \x_cs\def{typ-#2}{ssub} +} +\def\substitutenoisy#1#2{ + \x_cs\def{sub-#2}{#1} + \x_cs\def{typ-#2}{sub} +} +\substitutesilent{bx}{b} +\substitutesilent{b}{bx} +\substitutesilent{b}{sb} +\substitutesilent{b}{db} +\substitutesilent{m}{mb} +\substitutesilent{m}{l} +\substitutenoisy{ui}{it} +\substitutesilent{sl}{it} +\substitutesilent{it}{sl} +\def\declareencoding#1#2{\x_cs\edef{enc-#1}{#2}} +\declareencoding{TEX~TEXT}{OT1} +\declareencoding{TEX~TEXT~WITHOUT~F-LIGATURES}{OT1} +\declareencoding{TEX~TYPEWRITER~TEXT}{OT1TT} +\declareencoding{TEX~MATH~ITALIC}{OML} +\declareencoding{TEX~MATH~SYMBOLS}{OMS} +\declareencoding{TEX~MATH~EXTENSION}{OMX} +\declareencoding{LATEX~SYMBOLS}{lasy} +\declareencoding{TEX~TEXT~SUBSET}{eufrak} +\declareencoding{TEX~MATH~ITALIC~SUBSET}{eurm} +\declareencoding{TEX~MATH~SYMBOLS~SUBSET}{euscr} +\declareencoding{EULER~SUBSTITUTIONS~ONLY}{euex} +\declareencoding{EXTENDED~TEX~FONT~ENCODING~-~LATIN}{T1} +\declareencoding{TEX~TEXT~COMPANION~SYMBOLS~1---TS1}{TS1} +\declareencoding{TEXBASE1ENCODING}{8r} +\declareencoding{TEX~TYPEWRITER~AND~WINDOWS~ANSI}{8y} +\def\declaresize#1#2{\x_cs\edef{siz-#1}{#2}} +\declaresize{}{<->} +\declaresize{5}{<5>} +\declaresize{6}{<6>} +\declaresize{7}{<7>} +\declaresize{8}{<8>} +\declaresize{9}{<9>} +\declaresize{10}{<10>} +\declaresize{11}{<10.95>} +\declaresize{12}{<12>} +\declaresize{14}{<14.4>} +\declaresize{17}{<17.28>} +\declaresize{20}{<20.74>} +\declaresize{25}{<24.88>} +\def\transformfont#1#2{{ + \unsetstr{afm-name} + \unsetstr{etx-name} + \resetint{x-scale}{\one_thousand} + \resetint{y-scale}{\one_thousand} + \resetint{slant-scale}{0} + #2 + \mtxtomtx{\str{afm-name}}{#1} + \mtxtopl{#1}{#1} +}} +\def\fromafm#1{ + \setstr{afm-name}{#1} + \afmtomtx{#1}{#1} + \mtxtopl{#1}{#1} +} +\def\frompl#1{ + \setstr{afm-name}{#1} + \pltomtx{#1}{#1} +} +\def\frommtx#1{ + \setstr{afm-name}{#1} +} +\def\scalefont#1#2{ + \resetint{x-scale}{#1} + \resetint{y-scale}{\int{x-scale}} + #2 +} +\def\xscalefont#1#2{ + \resetint{x-scale}{#1} + #2 +} +\def\yscalefont#1#2{ + \resetint{y-scale}{#1} + #2 +} +\def\slantfont#1#2{ + \resetint{slant-scale}{#1} + #2 +} +\def\reencodefont#1#2{ + \resetstr{etx-name}{#1} + #2 +} +\def\mtxtomtx#1#2{{ + \ifisstr{etx-name}\then + \def\do_slot{\resetint\slot_name\slot_number} + \inputetx{\str{etx-name}} + \fi + \open_out{\temp_prefix#2.mtx} + \def\raw_font_name{#2} + \out_line{\percent_char~Filename:~#2.mtx} + \out_line{\percent_char~Created~by:~tex~\jobname} + \out_line{\percent_char~Created~using:~\string\mtxtomtx{#1}{#2}} + \out_line{} + \out_line{\percent_char~This~file~is~used~by~the~fontinst~package.} + \out_line{} + \out_line{\percent_char~THIS~FILE~CAN~BE~DELETED.} + \out_line{} + \out_line{\string\relax} + \out_line{\string\metrics} + \out_line{} + \out_line{\string\needsfontinstversion{\fontinstversion}} + \out_line{} + \let\setint=\mtxtomtx_setint + \let\setrawglyph=\mtxtomtx_setrawglyph + \let\setnotglyph=\mtxtomtx_setrawglyph + \let\setkern=\mtxtomtx_setkern + \let\setglyph=\mtxtomtx_setglyph + \let\glyphpcc=\mtxtomtx_glyphpcc + \let\samesize=\mtxtomtx_samesize + \let\endsetglyph=\mtxtomtx_endsetglyph + \inputmtx{#1} + \out_line{} + \out_line{\string\endmetrics} + \close_out{Transformed~metrics} +}} +\def\mtxtomtx_setint#1#2{ + \def\temp_command{#1} + \ifx\temp_command\italicslant_name + \eval_expr_to\a_count{ + \add{\int{slant-scale}} + {\div{\mul{\int{x-scale}}{#2}}{\int{y-scale}}} + } + \else + \eval_expr_to\a_count{\scale{#2}{\int{y-scale}}} + \fi + \out_line{\string\setint{#1}{\the\a_count}} +} +\def\italicslant_name{italicslant} +\def\mtxtomtx_setrawglyph#1#2#3#4#5#6#7#8{ + \eval_expr_to\a_count{\scale{#5}{\int{x-scale}}} + \eval_expr_to\b_count{\scale{#6}{\int{y-scale}}} + \eval_expr_to\c_count{\scale{#7}{\int{y-scale}}} + \eval_expr_to\d_count{ + \add{\scale{#8}{\int{x-scale}}} + {\scale\b_count{\int{slant-scale}}} + } + \ifisstr{etx-name}\then + \ifisint{#1}\then + \e_count=\int{#1} + \else + \e_count=-1 + \fi + \else + \e_count=#4 + \fi + \out_line{ + \ifnum\e_count>-1 + \string\setrawglyph + \else + \string\setnotglyph + \fi + {#1}{\raw_font_name}{#3}{\the\e_count} + {\the\a_count}{\the\b_count}{\the\c_count}{\the\d_count} + } +} +\def\mtxtomtx_setkern#1#2#3{ + \eval_expr{\scale{\int{x-scale}}{#3}} + \out_line{\string\setkern{#1}{#2}{\the\result}} +} +\def\mtxtomtx_setglyph#1{\out_line{\string\setglyph{#1}}} +\def\mtxtomtx_samesize#1{\out_lline{\string\samesize{#1}}} +\def\mtxtomtx_endsetglyph{\out_line{\string\endsetglyph}} +\def\mtxtomtx_glyphpcc#1#2#3{ + \eval_expr_to\b_count{\scale{\int{y-scale}}{#3}} + \eval_expr_to\a_count{ + \add{\scale{\int{x-scale}}{#2}} + {\scale\b_count{\int{slant-scale}}} + } + \out_lline{\string\glyphpcc{#1}{\the\a_count}{\the\b_count}} +} +\def\latinfamily#1#2{{ + \edef\temp_command{#1} + \expandafter\parse_family\temp_command + \empty_command\empty_command\end_parse_family + \installfonts + \if_file_exists{\raw_encoding.mtx}\then + \installfamily{\raw_encoding}{\latex_family}{#2} + \fi + \installfamily{OT1}{\latex_family}{#2} + \installfamily{T1}{\latex_family}{#2} + \installfamily{TS1}{\latex_family}{#2} + \latin_weights + \endinstallfonts +}} +\def\parse_family #1#2#3#4#5\end_parse_family{ + \gdef\font_family{#1#2#3} + \gdef\font_variant{#4#5} + \gdef\raw_variant{#4#5} + \gdef\latex_family{#1#2#3#4#5} + \_expert_false + \_oldstyle_false + \ifx#4x + \_expert_true + \gdef\raw_variant{#5} + \gdef\font_variant{#5} + %\setcommand\digit##1{##1} + \else\ifx#4j + \_expert_true + \_oldstyle_true + \gdef\raw_variant{#5} + \gdef\font_variant{#5} + %\setcommand\digit##1{##1oldstyle} + \else\ifx#49 + \gdef\latex_family{#1#2#3j#5} + \_expert_true + \_oldstyle_true + \gdef\raw_variant{#5} + \gdef\font_variant{#5} + %\setcommand\digit##1{##1oldstyle} + \else + \_expert_false + \_oldstyle_false + %\setcommand\digit##1{##1} + \fi\fi\fi + \if_oldstyle_ + \immediate\write16{INFO>~parse~family~<#1#2#3><#5>~(oldstyle)} + \else\if_expert_ + \immediate\write16{INFO>~parse~family~<#1#2#3><#5>~(expert)} + \else + \immediate\write16{INFO>~parse~family~<#1#2#3><#4#5>} + \fi\fi +} +\newif\if_expert_ +\newif\if_oldstyle_ +\def\latin_weight#1#2{ + \gdef\font_weight{#1}% + \gdef\latex_weight{#2}% + \latin_widths +} +\def\latin_width#1#2{ + \gdef\font_width{#1} + \gdef\latex_width{#2} + \latin_shapes +} +\def\latin_shape#1#2#3#4#5{ + \gdef\font_shape{#1} + \gdef\raw_shape{#2} + \gdef\encoding_shape{#3} + \if_oldstyle_ + \gdef\encoding_shape{#3\oldstyle_shape} + \fi + \gdef\latex_shape{#4} + \gdef\encoding_switches{#5} + \immediate\write16{ + INFO>~to~make~LaTeX~font~shape~<\latex_family, + \latex_weight,\latex_shape,\latex_width>~seek~ + \font_family\font_weight\raw_shape + \raw_variant\raw_encoding\font_width.mtx} + \csname fake_width_\font_width\endcsname + \csname fake_shape_\raw_shape\endcsname + \if_file_exists{ + \font_family\font_weight\raw_shape + \raw_variant\raw_encoding\font_width.mtx + }\then + \latin_encodings + \fi +} +\def\fake_shape_{ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \adobe_encoding\font_width.afm + }\then + \fake_shape_raw_encoding + \fi + \if_expert_ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \expert_encoding\font_width.afm + }\then + \fake_shape_expert_encoding + \fi + \fi +} +\def\fake_shape_raw_encoding{ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width.mtx + }\then % no action required + \else + \immediate\write16{ + INFO>~run~\string\transformfont\space\space + <\font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width>~from~ + <\font_family\font_weight\raw_shape\raw_variant + \adobe_encoding\font_width> + } + \transformfont{ + \font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width + }{ + \reencodefont{\raw_encoding}{ + \fromafm{ + \font_family\font_weight\raw_shape\raw_variant + \adobe_encoding\font_width + } + } + } + \if_file_exists{ \raw_encoding.mtx }\then + \immediate\write16{ + INFO>~run~\string\installrawfont\space + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width> + <\font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width, + \raw_encoding> + <\raw_encoding> + <\raw_encoding> + <\latex_family> + <\latex_weight\latex_width> + <\latex_shape>} + \installrawfont{ + \font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width + }{ \font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width, + \raw_encoding + }{ \raw_encoding + }{ \raw_encoding + }{ \latex_family + }{ \latex_weight\latex_width + }{ \latex_shape + }{} + \fi + \fi +} +\def\fake_shape_expert_encoding{ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \expert_encoding\font_width.mtx + }\then % no action required + \else + \fromafm{ + \font_family\font_weight\raw_shape\raw_variant + \expert_encoding\font_width + } + \fi +} +\def\fake_shape_c{ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \adobe_encoding\font_width.afm + }\then + \fake_shape_ + \else + % If real smallcaps font doesn't exist, fake it from the roman. + \gdef\raw_shape{} + \if_oldstyle_ + \gdef\encoding_shape{cj} + \else + \gdef\encoding_shape{c} + \fi + \fake_shape_ + \fi +} +\def\fake_shape_o{ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \adobe_encoding\font_width.afm + }\then + \fake_shape_ + \else + \fake_shape_o_raw_encoding + \if_expert_ + \fake_shape_o_expert_encoding + \fi + \fi +} +\def\fake_shape_o_raw_encoding{ + \if_file_exists{ + \font_family\font_weight\raw_variant + \raw_encoding\font_width.mtx + }\then + \if_file_exists{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width.mtx + }\then % no action required + \else + \immediate\write16{ + INFO>~run~\string\transformfont\space\space + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width>~from~ + <\font_family\font_weight\raw_variant + \raw_encoding\font_width>~(faking~oblique) + } + %%% WARNING: famtool.pl relies on this message format!!! + \immediate\write16{ + Faking~oblique~font~ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width + \space from~ + \font_family\font_weight\raw_variant + \raw_encoding\font_width + } + \transformfont{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width + }{ + \slantfont{\SlantAmount}{ + \frommtx{ + \font_family\font_weight\raw_variant + \raw_encoding\font_width + } + } + } + \if_file_exists{ \raw_encoding.mtx }\then + \immediate\write16{ + INFO>~run~\string\installrawfont\space + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width> + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width, + \raw_encoding> + <\raw_encoding> + <\raw_encoding> + <\latex_family> + <\latex_weight\latex_width> + <\latex_shape>} + \installrawfont{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width + }{ \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width, + \raw_encoding + }{ \raw_encoding + }{ \raw_encoding + }{ \latex_family + }{ \latex_weight\latex_width + }{ \latex_shape + }{} + \fi + \fi + \fi +} +\def\fake_shape_o_expert_encoding{ + \if_file_exists{ + \font_family\font_weight\raw_variant + \expert_encoding\font_width.mtx + }\then + \if_file_exists{ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width.mtx + }\then % no action required + \else + \immediate\write16{ + INFO>~run~\string\transformfont\space\space + <\font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width>~from~ + <\font_family\font_weight\raw_variant + \expert_encoding\font_width>~(faking~oblique) + } + %%% WARNING: famtool.pl relies on this message format!!! + \immediate\write16{ + Faking~oblique~font~ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width + \space from~ + \font_family\font_weight\raw_variant + \expert_encoding\font_width + } + \transformfont{ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width + }{ + \slantfont{\SlantAmount}{ + \frommtx{ + \font_family\font_weight\raw_variant + \expert_encoding\font_width + } + } + } + \fi + \fi +} +\let\fake_shape_i\fake_shape_ % We must do this again! +\newif\if_fake_narrow_ +\_fake_narrow_false +\def\fakenarrow#1{ + \_fake_narrow_true + \gdef\fake_narrow_width{#1} +} +\def\fake_width_{} +\def\fake_width_c{} +\def\fake_width_n{ + \if_fake_narrow_ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \adobe_encoding\font_width.afm + }\then % no action required + \else + \fake_width_n_raw_encoding + \if_expert_ + \fake_width_n_expert_encoding + \fi + \fi + \fi +} +\def\fake_width_n_raw_encoding{ + \if_file_exists{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding.mtx + }\then + \if_file_exists{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width.mtx + }\then % no action required + \else + \immediate\write16{ + INFO>~run~\string\transformfont\space\space + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width>~from~ + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding>~(faking~narrow) + } + %%% WARNING: famtool.pl relies on this message format!!! + \immediate\write16{ + Faking~narrow~font~ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width + \space from~ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding + } + \transformfont{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width + }{ + \xscalefont{\fake_narrow_width}{ + \frommtx{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding + } + } + } + \if_file_exists{ \raw_encoding.mtx }\then + \immediate\write16{ + INFO>~run~\string\installrawfont\space + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width> + <\font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width, + \raw_encoding> + <\raw_encoding> + <\raw_encoding> + <\latex_family> + <\latex_weight\latex_width> + <\latex_shape>} + \installrawfont{ + \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width + }{ \font_family\font_weight\font_shape\raw_variant + \raw_encoding\font_width, + \raw_encoding + }{ \raw_encoding + }{ \raw_encoding + }{ \latex_family + }{ \latex_weight\latex_width + }{ \latex_shape + }{} + \fi + \fi + \fi +} +\def\fake_width_n_expert_encoding{ + \if_file_exists{ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding.mtx + }\then + \if_file_exists{ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width.mtx + }\then % no action required + \else + \immediate\write16{ + INFO>~run~\string\transformfont\space\space + <\font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width>~from~ + <\font_family\font_weight\font_shape\raw_variant + \expert_encoding>~(faking~narrow) + } + %%% WARNING: famtool.pl relies on this message format!!! + \immediate\write16{ + Faking~narrow~font~ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width + \space from~ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding + } + \transformfont{ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding\font_width + }{ + \xscalefont{\fake_narrow_width}{ + \frommtx{ + \font_family\font_weight\font_shape\raw_variant + \expert_encoding + } + } + } + \fi + \fi +} +\def\latin_encoding#1#2#3#4#5{ + \gdef\latex_encoding{#4} + \gdef\latex_mtx{#5} + \if_oldstyle_ + \gdef\font_encoding{#3} + \else\if_expert_ + \gdef\font_encoding{#2} + \else + \gdef\font_encoding{#1} + \fi\fi + \gdef\expert_font{} + \gdef\oldstyle_font{} + \if_expert_ + \if_file_exists{ + \font_family\font_weight\raw_shape\raw_variant + \expert_encoding\font_width.mtx + }\then + \gdef\expert_font{ + \font_family\font_weight\raw_shape\raw_variant + \expert_encoding\font_width, + } + \fi + \fi + \immediate\write16{ + INFO>~run~\string\installfont\space + <\font_family\font_weight\font_shape\font_variant + \font_encoding\font_width> + <\font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width, + \if_oldstyle_ + \ifx\raw_shape\caps_shape + resetosf, + \fi + \fi + \expert_font + \oldstyle_font + \latex_mtx> + <\latex_encoding\encoding_shape> + <\latex_encoding> + <\latex_family> + <\latex_weight\latex_width> + <\latex_shape>} + \installfont{ + \font_family\font_weight\font_shape\font_variant + \font_encoding\font_width + }{ + \font_family\font_weight\raw_shape\raw_variant + \raw_encoding\font_width, + \if_oldstyle_ + \ifx\raw_shape\caps_shape + resetosf, + \fi + \fi + \expert_font + \oldstyle_font + \latex_mtx + }{ + \latex_encoding\encoding_shape + }{ + \latex_encoding + }{ + \latex_family + }{ + \latex_weight\latex_width + }{ + \latex_shape + }{} +} +\def\latin_weights{ + \latin_weight{r}{m} + \latin_weight{k}{m} + \latin_weight{b}{b} + \latin_weight{s}{sb} + \latin_weight{d}{db} % was {d}{sb}, SPQR changed + \latin_weight{m}{mb} % was {m}{m}, UV changed + \latin_weight{c}{eb} % UV added + \latin_weight{h}{eb} % UV added + \latin_weight{x}{eb} + \latin_weight{u}{ub} + \latin_weight{l}{l} + %\latin_weight{j}{el} + %\latin_weight{a}{ul} % UV added +} +\def\latin_widths{ + \latin_width{}{} + \latin_width{n}{c} + %latin_width{c}{c} + %latin_width{x}{x} +} +\def\latin_shapes{ + \latin_shape{} {} {} {n} {\_textcomp_true } + \latin_shape{c}{c}{} {sc}{\_textcomp_false} + \latin_shape{o}{o}{} {sl}{\_textcomp_true } + \latin_shape{i}{i}{i}{it}{\_textcomp_true } +} +\def\latin_encodings{ + \latin_encoding{7t}{9t}{9o}{OT1}{latin} + \latin_encoding{8t}{9e}{9d}{T1} {latin} + \encoding_switches + \if_textcomp_ + \latin_encoding{8c}{9c}{9c}{TS1}{textcomp} + \fi +} +\newif\if_textcomp_ + +\def\raw_encoding{8r} +\def\adobe_encoding{8a} +\def\expert_encoding{8x} + +\def\caps_shape{c} +\def\oldstyle_shape{j} +\def\SlantAmount{167} +\def\needsfontinstversion#1{{ + \a_dimen=#1pt + \b_dimen=\fontinstversion~pt\relax + \ifnum\a_dimen>\b_dimen + \immediate\write16{} + \immediate\write16{Warning:~This~file~needs~fontinst~version~#1.} + \immediate\write16{Warning:~You~are~using~version~\fontinstversion.} + \immediate\write16{Warning:~This~may~cause~errors.} + \immediate\write16{} + \fi +}} +\def\tempfileprefix#1{\def\temp_prefix{#1}} +\tempfileprefix{} +\def\NOFILES{ + \def\transformfont##1##2{ + \touch_file{##1.mtx} + \touch_file{##1.pl} + } + \def\installfonts{} + \def\endinstallfonts{} + \def\installfont##1##2##3##4##5##6##7##8{% + \touch_file{##1.vpl} + } + \def\installrawfont##1##2##3##4##5##6##7##8{% + \touch_file{##1.pl} + } + \def\installfamily##1##2##3{ + \touch_file{##1##2.fd} + } +} +\def\touch_file#1{ + \edef\lowercase_file{\lowercase{ + \edef\noexpand\lowercase_file{#1}}} + \lowercase_file + \open_out{\lowercase_file} + \out_line{\percent_char~TEST~FILE.} + \out_line{\percent_char~Created~whilst~debugging~fontinst.} + \close_out{Test~file} +} +\errorcontextlines=999 +\newlinechar=`\^^J +\ifx\bye\undefined_command + \def\supereject{\par\penalty-\@MM} + \outer\x_cs\def{bye}{\par\vfill\supereject\@@end} +\fi +\catcode`\@=\atcatcode +\catcode`\^^M=\nlcatcode +\catcode`\ =\spacecatcode +\catcode`\~=\tildecatcode +\if_file_exists{fontinst.rc}\then + \primitiveinput fontinst.rc + \catcode`\_=\underscorecatcode +\else + \catcode`\_=\underscorecatcode + \immediate\write16{No file fontinst.rc.} +\fi +\endinput +%% +%% End of file `fontinst.sty'. diff --git a/fonts/utilities/corelfonts/fontnames.dat b/fonts/utilities/corelfonts/fontnames.dat new file mode 100644 index 0000000000..21d665a9c6 --- /dev/null +++ b/fonts/utilities/corelfonts/fontnames.dat @@ -0,0 +1,818 @@ +AachenBT-Bold 1103 baab8a aachen rm +AachenBT-Roman 1102 baar8a aachen rm +AdLibBT-Regular 1154 ba3r8a adlib rm +Aldine401BT-BoldA 0304 bbbb8a bembo rm +Aldine401BT-BoldItalicA 0305 bbbbi8a bembo rm +Aldine401BT-ItalicA 0303 bbbri8a bembo rm +Aldine401BT-RomanA 0302 bbbr8a bembo rm +Aldine721BT-Bold 0114 bpnb8a plantin rm +Aldine721BT-BoldItalic 0115 bpnbi8a plantin rm +Aldine721BT-Italic 0113 bpnri8a plantin rm +Aldine721BT-Light 0804 bpnl8a plantin rm +Aldine721BT-LightItalic 0805 bpnli8a plantin rm +Aldine721BT-Roman 0112 bpnr8a plantin rm +AllegroBT-Regular 1138 ba5r8a allegro rm +AlternateGothicNo2BT-Regular 0542 ba4r8a altgoth2 sf +AmazoneBT-Regular 1040 bmzr8a amazone rm +AmeliaBT-Regular 0510 ba6r8a amelia rm +AmerTypewriterITCbyBT-Bold 0194 batb8a atypewri tt +AmerTypewriterITCbyBT-Medium 0193 batm8a atypewri tt +AmericanGaramondBT-Bold 0045 bg3b8a garamon3 rm +AmericanGaramondBT-BoldItalic 0046 bg3bi8a garamon3 rm +AmericanGaramondBT-Italic 0044 bg3ri8a garamon3 rm +AmericanGaramondBT-Roman 0043 bg3r8a garamon3 rm +AmericanTextBT-Regular 0211 ba7r8a amertext rm +AmericanaBT-Bold 0500 bamb8a amercana rm +AmericanaBT-ExtraBold 0501 bamx8a amercana rm +AmericanaBT-ExtraBoldCondensed 0502 bamx8ac amercana rm +AmericanaBT-Italic 0499 bamri8a amercana rm +AmericanaBT-Roman 0498 bamr8a amercana rm +AmerigoBT-BoldA 0645 beob8a amerigo rm +AmerigoBT-BoldItalicA 0772 beobi8a amerigo rm +AmerigoBT-ItalicA 0644 beori8a amerigo rm +AmerigoBT-MediumA 0770 beom8a amerigo rm +AmerigoBT-MediumItalicA 0771 beomi8a amerigo rm +AmerigoBT-RomanA 0643 beor8a amerigo rm +ArrusBT-Black 1149 brsc8a arrus rm +ArrusBT-BlackItalic 1150 brsci8a arrus rm +ArrusBT-Bold 1147 brsb8a arrus rm +ArrusBT-BoldItalic 1148 brsbi8a arrus rm +ArrusBT-Italic 1146 brsri8a arrus rm +ArrusBT-Roman 1145 brsr8a arrus rm +AuroraBT-BoldCondensed 1028 ba8b8ac aurora rm +AuroraBT-RomanCondensed 1027 ba8a8ac aurora rm +AvantGardeITCbyBT-Book 0154 bagk8a avantgar rm +AvantGardeITCbyBT-BookOblique 0155 bagko8a avantgar rm +AvantGardeITCbyBT-Medium 0156 bagm8a avantgar rm +AvantGardeITCbyBT-MediumOblique 0157 bagmo8a avantgar rm +BakerSignetBT-Roman 1152 bbsr8a bakersig rm +BalloonBT-Bold 0728 bbob8a balloon rm +BalloonBT-ExtraBold 0729 bbox8a balloon rm +BalloonBT-Light 0121 bbol8a balloon rm +BankGothicBT-Light 0589 bkgl8a bankgoth sf +BankGothicBT-Medium 0590 bkgm8a bankgoth sf +BauerBodoniBT-Black 0332 bubc8a babodoni rm +BauerBodoniBT-BlackCondensed 0335 bubc8ac babodoni rm +BauerBodoniBT-BlackItalic 0333 bubci8a babodoni rm +BauerBodoniBT-Bold 0330 bubb8a babodoni rm +BauerBodoniBT-BoldCondensed 0334 bubb8ac babodoni rm +BauerBodoniBT-BoldItalic 0331 bubbi8a babodoni rm +BauerBodoniBT-Italic 0329 bubri8a babodoni rm +BauerBodoniBT-Roman 0328 bubr8a babodoni rm +BauerBodoniBT-Titling 1072 bubrd8a babodoni rm +BauhausITCbyBT-Bold 0408 bbhb8a bauhaus rm +BauhausITCbyBT-Heavy 0409 bbhh8a bauhaus rm +BauhausITCbyBT-Light 0405 bbhl8a bauhaus rm +BauhausITCbyBT-Medium 0406 bbhm8a bauhaus rm +BellCentennialBT-Address 0356 b_____ bellcent rm +BellCentennialBT-BoldListing 0358 b_____ bellcent rm +BellCentennialBT-NameAndNumber 0355 b_____ bellcent rm +BellCentennialBT-SubCaption 0357 b_____ bellcent rm +BellGothicBT-Black 0361 bbecs8a bell rm +BellGothicBT-Bold 0360 bbebs8a bell rm +BellGothicBT-Roman 0359 bbers8a bell rm +BelweBT-Bold 1024 bblb8a belwe rm +BelweBT-Light 1022 bbll8a belwe rm +BelweBT-Medium 1023 bblm8a belwe rm +BelweBT-RomanCondensed 1025 bblr8ac belwe rm +BenguiatGothicITCbyBT-Bold 0463 bugb8a bengugth rm +BenguiatGothicITCbyBT-BoldItal 0464 bugbi8a bengugth rm +BenguiatGothicITCbyBT-Book 0459 bugk8a bengugth rm +BenguiatGothicITCbyBT-BookItal 0460 bugki8a bengugth rm +BenguiatITCbyBT-Bold 0127 bbgb8a benguiat rm +BenguiatITCbyBT-BoldItalic 0128 bbgbi8a benguiat rm +BenguiatITCbyBT-Book 0123 bbgk8a benguiat rm +BenguiatITCbyBT-BookItalic 0124 bbgki8a benguiat rm +BernhardBoldCondensedBT-Regular 1003 bb7b8ac bernhard rm +BernhardFashionBT-Regular 1051 bb7rn8a bernhard rm +BernhardModernBT-Bold 0838 bb7b8a bernhard rm +BernhardModernBT-BoldItalic 0839 bb7bi8a bernhard rm +BernhardModernBT-Italic 0837 bb7ri8a bernhard rm +BernhardModernBT-Roman 0607 bb7r8a bernhard rm +BernhardTangoBT-Regular 0986 bb7rw8a bernhard rm +BlippoBT-Black 0511 bb8c8a blippo sf +BodoniBT-Bold 0037 bbdb8a bodoni rm +BodoniBT-BoldCondensed 0973 bbdb8ac bodoni rm +BodoniBT-BoldItalic 0038 bbdbi8a bodoni rm +BodoniBT-Book 0035 bbdk8a bodoni rm +BodoniBT-BookItalic 0036 bbdki8a bodoni rm +BodoniBT-Italic 0056 bbdri8a bodoni rm +BodoniBT-Roman 0055 bbdr8a bodoni rm +BookmanITCbyBT-Demi 0079 bbkd8a bookman rm +BookmanITCbyBT-DemiItalic 0080 bbkdi8a bookman rm +BookmanITCbyBT-Light 0075 bbkl8a bookman rm +BookmanITCbyBT-LightItalic 0076 bbkli8a bookman rm +BremenBT-Black 1232 bb9c8a bremen rm +BremenBT-Bold 1231 bb9b8a bremen rm +BroadwayBT-Regular 0131 bbwr8a broadway rm +BroadwayEngravedBT-Regular 0802 bbwre8a broadway rm +Brush445BT-Regular 0990 bp3r8a palette rm +Brush738BT-RegularA 0806 bb4r8a bison rm +BrushScriptBT-Regular 0199 bburw8a brush rm +BulmerBT-Italic 1076 bbmri8a bulmer rm +BulmerBT-Roman 1075 bbmr8a bulmer rm +Calligraphic421BT-RomanB 1139 bc9r8a codex rm +Calligraphic810BT-Italic 0812 bdiri8a diotima rm +Calligraphic810BT-Roman 0811 bdir8a diotima rm +CandidaBT-Bold 0810 bcib8a candida rm +CandidaBT-Italic 0809 bciri8a candida rm +CandidaBT-Roman 0808 bcir8a candida rm +CarminaBT-Black 0668 brmc8a carmina rm +CarminaBT-BlackItalic 0719 brmci8a carmina rm +CarminaBT-Bold 0723 brmb8a carmina rm +CarminaBT-BoldItalic 0724 brmbi8a carmina rm +CarminaBT-Light 0667 brml8a carmina rm +CarminaBT-LightItalic 0624 brmli8a carmina rm +CarminaBT-Medium 0721 brmm8a carmina rm +CarminaBT-MediumItalic 0722 brmmi8a carmina rm +Caslon224ITCbyBT-Bold 0749 bc2b8a casln224 rm +Caslon224ITCbyBT-BoldItalic 0750 bc2bi8a casln224 rm +Caslon224ITCbyBT-Book 0745 bc2k8a casln224 rm +Caslon224ITCbyBT-BookItalic 0746 bc2ki8a casln224 rm +Caslon540BT-Italic 0119 bc5ri8a casln540 rm +Caslon540BT-Roman 0118 bc5r8a casln540 rm +CaslonBT-Bold 0443 bcab8a caslon rm +CaslonBT-BoldItalic 0444 bcabi8a caslon rm +CaslonOpenfaceBT-Regular 0581 bcarl8a caslon rm +CaxtonBT-Bold 0891 bcxb8a caxton rm +CaxtonBT-BoldItalic 0892 bcxbi8a caxton rm +CaxtonBT-Book 0889 bcxk8a caxton rm +CaxtonBT-BookItalic 0890 bcxki8a caxton rm +CaxtonBT-Light 0887 bcxl8a caxton rm +CaxtonBT-LightItalic 0888 bcxli8a caxton rm +Century725BT-Black 1060 bcnc8a century rm +Century725BT-Bold 1056 bcnb8a century rm +Century725BT-BoldCondensed 1058 bcnb8ac century rm +Century725BT-Italic 1059 bcnri8a century rm +Century725BT-Roman 1055 bcnr8a century rm +Century725BT-RomanCondensed 1057 bcnr8ac century rm +CenturyExpandedBT-Bold 0041 bcnb8ax century rm +CenturyExpandedBT-BoldItalic 0042 bcnbi8ax century rm +CenturyExpandedBT-Italic 0040 bcnri8ax century rm +CenturyExpandedBT-Roman 0039 bcnr8ax century rm +CenturyOldstyleBT-Bold 0287 bcub8a centuros rm +CenturyOldstyleBT-Italic 0286 bcuri8a centuros rm +CenturyOldstyleBT-Roman 0285 bcur8a centuros rm +CenturySchoolbookBT-Bold 0085 bcsb8a cntursbk rm +CenturySchoolbookBT-BoldCond 0574 bcsb8ac cntursbk rm +CenturySchoolbookBT-BoldItalic 0086 bcsbi8a cntursbk rm +CenturySchoolbookBT-Italic 0084 bcsri8a cntursbk rm +CenturySchoolbookBT-Monospace 0600 bcsrt8a cntursbk rm +CenturySchoolbookBT-Roman 0083 bcsr8a cntursbk rm +CharterBT-Black 0709 bchk8a charter rm +CharterBT-BlackItalic 0710 bchki8a charter rm +CharterBT-Bold 0632 bchb8a charter rm +CharterBT-BoldItalic 0633 bchbi8a charter rm +CharterBT-Italic 0649 bchri8a charter rm +CharterBT-Roman 0648 bchr8a charter rm +CheltenhamBT-Bold 0622 bctb8a cheltenh rm +CheltenhamBT-BoldCondItalic 1066 bctbi8ac cheltenh rm +CheltenhamBT-BoldCondensed 1065 bctb8ac cheltenh rm +CheltenhamBT-BoldExtraCondensed 1067 bctb8aq cheltenh rm +CheltenhamBT-BoldHeadline 0508 bctbd8a cheltenh rm +CheltenhamBT-BoldItalic 0623 bctbi8a cheltenh rm +CheltenhamBT-BoldItalicHeadline 0509 bctbdi8a cheltenh rm +CheltenhamBT-Italic 0621 bctri8a cheltenh rm +CheltenhamBT-Roman 0620 bctr8a cheltenh rm +CheltenhamITCbyBT-Bold 0383 bctb8a cheltenh rm +CheltenhamITCbyBT-BoldItalic 0384 bctbi8a cheltenh rm +CheltenhamITCbyBT-Book 0381 bctk8a cheltenh rm +CheltenhamITCbyBT-BookItalic 0382 bctki8a cheltenh rm +ClarendonBT-Black 0351 bcdc8a clarendo rm +ClarendonBT-Bold 0284 bcdb8a clarendo rm +ClarendonBT-BoldCondensed 0228 bcdb8ac clarendo rm +ClarendonBT-Heavy 0416 bcdh8a clarendo rm +ClarendonBT-Light 0282 bcdl8a clarendo rm +ClarendonBT-Roman 0283 bcdr8a clarendo rm +ClarendonBT-RomanCondensed 0846 bcdr8ac clarendo rm +ClassicalGaramondBT-Bold 0279 bsbb8a sabon rm +ClassicalGaramondBT-BoldItalic 0972 bsbbi8a sabon rm +ClassicalGaramondBT-Italic 0278 bsbri8a sabon rm +ClassicalGaramondBT-Roman 0277 bsbr8a sabon rm +CloisterBlackBT-Regular 0757 bclr8a cloister rm +CloisterOpenFaceBT-Regular 0938 bclrl8a cloister rm +CommercialScriptBT-Regular 0976 bi0r8a commscr rm +CompactaBT-Black 0788 bc7c8a compacta rm +CompactaBT-Bold 0786 bc7b8a compacta rm +CompactaBT-BoldItalic 0787 bc7bi8a compacta rm +CompactaBT-Italic 0785 bc7ri8a compacta rm +CompactaBT-Light 0783 bc7l8a compacta rm +CompactaBT-Roman 0784 bc7r8a compacta rm +CooperBT-Black 0630 bcbc8a cooper rm +CooperBT-BlackHeadline 0231 bcbcd8a cooper rm +CooperBT-BlackItalic 0631 bcbci8a cooper rm +CooperBT-BlackItalicHeadline 0232 bcbcid8a cooper rm +CooperBT-BlackOutline 1034 bcbcl8a cooper rm +CooperBT-Bold 0579 bcbb8a cooper rm +CooperBT-BoldItalic 0580 bcbbi8a cooper rm +CooperBT-Light 0575 bcbl8a cooper rm +CooperBT-LightItalic 0576 bcbli8a cooper rm +CooperBT-Medium 0577 bcbm8a cooper rm +CooperBT-MediumItalic 0578 bcbmi8a cooper rm +CopperplateGothicBT-Bold 0421 bcpbs8a copperpl rm +CopperplateGothicBT-BoldCond 0424 bcpbs8ac copperpl rm +CopperplateGothicBT-Heavy 0422 bcphs8a copperpl rm +CopperplateGothicBT-Roman 0420 bcprs8a copperpl rm +CopperplateGothicBT-RomanCond 0423 bcprs8ac copperpl rm +Courier10PitchBT-Bold 0583 bcrb8a courier tt +Courier10PitchBT-BoldItalic 0611 bcrbi8a courier tt +Courier10PitchBT-Italic 0582 bcrri8a courier tt +Courier10PitchBT-Roman 0419 bcrr8a courier tt +CushingITCbyBT-Heavy 0641 buhh8a cushing rm +CushingITCbyBT-HeavyItalic 0642 buhhi8a cushing rm +DavidaBoldBT-Regular 0195 bd0b8a davida rm +DeVinneBT-Italic 0912 bviri8a victoria rm +DeVinneBT-ItalicText 1042 bvirid8a victoria rm +DeVinneBT-Roman 0911 bvir8a victoria rm +DeVinneBT-Text 1041 bvird8a victoria rm +Decorated035BT-Regular 0605 bpfr8a profile rm +DellaRobbiaBT-Bold 1113 bdeb8a dellarob rm +DellaRobbiaBT-Roman 1112 bder8a dellarob rm +DomBoldBT-Regular 0769 bdcb8a domcasl rm +DomCasualBT-Regular 0604 bdcr8a domcasl rm +DomDiagonalBT-Bold 0921 bdcbi8a domcasl rm +DomDiagonalBT-Regular 0920 bdcri8a domcasl rm +Dutch766BT-BoldA 0340 biib8a imprint rm +Dutch766BT-ItalicA 0339 biiri8a imprint rm +Dutch766BT-RomanA 0338 biir8a imprint rm +Dutch801BT-Bold 0013 btmb8a times rm +Dutch801BT-BoldItalic 0014 btmbi8a times rm +Dutch801BT-ExtraBold 0549 btmx8a times rm +Dutch801BT-ExtraBoldItalic 0971 btmxi8a times rm +Dutch801BT-Italic 0012 btmri8a times rm +Dutch801BT-ItalicHeadline 1036 btmrid8a times rm +Dutch801BT-Roman 0011 btmr8a times rm +Dutch801BT-RomanHeadline 1035 btmrd8a times rm +Dutch801BT-SemiBold 0834 btms8a times rm +Dutch801BT-SemiBoldItalic 0835 btmsi8a times rm +Dutch809BT-BoldC 1063 bocb8a concorde rm +Dutch809BT-ItalicC 1062 bocri8a concorde rm +Dutch809BT-RomanC 1061 bocr8a concorde rm +Dutch811BT-BoldD 1085 boyb8a olympian rm +Dutch811BT-BoldItalicD 1086 boybi8a olympian rm +Dutch811BT-ItalicD 1084 boyri8a olympian rm +Dutch811BT-RomanD 1083 boyr8a olympian rm +Dutch823BT-BoldB 0237 bnab8a newaster rm +Dutch823BT-BoldItalicB 0753 bnabi8a newaster rm +Dutch823BT-ItalicB 0236 bnari8a newaster rm +Dutch823BT-RomanB 0235 bnar8a newaster rm +Egyptian505BT-Bold 0964 beeb8a egyptian rm +Egyptian505BT-Light 0961 beel8a egyptian rm +Egyptian505BT-Medium 0963 beem8a egyptian rm +Egyptian505BT-Roman 0962 beer8a egyptian rm +ElegantGaramondBT-Bold 0713 bgjb8a granjon rm +ElegantGaramondBT-Italic 0712 bgjri8a granjon rm +ElegantGaramondBT-Roman 0711 bgjr8a granjon rm +EmbassyBT-Regular 0588 be0r8a embassy rm +EmpireBT-Regular 1176 be1r8a empire sf +English157BT-Regular 0840 boer8a oldengli rm +EngraversGothicBT-Regular 0586 benrs8a engraver sf +EngraversOldEnglishBT-Bold 1045 benbf8a engraver sf +EngraversOldEnglishBT-Regular 0212 benrf8a engraver sf +EngraversRomanBT-Bold 0974 benb8a engraver sf +EngraversRomanBT-Regular 0587 benr8a engraver sf +ErasITCbyBT-Bold 0242 berb8a eras rm +ErasITCbyBT-Book 0239 berk8a eras rm +ErasITCbyBT-Demi 0241 berd8a eras rm +ErasITCbyBT-Light 0238 berl8a eras rm +ErasITCbyBT-Medium 0240 berm8a eras rm +ErasITCbyBT-Ultra 0243 beru8a eras rm +Exotic350BT-Bold 0628 bpgb8a peignot sf +Exotic350BT-DemiBold 0627 bpgd8a peignot sf +Exotic350BT-Light 0626 bpgl8a peignot sf +FeniceITCbyBT-Bold 0684 bfnb8a fenice rm +FeniceITCbyBT-BoldItalic 0685 bfnbi8a fenice rm +FeniceITCbyBT-Regular 0682 bfnr8a fenice rm +FeniceITCbyBT-RegularItalic 0683 bfnri8a fenice rm +Flareserif821BT-Bold 0918 balb8a albertus rm +Flareserif821BT-Light 0916 ball8a albertus rm +Flareserif821BT-Roman 0917 balr8a albertus rm +FlemishScriptBT-Regular 0591 bf0r8a flemishs rm +FolioBT-Bold 0852 bfob8a folio rm +FolioBT-BoldCondensed 0854 bfob8ac folio rm +FolioBT-Book 0850 bfok8a folio rm +FolioBT-ExtraBold 0853 bfox8a folio rm +FolioBT-Light 0848 bfol8a folio rm +FolioBT-LightItalic 0849 bfoli8a folio rm +FolioBT-Medium 0851 bfom8a folio rm +Formal436BT-Regular 1141 bpi005 frml436n rm +FormalScript421BT-Regular 0609 boir8a ondine rm +FrakturBT-Regular 0983 bftr8a fettefrk rm +FranklinGothicITCbyBT-Book 0670 bfgk8a frankgth rm +FranklinGothicITCbyBT-BookItal 0671 bfgki8a frankgth rm +FranklinGothicITCbyBT-Demi 0674 bfgd8a frankgth rm +FranklinGothicITCbyBT-DemiItal 0675 bfgdi8a frankgth rm +FranklinGothicITCbyBT-Heavy 0676 bfgh8a frankgth rm +FranklinGothicITCbyBT-HeavyItal 0677 bfghi8a frankgth rm +Freeform710BT-Regular 0714 bekr8a eckmann rm +Freeform721BT-Black 1001 bauc8a auriol rm +Freeform721BT-BlackItalic 1002 bauci8a auriol rm +Freeform721BT-Bold 0999 baub8a auriol rm +Freeform721BT-BoldItalic 1000 baubi8a auriol rm +Freeform721BT-Italic 0998 bauri8a auriol rm +Freeform721BT-Roman 0997 baur8a auriol rm +Freehand471BT-Regular 0418 bccr8a cascade rm +Freehand521BT-RegularC 1018 bmar8a mandate rm +Freehand575BT-RegularB 1046 bjfr8a jeffersn rm +Freehand591BT-RegularA 1043 bb5r8a binghams rm +FrizQuadrataITCbyBT-Bold 0429 bfqb8a frizquad rm +FrizQuadrataITCbyBT-Roman 0428 bfqr8a frizquad rm +FrysBaskervilleBT-Roman 1101 b_____ frybaskn rm +FuturaBT-Bold 0144 bfub8a futura sf +FuturaBT-BoldCondensed 0202 bfub8ac futura sf +FuturaBT-BoldCondensedItalic 0203 bfubi8ac futura sf +FuturaBT-BoldItalic 0145 bfubi8a futura sf +FuturaBT-Book 0140 bfuk8a futura sf +FuturaBT-BookItalic 0141 bfuki8a futura sf +FuturaBT-ExtraBlack 0148 bfux8a futura sf +FuturaBT-ExtraBlackCondItalic 0205 bfuxi8ac futura sf +FuturaBT-ExtraBlackCondensed 0204 bfux8ac futura sf +FuturaBT-ExtraBlackItalic 0149 bfuxi8a futura sf +FuturaBT-Heavy 0146 bfuh8a futura sf +FuturaBT-HeavyItalic 0147 bfuhi8a futura sf +FuturaBT-Light 0138 bful8a futura sf +FuturaBT-LightCondensed 0200 bful8ac futura sf +FuturaBT-LightItalic 0139 bfuli8a futura sf +FuturaBT-Medium 0142 bfum8a futura sf +FuturaBT-MediumCondensed 0201 bfum8ac futura sf +FuturaBT-MediumItalic 0143 bfumi8a futura rm +FuturaBlackBT-Regular 0206 bfuc8a futura sf +GalliardITCbyBT-Bold 0069 bglb8a galliard rm +GalliardITCbyBT-BoldItalic 0070 bglbi8a galliard rm +GalliardITCbyBT-Italic 0068 bglri8a galliard rm +GalliardITCbyBT-Roman 0067 bglr8a galliard rm +GandoBT-Regular 0625 bg0r8a gando rm +GaramondITCbyBT-Bold 0347 bgmb8a garamond rm +GaramondITCbyBT-BoldCondItalic 0456 bgmbi8ac garamond rm +GaramondITCbyBT-BoldCondensed 0455 bgmb8ac garamond rm +GaramondITCbyBT-BoldItalic 0348 bgmbi8a garamond rm +GaramondITCbyBT-Book 0345 bgmk8a garamond rm +GaramondITCbyBT-BookCondItalic 0454 bgmki8ac garamond rm +GaramondITCbyBT-BookCondensed 0453 bgmk8ac garamond rm +GaramondITCbyBT-BookItalic 0346 bgmki8a garamond rm +Geometric212BT-Book 0150 bsnk8a spartan rm +Geometric212BT-BookCondensed 0503 bsnk8ac spartan rm +Geometric212BT-Heavy 0151 bsnh8a spartan rm +Geometric212BT-HeavyCondensed 0504 bsnh8ac spartan rm +Geometric231BT-BoldC 1128 bkbb8a kabel sf +Geometric231BT-HeavyC 1129 bkbh8a kabel sf +Geometric231BT-LightC 1126 bkbl8a kabel sf +Geometric231BT-RomanC 1127 bkbr8a kabel sf +Geometric415BT-BlackA 0524 bm2c8a metro sf +Geometric415BT-BlackItalicA 0525 bm2ci8a metro sf +Geometric415BT-LiteA 0520 bm2l8a metro sf +Geometric415BT-LiteItalicA 0521 bm2li8a metro sf +Geometric415BT-MediumA 0522 bm2m8a metro sf +Geometric415BT-MediumItalicA 0523 bm2mi8a metro sf +Geometric706BT-BlackB 0661 bnzc8a neuzeits sf +Geometric706BT-BlackCondensedB 0663 bnzc8ac neuzeits sf +Geometric706BT-BoldCondensedB 0662 bnzb8ac neuzeits sf +Geometric706BT-MediumB 0660 bnzm8a neuzeits sf +Geometric885BT-RegularD 1140 b_____ geo885n rm +GeometricSlab703BT-Bold 0310 bmpb8a memphis rm +GeometricSlab703BT-BoldCond 1020 bmpb8ac memphis rm +GeometricSlab703BT-BoldItalic 0311 bmpbi8a memphis rm +GeometricSlab703BT-Light 0306 bmpl8a memphis rm +GeometricSlab703BT-LightItalic 0307 bmpli8a memphis rm +GeometricSlab703BT-Medium 0308 bmpm8a memphis rm +GeometricSlab703BT-MediumCond 1019 bmpm8ac memphis rm +GeometricSlab703BT-MediumItalic 0309 bmpmi8a memphis rm +GeometricSlab703BT-XtraBold 0312 bmpx8a memphis rm +GeometricSlab703BT-XtraBoldCond 1021 bmpx8ac memphis rm +GeometricSlab703BT-XtraBoldItal 0313 bmpxi8a memphis rm +GeometricSlab712BT-BoldA 0487 brwb8a rockwell rm +GeometricSlab712BT-ExtraBoldA 0488 brwx8a rockwell rm +GeometricSlab712BT-LightA 0483 brwl8a rockwell rm +GeometricSlab712BT-LightItalicA 0484 brwli8a rockwell rm +GeometricSlab712BT-MediumA 0485 brwm8a rockwell rm +GeometricSlab712BT-MediumItalA 0486 brwmi8a rockwell rm +GorillaITCbyBT-Regular 0664 bg6r8a gorilla rm +Gothic720BT-BoldB 0995 bgqb8a grotesq rm +Gothic720BT-BoldItalicB 0996 bgqbi8a grotesq rm +Gothic720BT-ItalicB 0994 bgqri8a grotesq rm +Gothic720BT-LightB 0991 bgql8a grotesq rm +Gothic720BT-LightItalicB 0992 bgqli8a grotesq rm +Gothic720BT-RomanB 0993 bgqr8a grotesq rm +Gothic725BT-BlackA 1007 bazc8a azdzgrot sf +Gothic725BT-BoldA 0541 bazb8a azdzgrot sf +Gothic821CondensedBT-Regular 0807 bb6r8ac block sf +GothicNo13BT-Regular 0120 b_____ gothic13 rm +GoudyCatalogueBT-Regular 1054 bg5r8a gycatalg rm +GoudyHandtooledBTsRegular 1053 bgyrf8a goudy rm +GoudyHeavyfaceBT-Regular 1049 bgyh8a goudy rm +GoudyHeavyfaceBT-RegularCond 1050 bgyh8ac goudy rm +GoudyOldStyleBT-Bold 0109 bgob8a gyoldsty rm +GoudyOldStyleBT-BoldItalic 0110 bgobi8a gyoldsty rm +GoudyOldStyleBT-ExtraBold 0111 bgox8a gyoldsty rm +GoudyOldStyleBT-Italic 0108 bgori8a gyoldsty rm +GoudyOldStyleBT-Roman 0107 bgor8a gyoldsty rm +GoudySansITCbyBT-Black 0928 bysc8a goudysan sf +GoudySansITCbyBT-BlackItalic 0929 bysci8a goudysan sf +GoudySansITCbyBT-Bold 0926 bysb8a goudysan sf +GoudySansITCbyBT-BoldItalic 0927 bysbi8a goudysan sf +GoudySansITCbyBT-Light 0922 bysl8a goudysan sf +GoudySansITCbyBT-LightItalic 0923 bysli8a goudysan sf +GoudySansITCbyBT-Medium 0924 bysm8a goudysan sf +GoudySansITCbyBT-MediumItalic 0925 bysmi8a goudysan sf +GrizzlyITCbyBT-Regular 0688 b_____ grizzlyn rm +GrouchITCbyBT-Regular 0678 b_____ grouchn rm +HandelGothicBT-Regular 0768 bh0r8a handelgo sf +HoboBT-Regular 0057 bhbr8a hobo rm +Humanist521BT-Bold 0292 bgsb8a gillsans sf +Humanist521BT-BoldCondensed 0496 bgsb8ac gillsans sf +Humanist521BT-BoldItalic 0293 bgsbi8a gillsans sf +Humanist521BT-ExtraBold 0294 bgsx8a gillsans sf +Humanist521BT-Italic 0291 bgsri8a gillsans sf +Humanist521BT-Light 0288 bgsl8a gillsans sf +Humanist521BT-LightItalic 0289 bgsli8a gillsans sf +Humanist521BT-Roman 0290 bgsr8a gillsans sf +Humanist521BT-RomanCondensed 0495 bgsr8ac gillsans sf +Humanist521BT-UltraBold 0295 bgsu8a gillsans sf +Humanist521BT-XtraBoldCondensed 0497 bgsx8ac gillsans sf +Humanist531BT-BlackA 0875 bsxc8a syntax rm +Humanist531BT-BoldA 0874 bsxb8a syntax rm +Humanist531BT-RomanA 0872 bsxr8a syntax rm +Humanist531BT-UltraBlackA 0876 bsxu8a syntax rm +Humanist777BT-BlackB 0861 bfrc8a frutiger sf +Humanist777BT-BlackItalicB 0862 bfrci8a frutiger sf +Humanist777BT-BoldB 0859 bfrb8a frutiger sf +Humanist777BT-BoldItalicB 0860 bfrbi8a frutiger sf +Humanist777BT-ItalicB 0858 bfrri8a frutiger sf +Humanist777BT-LightB 0855 bfrl8a frutiger sf +Humanist777BT-LightItalicB 0856 bfrli8a frutiger sf +Humanist777BT-RomanB 0857 bfrr8a frutiger sf +Humanist970BT-BoldC 0265 ba9b8a adsans sf +Humanist970BT-RomanC 0264 ba9r8a adsans sf +HumanistSlabserif712BT-Black 0324 befc8a egyptien rm +HumanistSlabserif712BT-Bold 0323 befb8a egyptien rm +HumanistSlabserif712BT-Italic 0322 befri8a egyptien rm +HumanistSlabserif712BT-Roman 0321 befr8a egyptien rm +HuxleyVerticalBT-Regular 1177 bhxr8a huxleyvr rm +ImperialBT-Bold 0354 bi3b8a imperial rm +ImperialBT-Italic 0353 bi3ri8a imperial rm +ImperialBT-Roman 0352 bi3r8a imperial rm +ImpressBT-Regular 0209 bi1r8a impress rm +ImpulsBT-Regular 0725 bi2r8a impuls rm +Incised901BT-Black 0391 baoc8a atqolive sf +Incised901BT-Bold 0390 baob8a atqolive sf +Incised901BT-BoldCondensed 0467 baob8ac atqolive sf +Incised901BT-Compact 0468 baop8a atqolive sf +Incised901BT-Italic 0389 baori8a atqolive sf +Incised901BT-Light 0387 baol8a atqolive sf +Incised901BT-Nord 0469 baoh8ax atqolive sf +Incised901BT-NordItalic 0470 baohi8ax atqolive sf +Incised901BT-Roman 0388 baor8a atqolive sf +Industrial736BT-Italic 1048 btori8a torino rm +Industrial736BT-Roman 1047 btor8a torino rm +Informal011BT-Black 1116 bnlc8a neuland rm +Informal011BT-Roman 1115 bnlr8a neuland rm +IowanOldStyleBT-Black 1202 biyc8a iowanold rm +IowanOldStyleBT-BlackItalic 1203 biyci8a iowanold rm +IowanOldStyleBT-Bold 1200 biyb8a iowanold rm +IowanOldStyleBT-BoldItalic 1201 biybi8a iowanold rm +IowanOldStyleBT-Italic 1199 biyri8a iowanold rm +IowanOldStyleBT-Roman 1198 biyr8a iowanold rm +KabelITCbyBT-Book 0162 bkbk8a kabel sf +KabelITCbyBT-Demi 0164 bkbd8a kabel sf +KabelITCbyBT-Medium 0163 bkbm8a kabel sf +KabelITCbyBT-Ultra 0166 bkbu8a kabel sf +KaufmannBT-Bold 0727 bkub8a kaufmann rm +KaufmannBT-Regular 0726 bkur8a kaufmann rm +KisBT-Italic 0117 bjnri8a janson rm +KisBT-Roman 0116 bjnr8a janson rm +KorinnaITCbyBT-Bold 0089 bkrb8a korinna rm +KorinnaITCbyBT-KursivBold 0090 bkrbi8a korinna rm +KorinnaITCbyBT-KursivRegular 0088 bkrri8a korinna rm +KorinnaITCbyBT-Regular 0087 bkrr8a korinna rm +Kuenstler480BT-Black 1026 btvc8a trumpmed rm +Kuenstler480BT-Bold 0763 btvb8a trumpmed rm +Kuenstler480BT-BoldItalic 0764 btvbi8a trumpmed rm +Kuenstler480BT-Italic 0762 btvri8a trumpmed rm +Kuenstler480BT-Roman 0761 btvr8a trumpmed rm +Lapidary333BT-Black 1052 bppc8a perpetua rm +Lapidary333BT-Bold 0717 bppb8a perpetua rm +Lapidary333BT-BoldItalic 0718 bppbi8a perpetua rm +Lapidary333BT-Italic 0716 bppri8a perpetua rm +Lapidary333BT-Roman 0715 bppr8a perpetua rm +Latin725BT-Bold 0493 bmdb8a meridien rm +Latin725BT-BoldItalic 0494 bmdbi8a meridien rm +Latin725BT-Italic 0490 bmdri8a meridien rm +Latin725BT-Medium 0491 bmdm8a meridien rm +Latin725BT-MediumItalic 0492 bmdmi8a meridien rm +Latin725BT-Roman 0489 bmdr8a meridien rm +LatinExtraCondensedBT-Regular 0507 blir8ac latin rm +LeawoodITCbyBT-Book 0941 blwk8a leawood rm +LeawoodITCbyBT-BookItalic 0942 blwki8a leawood rm +LetterGothic12PitchBT-Bold 0533 blgb8a lettrgth tt +LetterGothic12PitchBT-BoldItal 0543 blgbi8a lettrgth tt +LetterGothic12PitchBT-Italic 0532 blgri8a lettrgth tt +LetterGothic12PitchBT-Roman 0414 blgr8a lettrgth tt +LibertyBT-Regular 0987 bl1r8a liberty rm +LibraBT-Regular 0690 bl2r8a libra rm +LifeBT-Bold 0956 blfb8a life rm +LifeBT-BoldItalic 0957 blfbi8a life rm +LifeBT-Italic 0955 blfri8a life rm +LifeBT-Roman 0954 blfr8a life rm +LubalinGraphITCbyBT-Bold 0370 blbb8a lubaling rm +LubalinGraphITCbyBT-Book 0367 blbk8a lubaling rm +LubalinGraphITCbyBT-Medium 0368 blbm8a lubaling rm +LubalinGraphITCbyBT-XtraLight 0366 blbj8a lubaling rm +LuciaBT-Regular 0847 bl3r8a lucia rm +LucianBT-Bold 1143 bl4b8a lucian rm +LucianBT-Roman 1142 bl4r8a lucian rm +LydianBT-Bold 0843 blyb8a lydian rm +LydianBT-BoldItalic 0844 blybi8a lydian rm +LydianBT-Italic 0842 blyri8a lydian rm +LydianBT-Roman 0841 blyr8a lydian rm +LydianCursiveBT-Regular 0845 blyrw8a lydian rm +MICR10byBT-Regular 8729 b_____ micro10 rm +MICR12byBT-Regular 8730 b_____ micro12 rm +MICR13byBT-Regular 8731 b_____ micro13 rm +MachineITCbyBT-Regular 0534 bmhr8a machine rm +MattAntiqueBT-Bold 1016 b_____ matantq rm +MattAntiqueBT-Italic 1015 b_____ matantq rm +MattAntiqueBT-Roman 1014 b_____ matantq rm +MiraraeBT-Bold 0831 bm3b8a mirarae rm +MiraraeBT-Roman 0830 bm3r8a mirarae rm +MisterEarlBT-Regular 1221 bm4r8a mrearl rm +MixageITCbyBT-Bold 0825 b_____ mixage rm +MixageITCbyBT-BoldItalic 0826 b_____ mixage rm +Modern20BT-ItalicB 1169 bmori8a modern rm +Modern20BT-RomanB 1168 bmor8a modern rm +Modern735BT-RomanA 0793 bbpr8a bodocamp rm +Modern880BT-Bold 1039 b_____ mod880 rm +Modern880BT-Italic 1038 b_____ mod880 rm +Modern880BT-Roman 1037 b_____ mod880 rm +Monospace821BT-Bold 0598 bhvbt8a helvetic rm +Monospace821BT-BoldItalic 0599 bhvbit8a helvetic rm +Monospace821BT-Italic 0597 bhvrit8a helvetic rm +Monospace821BT-Roman 0596 bhvrt8a helvetic rm +MurrayHillBT-Bold 0886 bm5b8a murrayhl rm +NewBaskervilleITCbyBT-Bold 0934 bnbb8a nbaskerv rm +NewBaskervilleITCbyBT-BoldItal 0935 bnbbi8a nbaskerv rm +NewBaskervilleITCbyBT-Italic 0931 bnbri8a nbaskerv rm +NewBaskervilleITCbyBT-Roman 0930 bnbr8a nbaskerv rm +News701BT-BoldA 0320 biob8a ionic rm +News701BT-ItalicA 0319 biori8a ionic rm +News701BT-RomanA 0318 bior8a ionic rm +News702BT-Bold 0029 bexb8a exclsior rm +News702BT-BoldItalic 0030 bexbi8a exclsior rm +News702BT-Italic 0028 bexri8a exclsior rm +News702BT-Roman 0027 bexr8a exclsior rm +News705BT-BoldB 0060 bonb8a corona rm +News705BT-BoldItalicB 0803 bonbi8a corona rm +News705BT-ItalicB 0059 bonri8a corona rm +News705BT-RomanB 0058 bonr8a corona rm +News706BT-BoldC 0365 bn7b8a news706 rm +News706BT-ItalicC 0364 bn7ri8a news706 rm +News706BT-RomanC 0363 bn7r8a news706 rm +NewsGothicBT-Bold 0049 bngb8a newsgth rm +NewsGothicBT-BoldCondItalic 0378 bngbi8ac newsgth rm +NewsGothicBT-BoldCondensed 0377 bngb8ac newsgth rm +NewsGothicBT-BoldExtraCond 0871 bngb8aq newsgth rm +NewsGothicBT-BoldItalic 0050 bngbi8a newsgth rm +NewsGothicBT-Demi 0949 bngd8a newsgth rm +NewsGothicBT-DemiItalic 0950 bngdi8a newsgth rm +NewsGothicBT-ExtraCondensed 0870 bngr8aq newsgth rm +NewsGothicBT-Italic 0048 bngri8a newsgth rm +NewsGothicBT-ItalicCondensed 0376 bngri8ac newsgth rm +NewsGothicBT-Light 0132 bngl8a newsgth rm +NewsGothicBT-LightItalic 0133 bngli8a newsgth rm +NewsGothicBT-Roman 0047 bngr8a newsgth rm +NewsGothicBT-RomanCondensed 0375 bngr8ac newsgth rm +NewtextITCbyBT-Regular 0697 b_____ newtxt rm +NewtextITCbyBT-RegularItalic 0698 b_____ newtxt rm +NormandeBT-Italic 1012 bn0ri8a normande rm +NormandeBT-Roman 1011 bn0r8a normande rm +NovareseITCbyBT-Bold 0734 bnvb8a novarese rm +NovareseITCbyBT-BoldItalic 0735 bnvbi8a novarese rm +NovareseITCbyBT-Book 0730 bnvk8a novarese rm +NovareseITCbyBT-BookItalic 0731 bnvki8a novarese rm +NuptialBT-Regular 0981 bnur8a nuptial rm +OCRAbyBT-Regular 0395 boar ocra rm +OCRB10PitchBT-Regular 0646 bobr ocrb rm +OldDreadfulNo7BT-Regular 7009 bo0r8a oldreadf rm +OnyxBT-Regular 0519 boxr8a onyx rm +OrandaBT-Bold 1206 bo1b8a oranda rm +OrandaBT-BoldCondensed 1209 bo1b8ac oranda rm +OrandaBT-BoldItalic 1207 bo1bi8a oranda rm +OrandaBT-Italic 1205 bo1ri8a oranda rm +OrandaBT-Roman 1204 bo1r8a oranda rm +OrandaBT-RomanCondensed 1208 bo1r8ac oranda rm +OratorBT-FifteenPitch 0758 borr8a15 orator tt +OratorBT-TenPitch 0755 borr8a10 orator tt +OrbitBbyBT-Regular 0213 bo2r8a orbitb rm +OriginalGaramondBT-Bold 0865 begb8a stgaramo rm +OriginalGaramondBT-BoldItalic 0866 begbi8a stgaramo rm +OriginalGaramondBT-Italic 0864 begri8a stgaramo rm +OriginalGaramondBT-Roman 0863 begr8a stgaramo rm +OzHandicraftBT-Roman 1178 bozr8a ozhandcr rm +PTBarnumBT-Regular 0720 bpbr8a ptbarnum rm +ParisianBT-Regular 1064 bpsr8a parisian rm +ParkAvenueBT-Regular 0362 bpar8a parkave rm +Pica10PitchBT-Roman 0691 b_____ pica10 tt +PioneerITCbyBT-Regular 0214 bp4r8a pioneer rm +PiranesiItalicBT-Regular 0592 bp5r8a piranesi rm +PlaybillBT-Regular 0867 bpyr8a playbill rm +PosterBodoniBT-Italic 0130 bbdpi8a bodoni rm +PosterBodoniBT-Roman 0129 bbdp8a bodoni rm +Prestige12PitchBT-Bold 0614 bpeb8a prestige tt +Prestige12PitchBT-BoldItalic 0615 bpebi8a prestige tt +Prestige12PitchBT-Italic 0613 bperi8a prestige tt +Prestige12PitchBT-Roman 0413 bper8a prestige tt +QuorumITCbyBT-Black 0442 bqrc8a quorum rm +QuorumITCbyBT-Light 0438 bqrl8a quorum rm +QuorumITCbyBT-Medium 0440 bqrm8a quorum rm +RaleighBT-Bold 1081 brab8a raleigh rm +RaleighBT-DemiBold 1080 brad8a raleigh rm +RaleighBT-ExtraBold 1082 brax8a raleigh rm +RaleighBT-Light 1077 bral8a raleigh rm +RaleighBT-Medium 1079 bram8a raleigh rm +RaleighBT-Roman 1078 brar8a raleigh rm +Revival565BT-Bold 1070 bbrb8a berling rm +Revival565BT-BoldItalic 1071 bbrbi8a berling rm +Revival565BT-Italic 1069 bbrri8a berling rm +Revival565BT-Roman 1068 bbrr8a berling rm +RevueBT-Regular 0895 brvr8a revue rm +Ribbon131BT-Bold 0208 botb8a coronet rm +Ribbon131BT-Regular 0207 botr8a coronet rm +RomanaBT-Bold 0897 br0b8a romana rm +RomanaBT-Roman 0896 br0r8a romana rm +SchadowBT-Black 1108 bhwc8a schadow rm +SchadowBT-BlackCondensed 1114 bhwc8ac schadow rm +SchadowBT-Bold 1107 bhwb8a schadow rm +SchadowBT-Light 1104 bhwl8a schadow rm +SchadowBT-LightCursive 1105 bhwli8a schadow rm +SchadowBT-Roman 1106 bhwr8a schadow rm +SchneidlerBT-Black 0907 bssc8a stschnei rm +SchneidlerBT-BlackItalic 0908 bssci8a stschnei rm +SchneidlerBT-Bold 0905 bssb8a stschnei rm +SchneidlerBT-BoldItalic 0906 bssbi8a stschnei rm +SchneidlerBT-Italic 0902 bssri8a stschnei rm +SchneidlerBT-Light 0899 bssl8a stschnei rm +SchneidlerBT-LightItalic 0900 bssli8a stschnei rm +SchneidlerBT-Medium 0903 bssm8a stschnei rm +SchneidlerBT-MediumItalic 0904 bssmi8a stschnei rm +SchneidlerBT-Roman 0901 bssr8a stschnei rm +Script12PitchBT-Roman 0940 bs2r8a script rm +SeagullBT-Bold 0819 bs3b8a seagull rm +SeagullBT-Heavy 0820 bs3h8a seagull rm +SeagullBT-Light 0817 bs3l8a seagull rm +SeagullBT-Medium 0818 bs3m8a seagull rm +SerifaBT-Black 0259 bsfc8a serifa rm +SerifaBT-Bold 0258 bsfb8a serifa rm +SerifaBT-BoldCondensed 0836 bsfb8ac serifa rm +SerifaBT-Italic 0257 bsfri8a serifa rm +SerifaBT-Light 0254 bsfl8a serifa rm +SerifaBT-LightItalic 0255 bsfli8a serifa rm +SerifaBT-Roman 0256 bsfr8a serifa rm +SerifaBT-Thin 0252 bsfa8a serifa rm +SerifaBT-ThinItalic 0253 bsfai8a serifa rm +ShotgunBT-Regular 0167 bs4r8a shotgun rm +ShotgunBlanksBT-Regular 0234 bs4rl8a shotgun rm +SnellBT-Black 0198 bs5c8a snell rm +SnellBT-Bold 0197 bs5b8a snell rm +SnellBT-Regular 0196 bs5r8a snell rm +SouvenirITCbyBT-Demi 0021 bsvd8a souvenir rm +SouvenirITCbyBT-DemiItalic 0022 bsvdi8a souvenir rm +SouvenirITCbyBT-Light 0019 bsvl8a souvenir rm +SouvenirITCbyBT-LightItalic 0020 bsvli8a souvenir rm +Square721BT-Bold 0247 besb8a eurostil sf +Square721BT-BoldCondensed 0249 besb8ac eurostil sf +Square721BT-BoldExtended 0251 besb8ax eurostil sf +Square721BT-Roman 0246 besr8a eurostil sf +Square721BT-RomanCondensed 0248 besr8ac eurostil sf +Square721BT-RomanExtended 0250 besr8ax eurostil sf +SquareSlabserif711BT-Bold 0412 bcyb8a city rm +SquareSlabserif711BT-Light 0410 bcyl8a city rm +SquareSlabserif711BT-Medium 0411 bcym8a city rm +Staccato222BT-Regular 0610 bmsr8a mistral rm +Staccato555BT-RegularA 1153 bczr8a choc rm +StencilBT-Regular 0191 bslr8a stencil rm +StuyvesantBT-Regular 0980 bs6r8a stuyvesa rm +StymieBT-Bold 0218 bymb8a stymie rm +StymieBT-BoldItalic 0692 bymbi8a stymie rm +StymieBT-ExtraBold 0219 bymx8a stymie rm +StymieBT-ExtraBoldCondensed 0910 bymx8ac stymie rm +StymieBT-Light 0216 byml8a stymie rm +StymieBT-LightItalic 0679 bymli8a stymie rm +StymieBT-Medium 0217 bymm8a stymie rm +StymieBT-MediumItalic 0689 bymmi8a stymie rm +Swiss721BT-Black 0007 bhvc8a helvetic sf +Swiss721BT-BlackCondensed 0173 bhvc8ac helvetic sf +Swiss721BT-BlackCondensedItalic 0174 bhvci8ac helvetic sf +Swiss721BT-BlackExtended 0374 bhvc8ax helvetic sf +Swiss721BT-BlackItalic 0008 bhvci8a helvetic sf +Swiss721BT-BlackOutline 0563 bhvcl8a helvetic sf +Swiss721BT-BlackRounded 0815 bhrc8a hvround sf +Swiss721BT-Bold 0005 bhvb8a helvetic sf +Swiss721BT-BoldCondensed 0010 bhvb8ac helvetic sf +Swiss721BT-BoldCondensedItalic 0172 bhvbi8ac helvetic sf +Swiss721BT-BoldCondensedOutline 0767 bhvbl8ac helvetic sf +Swiss721BT-BoldExtended 0373 bhvb8ax helvetic sf +Swiss721BT-BoldItalic 0006 bhvbi8a helvetic sf +Swiss721BT-BoldOutline 0175 bhvbl8a helvetic sf +Swiss721BT-BoldRounded 0813 bhrb8a hvround sf +Swiss721BT-Heavy 0102 bhvh8a helvetic sf +Swiss721BT-HeavyItalic 0103 bhvhi8a helvetic sf +Swiss721BT-Italic 0004 bhvri8a helvetic sf +Swiss721BT-ItalicCondensed 0171 bhvri8ac helvetic sf +Swiss721BT-Light 0001 bhvl8a helvetic sf +Swiss721BT-LightCondensed 0169 bhvl8ac helvetic sf +Swiss721BT-LightCondensedItalic 0170 bhvli8ac helvetic sf +Swiss721BT-LightExtended 0371 bhvl8ax helvetic sf +Swiss721BT-LightItalic 0002 bhvli8a helvetic sf +Swiss721BT-Medium 0759 bhvm8a helvetic sf +Swiss721BT-MediumItalic 0760 bhvmi8a helvetic sf +Swiss721BT-Roman 0003 bhvr8a helvetic sf +Swiss721BT-RomanCondensed 0009 bhvr8ac helvetic sf +Swiss721BT-RomanExtended 0372 bhvr8ax helvetic sf +Swiss721BT-Thin 0100 bhva8a helvetic sf +Swiss721BT-ThinItalic 0101 bhvai8a helvetic sf +Swiss911BT-ExtraCompressed 0105 bhvh8aq helvetic sf +Swiss911BT-UltraCompressed 0106 bhvh8au helvetic sf +Swiss921BT-RegularA 0562 bhir8a hvinsera sf +Swiss924BT-RegularB 0969 bhsr8a hnseati sf +SymbolITCbyBT-Bold 0554 bsyb8a symbol rm +SymbolITCbyBT-BoldItalic 0555 bsybi8a symbol rm +SymbolProportionalBT-Regular 9830 bpi002 symbpro rm +TangoBT-Regular 1151 bt0r8a tango rm +ThunderbirdBT-Regular 0606 bt1r8a thunderb rm +TiffanyITCbyBT-Demi 0224 btfd8a tiffany rm +TiffanyITCbyBT-DemiItalic 0225 btfdi8a tiffany rm +TiffanyITCbyBT-Heavy 0226 btfh8a tiffany rm +TiffanyITCbyBT-HeavyItalic 0227 btfhi8a tiffany rm +TiffanyITCbyBT-Light 0220 btfl8a tiffany rm +TiffanyITCbyBT-LightItalic 0221 btfli8a tiffany rm +Transitional511BT-Bold 0270 bndb8a ncaledon rm +Transitional511BT-BoldItalic 0271 bndbi8a ncaledon rm +Transitional511BT-Italic 0267 bndri8a ncaledon rm +Transitional511BT-Roman 0266 bndr8a ncaledon rm +Transitional521BT-BoldA 0915 beab8a lectra rm +Transitional521BT-CursiveA 0914 bearw8a lectra rm +Transitional521BT-RomanA 0913 bear8a lectra rm +Transitional551BT-MediumB 0884 bffm8a fairfld rm +Transitional551BT-MediumItalicB 0885 bffmi8a fairfld rm +TypoUprightBT-Regular 0939 bt2r8a typo rm +UmbraBT-Regular 1074 bumr8a umbra sf +UniversityRomanBT-Bold 0317 buyb8a universi rm +UniversityRomanBT-Regular 0316 buyr8a universi rm +VAGRoundedBT-Regular 0756 bvrr8a vagrnd sf +Venetian301BT-Bold 1099 burb8a centaur rm +Venetian301BT-BoldItalic 1100 burbi8a centaur rm +Venetian301BT-Demi 1097 burd8a centaur rm +Venetian301BT-DemiItalic 1098 burdi8a centaur rm +Venetian301BT-Italic 1096 burri8a centaur rm +Venetian301BT-Roman 1095 burr8a centaur rm +VinetaBT-Regular 0215 bv0r8a vineta rm +WeddingTextBT-Regular 0985 bw0r8a weddingt rm +WeidemannITCbyBT-Bold 1091 bwdb8a weideman rm +WeidemannITCbyBT-BoldItalic 1092 bwdbi8a weideman rm +WindsorBT-Elongated 0327 bwnr8ax windsor rm +WindsorBT-Light 0909 bwnl8a windsor rm +WindsorBT-LightCondensed 0326 bwnl8ac windsor rm +WindsorBT-Outline 0988 bwnrl8a windsor rm +WindsorBT-Roman 0122 bwnr8a windsor rm +ZapfCalligraphic801BT-Bold 0025 bplb8a palatino rm +ZapfCalligraphic801BT-BoldItal 0026 bplbi8a palatino rm +ZapfCalligraphic801BT-Italic 0024 bplri8a palatino rm +ZapfCalligraphic801BT-Roman 0023 bplr8a palatino rm +ZapfChanceryITCbyBT-Bold 0450 bzcb8a zapfchan rm +ZapfChanceryITCbyBT-Demi 0449 bzcd8a zapfchan rm +ZapfChanceryITCbyBT-Medium 0447 bzcm8a zapfchan rm +ZapfChanceryITCbyBT-MediumItal 0448 bzcmi8a zapfchan rm +ZapfDingbatsITCbyBT-Regular 8556 bzdr zapfding rm +ZapfElliptical711BT-Bold 0053 bmlb8a melior rm +ZapfElliptical711BT-BoldItalic 0054 bmlbi8a melior rm +ZapfElliptical711BT-Italic 0052 bmlri8a melior rm +ZapfElliptical711BT-Roman 0051 bmlr8a melior rm +ZapfHumanist601BT-Bold 0017 bopb8a optima sf +ZapfHumanist601BT-BoldItalic 0018 bopbi8a optima sf +ZapfHumanist601BT-Demi 0134 bopd8a optima sf +ZapfHumanist601BT-DemiItalic 0135 bopdi8a optima sf +ZapfHumanist601BT-Italic 0016 bopri8a optima sf +ZapfHumanist601BT-Roman 0015 bopr8a optima sf +ZapfHumanist601BT-Ultra 0136 bopu8a optima sf +ZapfHumanist601BT-UltraItalic 0137 bopui8a optima sf +ZurichBT-Black 0182 bunc8a univers sf +ZurichBT-BlackExtended 0262 bunc8ax univers sf +ZurichBT-BlackItalic 0183 bunci8a univers sf +ZurichBT-Bold 0180 bunb8a univers sf +ZurichBT-BoldCondensed 0300 bunb8ac univers sf +ZurichBT-BoldCondensedItalic 0301 bunbi8ac univers sf +ZurichBT-BoldExtended 0261 bunb8ax univers sf +ZurichBT-BoldExtraCondensed 0960 bunb8aq univers sf +ZurichBT-BoldItalic 0181 bunbi8a univers sf +ZurichBT-ExtraBlack 0970 bunx8a univers sf +ZurichBT-ExtraCondensed 0959 bunr8aq univers sf +ZurichBT-Italic 0179 bunri8a univers sf +ZurichBT-ItalicCondensed 0299 bunri8ac univers sf +ZurichBT-Light 0176 bunl8a univers sf +ZurichBT-LightCondensed 0296 bunl8ac univers sf +ZurichBT-LightCondensedItalic 0297 bunli8ac univers sf +ZurichBT-LightExtraCondensed 0958 bunl8aq univers sf +ZurichBT-LightItalic 0177 bunli8a univers sf +ZurichBT-Roman 0178 bunr8a univers sf +ZurichBT-RomanCondensed 0298 bunr8ac univers sf +ZurichBT-RomanExtended 0260 bunr8ax univers sf +ZurichBT-UltraBlackExtended 0263 bunu8ax univers sf -- cgit v1.2.3