| Features: |
PROC QDEVICE statement options: REPORT=, OUT= PRINTER statement |
/* Macro FONTLIST - Report fonts supported by a device */ %macro fontlist(type, name);
proc qdevice report=font out=fonts; &type &name; var font ftype fstyle fweight; run;
data;
set fonts;
drop ftype;
length type $16;
if ftype = "System"
then do;
if substr(font,2,3) = "ttf" then type = "TrueType";
else if substr(font,2,3) = "at1" then type = "Adobe Type1";
else if substr(font,2,3) = "cff" then type = "Adobe CFF/Type2";
else if substr(font,2,3) = "pfr" then type = "Bitstream PFR";
else type = "System";
if type ^= "System" then font = substr(font,7,length(font)-6);
else if substr(font,1,1) = "@" then font = substr(font, 2,length(font)-1);
end;
else type = "Printer Resident";
run;
proc sort; by font; run;
title "Fonts Supported by the %upcase(&name) &type"; proc print label; label fstyle="Style" fweight="Weight" font="Font" type="Type"; run;
%mend fontlist;
%fontlist(device, pcl5c)
data;
set fonts;
drop ftype;
length type $16;
if ftype = "System"
then do;
if substr(font,2,3) = "ttf" then type = "TrueType";
else if substr(font,2,3) = "at1" then type = "Adobe Type1";
else if substr(font,2,3) = "cff" then type = "Adobe CFF/Type2";
else if substr(font,2,3) = "pfr" then type = "Bitstream PFR";
else type = "System";
if type ^= "System" then font = substr(font,7,length(font)-6);
else if substr(font,1,1) = "@" then font = substr(font, 2,length(font)-1);
end;
else type = "Printer Resident";
run;