|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 14344 (0x3808) Types: TextFile Names: »fonttool.tex«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z« └─⟦036c765ac⟧ └─⟦this⟧ »TeX3.0/MFcontrib/fonttool/fonttool.tex« └─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89 └─⟦this⟧ »./tex82/MFcontrib/fonttool/fonttool.tex« └─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« └─⟦c58930e5c⟧ └─⟦this⟧ »TeX3.14/MFcontrib/fonttool/fonttool.tex«
\documentstyle[11pt]{article} \newcommand{\ft}{FONTTOOL} \newcommand{\pxl}{{\tt pxl}} \newcommand{\tfm}{{\tt tfm}} \newcommand{\mf}{{\sf METAFONT}} \begin{document} \title{\bf \ft} \author{Brad Rullman\thanks{Thanks go to Randy Day for large contributions to the first prototype of \ft. And some of the facilities provided by \ft\ were created at the suggestion of Pierre Mackay.}\\ Department of Computer Science FR-35\\ University of Washington\\ Seattle, Washington 98155\\ email: ecola@cs.washington.edu} \maketitle \section*{Introduction} \ft\ is a mouse-driven interactive font editor that works on \pxl\ files. A \pxl\ file contains raster descriptions at a particular resolution of the characters in a font, and is used by driver programs for dot matrix devices.\footnote{See {\it The Format of PXL Files}, a report by David Fuchs, for more information on \pxl\ files.} \ft\ is used to modify the characters described in the \pxl\ file; it is implemented on the Sun Microsystems Workstation. \section*{User Interface} The user operates with one main window on the screen, the {\it tool\/} window, which contains a header and several smaller subwindows. The user displays the tool window by typing ``fonttool'' once he/she is in Suntools\footnote{The Suntools graphics package is invoked by typing ``suntools'' at the prompt. Then it is necessary to obtain a shell window, by clicking the right mouse button and releasing it over the ``ShellTool'' option in the menu that pops up. Note that in Suntools, the right mouse button is usually designated as the menu button.} on a Sun workstation on which \ft\ has been installed. He quits by moving the mouse so that the cursor appears inside the header, clicking the menu button, and choosing ``Quit'' from the menu. This Tool Menu also allows the user to move, change the size of, hide, close, or expose the main \ft\ window. The four subwindows are dominated by the {\it Paint Window}. Here, the user operates on one font character at a time, which is magnified to make the manipulation of individual pixels convenient and easy. The {\it View Window\/} shows the character currently being modified at close to true size. Two smaller subwindows, the {\it Message Window\/} and the {\it Option Window}, help the user to perform his/her task. In the ensuing discussion, it should be remembered that for a Suntools window to be active, the mouse cursor must be somewhere inside it, otherwise typing or other action on the user's part will appear to have no effect in that window. \subsection*{The View Window} The function of the View Window is to show the character currently being edited at a one-to-one ratio between the Sun screen pixels and the dots that get printed by the output device for which the character is intended to be used. This allows the user to see the final product at as close to true size as is possible while still maintaining the correct resolution. For instance, if the \pxl\ file's raster description of a character is 32 pixels in height, the pixel height of the same character in the View Window will also be 32, but may actually be taller in absolute height due to the difference in sizes of the screen pixels and the \pxl\ file pixels, the dimensions of the latter being based on the resolution of the intended output device. The View Window provides instant visual feedback of the changes being made in the Paint Window. It's default size is 60-by-60 pixels, but if a character is loaded that exceeds either of these dimensions then the window is automatically enlarged so that the entire character fits inside. In addition, the user may manually change the size of the window by specifying new dimensions in the appropriate fields of the Option Window---the section of this manual titled {\it The Option Window\/} describes how to do this. \subsection*{The Paint Window} The Paint Window is where the user operates on an individual font character. For each pixel in the View Window there is a {\it cell\/} of {\it magnification}-by-{\it magnification\/} pixels in the Paint Window, where {\it magnification\/} is specified by the user. Generally, to ``paint'' the user selects individual cells by clicking the left mouse button over them. The middle mouse button can be used to erase (``paint'' white). If either button is held down, all pixels that lie under the path of the mouse cursor are painted. \ft\ provides other ``mouse modes'' for drawing lines and filling regions; these modes will be described in the next section. Clicking the right mouse button always invokes an ``Undo'' operation which causes the last paint action to be undone. Naturally, the user can Undo an Undo, i.e.\ consecutive Undo's toggle back and forth between the ``done'' image and the ``undone'' image. The Paint Window is exactly {\it magnification\/} times larger than the View Window in both dimensions, unless it becomes too large to fit inside the main tool window, in which case it is clipped. Remember, however, that the main tool window may be enlarged so that more of the Paint Window becomes visible. In addition, vertical and horizontal scroll bars are provided so that the user is always able to access any portion of the character. Associated with each character raster in a \pxl\ file is a reference point, which is a pair of coordinates that describes how to position the character on a line of text in a document. As an aid to the font designer, a reference point is provided in the Paint Window.\footnote{The reference point is displayed as an `X' the size of one cell.} Each character of a font that is being modified is displayed in the correct location in reference to this point, so that when the font is written and actually used by \TeX, the characters will be aligned properly when they are actually printed in a document. \subsection*{The Option Window} The Option Window presents the user with various choices he/she can make while editing a font. The user specifies his/her choice of a particular option by clicking the left mouse button over the label of that option. The various options are as follows: % \begin{itemize} \item {\bf PXL File} -- Normally the first option selected, this is a text field in which the user enters the name of a font's \pxl\ file. \item {\bf Open Font} -- The user clicks over this label once the name of a \pxl\ file has been typed into the text field labeled ``PXL File''. Doing so causes the \pxl\ file to be opened and data initialized. \item {\bf Char Name / or Char Number} -- The user selects the particular character raster he/she wishes to modify by entering the character in the ``Char Name'' text field, or by entering the character's ASCII number in the ``or Char Number'' text field. Typing in one field will automatically clear the other field. \item {\bf Load Char} -- When the label for this option is clicked, the raster of the character specified in the Char Name/Char Number fields is read from the \pxl\ file and is centered and displayed in both the View and the Paint windows. \item {\bf Save Char} -- Writes the raster displayed in the View Window to the current \pxl\ file, replacing the existing raster for the character specified in the Char Name/Char Number fields. The first time this option is selected after a new \pxl\ file has been opened also causes the extension {\tt .bak} to be appended to the name of the original \pxl\ file, and causes this file to then be copied to a file with the original name. All ensuing saves go to this copied file until either a new \pxl\ file is opened, or the same one is opened again. \item {\bf View Width / View Height} -- These text fields always reflect the current dimensions of the View Window, in pixel units. The user may edit these fields if he/she wishes to enlarge or shrink the View Window; clicking over the ``Apply'' button then causes \ft\ to resize the window and re-position the character so that it lies in the middle of the window. The user should be warned that this is a ``what you see is what you get'' window, so for example if the window is shrunk to a width that is less than that of the character that it displays, data from each vertical side of the character will be permanently lost.\footnote{Unless, of course, the character is then reloaded from the \pxl\ file, assuming that extensive modifications have not been made.} Also, the width or height is limited to the range 60--600, inclusive. \item {\bf Magnification} -- Currently the available magnifications are 1, 2, 4, 6, 8, and 10. The default is 10. When a new magnification is selected, the entire contents of the Paint Window are scaled to that magnification, and any ensuing paint operations will apply to the new image. \item {\bf Cell Type} -- Most output devices are either ``write-black'' or ``write-white'', in that they create images by writing black dots on a white background or by writing white dots on a black background. Since a font printed or displayed on a write-black device can look very different from the same font displayed on a write-white device, \ft\ provides the ``Cell Type'' options {\it Normal\/} (the default), {\it Write-Black}, and {\it Write-White}. Selecting either of the latter two options causes the entire contents of the Paint Window to be redrawn so as to simulate the corresponding type of device. The square {\it magnification}-by-{\it magnification\/} cells become circles;\footnote{These circles are, of course, not perfect due to the limited size and resolution at which they are produced. As a result, the effects of write-white, for example, are somewhat exaggerated in the Paint Window. However, this may actually be advantageous when one is attempting to design/modify a font for a write-white device.} each circle's diameter is equal to the length of the diagonal of a square cell. This facility allows font designers to make adjustments to their \pxl\ files that depend on the type of device on which the fonts are intended to be used. It should be noted that the monitor of the Sun Workstation is a write-white device, therefore the contents of the View Window, which are not magnified, should (one would think) reflect the character as it would look on a write-white device. However the people at Sun have employed a few tricks in order to reduce the effect that ``writing-white'' has on the edges of images drawn on the Sun screen, so in fact the View Window can never reflect {\it exactly\/} the contents of the Paint Window! \item {\bf Mouse Mode} -- The default mode of the mouse allows the user to paint individual points. The ``Mouse Mode'' option is used to select alternative modes that allow the user to draw lines, fill regions, and move the character's reference point. In ``Lines'' mode, the user can generate straight line segments by dragging with the mouse to indicate the endpoints of the line. After the first point has been designated, a line segment is dynamically displayed between that point and the mouse cursor as the cursor moves around the screen. Once the mouse button is released, the line segment is anchored. (Remember that the left mouse button paints black, and the middle button paints white.) The ``Fill'' mode lets the user fill an area delineated by a drawn outline by simply clicking the left or middle mouse button anywhere inside the area. \ft\ will then proceed to fill it in with the appropriate paint color. The character's reference point can be moved by selecting the ``Move'' mode, and clicking either the left or the middle mouse button at the new location. The new reference point will move with the mouse cursor until the button is released. The ``Undo'' mouse button (the right button) works in any of these modes. \item {\bf Clear} -- This is just an easy way to erase the entire character if the user decides he/she wants to start over. \end{itemize} The user should be aware that currently \ft\ does not modify the \tfm\ width\footnote{The \tfm\ width tells document formatters like \TeX\ how much horizontal space to leave on the page for a character. The \tfm\ width of each character is kept in both the \pxl\ file and in the corresponding \tfm\ file for the font being modified. See {\it \TeX\ Font Metric Files}, a report by David Fuchs, for more information.} of a character when the ``Save Char'' option is selected. The implication here is that extensive dimensional modifications to the character rasters should not be made, since this could result in poor placement of the characters immediately surrounding the modified one in any document in which the latter is used. The reason \ft\ does not touch the \tfm\ widths is that it was designed to be used to make the final, minor modifications to character bit-maps that are sometimes necessary after creating a font with \mf. Changing the \tfm\ widths in these instances would be disastrous, since then they would no longer coincide with the \tfm\ width fields in the corresponding \tfm\ file, and since the characters were designed to be used at these widths in the first place. Hopefully, in the future \ft\ will be used to {\it create\/} new fonts by using any existing \pxl\ file as a skeleton to contain the new rasters, and passing the resulting \pxl\ file through a {\tt pxltomf} filter, which will ``de-compile'' the bit-maps and create \mf\ code for them. This code can then be given to \mf\ as input so that the proper \tfm\ and \pxl\ files are produced.\footnote{This filter has actually been implemented, and is currently producing very low-level \mf\ code; work is continuing on producing higher-level code. Details can be found in Brad Rullman's forthcoming thesis.} \subsection*{The Message Window} The Message Window displays various messages to help the user interact with \ft. When the message is an error message, \ft\ rings a bell and flashes the window. Also, if the user makes some request that results in a time-consuming operation, such as filling a large region, the mouse cursor becomes a ``ticking watch'' to indicate that \ft\ is immersed in scaling operations, and that it might be a second or two before the user will regain control of the program. \end{document}