-- PressFontWriter.mesa -- Written by Michael Plass on August 16, 1982 10:02 am -- Last edit by Michael Plass on August 17, 1982 11:06 am DIRECTORY Graphics, Real, Rope; PressFontWriter: DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; NewFont: TYPE = REF NewFontRec; NewFontRec: TYPE; CharShapeRepresentation: TYPE = {raster, outline, widthsOnly}; WriteError: SIGNAL[writeErrorCode: WriteErrorCode]; WriteErrorCode: TYPE = {cantHappen, inconsistentParameters, wrongFontFormatForThisOperation, fontHasNoCharacters, notImplemented}; Create: PROCEDURE [ filename: ROPE, representation: CharShapeRepresentation, family: ROPE, face: [0..256) _ 0, size: REAL _ 0, -- in meters, or 0 for a scalable font rotation: REAL _ 0, -- in degrees bc: CHAR _ FIRST[CHAR], -- first character in the font ec: CHAR _ LAST[CHAR], -- last character in the font xRes, yRes: REAL _ 0 -- In bits per inch. Only used for a raster font. ] RETURNS [newFont: NewFont]; PaintChar: PROCEDURE [newFont: NewFont, char: CHAR, charInfo: CharInfo, paintProc: PaintProc]; CharInfo: TYPE = RECORD [ widthX, widthY: REAL, -- the width vector minX, minY: REAL _ Real.NonTrappingNaN, -- the lower left corner of the bounding box maxX, maxY: REAL _ Real.NonTrappingNaN -- the upper right corner of the bounding box ]; -- All of the above dimensions are relative to the point size of the character (i.e., they are measured in ems), and are measured from the reference point of the character, with y increasing upwards and x increasing to the right. Any unsupplied values for the bounding box will be calculated from the image. PaintProc: TYPE = PROCEDURE [context: Graphics.Context]; -- A PaintProc gets called to actually draw the character. When drawing a spline font, only the MoveTo, LineTo, CurveTo, and DrawArea commands are allowed. The context is scaled so that one unit equals one em. The paintProc might be called more than once if a bounding box is not supplied. Close: PUBLIC PROCEDURE [newFont: NewFont]; -- Actually writes the whole mess out. END. Κ – "Mesa" style˜IprocšjΟcŠœΟk œ,ž œžœžœžœžœ žœžœžœžœ/žœ3žœpΟnœž œžœ5žœžœ'œ žœœžœžœžœœžœžœžœœ žœ2œžœŸ œž œžœ8žœžœžœœ žœ-œ žœ.œ΅œŸ œžœž œ₯œŸœžœž œ'œžœ˜†—…—