fonts in a printer. Since the dictionary FontDirectory is a hash table,
the output is not in alphabetical order. I modified it to print the
result in alphabetical order.
As a side product, I wrote a dictionary sorting routine which uses the
standard insertion sort algorithm. The keys of the dictionary are left
on stack as text strings. The function can be used on any dictionary.
==== cut === fontname.ps === cut ====
%!
%
% Sort Dictionary key dict => (keyn) ... (key3) (key2) (key1) n
% Dictionary is a hash table, this function is useful when the keys
% needed to be printed in increasing order, the results are left on
% stack in string datatype. Conversion may be needed if used for other
% purposes.
% Limitation: According to the Red Book, the Operand stack's maximum
% depth is 500, this function will fail if the results
% overflow the stack.
% Written by C.P.Lai Dec 17, 1988
% normal usage:
% anydictionary SortDictKey {
% show newline
% } repeat
/SortDictKey { % function def
/dictcount 1 def
{ %forall - sort dict keys on operand stack
pop % consume the value part
% convert Key to string since type is unknown, or else ge may {*filter*}
80 string cvs % leave each key in a unique string on stack
dictcount -1 2 {% for
dup /dictindex exch def % save index of key being checked
1 index exch % copy latest key for ge
index % use dictindex to get compare key for ge
ge {dictindex 1 roll exit} if % insert into place
} for % check from the already sorted high end
/dictcount dictcount 1 add def
} forall % standard insertion sort algorithm
dictcount 1 sub % leave final count on stack
Quote:
} def
/placesub { % sub argument from place
/place place
3 -1 roll % < /p p arg >
sub def
place % leave place on stack
Quote:
} def
/getfont { % arguments < size font >
findfont
exch scalefont
setfont
Quote:
} def
%%EndProlog
% pretty printing of all the font name available.
/x 72 def
/top 756 def
/place top def
FontDirectory SortDictKey { %repeat
dup cvn 28 exch getfont % select the font
place 72 lt { showpage /place top def } if
x 36 placesub moveto
show
Quote:
} repeat
showpage
--
.signature under construction ...
{cbosgd,fortune,hplabs,seismo!ihnp4,ucbvax!hpda}!nsc!daisy!cplai C.P. Lai
Daisy Systems Corp, 700B Middlefield Road, Mtn View CA 94039. (415)960-6961