// Structure definitions for the .KS file format.
// Prepared by Lyle Ramshaw, PARC, at April 23, 1980  9:05 AM in 
// accord with the April 17 version of my memo defining the new
// kerned Strike format.

//structure KernedStrikeFile:
//[
//@StrikeHdr
//@BBBlock
//@StrikeBody
//@WidthBody
//]

structure StrikeHdr:
[
format word =
	[
	oneBit	bit 1	// always = 1, meaning "new" style
	index	bit 1	// =1 if StrikeIndex, else =0
	fixed	bit 1	// =1 if all Wx's the same, else =0
	kerned	bit 1	// =1 if KernedStrike, else =0
	rest	bit 12	// blank
	]
min		word	// minimum ASCII code
max		word	// maximum ASCII code
maxwidth	word	// maximum Wx of any character
]

structure BBBlock:
[
fbbox	word		// the font's FBBox
fbboy	word		// the font's FBBoy
fbbdx	word		// the font's FBBdx
fbbdy	word		// the font's FBBdy
]

structure StrikeBody:
[
length		word	// total number of words in this StrikeBody
ascent		word	// number of scan-lines above the baseline
descent		word	// number of scan-lines below the baseline
xoffset		word	// always = 0
raster		word	// number of words per scan-line in strike
// bitmap word raster*height
// xinsegment ↑ min, max+2 word
]

//structure WidthBody:
//[
//widthtable ↑ min, max+1   @WidthEntry
//]

structure WidthEntry:
[
spacing word =
	[
	offsett	byte	// = BBox-FBBox
	width	byte	// = Wx
	]
]

manifest
[
lStrikeHdr = size StrikeHdr / 16
lBBBlock = size BBBlock / 16
lStrikeBody = size StrikeBody / 16
]