DIRECTORY Graphics, PressFontFormat, Rope, UnifiedFonts; UFPressFontReader: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; FontKey: TYPE = RECORD [fileKey: UnifiedFonts.Key, fontIndex: NAT _ 0]; CharShapeRepresentation: TYPE = {raster, outline, widthsOnly}; Error: SIGNAL[errorCode: ErrorCode, fontFileWordOffset: INT]; ErrorCode: TYPE = {fileNotFound, fontIndexTooLong, cantHappen, dataSegmentTooLong, invalidPointerInFile, consistencyCheck, fileHasBeenClosed, wrongFontFormatForThisOperation, invalidCodeInFile}; NumberOfFontsInFile: PROCEDURE [fileKey: UnifiedFonts.Key] RETURNS [NAT]; Family: PROCEDURE [fontKey: FontKey] RETURNS [family: ROPE]; Face: PROCEDURE [fontKey: FontKey] RETURNS [face: [0..256)]; Range: PROCEDURE [fontKey: FontKey] RETURNS [bc, ec: CHAR]; Size: PROCEDURE [fontKey: FontKey] RETURNS [size: REAL]; Rotation: PROCEDURE [fontKey: FontKey] RETURNS [rotation: REAL]; Representation: PROCEDURE [fontKey: FontKey] RETURNS [representation: CharShapeRepresentation]; Resolution: PROCEDURE [fontKey: FontKey] RETURNS [xRes, yRes: REAL]; GetCharInfo: PROCEDURE [fontKey: FontKey, char: CHAR] RETURNS [info: CharInfo]; CharInfo: TYPE = RECORD [ widthX, widthY: REAL, -- the width vector minX, minY: REAL, -- the lower left corner of the bounding box maxX, maxY: REAL -- the upper right corner of the bounding box ]; DrawChar: PROCEDURE [context: Graphics.Context, fontKey: FontKey, char: CHAR]; DrawCharRaster: PROCEDURE [context: Graphics.Context, fontKey: FontKey, char: CHAR]; MoveToProc: TYPE = PROCEDURE [x, y: REAL]; LineToProc: TYPE = PROCEDURE [x, y: REAL]; CurveToProc: TYPE = PROCEDURE [x1, y1, x2, y2, x3, y3: REAL]; DrawAreaProc: TYPE = PROCEDURE; GetCharOutline: PROCEDURE [ fontKey: FontKey, char: CHAR, moveToProc: MoveToProc, lineToProc: LineToProc, curveToProc: CurveToProc, drawAreaProc: DrawAreaProc ]; GetCharPath: PROCEDURE [ fontKey: FontKey, char: CHAR ] RETURNS [path: Graphics.Path]; END. UFPressFontReader.mesa Created January 17, 1983 2:07 pm Last edit by Michael Plass on January 20, 1983 5:08 pm in meters, or 0 for a scalable font in bits per inch; only useful for raster fonts All of the above dimensions are relative to the point size of the character, and are measured from the reference point of the character, with y increasing upwards and x increasing to the right. The character, which may be in any supported format, is drawn at the scale of one em per unit. Thus to draw a 10 point font, scale by a factor of 10 before drawing. The current position is updated by the width after the character is drawn. The character is drawn at the scale of one pixel per unit. The current position is updated by the width after the character is drawn. Κ˜Jšœ™Jšœ ™ Jšœ6™6šΟk ˜ J˜ J˜J˜J˜ —Iunitšœœ œ˜&Jš˜Kšœœœ˜Kšœ œœ(œ˜GKšœœ!˜>Kšœœ+œ˜=Kšœ œ³˜ΒKšΟnœ œœœ˜IKšžœ œœ œ˜