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;