"Personal Fonts Maker - 13. Tutorial" 13. Tutorial 13.1 Starting with an Amiga Font 13.2 A Simple Macro 13.3 Modifying a PFM Font 13.4 Downloading a Font to the Printer 13.5 Interacting with a Word Processor 13.6 Creating a Word Processor Font Size Table 13.7 Patching a Printer Driver "Personal Fonts Maker - 13. Tutorial" 13. Tutorial This chapter contains step-by-step examples of "real world" applications of the Personal Fonts Maker package. 13.1 Starting with an Amiga Font Before the Personal Fonts Maker was developed, Amiga fonts could be printed by text processing software only in graphics mode. This is generally of poorer quality and reduced print speed, compared with the letter quality text mode standards of the printer. This example shows how an Amiga font can be loaded with the Personal Fonts Maker and converted into a Personal Fonts Maker font ready to be downloaded to a printer. Section 13.4 ("Downloading a Font to the Printer") continues explaining how to adapt the font to the format of the printer being used. Also in this example, the conversion of a font (in this case the Amiga "Topaz 8" font) into a different format. Before the Amiga font file is loaded, a font format must be specified. When the program starts, default values are assigned to the font format (sections 12.6.1, 1.11 and 2.6). Sections 7.1 ("Load Preferences") and 7.3 ("Font Description") explain how to modify the font format. The font format is used by the Personal Fonts Maker to determine, for example, the width to height ratio. This affects the way a font is displayed. If the "Y Max" parameter is set to a different value from the height of the font being loaded, for example, the Personal Fonts Maker allows the user to stretch the character images to the new size. In this example, the font format parameters should be set as follows: "X Max" to 36, "Y Max" to 24, "X Dpi" to 360 and "Y Dpi" to 180. This format works very well if the font is to be downloaded as a letter quality font to a 24-pin printer. "Y Max" could be set to 16 if the font was to be downloaded to a printer using 8 or 9 pins, which normally prints letter quality text in two passes, and can therefore use fonts whose height is at least 16. In general, multiples of 8 should be assigned to "Y Max" to define a font format used for printer download. Once the desired font format has been determined, an Amiga font can be selected. The "Import Amiga Font" (section 4.5) displays a font requester listing the names of the different Amiga fonts which are available. A double-click on the "topaz 8 of" gadget will cause the program to load the Amiga "Topaz" font whose height is 8. Since the current font format specifies a font height of 24 (or 16, depending on the printer being used in this example), a requester will appear asking the user how the difference between the font's format and the program's format should be handled. If the "Stretch" option is selected, the program will stretch the image of each character in the "Topaz" font to the new format. Section 7.10 ("Stretch") explains how different stretch options can be selected. As described in section 2.8 ("Character Sets"), the Personal Fonts Maker can work with character sets other than the Amiga set. This makes it possible to design fonts which can be interpreted by programs and printers using different character sets. During loading, the characters of the Amiga font are reordered so that they are placed in the correct positions according to the character set which is being used. Sections 4.8 ("Load Character Set"), 4.10 ("Define Character Set") and 4.11 ("Edit Character Set") have more on this subject. This example assumes that the "PC_Usa2" set (the default set) is used. After the load operation is completed, the character editing box will contain an "enlarged" version of one of the characters in the "Topaz" font. Most characters need to be retouched manually by the user, as new details can be added to the characters thanks to the higher resolution. These changes can easily be made by using the mouse to edit the characters directly, as described in chapter 3. A macro like "SetSpcKrn" (section 12.5.5) can be executed on all characters in the font with the "Controlled Execution" function (section 6.8). This will quickly set the "Space" and "Kerning" parameters of all the characters to a standard value. Finally, the font can be saved. The "Save PFM Font" (section 4.4) function allows the user to specify the device, drawer and name of the file to be saved, as explained in section 3.23 ("The File Requester"). A suffix can be appended immediately after the font's name, as described in section 1.4 ("File Names and Titles"). A correct file name for the font of this example could be "Topaz_24.fnt". 13.2 A Simple Macro This example shows how easy it is to record a macro which places a shadow under a character image. As described in section 12.5.1 ("The 'Shadow' Macro"), the same macro is already included with the Personal Fonts Maker package. As explained in chapter 6, to record a macro it is sufficient to execute the operations manually while the record mode is active. A character should be displayed in the editing box, so that the result of each change can be verified immediately. In this example, an 'A' character of the "Gemini_24" font is used to record the macro. In practice, it does not matter which character is used, as the macro is independent from the character and the font on which it was recorded. Before the recording of the macro is started, all special modes like the "OR" mode, the "Brush" mode or the "Define Brush" mode (sections 3.16, 3.17 and 3.18) should be disabled. The position of the brush handle (section 5.9) should be set to "Upper Left" (section 5.9.1). The current character must be "On" (section 3.10). The coordinates should be displayed on the title bar in the "Start 0:0" mode (section 7.5.1). The "Copy to Buffer" function (section 3.11) should be selected, so that a copy of the original character image is always available. This can be useful if the image is to be restored after a mistake is made, or before the macro is re-executed on the entire font (including the current character, which would be "shadowed" a second time). To start the macro record mode, the "Start Record" command must be selected (section 6.3). In the macro requester, which appears automatically, the 'A' element in the list box (or any other one) should be selected with the mouse, to indicate that the macro which will be recorded should be assigned to the key of the keyboard. The name of the macro, "Shadow" in this example, must be written in the string gadget at the bottom of the requester. After the "Proceed" gadget is selected, the macro record mode begins. The first instruction to be recorded is the selection of the entire character as a brush. To do this, the "brush definition" mode must be activated, by selecting the "Define Brush" gadget, as described in section 3.18. To mark the brush rectangle, the left mouse button must be pressed when the mouse pointer is over the top left dot in the character editing box. The mouse must then be moved (with the left button still pressed) until the pointer is both to the right of the character editing box and below it. The mouse button must not be released when the mouse pointer is over the bottom right dot of the box. The mouse button should be released only when the highlighted region includes the entire character image and the mouse pointer is beyond the bottom right corner of the character editing box. This ensures that the macro records a command like "The entire character should be defined as a brush", rather than "Mark brush from 0:0 to 26:23". This latter command would leave out parts of characters larger than 27 by 24. The definition of the brush automatically activates the "Draw with Brush" mode. The "OR" mode must also be activated, by selecting the "OR" gadget (section 3.16). A shadow will make the character wider. To make room for the shadow of this example the right arrow gadget associated with "X Size" must be pressed twice. This will add two columns to the character width. At this point, the brush can be used to draw a shadow to the right of the character. To do this, the mouse pointer must be moved until the coordinate box on the title bar displays "2:2". In this position, the left mouse button should be pressed and released. The shadow has been drawn. Now the dots between the shadow and the character need to be cleared, otherwise the shadow cannot be distinguished from the character. To do this, the brush outline must be moved by one dot up and to the left, so that the coordinates on the title bar are "1:1". The right mouse button must be pressed and released in this position to clear the dots. Finally, the original character must be restored, as the previous operation has cleared most of the character image. This can be done by pressing and releasing the left mouse button when the brush coordinates are "0:0". To terminate the macro gracefully, the "OR" mode and the "Draw with Brush" mode should be terminated (sections 3.16 and 3.17). This ensures that after the macro is executed the normal environment is restored. The "End Record" function (section 6.4) must be selected to end the recording of the macro. The macro can now be tested. To do this on the same character, the "Paste from Buffer" option (section 3.12) can be used to restore the original character image, if it was copied to the buffer before the recording of the macro began. The "Execute Macro" function (section 6.7) can be used to execute the macro on the current character, while "Controlled Execution" (section 6.8) will repeat the macro on all "On" characters in the font, or on another user-defined range. The "Examine Macro" (section 6.6) and "Step Execution" (section 6.10) options can be selected for a better understanding of the macro. The "Save Macro" function (section 6.2) will save the macro to a file, ready to be loaded whenever necessary. In this example, the "OR" mode and the "Brush Definition" mode are disabled before the start of the macro recording and activated during the recording. This is absolutely correct and makes the macro more readable and elegant, since all the commands necessary for the macro to work properly are explicitly executed during the recording of the macro. It is, however, possible to create a functionally equivalent macro, with two commands less. This can be done by activating the "OR" mode and the "Brush Definition" mode only before the start of the recording. This can be done because the Personal Fonts Maker always places at the beginning of each macro a set of commands which describe the initial editing environment. 13.3 Modifying a PFM Font This example shows how to create a full 8-bit font starting from a Personal Fonts Maker font containing only characters defined by the 7-bit US ASCII set, whose code is smaller than 128. In general, it is more convenient to first design the basic letters of the US ASCII set, and then copy these letters to the positions where national variants of these characters should appear. It is easier to modify an existing character rather than designing a new character, especially if it is important to maintain a style which is coherent with the other characters in the font. All the fonts which come with the Personal Fonts Maker package have the national characters and other signs which are not part of the US ASCII character set already defined. Other fonts, originally designed to be used in a less international environment, can be extended as explained here. Before any font is loaded, it is important that the correct font format is selected. This can be done with the requester described in section 7.3 ("Font Description"). Normally, the format does not need to be changed manually, as the most used formats can be saved to and recalled from a file (sections 7.1 and 7.2). As explained in sections 1.11, 2.6 and 12.6 it is even possible to define two different font formats to become the default formats when the program is loaded. If only the characters defined by the US ASCII set are used, it does not matter very much whether the current character set is the Amiga set, the IBM PC set or the Macintosh set, as most 8-bit sets share the subset of codes defined by the 7-bit US ASCII set. When, however, a 7-bit font has to be extended to an 8-bit character encoding format, it is important to decide which set to choose. Section 2.8 ("Character Sets") has more on character sets. It is possible to convert a font from one character set to a different set using the Amiga font format as an intermediate step in the conversion, as described in sections 4.5 ("Import Amiga Font") and 4.6 ("Export Amiga Font"). Characters not shared by the source set, the target set and the Amiga set are not converted. Once the font with the 7-bit encoded characters is loaded, the longest and most annoying work is the creation of all variations of the existing letters, i.e. all the characters (capitals and lower case letters) with accents and other diacritical signs. Copying the existing letters to all the positions where these characters only need to be modified greatly simplifies this job. If this operation has to be done only once, as described in the introduction to chapter 6, the repetitive work is reduced to a minimum. As described in section 12.5.4, the set of "CopyOver127" macros was developed to ease the creation of fonts which are a superset of existing fonts. Similar macros can be designed by the user to work with different character sets. The macro "CopyOver127" does exactly what the user would do. It copies some of the existing letters to the positions where similar letters are to be designed. For example, the 'u' letter is copied to those positions in the font where the letters 'ü', 'ù', 'ú' and 'û' will have to appear. Once the basic 'u' image is in these positions, it is extremely easy to add an umlaut or an accent. It is even possible to design a set of diacritical signs which can be pasted over the "normal" characters whenever necessary. These diacritical signs could be temporarily stored in the other font environment, and automaticaly pasted over the images written by the "CopyOver127" macro with a second macro. Of course, some manual retouching will always be necessary, as different letters may require the signs to be placed at different heights. To execute the "CopyOver127" macro, it is sufficient to select the "Execute Macro" function (section 6.7). There is no need to use the "Controlled Execution" function (section 6.8), as the macro already contains the instructions to select the different characters. It is important that the selected "CopyOver127" macro works on the character set being used, as different character sets have the letters with diacritical marks at different positions. The sets which are most used with the Personal Fonts Maker are the printer's character set and the set of the host computer. Once the font has been completed, it can be saved as described in sections 4.4 ("Save PFM Font") and 4.6 ("Export Amiga Font"). 13.4 Downloading a Font to the Printer Once a font has been loaded, created or modified, as shown in the examples of sections 13.1 to 13.3, it can be downloaded to the printer. Its ability to output the data from any font in the format required by different printers is one of the most interesting features of the Personal Fonts Maker. Section 2.5 ("Downloaded Printer Fonts") contains a general introduction to downloaded fonts. For this example, the "Andromeda" font will be used. The font will be downloaded as a letter quality, proportionally spaced font. Depending on the printer being used, either the "Andromeda_24" or the "Andromeda_16" font can be used. The first is ideal for 24-pin printers, while the second is more suited for 8/9-pin and 18-pin printers. Before the font is loaded, the correct font format must be specified. This can be done through the "Font Description" requester (section 7.3) or by loading an existing parameter file (section 7.1, "Load Preferences" and 12.6.4, "Parameter Files: Printer Font Descriptions"). Only the first four parameters need to be set ("X Max", "Y Max", "X Dpi" and "Y Dpi"). These will allow the program to stretch the font if it does not already fit the printer's format. The font can be loaded as described in section 4.3 ("Load PFM Font"). If a requester appears, informing the user that the selected font has a different format from the current font format, either the "Proceed" or the "Stretch" gadgets of the requester should be selected. The "Proceed" option should be selected only if the current font has a maximum width ("X Max") wider than that of the font being loaded, but the current height is equal to (or slightly higher than) that of the selected font. At this point, the font loaded by the Personal Fonts Maker has the dimensions required by the printer's download format. It is now necessary to select the correct FFDL sequences which will send the font data to the printer. The sequences are loaded automatically when the font parameters are loaded from a file (section 7.1, "Load Preferences" and 12.6.4, "Parameter Files: Printer Font Descriptions"). If the FFDL sequences in the selected parameter file already match the format of the printer, no changes need to be made to the font description. To check whether the current font format works properly on the printer being used, there is no better way than to test it. The two "Printer Test" functions (section 4.12) perform a download and a test print. The "Printer Test/Character" function downloads and prints only the current character. This makes it easier to isolate and track down any errors, and will not print too many "garbage" characters if the printer does not interpret the data as a font download. As described in section 7.3 ("Font Description"), it is very important that the FFDL sequences are set properly for the download to succeed. The following are examples of valid FFDL sequences which could be used to download the font described here. "Prologue" (section 7.3.5): Epson "ESC/P" (Epson Standard Code for Printers), NEC Pinwriter: ESC \% (0) ESC \x (1) ESC \: NUL NUL NUL NEC Pinwriter Plus: FS \W (1) ESC \% (0) ESC \x (1) ESC \: NUL NUL NUL IBM "Compatibles": ESC \: NUL NUL NUL IBM Proprinter: ESC \I (3) ESC \= (0) (0) Fujitsu DPL24C/DPL24I: ESC \: NUL (0) (0) The "Prologue" selects a ROM (resident) font and copies its characters to the download memory. The NEC Pinwriter Plus printers require the initial "FS \W (1)" sequence (memory-set) in order to select the 8-bit character encoding mode, rather than the 7-bit mode, which would not allow characters whose code is greater than 127 to be downloaded. On some printers one or more DIP switches, or software parameters (memory/soft switch), must be set before the printer's memory can be used for the downloading of characters. In the above examples, the IBM Proprinter is set in the fixed-width letter quality mode. "ON Sequence" (section 7.3.6): Epson "ESC/P", NEC Pinwriter and Pinwriter Plus: ESC \& (0) CNUM CNUM (1) XSIZ (1) VDAT IBM "Compatibles": ESC \= (0) CNUM CNUM (1) XSIZ (1) VDAT IBM Proprinter: ESC \= x(1*48+2) (21) CNUM (0) (0) VIDT REPT((46-LENG(VIDT)),NUL) Fujitsu DPL24C/DPL24I: ESC \& (0x10) CNUM CNUM XSIZ VDAT The "ON Sequence" is repeated once for every "On" character in the font, sending the character's code, size and image data to the printer. Each character is downloaded individually, as one or more "Off" characters could interrupt the sequence of "On" characters (unless "Off" characters are sent as well, as described in sections 7.3.7 and 12.6.4). The "(21)" code in the IBM Proprinter sequence is the identification code for the Letter Quality II font on the IBM 4201/002 printer. Other codes can be used. The code for a draft font on an IBM 4202 or 4201/002 printer model is "(20)". Since the fixed width mode is used in the IBM Proprinter, a "REPT" instruction has been added to convert the characters of the proportionally spaced font to a fixed width, by adding some trailing "NUL" codes. "Epilogue" (section 7.3.8): Epson "ESC/P", NEC Pinwriter and Pinwriter Plus, IBM "Compatibles": ESC \% (1) IBM Proprinter: ESC \I (7) Fujitsu DPL24C/DPL24I: ESC \% (5) (0) The "Epilogue" is sent to the printer at the end of the download, activating the print mode in the downloaded font. The sequence for the IBM Proprinter 4201/002 selects the Letter Quality II downloaded font. This sequence is ignored by the 4202 model. The terminating "(7)" code can be replaced with "(4)", "(5)" (not on the 4202 model) and "(6)", to respectively select the draft, 12 CPI FastFont and Letter Quality downloaded font. A "Range" (section 7.3.9) from 32 to 126 (decimal codes) should work on most printers. The widest possible range is 0 to 255. The printer's documentation should be read to verify which characters can be downloaded. Another restriction may be imposed by the available memory. Section 12.1 ("TextChars") explains what can be done if the printer's memory is not sufficient to store all the characters in a font. Once the font format and the FFDL sequences have proven to work properly, the entire font can be downloaded. The "Write Font Data" functions (section 4.13) can be used to send the font either directly to the printer, or to a file. Section 13.5 ("Interacting with a Word Processor") explains how the downloaded font can be used from a word processor. 13.5 Interacting with a Word Processor Word processors can print text in two ways: in text mode or in graphics mode. When the text mode is selected, the program sends a stream of characters and control codes to the driver, which in turn sends the data to the printer. In this mode, the images of the characters to be printed must already be in the printer's memory, either in the ROM, or in the download area. If a font has been downloaded, it can be used by a program printing in text mode. When a program prints in graphics mode, it outputs the entire text as an image. This means that each individual dot which makes up the resulting text must be sent by the word processor. Since such a large amount of data has to be sent (and translated by the driver), this technique is much slower than the text mode. Also, the (poorer) quality of a text printed in graphics mode is usually not comparable with the letter quality text modes built into modern printers. To use a font designed with the Personal Fonts Maker with software which prints the text in graphics mode, the font must be saved in the Amiga format (section 4.6) and loaded as an Amiga font by the program which has to print it. This section explains how to use a downloaded font printing in text mode. Section 13.4 ("Downloading a Font to the Printer") explains how to create the font download data and send it to the printer or to a file. The same data which is normally sent to the printer to print with a downloaded font (section 4.13.2, "Write Font Data/Printer") can be sent to a file (section 4.13.1, "Write Font Data/File"), from where it can be used whenever necessary. Section 12.2 ("PrintRawFiles") explains how to send the font download data stored in a file to the printer. To download such a font, it is sufficient to double click on the file icon. This will automatically execute the PrintRawFiles program. PrintRawFiles can also appear in the Startup-Sequence, from where it could be used to automatically download a font to the printer whenever the system is booted. With most word processors it is possible to download a file without having to use PrintRawFiles. The "Print File" function of Cloanto's Personal Write word processor, for example, allows the user to send any file to the printer, without modifying the file's content (or allowing the printer driver to do so). The "Printer Control File" of the same word processor allows the user to select a file which is to be automatically sent to the printer before each print. Whatever method is used to send the printer download data contained in a file to the printer, it is important to remember that the data must be received by the printer "as is". The Personal Fonts Maker already writes the font download data in the printer's format. Any further processing, by a printer driver or any other software, is likely to make the file unrecognizable by the printer. Once the font has been sent to the printer, either by the Personal Fonts Maker, by PrintRawFiles or by another program, it can be used to print the text. The FFDL sequence associated with the "Epilogue" parameter usually contains the control sequences which instruct the printer to use the downloaded font. If this is not the case, such a command must be sent to the printer by the word processors. Most programs cannot do this, as this function is not supported by the Amiga printer drivers. For this reason, it is important to activate the font by placing the appropriate control codes in the "Epilogue" sequence. Once this command is received by the printer, the program printing the text should not send a command selecting a different font, as this would restore the printer's default ROM font (or another soft font). If the "Printer Test" function (section 4.12) of the Personal Fonts Maker seems to work properly, downloading and printing a font, but the same font cannot be used by a word processor, it is likely that the word processor automatically selects a different font at the beginning of the print. If this is the case, the parameters of the word processors should be set so that the program does not automatically set a font of the printer before printing the text. Once a font has been downloaded, the new font can also be selected from the printer's control panel. Some printers can even be programmed to use the downloaded font as the default font at power-up. The solution suggested before, i.e. sending the appropriate font activation codes to select the downloaded font, is the one which works most efficiently on the majority of printers. Section 14.2 ("Problems with Printers") describes some problems which may be encountered when working with a printer. 13.6 Creating a Word Processor Font Size Table The Personal Fonts Maker package contains an interesting parameter file, called "SizeTable.prf" (section 12.6.3). The commands of the Font Format Description Language contained in that file are capable of creating a size table indicting the width of each character in the current font. This application, which may seem unusual to those who have used the FFDL only to create font files, is only one of the many examples of the power and flexibility of the Font Format Description Language. Many word processors can use different fonts to print the text. If the font used to print the text is not the same as the font loaded in the word processor's memory, the program will not be able to format the printed text correctly, unless all the characters have the same width, or the printer justifies the text. Some programs allow the user to specify the width of every character in the font used by the printer. Once this table is complete, the word processor "knows" about the new font, even if it is a downloaded font, and can justify, center and align the text properly. This does not need to be done if the printer can format the text automatically, and the word processor supports this function. The "SizeTable.prf" can be loaded, as any other parameter file, with the "Load Preferences" function (section 7.1). One of the "Write Font Data" functions (section 4.13) can be used to print the table, or send it to a file, from where it can be loaded, viewed and printed with a word processor. The table displays a value for each "On" character in the font. The value includes the width of the character image, plus the additional margins to the left and the right of the character. This is the sum of the "Space" and "Kerning" parameters, which is displayed (or printed). "X Size" is not considered. The existing FFDL sequences can, of course, be viewed and modified by the user to create a different kind of table. For example, "X Size" may be used instead of the sum of "Space" and "Kerning". At the end of each line of the table a CR+LF (Carriage Return + Line Feed) combination is output. This works well on most printers, and is also handled by a majority of word processors, should the data be output to a file. The FFDL sequences can be modified to output only a LF (Line Feed, decimal value 10) code if a file following the Amiga default rules for plain text formats is to be created. The following is a sample table, generated by the FFDL sequences contained in the "SizeTable.prf" file, relative to the "Pegasus_24" font: ========================================================== PFM Size Table ========================================================== 0 1 2 3 4 5 6 7 8 9 +----------------------------------------------------- 0 | -- -- -- -- -- -- -- -- -- -- 10 | -- -- -- -- -- -- -- -- -- -- 20 | -- 21 -- -- -- -- -- -- -- -- 30 | -- -- 24 7 17 25 23 24 25 8 40 | 14 14 22 22 8 20 8 23 17 12 50 | 23 20 21 18 18 19 18 18 8 8 60 | 18 20 18 22 27 31 27 29 31 32 70 | 35 29 31 27 29 31 31 34 33 29 80 | 32 32 29 28 31 29 23 32 29 28 90 | 28 11 23 11 17 28 8 24 21 21 100 | 23 21 20 25 20 11 24 24 11 31 110 | 23 23 23 23 21 22 17 23 23 32 120 | 24 22 24 16 5 16 22 -- 29 23 130 | 21 24 24 24 24 19 21 21 21 17 140 | 15 11 27 27 31 29 36 21 22 21 150 | 23 23 22 27 27 21 33 35 39 25 160 | 24 14 21 23 23 33 18 20 22 -- 170 | -- 32 30 7 29 29 -- -- -- -- 180 | -- -- -- -- -- -- -- -- -- -- 190 | -- -- -- -- -- -- -- -- -- -- 200 | -- -- -- -- -- -- -- -- -- -- 210 | -- -- -- -- -- -- -- -- -- -- 220 | -- -- -- -- -- 21 -- -- -- -- 230 | -- -- -- -- -- -- -- -- -- -- 240 | -- -- -- -- -- -- -- -- 16 -- 250 | -- -- -- -- -- -- 13.7 Patching a Printer Driver As described in chapter 9, existing Amiga printer drivers can sometimes be improved if they are modified with the Printer Driver Modifier. Section 9.2 ("Problems with Standard Drivers") describes the complex control sequences used by the Epson X, Epson Q, NEC Pinwriter and other printer drivers to print a simple '½' (one half) character. Rather than overlapping a '1' (one), a '-' and a '2' sign moving the printer head back and forth, it is possible to use the '½' character which is already built into most printers. This example shows how to replace the existing sequence with the code associated with the '½' character in the IBM PC set, shared by the printers mentioned above. Printer drivers are stored in the "printers" drawer, inside the "devs" drawer of the Workbench and Extras disks. The Extras disk usually contains all printer drivers. If the Printer Driver Modifier is used for the first time, it is better to use a copy of the disk on which the drivers are stored before this example is repeated. This will prevent any undesired changes being made to the drivers. To load the Printer Driver Modifier it is sufficient to double click its Workbench icon. Next, the printer driver must be loaded. To do this, the "Load Driver" function (section 10.1) must be selected. In the file requester displayed by this function, the file containing the driver can be chosen from the names displayed in the list box. Among those names, "EpsonQ", "EpsonX" and "Nec_Pinwriter" would all work fine for this example. The driver is loaded immediately after the "Proceed" gadget of the file requester is selected. To access the sequence associated with the '½' character, the "Section/Character" option must be selected (section 10.7.2). The "Number" string gadget must be activated, the value contained in the gadget deleted with the and keys, and the keys <1>, <8>, <9> and typed. This will display the control sequence associated with the character whose Amiga code is 189, which is '½', in the editing gadget (section 9.4.2). The editing gadget should be selected with the mouse, and its entire content deleted (pressing while is held down, or using the and keys). The FFDL constant "(171)" (without quotes, but with the parentheses) should be written in the editing gadget. If the printer driver is saved, the decimal code 171 will be sent to the printer whenever a program using that printer driver prints a '½' character. To save the printer driver, the "Save Driver" function (section 10.2) must be used. It is always a good practice to have a copy of the driver being modified available, in case the result of the changes needs to be reversed. Also, the modified driver should be saved with a name different from that of the original driver. In this way, the Printer Driver Modifier will be able to identify it as a variant of an original driver and issue the "Internal Name Mismatch" message (more in appendix H) when that driver is loaded again.