acFontedit

the only font editor that supports no more than keyboard keys.


SUMMARY

acFontedit is a brief exploration in font editing interface (and also a tool for editing real JVF vector font files for use in ACU). Open a font file to have its letters represented by keys on a keyboard. Bring keys to the foreground for edit by typing. The file & text edting dialogs come to you as text springing out of the mouse's position. Your mouse X and Y position effect the text's scale and rotation, in order to test the different sizes and placements of the font as you work. In addition to creating and editing points, you can also drag two bars around. The horizontal bar specifies the font's overall leading (how far it will shift down for a new line). The vertical bar on the left specifies each letterform's individual spacing (this is how much the string drawing function will shift to the right before drawing the next letter). Letter spacing and leading are illustrated by repetitively drawn dark gray ghosts of the current letterform in the bottom left hand corner of the screen.

METRICS

The default editing square for a letterform is 1 unit. Of course, you can draw outside this bound, as well as adjust the letter spacing bar so that it is no longer at 1.0. (0,0) is at the bottom left corner. The grid snaps at increments of 0.01. In making 4 fonts using this application, I have found this to be enough for me. If you want more control, you can always open up the JVF file and edit the commands by hand.

COMMANDS

CTRL + Open
CTRL + Save
CTRL + Type
CTRL + Alias
CTRL + Point
CTRL + Grid
ESC
SPACE
DEL
LEFT & RIGHT
command line :

Brings up the file name mouse-console. Type a filename and press enter.
Saves the current open file - if a file is open.
1. Saves 2.Brings up the typing mouse-console.
Toggles aliased & antialiased for the mouse-console text.
Toggles crosshairs
Toggles the drawn grid
Escapes the mouse-console, or quits the program.
Disconnects any points connected to the mouse
Deletes a highlighted point and disconnects any points connected to the mouse
Shifts all of the letter spacing bars in the whole font 0.01 to the left or right.
(Args not implemented until acwin's message system works - I fear I will be gone by then)
CLICKS

click on empty space to make a point. click again on empty space to complete a line by making a second point. double click (or hit space or delete or the letter's key) to start a new line. click a point to highlight it. drag a point to move it around.

TYPES

Type a key to bring up the according letter for editing. Typed letters are redirected to the mouse-console if it is open.

TRICKS

Although I have not included crazy coordinate processing math or Adobe-competitive vector line editing intuitive functionality into this editor, I have found these simple tricks to help a lot:

When drawing new points, mouseDown in an open space, and drag that point into wherever it's supposed to go, then mouseUp. That way, you won't pick up a nearby point trying to draw new ones beside it.

When drawing a line strip, you can close it by clicking on any existing point; however, you cannot start at a point and continue from there. Since there is grid snap, you can always drag a new point ontop of that one, and then go from there. To REALLY merge those points into one point, save, quit, then open again. Overlapping points are written to the file as one point, and are read into the editor as a single coordinate pointer.

Sometimes I want to copy the O letter into other letters like C or Q - I do this by opening up the JVF file in a text editor and copy-pasting the C O commands into the commands under C Q and C C (see the JVF spec).

BUGS

FileIO is a little tricky with creating new JVF files. To create a new file, open a non-existent file name, and then save it. This crashed on me once and I couldn't reproduce it. It won't harm the work you've done. Just make sure all your files have the appropriate permissions as I don't warn you if nothing saved.

The first couple points are a little wiggy. Sometimes when starting a new letter, your very first point may not connect to the second. Until I can figure this out, you can make it a habit of deleting the first point.

Sometimes one line out of the whole font doesn't get saved. I think it has to do with the line having a point exactly at (0,0). In order to test that your letter is drawn, you can use Ctrl+T to look at it. If a line is not drawn in Ctrl+T, try drawing a second identical line over the existing line.


JVF specification

JVF was designed to be a lighter, vector-based alternative to drawing bitmapped fonts with openGL in ACU. It is paired with some ACU functions (acuDrawString(), acuLoadFont(), and acuUnloadFont()) that draw it on an acApp or acGeo. Being at acApp itself, fontEdit loads JVFs with these functions for the Type command.

a JVF font is a series of line-seperated ascii commands with their arguments seperated by spaces.
commands:
C j
Starts a new character (in this case, the character is 'j').
W 1.100
Specifies the letter spacing for the current character (in this case, 1.1).
L 0.501 0.505
LineTo - connects the point specified to the current point. If the character is new then no line is drawn, and simply a new point is specified.
M -1.04 0.0003
MoveTo - changes the current point to the specified point.
D 1.003
LeaDing - specifies how far down to shift at a newline. This only needs to be called once in the file.
# this is a comment


have fun


-the imported UROP
jtnimoy@ucla.edu
nimoy@media.mit.edu