How to use the MAKFNT font editor A Christopher Hall August 12, 1983 RUNNING MAKFNT MAKFNT is a special-purpose editor to create and edit font files which are used with the LA34 and LA100 printers' graphics mode output. MAKFNT allows the user to work with the way characters look, and takes care of the encoding of the font in the language that the printer understands transparently to the user. The font files that MAKFNT reads and writes are intended to be used with FPRINT, the fancy printer program. To run, just type "MAKFNT". The editor will set up a default display, and you can read in the font file you want to edit, or set the height as you wish and create a new font. Eventually you can save the font in a file if you want, and exit MAKFNT (by typing Control-C). MAKFNT has a lot of commands, the description of which takes up most of this document. Read on. DEFINITIONS Character - Current and Saved The current character is the one that is currently being edited. It is displayed on the screen. Saved characters have been defined either by creating and saving them or by reading a font file. They can be recalled, whereupon they become the current character. In this documentation "character" refers to an entity of a font, which is either current or saved; not the single thing that appears on the screen when you type something. The latter are: Blots and Blanks The current character is displayed as blots and blanks (well, I've got to call them something). A blot represents a wire that will be fired, and a blank a wire which will not fire. Blots are displayed as "X"s, blanks as spaces. Character Width Characters always have variable width. The width of the current character is from the left column of the display to the rightmost blot on any row. Trailing blank columns are "deleted" when the character is saved, but leading blank columns are retained. The latter can be deleted using the DELETE COLUMN command. Word Space The space character cannot be made as the current character and then saved, because it will always be saved as zero width. If a font does not already have a space character defined, when the SAVE FONT command is typed the editor will ask the user how long the space character should be. The Scratch Character Sometimes it is useful to save the current character in a scratch area, perhaps to compare with the old definition of the character (by recalling them each alternately) to see which one looks better. A character can be SAVED and RECALLed as the scratch character by answering the "give name" question of those two commands with a CRLF. The scratch character behaves the same as any other character, but is not saved on disk with the font. FEATURES OF THE DISPLAY The screen display consists of the following elements: Current Character The character currently being edited is displayed in the left part of the screen. Each row is numbered. The cursor cannot be moved out of the current character region. Font File If a font file has been read, its name appears at the top right of the screen. Width This is the width of the current character. Note that the width only gets larger; if all blots are erased from the rightmost column the width remains the same (but is adjusted when the character is saved). Defined Characters List This is a list of characters which have been defined, either by creating and saving them or by reading in a font file. Defined characters can be recalled as the current character. Queries and Verification Many commands ask questions of the user. Hopefully, they are self-explanatory. Also, some commands can cause damage if they are typed accidentally. To give the user a chance to say he didn't mean it, those commands ask for verification. Answering the verification with "Y", "y", or CRLF approves the command, and it takes effect. Any other response disapproves the command, and it is ignored. The commands which ask for verification are marked with an asterisk (*). COMMANDS Type-In ANY LETTER - Makes a blot at the cursor position. The cursor moves one to the right, or in the direction set by the SET INCREMENT command. SPACE - Erases the blot at the cursor position. The cursor moves one to the right, or in the direction set by the SET INCREMENT command. RUBOUT - Erases the blot to the left of the cursor. The cursor moves one to the left (always). Cursor Movers CURSOR-UP (ARROW KEY) - Moves the cursor up one row. If the cursor is moved off the top of the screen it wraps around to the bottom. CURSOR-DOWN (ARROW KEY) - Moves the cursor down one row. If the cursor is moved off the bottom of the screen it wraps around to the top. CURSOR-RIGHT (ARROW KEY) - Moves the cursor right one column. If the cursor is moved off the right of the screen it wraps around to the left. CURSOR-LEFT (ARROW KEY) - Moves the cursor left one column. If the cursor is moved off the left of the screen it wraps around to the column of the width of the character being edited. TAB (Tab or Control-I) - If the cursor is on a blot, moves the cursor to the next blank. If the cursor is on a blank, moves the cursor to the next blot; if there is no next blot, moves the cursor to the next 8-character tab stop. BACKTAB (Control-U) - Does the opposite of TAB, moving to the previous blot or blank. DOWNTAB (Control-P) - Similar to TAB, but moving downward. Vertical tab stops are every fourth row. UPTAB (Control-O) - Similar to BACKTAB, but moving upward. HOME (Keypad-1) - Moves the cursor to the upper-left corner of the screen. NEWLINE (Carriage Return) - Moves the cursor to the start of the next row, or where set by the SET INCREMENT command. BEGIN LINE (Keypad-4) - Moves the cursor to the start of the current line. END LINE (Keypad-6) - Moves the cursor after the last blot on the current line. REWRITE (Keypad-5) - Re-displays the screen. Font File Operations *READ FONT (Control-R) - Asks for the name of a font file (the extension .FNT is appended), then reads in that file for editing. The font being edited, if any, when READ FONT is typed, is discarded. *APPEND FONT (Control-A) - Asks for the name of a font file (the extension .FNT is appended), then reads in that file for editing, adding its definitions to those already there. If the new font file redefines an existing character, the new definition will overwrite the old one. *WRITE FONT (Control-F) - Asks for the name to save the font (the extension .FNT is appended), then writes out the current definitions to disk. Typing CRLF as the file name causes the current file name to be used. The current font is erased. Some questions may be asked if certain values have not yet been defined for the font: Number of spaces between characters: This space is output between each character, unless that character has the XTS flag set. 1-2 for each 6 rows of height is a good value, but the eye is the best judge. Number of lines between lines: Usually 1, but set it greater to space lines of text farther apart. Each increment of this value gives 6 more dot-rows between lines in the output. Length of a space character: Type the length of the word separator. About half the size of "N" is a good guess. SET HEIGHT (Keypad-3) - Asks for the height of a new font, then sets up the display to reflect that height. This command is only useful when creating a new font, and should never be used when editing an existing font (if it is invoked accidentally, it can be invoked again to set the correct height without hurting anything). EXIT (Control-C) - Exits MAKFNT. Character Operations *ERASE CHARACTER (Keypad-,) - Erases the current character. ERASE TO END OF LINE (Linefeed or Control-J) - Erases (sets to blanks) all blots from the cursor position rightward to the end of the line. INSERT COLUMN (Keypad-7) - Adds a blank column where the cursor is, moving the column the cursor is on and each one to the right of it down one. The rightmost column is lost. DELETE COLUMN (Keypad-8) - Deletes the column where the cursor is. Each column to the right of the cursor is moved left one. The rightmost column becomes blank. INSERT ROW (Keypad-9) - Adds a blank row where the cursor is, moving the row the cursor is on and each one below it down one. The bottom row is lost. DELETE ROW (Keypad--) - Deletes the row where the cursor is. Each row below the cursor is moved up one. The last row becomes blank. FLIP VERTICAL (Control-V) - Reverses the character (takes its mirror image) across its vertical center-line. This is useful to convert a "b" to a "d", for example. FLIP HORIZONTAL (Control-B) - Reverses the character across its horizontal center-line. Converts "b" to "q", for example. But note: the resulting character may be too high or too low in the frame, so some INSERT ROWs or DELETE ROWs may be necessary. SET INCREMENT (Keypad-2) - Asks the user to type a direction, expecting one of the four cursor keys, or CRLF. Then changes where the cursor is positioned after type-in, space, or CRLF, to the following: Direction typed: Cursor moves: CRLF moves: CRLF Right Start of next line RIGHT Right Column position of next line LEFT Left Column position of next line DOWN Down Row position of next column UP Up Row position of next column where the "column position" and "row position" are where the cursor is located when the SET INCREMENT command is typed. Character-Font Operations *SAVE CHARACTER (Keypad-0) - Asks for a name to save the character as, then stores the character in the font. The name now appears in the list of defined characters. Typing CRLF as the name of the character causes it to be saved as the scratch character. The scratch character is not written to the font file on disk. *KILL CHARACTER (Control-K) - Asks for the name of a character, then deletes the character from the font. The name no longer appears in the list of defined characters. RECALL CHARACTER (Control-.) - Asks for the name of a character, then retrieves the character from the font and displays it as the current character. Typing CRLF as the name of the character recalls the scratch character. RECALL CHARACTER can be canceled by asking for any character which is not defined, or a control character (except CRLF). KEYBOARD LAYOUT NUMERIC KEYPAD: ._________._________._________._________. ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! pf1 ! pf2 ! pf3 ! pf4 ! !_________!_________!_________!_________! ! INSERT ! DELETE ! INSERT ! DELETE ! ! COLUMN ! COLUMN ! ROW ! ROW ! ! ! ! ! ! ! 7 ! 8 ! 9 ! - ! !_________!_________!_________!_________! ! BEGIN ! REWRITE ! END ! ERASE ! ! LINE ! SCREEN ! LINE !CHARACTER! ! ! ! ! ! ! 4 ! 5 ! 6 ! , ! !_________!_________!_________!_________! ! CURSOR ! SET ! SET ! ! ! HOME !INCREMENT! HEIGHT ! ! ! ! ! ! ! ! 1 ! 2 ! 3 ! NEWLINE ! !_________!_________!_________! ! ! ! RECALL ! ! ! SAVE CHARACTER !CHARACTER! ! ! ! ! enter ! ! 0 ! . ! ! !___________________!_________!_________! CONTROL CHARACTERS: ._____._____. ._____._____._____._____. !CURS !READ ! !BACK ! ! UP !DOWN ! ! UP !FONT ! ! TAB ! TAB ! TAB ! TAB ! ! ! ! ! ! ! ! ! ! E ! R ! ! U ! I ! O ! P ! ._____.__!__.__!__.__!__. !__.__!__.__!__.__!_____! !APPND!CURS !CURS !WRITE! !ERASE!DELET! !FONT !LEFT !RIGHT!FONT ! ! EOL !CHAR ! ! ! ! ! ! ! ! ! ! A ! S ! D ! F ! ! J ! K ! !_____!__.__!__.__!__.__!__._____. !__.__!__.__! !CURS ! !FLIP !FLIP ! !NEW- ! !DOWN !EXIT !VERT !HORIZ! !LINE ! ! ! ! ! ! ! ! ! X ! C ! V ! B ! ! M ! !_____!_____!_____!_____! !_____! ALSO: LINEFEED: ERASE TO END OF LINE CRLF: MOVE TO START OF NEXT LINE RUBOUT: ERASE CHARACTER TO LEFT OF CURSOR