ListFontsInPressFile.mesa
Last edited by Plass on April 18, 1983 5:49 pm
Last Edited by: Beach, February 24, 1984 3:00:29 pm PST
DIRECTORY
IO, PressReader, Real, Rope, Commander;
ListFontsInPressFile: PROGRAM
IMPORTS IO, PressReader, Real, Commander
= BEGIN
ROPE: TYPE = Rope.ROPE;
ListFonts: Commander.CommandProc = TRUSTED {
fileName: ROPEIO.GetTokenRope[IO.RIS[cmd.commandLine], IO.IDProc].token;
pressFile: PressReader.Handle ← PressReader.OpenPressFile[fileName !
PressReader.PressReaderError => {
cmd.err.PutF["File \"%g\" %g\n", IO.rope[fileName],
IO.rope[SELECT errorCode FROM
FileNotAPressFile => "is not a press file!",
FileNotAvailableForRead => "is not readable!",
ENDCASE => ERROR]];
GOTO Quit;
}
];
log: IO.STREAM ~ cmd.out;
FontPrinter: PressReader.FontEntryProc = {
texDesignSize: REAL ← -1.0;
log.PutRope["Family name: "];
log.PutRope[fontDirectoryEntry.family];
IF fontDirectoryEntry.face.encoding < 18 THEN {
log.PutF["\n Face: %g == Weight: %g, Slope: %g, Expansion: %g",
IO.int[fontDirectoryEntry.face.encoding],
IO.rope[SELECT fontDirectoryEntry.face.weight FROM
medium => "medium",
bold => "bold",
light => "light",
ENDCASE => ERROR],
IO.rope[SELECT fontDirectoryEntry.face.slope FROM
regular => "regular",
italic => "italic",
ENDCASE => ERROR],
IO.rope[SELECT fontDirectoryEntry.face.expansion FROM
regular => "regular",
condensed => "condensed",
expanded => "expanded",
ENDCASE => ERROR]];
}
ELSE {
texDesignSize ← (254.0-fontDirectoryEntry.face.encoding)/2.0;
log.PutF["\n Face: %g == TEX design size %g",
IO.int[fontDirectoryEntry.face.encoding],
IO.real[texDesignSize]
];
};
log.PutF["\n Size: %g", IO.int[fontDirectoryEntry.size]];
IF texDesignSize>0 AND fontDirectoryEntry.size<0.0 THEN {
magnification: REAL ← -fontDirectoryEntry.size*72.27/(2540*texDesignSize);
magnification ← Real.RoundLI[magnification*100]/100.0;
log.PutF[" (magnification %g)", IO.real[magnification]];
};
log.PutF["\n Rotation: %g\n", IO.int[fontDirectoryEntry.rotation]];
}; -- FontPrinter
pressFile.GetFonts[FontPrinter];
pressFile.ClosePressFile[];
EXITS Quit => NULL;
};
Commander.Register[
key: "ListFontsInPressFile",
proc: ListFonts,
doc: "Lists the fonts used in the named press file"];
END.