home *** CD-ROM | disk | FTP | other *** search
-
- FE
-
- A Stroke Font Editor
-
-
-
- Copyright (c) 1988,89 Borland International
-
-
- Revision 1
-
- 09/29/88
-
-
-
-
-
- 1. Introduction
- ===============
-
- Stroke fonts define characters as a sequence of lines (strokes), as opposed
- to bitmap fonts that define characters as a matrix of dots.
-
- The advantage of stroke fonts is that they can be scaled to arbitrary sizes
- and still maintain full resolution. Bitmap fonts are made for a specific dot
- size and do not scale gracefully. For example, if you had a bitmap font for
- a 72 dot-per-inch (DPI) dot matrix printer and quadrupled the dots in height
- and width to use on a 300 DPI laser printer, you would simply get an
- enlargement of the jagged edges inherently present in the 72 DPI font.
-
- Stroke fonts, on the other hand, are not converted to dots until the
- desired size and resolution of the output device is known. So, if you
- wanted to put stroke fonts on a 300 DPI laser printer, the dots that make up
- the strokes would be printed at 300 DPI.
-
-
- 2. System Requirements
- ======================
-
- 2.1 Required Hardware
- =====================
-
- The Font Editor (FE) runs on IBM PCs, PC/XTs, PC/ATs, and most compatibles.
-
- FE requires a mouse that supports the Microsoft External Mouse Driver
- Interface. This includes the Microsoft, Mouse Systems, and
- Logitec mice. (If you'll be using some other mouse, consult your
- owner's manual.) The mouse driver must be installed into memory prior
- to starting the FE; typically, this is accomplished by installing the
- driver as a DOS device driver from your CONFIG.SYS file. Consult your mouse
- documentation for details about installing the mouse driver.
-
- FE also requires an IBM Enhanced Graphics Adapter (EGA), or compatible, and
- a color display. The graphics adapter card must have at least 128K of
- display RAM installed.
-
-
- 2.2. Optional Hardware
- ======================
-
- FE supports hardcopy output to one of the following Hewlett-Packard
- plotters.
-
- HP 7470
- HP 7475 (8 1/2 x 11 paper only)
- HP 7440 (Color Pro)
-
- When using a serial port mouse and using a plotter, two serial ports are
- required. Be careful to select the correct port for the plotter before
- allowing FE to set the parameters on the serial port.
-
- You'll need Hewlett-Packard's standard cable for interfacing a Hewlett-
- Packard plotter to an IBM PC; the part number is HP 17255D.
-
-
- 3. General Capabilities
- =======================
-
- FE edits Borland stroke fonts (files with the .CHR extension shipped with
- Turbo C and Turbo Pascal). You can read in fonts, edit individual
- characters, preview characters onscreen (and optionally on a plotter), and
- save the resulting font back to disk.
-
-
- 4. FE Display
- =============
-
- The FE screen is divided into four major areas, each of which is explained
- here. Since these areas react slightly differently with the mouse, we'll
- talk about mouse use first.
-
-
- 4.1 Mouse Conventions
- =====================
-
- There are two major operations you'll perform with the mouse when using FE.
- A "click" is a quick press-and-release of the mouse button when the cursor
- is positioned on some object. This "selects" the object.
-
- A "drag" is a press, hold, and move operation used to slide objects or
- define areas. When sliding objects, the object sticks to the mouse cursor
- after a button is depressed and stays with the cursor until the button is
- released.
-
- FE makes no distinction between the left and right mouse buttons; they are
- completely equivalent.
-
-
- 4.1.2 Defining Areas
- ====================
-
- When defining an area, the location where a mouse button is depressed
- defines one corner of a rectangle. The diagonally opposite corner is
- defined by where the button is released. So when you are defining a
- rectangle, one corner is defined (and cannot be changed) when the
- mouse button goes down. The other corner can be changed while you
- continue to hold the button down and move the mouse.
-
-
- 4.1.3 In the Character Window
- =============================
-
- When the mouse pointer is in the character window, you'll find that it
- moves jerkily. This is because the pointer is restricted to only those
- grid intersection points where strokes can start and stop. These grid
- points will be closer together or farther apart, depending on how
- "Zoomed In" you are. These points will be visible if you use the Grid
- command under Window.
-
-
- 4.1.4 Escape From Plotting
- ==========================
-
- Pressing the mouse button during a plotting operation terminates the
- plotter dump. Therefore, you may have to hold the mouse down for a few
- seconds until the status of the button is read. Plotting may continue
- for a time (as long as a minute on some plotters) because the plotter
- continues to obey drawing commands in its internal buffer.
-
-
- 4.2. The Character Window
- =========================
-
- The character window is the large rectangular area on the left half of
- the screen where character editing takes place. FE shows you the strokes
- that comprise a character, and you may add or delete strokes to a character
- by manipulating the mouse in this window.
-
- Strokes are added or deleted by moving the mouse cursor to the desired
- starting point, pressing the button, and dragging to the desired endpoint.
- If no stroke connected these points previously, then a new stroke is added;
- if one did, then it is deleted.
-
- If you wish the stroke to bend (in effect making multiple strokes), you
- must release and press the mouse button to end a stroke and start another
- stroke.
-
- Again, drawing a line where there was none before will add a stroke to the
- character definition. Drawing a line on top of an existing line erases
- that line from the character definition.
-
- Combinations of adding and deleting strokes can be performed with a single
- line. For example, drawing a line on the middle part of an existing line
- causes the middle part to be erased and leave two lines corresponding
- to the two end parts that were not drawn upon.
-
- There is a small triangle along the baseline labeled with a 'b' on the left
- end. This marker shows where the next character will start and controls
- the intercharacter spacing. This width can be changed by dragging the
- intercharacter spacing triangle to a new position.
-
-
- 4.3. The Menu
- =============
-
- The menu bar is the line of text at the top of the screen. Items in the
- menu are selected by a mouse click.
-
- Some items in the menu perform a single function and, when the function is
- completed, display the same menu; examples of this are Load and Save. Other
- items display a new menu that always contains an item labeled Exit. Clicking
- the Exit item returns you to the your last menu location; Edit is an
- example.
-
- The Quit item in the main menu returns you to DOS. If you've made changes
- to the font, you'll be asked whether you want to save them before quitting.
-
-
- 4.4. The Character Selector
- ===========================
-
- The character selector is the large rectangular area on the right of
- the screen containing a display of all the characters in IBM's extended
- ASCII character set. Clicking on a character within this box changes the
- current working character.
-
- The characters shown in green have strokes defined for them. The
- characters shown in red have no stroke definition yet. The character
- currently being edited is shown in either bright red or bright green,
- depending upon whether it has strokes defined.
-
- Additions or deletions to the current character are never applied until
- you indicate to add the new strokes. If you have made changes to the
- current character, you're prompted whether the new strokes are to be added
- (or subtracted) from the current character when you click on a character in
- the character selector window. If you click on Yes, the character definition
- will be updated. If you click on No, the new strokes will be discarded.
-
- Alternatively, you may reclick on the current character simply to force an
- update from time to time.
-
-
- 4.5. The Small Character
- ========================
-
- For at-a-glance information, the area in the lower right-hand corner of
- the screen displays a small version of the current character; nothing is
- selectable here.
-
-
- 4.6. The Update Selector Box
- ============================
-
- This box appears on the right-hand side of the screen, above the character
- selector window and below the menu area. While editing a character, the
- changes made to a character are saved in a edit buffer. To make the edits
- permanent, the user must use the mouse to select the Update area. This
- writes the edit buffer to the actual character. If you've made changes to
- a character without updating the edit buffer, then you'll be prompted
- to update the character when you select a new character.
-
- !!!!! NOTE !!!!!
-
- The edit actions on characters only affect the character data, not the
- edit buffer; for example, when you add several lines to a character
- but don't update the character. If you select edit and move the character,
- only the information in the character buffer is affected. The new lines
- added to the character will not be moved. This applies to all edit
- functions, including move, flip, flop, reverse, shift, cut, and copy.
-
-
- 5. Editing Tools
- ================
-
- This section briefly describes the editing tools available in FE. The
- next section, "Command Reference," provides complete command descriptions.
-
-
- 5.1. Single Strokes
- ===================
-
- Single strokes can be added or deleted from a character by moving the mouse
- cursor into the character window and performing a drag operation between
- the grid points where the stroke should be added or deleted.
-
- As you drag the mouse, you'll notice the line being drawn. The start point
- begins where you first pressed the mouse button; the endpoint follows the
- mouse cursor. This process is known as "rubber banding" a line because the
- line appears to be a rubber band that stretches or shrinks to follow the
- cursor.
-
- Strokes can be deleted by drawing over existing strokes.
-
- Note that if you move the mouse cursor outside the character while rubber
- banding a line, the stroke will be "canceled."
-
-
- 5.2. Groups of Strokes
- ======================
-
- Groups of strokes can be manipulated as a single object using the Edit,
- Clipboard commands. Many characters share the same stroke groups. For
- example, the strokes that define the left-hand part of a 'c' will probably
- be the same as those in the left-hand part of a 'd.'
-
- The tools available in the Clipboard menu allow you to select a group of
- strokes from a character and use them again in that character or another
- character. Cut and Copy move a group of characters into a holding buffer
- (the Clipboard). Cut removes the strokes from the current character, while
- Copy leaves the originals undisturbed.
-
- You can determine the characters to go onto the Clipboard by rubber banding
- a rectangle around the strokes. Both endpoints of a given stroke must be
- completely inside the rectangle in order to be selected for a Cut or Copy.
-
- You can paste the strokes in the Clipboard into a character by selecting
- Paste. The contents of the Clipboard are drawn in the character window.
- You may move the strokes with a dragging operation.
-
- Paste doesn't empty the Clipboard; the next paste operation will find the
- same strokes. Cut and Copy always change the contents of the Clipboard.
- Delete operates like Cut except that the Deleted strokes do not go onto
- the Clipboard, they are just discarded. Move is similar to a combined Cut
- and Paste operation except that the contents of the Clipboard are not
- altered.
-
- You may also Flip the contents of the Clipboard using the commands under
- Edit, Flip. These may be used to flip the Clipboard contents upside down
- (along a horizontal axis), or right and left (along a vertical axis).
-
-
- 5.3. Whole Characters
- =====================
-
- There are some special techniques for manipulating whole characters.
-
- CopyChar, under the Edit menu, allows you to copy from one character within
- a single font to another.
-
- Flip, under the Edit menu, allows you to flip a character upside down, or
- right and left, or both by using both commands.
-
- Shift, under the Edit menu, allows you to move a whole character right,
- left, up, or down.
-
- For example, the characters, b, d, p, and q are usually just flipped
- versions of one another. You can draw one and use CopyChar and Flip to
- make the other three.
-
-
- 5.4. Whole Fonts
- ================
-
- The commands under Global allow you to perform operations on the entire
- font. These are primarily concerned with intercharacter spacing. Usually,
- these commands are used as a part of the final editing process of a font.
-
- LeftSpace moves every character in the font so that its leftmost part
- is the specified distance from the dark solid vertical line in the
- character window.
-
- RghtSpace sets the character spacing marker of every character in the
- font so that it is the specified distance from rightmost part of the
- character.
-
- BaseLine shifts every character up or down by the same amount so that
- the base line corresponds to zero.
-
- Copy allows you to select another font and copy characters from it into
- the font on which you are currently working. Many characters will not
- change from one font to another, such as the graphics characters. This
- command allows you to copy them.
-
-
- 6. Command Reference
- ====================
-
- This section describes each command/function in detail.
-
-
- 6.1. Load
- =========
-
- The Load command loads an existing font file into FE. A large rectangle
- will be drawn on the screen that contains two mouse-sensitive areas: the
- the file selector area and the file prompt line.
-
- Clicking on the file prompt line allows you to enter a new file name
- for loading. This prompt may include a new path. You will be warned if the
- file name entered does not exist. If you confirm that the file does not
- exist, the file will be created and will become the default output file
- when the font is saved.
-
- The file selector area contains a list of all of the files on the current
- drive and in the current directory that have the extension .CHR. As you
- move the mouse cursor over these, you'll see them appear on the file prompt
- line. Clicking on one of these names will select the name as the current
- file to load.
-
-
- 6.2. Show
- =========
-
- The tools under Show simply display how your font looks. They do not
- change the font.
-
-
- 6.2.1. Font
- ===========
-
- This tool shows all of the currently defined characters on the
- monitor. This is useful to do a quick check of the intercharacter
- spacing. Overlapping characters or gaps between characters indicate
- improper intercharacter spacing.
-
-
- 6.2.2. String
- =============
-
- This tool allows you to type the characters that you want to display;
- For instance, this can be useful when you want to display two special
- characters together to determine appearance and spacing.
-
- When the current line becomes full, you'll automatically go to the next
- line. You can also press the Enter key to force a new line.
-
- The display will not scroll when you reach the bottom; you must press
- the Esc key to get out of String mode.
-
-
- 6.2.3. Plotter
- ==============
-
- This tool draws the current font on an HP plotter. Refer to the
- section entitled "Optional Hardware" for a discussion about con-
- necting the plotter.
-
- When you select this tool, you're asked if the plotter is COM1 or
- COM2. Then the serial port on the PC must be configured to communicate
- with the plotter. You can either let FE set the serial port to 9600
- baud, even parity, 7 data bits, and 1 stop bit, in which case the DIP
- switches on your plotter must be set this way, or you can skip this
- step.
-
- If you do not let FE initialize the serial port, then you must have
- previously issued the DOS mode command prior to starting FE to match
- your plotter's switch settings.
-
- If you're using a serial mouse, be careful not to choose the serial
- port to which your mouse is connected.
-
- Finally, you'll be asked whether you want to plot to the plotter. Have
- the paper loaded and the plotter ready before selecting yes.
-
- If you start plotting and want to stop before all your plotting is
- complete, press and hold down a mouse button until the screen clears.
-
- Your plotter output will be labeled with the name of the file from
- which it came, and the page number. In the case of multiple page
- plots, FE will stop at the end of each page to allow you to load a new
- piece of paper.
-
-
- 6.2.4. Exit
- ===========
-
- This choice returns you to the main menu.
-
- 6.3. Global
- ===========
-
- The commands under Global operate on an entire font, unlike many of the
- other commands that operate on a single character or stroke.
-
-
- 6.3.1. LeftSpace
- ================
-
- The LeftSpace choice adjusts the space between the leftmost part of a
- character and the vertical guide line shown in the character window.
- Typically, this should be set to zero for all fonts so that an
- application that mixes fonts will maintain character spacing between a
- font change.
-
- 6.3.2. RghtSpace
- ================
-
- The RghtSpace choice adjusts the character width mark of all the
- characters to the desired value. The character width value set for
- each character is the number selected from the menu, plus the rightmost
- stroke of the character. Therefore this choice gives uniform
- intercharacter spacing to a proportionally spaced font.
-
- Typically, you'll use this to prpoportionally space the entire font.
- Some characters are "fixed up" individually, such as the numeric
- characters and the graphics character symbols; these may all get the
- same total width so that they line up in columns.
-
-
- 6.3.3. BaseLine
- ===============
-
- The BaseLine choice adjusts each character in the font upward or
- downward by the same amount. Use this choice for each font so that
- all fonts refer to the same base line value. Thus, an application-
- switching font will not have the baseline of the new font shifted up
- or down from the previous font.
-
-
- 6.3.4. Copy
- ===========
-
- Global Copy allows you to copy characters from a different font file.
- You will be asked to select a source font file, just like when using
- Load.
-
- Once you've selected a source font file, you'll see two character
- selector boxes on the screen. The left box corresponds to the source
- font file that you just selected. The right box corresponds to the font
- on which you are currently working.
-
- You can copy a character by clicking on the character you want from
- the source character box and then clicking on the character to which
- it should be copied in the destination character box.
-
- When you've finished, you select Done in the menu area.
-
-
- 6.3.5. Exit
- ===========
-
- This choice returns you to the main menu.
-
-
- 6.4. Edit
- =========
-
- The tools under Edit are for editing whole characters or groups of
- strokes. The Clipboard function under this heading are of particular
- importance.
-
-
- 6.4.1. CopyChar
- ===============
-
- This tool allows you to do intrafont copying of characters. Selecting
- this tool prompts you to select the source character and then the
- destination character.
-
- If a character already exists where you selected the destination
- character, then you'll be asked if that character should be replaced.
-
-
- 6.4.2. Flip
- ===========
-
- This tool flips either the current character or the contents of the
- Clipboard.
-
- Characters are flipped within the space that they occupy. For
- example, if a character only occupied the lower portion of its
- character cell, then the result of flipping it vertically will only
- occupy the lower portion of the character cell. You can use the Shift
- tool to change this if it's not what you want.
-
- Note that you won't see the results of flipping the Clipboard until you
- paste from the Clipboard.
-
-
- 6.4.3. Shift
- ============
-
- This tool shifts a character one dot in any direction. It does not
- modify the intercharacter spacing.
-
-
- 6.4.4. ShowAlso
- ===============
-
- This tool lets you superimpose another character over the one on which
- you are currently working. This character stays drawn until you select
- Update or change the current character.
-
-
- 6.4.5. Clipboard
- ================
-
- The Clipboard contains all the tools for working on groups of strokes.
- Cut, Copy, and Paste work by reading and writing a temporary storage
- area called the Clipboard. Move and Delete do not use the Clipboard.
-
- Strokes are selected from the current character by rubber banding a
- rectangle around them. One corner of the rectangle is defined by
- where you press a mouse button. The diagonally opposite corner is
- defined by where you release the mouse button.
-
- Both endpoints of the stroke must be completely within the rectangle
- in order to be selected.
-
- For the Move and Paste options, when a region has been defined, the
- strokes contained in the region are copied within the window to the
- right of the character width marker. The upper left corner of the
- strokes become attached to the mouse cursor when you press a mouse
- button. They stay attached until you release the mouse button.
-
-
- 6.4.5.1. Cut
- ============
-
- Cut removes the selected strokes from the current character and places
- them on the Clipboard. The previous contents of the Clipboard are
- lost.
-
-
- 6.4.5.2. Copy
- =============
-
- Copy copies the selected strokes from the current character to the
- Clipboard. The current character is not changed. The previous contents
- of the Clipboard are lost.
-
-
- 6.4.5.3. Paste
- ==============
-
- Paste copies the contents of the Clipboard to the current character.
- The contents of the Clipboard are not changed.
-
-
- 6.4.5.4. Move
- =============
-
- Move moves the selected strokes to a new location. The contents of the
- Clipboard are not changed. This is equivalent to a Cut and Paste
- except that the contents of the Clipboard are not changed.
-
-
- 6.4.5.5. Delete
- ===============
-
- Delete cuts the selected strokes from the current character. This is
- equivalent to a Cut except that the contents of the Clipboard are not
- changed.
-
-
- 6.4.5.6. Exit
- =============
-
- This choice returns you to the Edit menu.
-
-
- 6.4.6. Exit
- ===========
-
- This choice returns you to the main menu.
-
-
- 6.5. Save
- =========
-
- The Save command stores the current font data to an output file. The Save
- menu draws a large rectangle on the screen that contains two mouse-
- sensitive areas: the file selector area and the file prompt line.
-
- Clicking on the file prompt line allows you to enter a new file name
- for saving. This prompt may include a new path. You'll be warned if the
- file name entered does not exist. If you confirm that the file does not
- exist, the file will be created.
-
- The file selector area contains a list of all of the files on the current
- drive and in the current directory that have the extension .CHR. As you
- move the mouse cursor over these you see them appear on the file
- prompt line. Clicking on one of these names selects the name as the
- current destination file.
-
-
- 6.6. Window
- ===========
-
- All of the tools under Window control how the character editing window is
- displayed. These tools don't change the characters, only the way that
- they are displayed. All of the values herein are set automatically when
- you load a font file.
-
- You'll need to set these values if you start with a new font file, that is,
- bypass Load.
-
-
- 6.6.1. Zoom Out
- ===============
-
- This tool reduces the magnification used to display the character
- in the character editing window.
-
- The magnification is automatically set to show all characters in the
- character window as large as possible when the font file is loaded.
-
-
- 6.6.2. Zoom In
- ==============
-
- This tool increases the magnification used to display the character
- in the character editing window.
-
- The magnification is automatically set to show all characters in the
- character window as large as possible when the font file is loaded.
-
- You can increase the magnification set by Load so that the characters
- are larger than the window. Parts of characters that would be outside
- the window are clipped to the window limits.
-
- You may want to do this while working on lowercase letters or the
- strokes that make up the serif of a serif font.
-
-
- 6.6.3. Origin
- =============
-
- This tool allows you to position the origin guide line anywhere within
- the character editing window.
-
- For most fonts, this is drawn underneath the baseline guide line and
- won't be visible, however, it is still movable.
-
- To work on descending strokes, move toward the top of the window and
- zoom in. To work on uppercase letters, move this to the bottom of the
- window.
-
-
- 6.6.4. d-ht
- ===========
-
- This tool positions the descender height guide line in the character
- editing window. It has no effect on the character, its edits, or
- display of the character in the window; it's simply for your
- convenience.
-
-
- 6.6.5. b-ht
- ===========
-
- This tool positions the baseline height guide line in the character
- editing window. It has no effect on the character, its edits, or
- display of the character in the window; it's simply for your
- convenience.
-
-
- 6.6.6. x-ht
- ===========
-
- This tool positions the x-height guide line in the character editing
- window. It has no effect on the character, its edits, or display of the
- character in the window; it's simply for your convenience.
-
-
- 6.6.7. c-ht
- ===========
-
- This tool positions the character height guide line in the character
- editing window. It has no effect on the character, its edits, or
- display of the character in the window; it's simply for your
- convenience.
-
-
- 6.6.8. ShowMovs
- ===============
-
- This tool shows each move, draw, draw, ... sequence in a different
- color so that you can see how the character stroke is created.
-
- Don't use turning this option on when drawing in the character
- editing window; the results are not favorable.
-
- This option defaults to off.
-
-
- 6.6.9. Grid
- ===========
-
- This tool shows the grid of points in the character being editing on
- which strokes begin and end.
-
- This option defaults to on.
-
-
- 6.6.10. Exit
- ============
-
- This choice returns you to the main menu.
-
-
- 6.7. Quit
- =========
-
- This choice returns you to DOS; you will be asked if you want to save any
- edits.
-
-
-
-
- 7. Beginning a New Font from Scratch
- =====================================
-
- There are a few considerations for the user who wishes to start a new font
- from scratch. To begin a new font, start FE and select a new font file name.
- The screen shows a character window without any characters defined. The
- four global parameters for the font are determined automatically by the font
- editor when a file is loaded or saved. These parameters are the Base
- Height, the Capital Height, the Descender Height, and the Lowercase Height
- (or x Height). The values for these are determined by examining the
- characters a typographer would use to determine the same information.
-
- Capital Height:
- This value is determined by examining the E Ligature character (144
- decimal). This is the tallest of the European characters. If this
- character is undefined, the capital M is used as the capital height.
- If neither of these characters are defined, the value will default to
- 40 (of a maximum of +/-64).
-
- Base Height:
- This value is determined by examining the E Ligature or the Capital
- M. This value is used as the origin for the other three dimensions.
- If neither of these characters are defined, the value will default to
- 0 (of a maximum of +/-64).
-
- Descender Height:
- This value is determined be examining the lowercase 'q' letter. If
- the lowercase 'q' is undefined, the value will default to -7 (of a
- maximum of +/-64).
-
- LowerCase Height (or x Height):
- This value is determined by examining the lowercase 'x' letter. If
- the lowercase 'x' is undefined, the value will default to the Capital
- Height divided by two.
-
-
- To define the size and placement of the characters in the font, it is best
- to define the 'M', 'q', 'x', and E Ligature (if desired) as the first
- characters. The next time the font is loaded, the character dimensions will
- be used to define the size and placement of the character window for the
- font.
-
-
-
-
- Appendix 1
-
- BGI Stroke File Format
-
- The structure of Borland .CHR (stroke) files is as follows:
-
- ; offset 0h is a Borland header:
- ;
- HeaderSize equ 080h
- DataSize equ (size of font file)
- descr equ "Triplex font"
- fname equ "TRIP"
- MajorVersion equ 1
- MinorVersion equ 0
-
- db 'PK',8,8
- db 'BGI ',descr,' V'
- db MajorVersion+'0'
- db (MinorVersion / 10)+'0',(MinorVersion mod 10)+'0'
- db ' - 19 October 1987',0DH,0AH
- db 'Copyright (c) 1987 Borland International', 0dh,0ah
- db 0,1ah ; null & ctrl-Z = end
-
- dw HeaderSize ; size of header
- db fname ; font name
- dw DataSize ; font file size
- db MajorVersion,MinorVersion ; version #'s
- db 1,0 ; minimal version #'s
-
- db (HeaderSize - $) DUP (0) ; pad out to header size
-
- At offset 80h starts data for the file:
-
- ; 80h '+' flags stroke file type
- ; 81h-82h number chars in font file (n)
- ; 83h undefined
- ; 84h ASCII value of first char in file
- ; 85h-86h offset to stroke definitions (8+3n)
- ; 87h scan flag (normally 0)
- ; 88h distance from origin to top of capital
- ; 89h distance from origin to baseline
- ; 90h distance from origin to bottom descender
- ; 91h-95h undefined
- ; 96h offsets to individual character definitions
- ; 96h+2n width table (one word per character)
- ; 96h+3n start of character definitions
- ;
- The individual character definitions consist of a variable number of words
- describing the operations required to render a character. Each word
- consists of an (x,y) coordinate pair and a two-bit opcode, encoded as shown
- here:
-
- Byte 1 7 6 5 4 3 2 1 0 bit #
- op1 <seven bit signed X coord>
-
- Byte 2 7 6 5 4 3 2 1 0 bit #
- op2 <seven bit signed Y coord>
-
-
- Opcodes
-
- op1=0 op2=0 End of character definition.
- op1=1 op2=0 Move the pointer to (x,y)
- op1=1 op2=1 Draw from current pointer to (x,y)