home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / PFONTM-A.DMS / in.adf / Chapter13 < prev    next >
Encoding:
Text File  |  1995-11-12  |  33.4 KB  |  649 lines

  1.  
  2. "Personal Fonts Maker - 13. Tutorial"
  3.  
  4.  13. Tutorial
  5.   13.1 Starting with an Amiga Font
  6.   13.2 A Simple Macro
  7.   13.3 Modifying a PFM Font
  8.   13.4 Downloading a Font to the Printer
  9.   13.5 Interacting with a Word Processor
  10.   13.6 Creating a Word Processor Font Size Table
  11.   13.7 Patching a Printer Driver
  12.  
  13. "Personal Fonts Maker - 13. Tutorial"
  14.  
  15.  
  16. 13.        Tutorial
  17.  
  18.    This chapter contains step-by-step examples of "real world"
  19. applications of the Personal Fonts Maker package.
  20.  
  21.  
  22. 13.1       Starting with an Amiga Font
  23.  
  24.    Before the Personal Fonts Maker was developed, Amiga fonts could be
  25. printed by text processing software only in graphics mode. This is
  26. generally of poorer quality and reduced print speed, compared with the
  27. letter quality text mode standards of the printer.
  28.  
  29.    This example shows how an Amiga font can be loaded with the Personal
  30. Fonts Maker and converted into a Personal Fonts Maker font ready to be
  31. downloaded to a printer. Section 13.4 ("Downloading a Font to the
  32. Printer") continues explaining how to adapt the font to the format of the
  33. printer being used. Also in this example, the conversion of a font (in
  34. this case the Amiga "Topaz 8" font) into a different format.
  35.  
  36.    Before the Amiga font file is loaded, a font format must be specified.
  37. When the program starts, default values are assigned to the font format
  38. (sections 12.6.1, 1.11 and 2.6). Sections 7.1 ("Load Preferences") and 7.3
  39. ("Font Description") explain how to modify the font format. The font
  40. format is used by the Personal Fonts Maker to determine, for example, the
  41. width to height ratio. This affects the way a font is displayed. If the "Y
  42. Max" parameter is set to a different value from the height of the font
  43. being loaded, for example, the Personal Fonts Maker allows the user to
  44. stretch the character images to the new size.
  45.  
  46.    In this example, the font format parameters should be set as follows:
  47. "X Max" to 36, "Y Max" to 24, "X Dpi" to 360 and "Y Dpi" to 180. This
  48. format works very well if the font is to be downloaded as a letter quality
  49. font to a 24-pin printer. "Y Max" could be set to 16 if the font was to be
  50. downloaded to a printer using 8 or 9 pins, which normally prints letter
  51. quality text in two passes, and can therefore use fonts whose height is at
  52. least 16. In general, multiples of 8 should be assigned to "Y Max" to
  53. define a font format used for printer download.
  54.  
  55.    Once the desired font format has been determined, an Amiga font can be
  56. selected. The "Import Amiga Font" (section 4.5) displays a font requester
  57. listing the names of the different Amiga fonts which are available. A
  58. double-click on the "topaz 8 of" gadget will cause the program to load the
  59. Amiga "Topaz" font whose height is 8. Since the current font format
  60. specifies a font height of 24 (or 16, depending on the printer being used
  61. in this example), a requester will appear asking the user how the
  62. difference between the font's format and the program's format should be
  63. handled. If the "Stretch" option is selected, the program will stretch the
  64. image of each character in the "Topaz" font to the new format. Section
  65. 7.10 ("Stretch") explains how different stretch options can be selected.
  66.  
  67.    As described in section 2.8 ("Character Sets"), the Personal Fonts
  68. Maker can work with character sets other than the Amiga set. This makes it
  69. possible to design fonts which can be interpreted by programs and printers
  70. using different character sets. During loading, the characters of the
  71. Amiga font are reordered so that they are placed in the correct positions
  72. according to the character set which is being used. Sections 4.8 ("Load
  73. Character Set"), 4.10 ("Define Character Set") and 4.11 ("Edit Character
  74. Set") have more on this subject. This example assumes that the "PC_Usa2"
  75. set (the default set) is used.
  76.  
  77.    After the load operation is completed, the character editing box will
  78. contain an "enlarged" version of one of the characters in the "Topaz"
  79. font. Most characters need to be retouched manually by the user, as new
  80. details can be added to the characters thanks to the higher resolution.
  81. These changes can easily be made by using the mouse to edit the characters
  82. directly, as described in chapter 3.
  83.  
  84.    A macro like "SetSpcKrn" (section 12.5.5) can be executed on all
  85. characters in the font with the "Controlled Execution" function (section
  86. 6.8). This will quickly set the "Space" and "Kerning" parameters of all
  87. the characters to a standard value.
  88.  
  89.    Finally, the font can be saved. The "Save PFM Font" (section 4.4)
  90. function allows the user to specify the device, drawer and name of the
  91. file to be saved, as explained in section 3.23 ("The File Requester"). A
  92. suffix can be appended immediately after the font's name, as described in
  93. section 1.4 ("File Names and Titles"). A correct file name for the font of
  94. this example could be "Topaz_24.fnt".
  95.  
  96.  
  97. 13.2       A Simple Macro
  98.  
  99.    This example shows how easy it is to record a macro which places a
  100. shadow under a character image. As described in section 12.5.1 ("The
  101. 'Shadow' Macro"), the same macro is already included with the Personal
  102. Fonts Maker package.
  103.  
  104.    As explained in chapter 6, to record a macro it is sufficient to
  105. execute the operations manually while the record mode is active. A
  106. character should be displayed in the editing box, so that the result of
  107. each change can be verified immediately.
  108.  
  109.    In this example, an 'A' character of the "Gemini_24" font is used to
  110. record the macro. In practice, it does not matter which character is used,
  111. as the macro is independent from the character and the font on which it
  112. was recorded.
  113.  
  114.    Before the recording of the macro is started, all special modes like
  115. the "OR" mode, the "Brush" mode or the "Define Brush" mode (sections 3.16,
  116. 3.17 and 3.18) should be disabled. The position of the brush handle
  117. (section 5.9) should be set to "Upper Left" (section 5.9.1). The current
  118. character must be "On" (section 3.10). The coordinates should be displayed
  119. on the title bar in the "Start 0:0" mode (section 7.5.1). The "Copy to
  120. Buffer" function (section 3.11) should be selected, so that a copy of the
  121. original character image is always available. This can be useful if the
  122. image is to be restored after a mistake is made, or before the macro is
  123. re-executed on the entire font (including the current character, which
  124. would be "shadowed" a second time).
  125.  
  126.    To start the macro record mode, the "Start Record" command must be
  127. selected (section 6.3). In the macro requester, which appears
  128. automatically, the 'A' element in the list box (or any other one) should
  129. be selected with the mouse, to indicate that the macro which will be
  130. recorded should be assigned to the <A> key of the keyboard. The name of
  131. the macro, "Shadow" in this example, must be written in the string gadget
  132. at the bottom of the requester. After the "Proceed" gadget is selected,
  133. the macro record mode begins.
  134.  
  135.    The first instruction to be recorded is the selection of the entire
  136. character as a brush. To do this, the "brush definition" mode must be
  137. activated, by selecting the "Define Brush" gadget, as described in section
  138. 3.18. To mark the brush rectangle, the left mouse button must be pressed
  139. when the mouse pointer is over the top left dot in the character editing
  140. box. The mouse must then be moved (with the left button still pressed)
  141. until the pointer is both to the right of the character editing box and
  142. below it. The mouse button must not be released when the mouse pointer is
  143. over the bottom right dot of the box. The mouse button should be released
  144. only when the highlighted region includes the entire character image and
  145. the mouse pointer is beyond the bottom right corner of the character
  146. editing box. This ensures that the macro records a command like "The
  147. entire character should be defined as a brush", rather than "Mark brush
  148. from 0:0 to 26:23". This latter command would leave out parts of
  149. characters larger than 27 by 24.
  150.  
  151.    The definition of the brush automatically activates the "Draw with
  152. Brush" mode. The "OR" mode must also be activated, by selecting the "OR"
  153. gadget (section 3.16).
  154.  
  155.    A shadow will make the character wider. To make room for the shadow of
  156. this example the right arrow gadget associated with "X Size" must be
  157. pressed twice. This will add two columns to the character width.
  158.  
  159.    At this point, the brush can be used to draw a shadow to the right of
  160. the character. To do this, the mouse pointer must be moved until the
  161. coordinate box on the title bar displays "2:2". In this position, the
  162. left mouse button should be pressed and released. The shadow has been
  163. drawn. Now the dots between the shadow and the character need to be
  164. cleared, otherwise the shadow cannot be distinguished from the character.
  165. To do this, the brush outline must be moved by one dot up and to the left,
  166. so that the coordinates on the title bar are "1:1". The right mouse button
  167. must be pressed and released in this position to clear the dots. Finally,
  168. the original character must be restored, as the previous operation has
  169. cleared most of the character image. This can be done by pressing and
  170. releasing the left mouse button when the brush coordinates are "0:0".
  171.  
  172.    To terminate the macro gracefully, the "OR" mode and the "Draw with
  173. Brush" mode should be terminated (sections 3.16 and 3.17). This ensures
  174. that after the macro is executed the normal environment is restored. The
  175. "End Record" function (section 6.4) must be selected to end the recording
  176. of the macro.
  177.  
  178.    The macro can now be tested. To do this on the same character, the
  179. "Paste from Buffer" option (section 3.12) can be used to restore the
  180. original character image, if it was copied to the buffer before the
  181. recording of the macro began. The "Execute Macro" function (section 6.7)
  182. can be used to execute the macro on the current character, while
  183. "Controlled Execution" (section 6.8) will repeat the macro on all "On"
  184. characters in the font, or on another user-defined range. The "Examine
  185. Macro" (section 6.6) and "Step Execution" (section 6.10) options can be
  186. selected for a better understanding of the macro.
  187.  
  188.    The "Save Macro" function (section 6.2) will save the macro to a file,
  189. ready to be loaded whenever necessary.
  190.  
  191.    In this example, the "OR" mode and the "Brush Definition" mode are
  192. disabled before the start of the macro recording and activated during the
  193. recording. This is absolutely correct and makes the macro more readable
  194. and elegant, since all the commands necessary for the macro to work
  195. properly are explicitly executed during the recording of the macro. It is,
  196. however, possible to create a functionally equivalent macro, with two
  197. commands less. This can be done by activating the "OR" mode and the "Brush
  198. Definition" mode only before the start of the recording. This can be done
  199. because the Personal Fonts Maker always places at the beginning of each
  200. macro a set of commands which describe the initial editing environment.
  201.  
  202.  
  203. 13.3       Modifying a PFM Font
  204.  
  205.    This example shows how to create a full 8-bit font starting from a
  206. Personal Fonts Maker font containing only characters defined by the 7-bit
  207. US ASCII set, whose code is smaller than 128. In general, it is more
  208. convenient to first design the basic letters of the US ASCII set, and then
  209. copy these letters to the positions where national variants of these
  210. characters should appear. It is easier to modify an existing character
  211. rather than designing a new character, especially if it is important to
  212. maintain a style which is coherent with the other characters in the font.
  213. All the fonts which come with the Personal Fonts Maker package have the
  214. national characters and other signs which are not part of the US ASCII
  215. character set already defined. Other fonts, originally designed to be used
  216. in a less international environment, can be extended as explained here.
  217.  
  218.    Before any font is loaded, it is important that the correct font format
  219. is selected. This can be done with the requester described in section 7.3
  220. ("Font Description"). Normally, the format does not need to be changed
  221. manually, as the most used formats can be saved to and recalled from a
  222. file (sections 7.1 and 7.2). As explained in sections 1.11, 2.6 and 12.6
  223. it is even possible to define two different font formats to become the
  224. default formats when the program is loaded.
  225.  
  226.    If only the characters defined by the US ASCII set are used, it does
  227. not matter very much whether the current character set is the Amiga set,
  228. the IBM PC set or the Macintosh set, as most 8-bit sets share the subset
  229. of codes defined by the 7-bit US ASCII set. When, however, a 7-bit font
  230. has to be extended to an 8-bit character encoding format, it is important
  231. to decide which set to choose. Section 2.8 ("Character Sets") has more on
  232. character sets. It is possible to convert a font from one character set to
  233. a different set using the Amiga font format as an intermediate step in the
  234. conversion, as described in sections 4.5 ("Import Amiga Font") and 4.6
  235. ("Export Amiga Font"). Characters not shared by the source set, the target
  236. set and the Amiga set are not converted.
  237.  
  238.    Once the font with the 7-bit encoded characters is loaded, the longest
  239. and most annoying work is the creation of all variations of the existing
  240. letters, i.e. all the characters (capitals and lower case letters) with
  241. accents and other diacritical signs. Copying the existing letters to all
  242. the positions where these characters only need to be modified greatly
  243. simplifies this job. If this operation has to be done only once, as
  244. described in the introduction to chapter 6, the repetitive work is reduced
  245. to a minimum.
  246.  
  247.    As described in section 12.5.4, the set of "CopyOver127" macros was
  248. developed to ease the creation of fonts which are a superset of existing
  249. fonts. Similar macros can be designed by the user to work with different
  250. character sets.
  251.  
  252.    The macro "CopyOver127" does exactly what the user would do. It copies
  253. some of the existing letters to the positions where similar letters are to
  254. be designed. For example, the 'u' letter is copied to those positions in
  255. the font where the letters 'ü', 'ù', 'ú' and 'û' will have to appear. Once
  256. the basic 'u' image is in these positions, it is extremely easy to add an
  257. umlaut or an accent. It is even possible to design a set of diacritical
  258. signs which can be pasted over the "normal" characters whenever necessary.
  259. These diacritical signs could be temporarily stored in the other font
  260. environment, and automaticaly pasted over the images written by the
  261. "CopyOver127" macro with a second macro. Of course, some manual retouching
  262. will always be necessary, as different letters may require the signs to be
  263. placed at different heights.
  264.  
  265.    To execute the "CopyOver127" macro, it is sufficient to select the
  266. "Execute Macro" function (section 6.7). There is no need to use the
  267. "Controlled Execution" function (section 6.8), as the macro already
  268. contains the instructions to select the different characters.
  269.  
  270.    It is important that the selected "CopyOver127" macro works on the
  271. character set being used, as different character sets have the letters
  272. with diacritical marks at different positions. The sets which are most
  273. used with the Personal Fonts Maker are the printer's character set and the
  274. set of the host computer.
  275.  
  276.    Once the font has been completed, it can be saved as described in
  277. sections 4.4 ("Save PFM Font") and 4.6 ("Export Amiga Font").
  278.  
  279.  
  280. 13.4       Downloading a Font to the Printer
  281.  
  282.    Once a font has been loaded, created or modified, as shown in the
  283. examples of sections 13.1 to 13.3, it can be downloaded to the printer.
  284. Its ability to output the data from any font in the format required by
  285. different printers is one of the most interesting features of the Personal
  286. Fonts Maker. Section 2.5 ("Downloaded Printer Fonts") contains a general
  287. introduction to downloaded fonts.
  288.  
  289.    For this example, the "Andromeda" font will be used. The font will be
  290. downloaded as a letter quality, proportionally spaced font. Depending on
  291. the printer being used, either the "Andromeda_24" or the "Andromeda_16"
  292. font can be used. The first is ideal for 24-pin printers, while the second
  293. is more suited for 8/9-pin and 18-pin printers.
  294.  
  295.    Before the font is loaded, the correct font format must be specified.
  296. This can be done through the "Font Description" requester (section 7.3) or
  297. by loading an existing parameter file (section 7.1, "Load Preferences" and
  298. 12.6.4, "Parameter Files: Printer Font Descriptions"). Only the first four
  299. parameters need to be set ("X Max", "Y Max", "X Dpi" and "Y Dpi"). These
  300. will allow the program to stretch the font if it does not already fit the
  301. printer's format.
  302.  
  303.    The font can be loaded as described in section 4.3 ("Load PFM Font").
  304. If a requester appears, informing the user that the selected font has a
  305. different format from the current font format, either the "Proceed" or the
  306. "Stretch" gadgets of the requester should be selected. The "Proceed"
  307. option should be selected only if the current font has a maximum width ("X
  308. Max") wider than that of the font being loaded, but the current height is
  309. equal to (or slightly higher than) that of the selected font.
  310.  
  311.    At this point, the font loaded by the Personal Fonts Maker has the
  312. dimensions required by the printer's download format. It is now necessary
  313. to select the correct FFDL sequences which will send the font data to the
  314. printer. The sequences are loaded automatically when the font parameters
  315. are loaded from a file (section 7.1, "Load Preferences" and 12.6.4,
  316. "Parameter Files: Printer Font Descriptions"). If the FFDL sequences in
  317. the selected parameter file already match the format of the printer, no
  318. changes need to be made to the font description.
  319.  
  320.    To check whether the current font format works properly on the printer
  321. being used, there is no better way than to test it. The two "Printer Test"
  322. functions (section 4.12) perform a download and a test print. The "Printer
  323. Test/Character" function downloads and prints only the current character.
  324. This makes it easier to isolate and track down any errors, and will not
  325. print too many "garbage" characters if the printer does not interpret the
  326. data as a font download.
  327.  
  328.    As described in section 7.3 ("Font Description"), it is very important
  329. that the FFDL sequences are set properly for the download to succeed. The
  330. following are examples of valid FFDL sequences which could be used to
  331. download the font described here.
  332.  
  333.    "Prologue" (section 7.3.5):
  334.  
  335. Epson "ESC/P" (Epson Standard Code for Printers), NEC Pinwriter:
  336.  
  337.      ESC \% (0) ESC \x (1) ESC \: NUL NUL NUL
  338.  
  339. NEC Pinwriter Plus:
  340.  
  341.      FS \W (1) ESC \% (0) ESC \x (1) ESC \: NUL NUL NUL
  342.  
  343. IBM "Compatibles":
  344.  
  345.      ESC \: NUL NUL NUL
  346.  
  347. IBM Proprinter:
  348.  
  349.      ESC \I (3) ESC \= (0) (0)
  350.  
  351. Fujitsu DPL24C/DPL24I:
  352.  
  353.      ESC \: NUL (0) (0)
  354.  
  355.    The "Prologue" selects a ROM (resident) font and copies its characters
  356. to the download memory. The NEC Pinwriter Plus printers require the
  357. initial "FS \W (1)" sequence (memory-set) in order to select the 8-bit
  358. character encoding mode, rather than the 7-bit mode, which would not allow
  359. characters whose code is greater than 127 to be downloaded. On some
  360. printers one or more DIP switches, or software parameters (memory/soft
  361. switch), must be set before the printer's memory can be used for the
  362. downloading of characters. In the above examples, the IBM Proprinter is
  363. set in the fixed-width letter quality mode.
  364.  
  365.    "ON Sequence" (section 7.3.6):
  366.  
  367. Epson "ESC/P", NEC Pinwriter and Pinwriter Plus:
  368.  
  369.      ESC \& (0) CNUM CNUM (1) XSIZ (1) VDAT
  370.  
  371. IBM "Compatibles":
  372.  
  373.      ESC \= (0) CNUM CNUM (1) XSIZ (1) VDAT
  374.  
  375. IBM Proprinter:
  376.  
  377.      ESC \= x(1*48+2) (21) CNUM (0) (0) VIDT REPT((46-LENG(VIDT)),NUL)
  378.  
  379. Fujitsu DPL24C/DPL24I:
  380.  
  381.      ESC \& (0x10) CNUM CNUM XSIZ VDAT
  382.  
  383.    The "ON Sequence" is repeated once for every "On" character in the
  384. font, sending the character's code, size and image data to the printer.
  385. Each character is downloaded individually, as one or more "Off" characters
  386. could interrupt the sequence of "On" characters (unless "Off" characters
  387. are sent as well, as described in sections 7.3.7 and 12.6.4). The "(21)"
  388. code in the IBM Proprinter sequence is the identification code for the
  389. Letter Quality II font on the IBM 4201/002 printer. Other codes can be
  390. used. The code for a draft font on an IBM 4202 or 4201/002 printer model
  391. is "(20)". Since the fixed width mode is used in the IBM Proprinter, a
  392. "REPT" instruction has been added to convert the characters of the
  393. proportionally spaced font to a fixed width, by adding some trailing "NUL"
  394. codes.
  395.  
  396.    "Epilogue" (section 7.3.8):
  397.  
  398. Epson "ESC/P", NEC Pinwriter and Pinwriter Plus, IBM "Compatibles":
  399.  
  400.      ESC \% (1)
  401.  
  402. IBM Proprinter:
  403.  
  404.      ESC \I (7)
  405.  
  406. Fujitsu DPL24C/DPL24I:
  407.  
  408.      ESC \% (5) (0)
  409.  
  410.    The "Epilogue" is sent to the printer at the end of the download,
  411. activating the print mode in the downloaded font. The sequence for the IBM
  412. Proprinter 4201/002 selects the Letter Quality II downloaded font. This
  413. sequence is ignored by the 4202 model. The terminating "(7)" code can be
  414. replaced with "(4)", "(5)" (not on the 4202 model) and "(6)", to
  415. respectively select the draft, 12 CPI FastFont and Letter Quality
  416. downloaded font.
  417.  
  418.    A "Range" (section 7.3.9) from 32 to 126 (decimal codes) should work on
  419. most printers. The widest possible range is 0 to 255. The printer's
  420. documentation should be read to verify which characters can be downloaded.
  421. Another restriction may be imposed by the available memory. Section 12.1
  422. ("TextChars") explains what can be done if the printer's memory is not
  423. sufficient to store all the characters in a font.
  424.  
  425.    Once the font format and the FFDL sequences have proven to work
  426. properly, the entire font can be downloaded. The "Write Font Data"
  427. functions (section 4.13) can be used to send the font either directly to
  428. the printer, or to a file. Section 13.5 ("Interacting with a Word
  429. Processor") explains how the downloaded font can be used from a word
  430. processor.
  431.  
  432.  
  433. 13.5       Interacting with a Word Processor
  434.  
  435.    Word processors can print text in two ways: in text mode or in graphics
  436. mode. When the text mode is selected, the program sends a stream of
  437. characters and control codes to the driver, which in turn sends the data
  438. to the printer. In this mode, the images of the characters to be printed
  439. must already be in the printer's memory, either in the ROM, or in the
  440. download area. If a font has been downloaded, it can be used by a program
  441. printing in text mode.
  442.  
  443.    When a program prints in graphics mode, it outputs the entire text as
  444. an image. This means that each individual dot which makes up the resulting
  445. text must be sent by the word processor. Since such a large amount of data
  446. has to be sent (and translated by the driver), this technique is much
  447. slower than the text mode. Also, the (poorer) quality of a text printed in
  448. graphics mode is usually not comparable with the letter quality text modes
  449. built into modern printers. To use a font designed with the Personal Fonts
  450. Maker with software which prints the text in graphics mode, the font must
  451. be saved in the Amiga format (section 4.6) and loaded as an Amiga font by
  452. the program which has to print it. This section explains how to use a
  453. downloaded font printing in text mode.
  454.  
  455.    Section 13.4 ("Downloading a Font to the Printer") explains how to
  456. create the font download data and send it to the printer or to a file. The
  457. same data which is normally sent to the printer to print with a downloaded
  458. font (section 4.13.2, "Write Font Data/Printer") can be sent to a file
  459. (section 4.13.1, "Write Font Data/File"), from where it can be used
  460. whenever necessary.
  461.  
  462.    Section 12.2 ("PrintRawFiles") explains how to send the font download
  463. data stored in a file to the printer. To download such a font, it is
  464. sufficient to double click on the file icon. This will automatically
  465. execute the PrintRawFiles program. PrintRawFiles can also appear in the
  466. Startup-Sequence, from where it could be used to automatically download a
  467. font to the printer whenever the system is booted.
  468.  
  469.    With most word processors it is possible to download a file without
  470. having to use PrintRawFiles. The "Print File" function of Cloanto's
  471. Personal Write word processor, for example, allows the user to send any
  472. file to the printer, without modifying the file's content (or allowing the
  473. printer driver to do so). The "Printer Control File" of the same word
  474. processor allows the user to select a file which is to be automatically
  475. sent to the printer before each print.
  476.  
  477.    Whatever method is used to send the printer download data contained in
  478. a file to the printer, it is important to remember that the data must be
  479. received by the printer "as is". The Personal Fonts Maker already writes
  480. the font download data in the printer's format. Any further processing, by
  481. a printer driver or any other software, is likely to make the file
  482. unrecognizable by the printer.
  483.  
  484.    Once the font has been sent to the printer, either by the Personal
  485. Fonts Maker, by PrintRawFiles or by another program, it can be used to
  486. print the text. The FFDL sequence associated with the "Epilogue" parameter
  487. usually contains the control sequences which instruct the printer to use
  488. the downloaded font. If this is not the case, such a command must be sent
  489. to the printer by the word processors. Most programs cannot do this, as
  490. this function is not supported by the Amiga printer drivers. For this
  491. reason, it is important to activate the font by placing the appropriate
  492. control codes in the "Epilogue" sequence. Once this command is received by
  493. the printer, the program printing the text should not send a command
  494. selecting a different font, as this would restore the printer's default
  495. ROM font (or another soft font). If the "Printer Test" function (section
  496. 4.12) of the Personal Fonts Maker seems to work properly, downloading and
  497. printing a font, but the same font cannot be used by a word processor, it
  498. is likely that the word processor automatically selects a different font
  499. at the beginning of the print. If this is the case, the parameters of the
  500. word processors should be set so that the program does not automatically
  501. set a font of the printer before printing the text.
  502.  
  503.    Once a font has been downloaded, the new font can also be selected from
  504. the printer's control panel. Some printers can even be programmed to use
  505. the downloaded font as the default font at power-up. The solution
  506. suggested before, i.e. sending the appropriate font activation codes to
  507. select the downloaded font, is the one which works most efficiently on the
  508. majority of printers.
  509.  
  510.    Section 14.2 ("Problems with Printers") describes some problems which
  511. may be encountered when working with a printer.
  512.  
  513.  
  514. 13.6       Creating a Word Processor Font Size Table
  515.  
  516.    The Personal Fonts Maker package contains an interesting parameter
  517. file, called "SizeTable.prf" (section 12.6.3). The commands of the Font
  518. Format Description Language contained in that file are capable of creating
  519. a size table indicting the width of each character in the current font.
  520. This application, which may seem unusual to those who have used the FFDL
  521. only to create font files, is only one of the many examples of the power
  522. and flexibility of the Font Format Description Language.
  523.  
  524.    Many word processors can use different fonts to print the text. If the
  525. font used to print the text is not the same as the font loaded in the word
  526. processor's memory, the program will not be able to format the printed
  527. text correctly, unless all the characters have the same width, or the
  528. printer justifies the text. Some programs allow the user to specify the
  529. width of every character in the font used by the printer. Once this table
  530. is complete, the word processor "knows" about the new font, even if it is
  531. a downloaded font, and can justify, center and align the text properly.
  532. This does not need to be done if the printer can format the text
  533. automatically, and the word processor supports this function.
  534.  
  535.    The "SizeTable.prf" can be loaded, as any other parameter file, with
  536. the "Load Preferences" function (section 7.1). One of the "Write Font
  537. Data" functions (section 4.13) can be used to print the table, or send it
  538. to a file, from where it can be loaded, viewed and printed with a word
  539. processor.
  540.  
  541.    The table displays a value for each "On" character in the font. The
  542. value includes the width of the character image, plus the additional
  543. margins to the left and the right of the character. This is the sum of the
  544. "Space" and "Kerning" parameters, which is displayed (or printed). "X
  545. Size" is not considered. The existing FFDL sequences can, of course, be
  546. viewed and modified by the user to create a different kind of table. For
  547. example, "X Size" may be used instead of the sum of "Space" and
  548. "Kerning".
  549.  
  550.    At the end of each line of the table a CR+LF (Carriage Return + Line
  551. Feed) combination is output. This works well on most printers, and is also
  552. handled by a majority of word processors, should the data be output to a
  553. file. The FFDL sequences can be modified to output only a LF (Line Feed,
  554. decimal value 10) code if a file following the Amiga default rules for
  555. plain text formats is to be created.
  556.  
  557.    The following is a sample table, generated by the FFDL sequences
  558. contained in the "SizeTable.prf" file, relative to the "Pegasus_24" font:
  559.  
  560.      ==========================================================
  561.  
  562.                       PFM Size Table
  563.  
  564.      ==========================================================
  565.  
  566.               0    1    2    3    4    5    6    7    8    9
  567.          +-----------------------------------------------------
  568.      0   |   --   --   --   --   --   --   --   --   --   --
  569.      10  |   --   --   --   --   --   --   --   --   --   --
  570.      20  |   --   21   --   --   --   --   --   --   --   --
  571.      30  |   --   --   24    7   17   25   23   24   25    8
  572.      40  |   14   14   22   22    8   20    8   23   17   12
  573.      50  |   23   20   21   18   18   19   18   18    8    8
  574.      60  |   18   20   18   22   27   31   27   29   31   32
  575.      70  |   35   29   31   27   29   31   31   34   33   29
  576.      80  |   32   32   29   28   31   29   23   32   29   28
  577.      90  |   28   11   23   11   17   28    8   24   21   21
  578.      100 |   23   21   20   25   20   11   24   24   11   31
  579.      110 |   23   23   23   23   21   22   17   23   23   32
  580.      120 |   24   22   24   16    5   16   22   --   29   23
  581.      130 |   21   24   24   24   24   19   21   21   21   17
  582.      140 |   15   11   27   27   31   29   36   21   22   21
  583.      150 |   23   23   22   27   27   21   33   35   39   25
  584.      160 |   24   14   21   23   23   33   18   20   22   --
  585.      170 |   --   32   30    7   29   29   --   --   --   --
  586.      180 |   --   --   --   --   --   --   --   --   --   --
  587.      190 |   --   --   --   --   --   --   --   --   --   --
  588.      200 |   --   --   --   --   --   --   --   --   --   --
  589.      210 |   --   --   --   --   --   --   --   --   --   --
  590.      220 |   --   --   --   --   --   21   --   --   --   --
  591.      230 |   --   --   --   --   --   --   --   --   --   --
  592.      240 |   --   --   --   --   --   --   --   --   16   --
  593.      250 |   --   --   --   --   --   --
  594.  
  595.  
  596. 13.7       Patching a Printer Driver
  597.  
  598.    As described in chapter 9, existing Amiga printer drivers can sometimes
  599. be improved if they are modified with the Printer Driver Modifier. Section
  600. 9.2 ("Problems with Standard Drivers") describes the complex control
  601. sequences used by the Epson X, Epson Q, NEC Pinwriter and other printer
  602. drivers to print a simple '½' (one half) character. Rather than
  603. overlapping a '1' (one), a '-' and a '2' sign moving the printer head back
  604. and forth, it is possible to use the '½' character which is already built
  605. into most printers. This example shows how to replace the existing
  606. sequence with the code associated with the '½' character in the IBM PC
  607. set, shared by the printers mentioned above.
  608.  
  609.    Printer drivers are stored in the "printers" drawer, inside the "devs"
  610. drawer of the Workbench and Extras disks. The Extras disk usually contains
  611. all printer drivers. If the Printer Driver Modifier is used for the first
  612. time, it is better to use a copy of the disk on which the drivers are
  613. stored before this example is repeated. This will prevent any undesired
  614. changes being made to the drivers.
  615.  
  616.    To load the Printer Driver Modifier it is sufficient to double click
  617. its Workbench icon. Next, the printer driver must be loaded. To do this,
  618. the "Load Driver" function (section 10.1) must be selected. In the file
  619. requester displayed by this function, the file containing the driver can
  620. be chosen from the names displayed in the list box. Among those names,
  621. "EpsonQ", "EpsonX" and "Nec_Pinwriter" would all work fine for this
  622. example. The driver is loaded immediately after the "Proceed" gadget of
  623. the file requester is selected.
  624.  
  625.    To access the sequence associated with the '½' character, the
  626. "Section/Character" option must be selected (section 10.7.2). The "Number"
  627. string gadget must be activated, the value contained in the gadget deleted
  628. with the <BS> and <Del> keys, and the keys <1>, <8>, <9> and <Return>
  629. typed. This will display the control sequence associated with the
  630. character whose Amiga code is 189, which is '½', in the editing gadget
  631. (section 9.4.2).
  632.  
  633.    The editing gadget should be selected with the mouse, and its entire
  634. content deleted (pressing <X> while <Amiga> is held down, or using the
  635. <BS> and <Del> keys). The FFDL constant "(171)" (without quotes, but with
  636. the parentheses) should be written in the editing gadget. If the printer
  637. driver is saved, the decimal code 171 will be sent to the printer whenever
  638. a program using that printer driver prints a '½' character.
  639.  
  640.    To save the printer driver, the "Save Driver" function (section 10.2)
  641. must be used. It is always a good practice to have a copy of the driver
  642. being modified available, in case the result of the changes needs to be
  643. reversed. Also, the modified driver should be saved with a name different
  644. from that of the original driver. In this way, the Printer Driver Modifier
  645. will be able to identify it as a variant of an original driver and issue
  646. the "Internal Name Mismatch" message (more in appendix H) when that driver
  647. is loaded again.
  648.  
  649.