_Syntax8.Scn.Fnt ZParcElemsAlloc Syntax12.Scn.FntSyntax12b.Scn.Fnt&! #Syntax12i.Scn.Fnt5WY  Y' A Font Editor for Oberon Raster Fonts Matthias Hausner, 2. Sept. 1994  FontEdit is a font editor for raster fonts in the Oberon font format. Existing raster font files can be opened, modified and stored back to disk. This text assumes that the reader is familiar with the Oberon font model. An in-depth description of the font model can be found in M. Reiser: The Oberon System. User Guide and Programmer's Manual (Addison Wesley, 1991, ISBN 0_201_54422_9). A FontEdit viewer shows one character at a time. The viewer shows a coordinate plane with X and Y axes, relative to which pixel coordinates for character patterns are measured. Two horizontal dashed lines indicate the global font metric values minY and maxY. A vertical dashed line indicates the character's dx value. Below the coordinate plane, a probe string using the patterns of the edited font is displayed. Clicking the mouse at a pixel of the character and dragging it on the middle button moves the character relative to the (X, Y) origin. Clicking the mouse outside the character and dragging it on the middle button moves the X- and Y-axis relative to the viewer. The dx value of the character is changed by clicking at the vertical dashed line and dragging the mouse on the middle button. Clicking all three mouse buttons during one of these actions will restore the initial state once the mouse buttons are released. Clicking the left mouse button inside a FontEdit viewer passes the input focus to it. The input focus is visulized by solid X and Y axes. If the viewer has the input focus, individual pixels of the character are set or reset by clicking with the left mouse button. Typing characters to a FontEdit viewer that has the input focus will show the respective character pattern in the viewer. Typing the right or left arrow cursor movement key will show the next or previous character of the font. FontEdit.Open ( ^ | name ) Opens a new viewer displaying character images of the raster font contained in file name. If a text file with name FontEdit.Menu.Text is found, its text is shown in the menu of the viewer, otherwise a default menu is used. If the following commads are executed from a title bar of a FontEdit viewer, they take the character in the viewer as their parameter. If they are executed from arbitrary text, they take effect on the character in the marked viewer. FontEdit.Show ( ^ | character | ascii code ) Displays the character specified by the parameter. The first printable character in the text selection is shown. If the selection contains an ascii code in hexadecimal notation, followed by an X, the corresponding character is shown. FontEdit.CopyFrom Copies the character pattern and dx value to the focus viewer. FontEdit.SetHeight ( ^ | number | "default" ) Sets the font height to number pixels. If "default" is specified, the height of the font is set to maxY-minY. FontEdit.Undo Restores the state of the last time FontEdit.Commit was executed for that character, or the initial state if FontEdit.Commit was never executed before. FontEdit.Commit Remembers the current state for the character shown in the viewer. The next time FontEdit.Undo is executed for that character, the currently visible state will be restored. FontEdit.Next FontEdit.Prev Displays the character following (preceeding) the currently shown character. The commands are aequivalent to pressing the right and left arrow keys on the keyboard if the frame has the input focus. FontEdit.SetProbe ( ^ | name | string ) Sets the probe string to the specified value. FontEdit.Store Stores the font in a file whose name is taken from the title bar of the viewer. The current state of each character is stored. If the font height is smaller than maxY-minY, a warning appears in the log viewer. Acknowledgements The FontEdit program evolved from a program written by Robert Griesemer and Josef Templ in order to demonstrate the concept of Model-View-Controller separation in Oberon. It served as a model application for students attending the object-oriented programming class at ETH.