// P R E P R E S S D E F I N I T I O N S // // I N D E X Definitions structure IXH: [ Type bit 4 Length bit 12 ] structure IXN: [ //For a name @IXH Code word Name word contd word 9 ] structure IX: [ //For splines, characters @IXH //Header [ fam byte // Family number face byte // Face code ] = famface word bc byte // First char number ec byte // and last siz word // Font size (10 micron units) rotation word // Rotation (anti clockwise) sa word 2 //Starting address of data part len word 2 //Length of data part //Width type ends here //Spline type ends here resolutionx word // 10*(number of bits/inch) resolutiony word // ditto ] structure IXM : [ @IXH //Header, type = IXTypeMultiChars fam byte //Family number face byte //Face code bc byte //First char number ec byte // and last siz word // Size in microns rotation word // Rotation in minutes resolutionx word // 10* number of bits/inch resolutiony word numSegs word // number of character width segments (1st contains rasters) segs^1,4: [ // Max 4 sa word 2 // starting position in file len word 2 // and length date word 2 = // date after which these widths valid [ date0 word; date1 word ] ] ] manifest [ //IXH types IXTypeEnd=0 IXTypeName=1 IXTypeSplines=2 IXTypeChars=3 IXTypeWidths=4 IXTypeOrbitChars=5 IXTypeMultiChars = 6 //IXH lengths IXLEnd=1 IXLName=size IXN/16 IXLSplines=9 IXLChars=11 IXLWidths=9 IXLMulti=size IXM/16 IXLMax=IXLMulti ] // W I D T H segment definitions structure WTB: [ //Width Table Block XL word //X offset YB word //Y offset XW word // width YH word // height XWidthFixed bit YWidthFixed bit spare bit 14 ] // S P L I N E segment definitions structure SplineWidth: [ //Block describing spline widths WX word 2 //X width -- FP WY word 2 //Y width -- FP XL word 2 //X left -- FP YB word 2 //Y bottom -- FP XR word 2 //X right -- FP YT word 2 //Y top -- FP ] manifest SplineWidthsize=size SplineWidth/16 manifest [ //Codes in the height entry for a char that indicate something else HNonExCode=-1 HSplineCode=-2 //DL Types (for Spline File) DSplineFontMoveTo=1 DSplineFontDrawTo=2 DSplineFontDrawCurve=3 DSplineFontNewObject=-1 DSplineFontEndObjects=-2 ] // C H A R segment definitions (scan-converted chars) structure CharWidth: [ //Block describing char widths WX word 2 //X width -- DP WY word 2 //Y width -- DP XL word //X left (offset) integer YB word //Y bottom (offset) integer W word //Width (integer) H word //Height (integer) or special code ] manifest CharWidthsize=size CharWidth/16 structure FHEAD: [ //Font header, scan converted hw bit 6 //Height in words ns bit 10 //width in scan lines ] //Misc. structure Convert: [ Monotone word //True if input to conversion is monotone SplineOk word //True if output can be spline (too big) BBGood word //True if bounding box will be correct PressFontPart word //True if scan converting a press font part Len word // (if so, this is the length) ] manifest [ gotname=1 gotface=2 gotsize=4 gotrotation=8 gotincline=16 gotresolution=32 gotrecord=64 gotfactors=128 ]