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

  1.  
  2.  "Personal Fonts Maker -  4. PFM: The Project Menu"
  3.  
  4.  4. PFM: The Project Menu
  5.    4.1  New Font
  6.    4.2  Free Font Memory
  7.    4.3  Load PFM Font
  8.    4.4  Save PFM Font
  9.    4.5  Import Amiga Font
  10.    4.6  Export Amiga Font
  11.    4.7  Free Character Set
  12.    4.8  Load Character Set
  13.    4.9  Save Character Set
  14.    4.10 Define Character Set
  15.    4.11 Edit Character Set
  16.    4.12 Printer Test
  17.         4.12.1 Character
  18.         4.12.2 Font
  19.         4.12.3 Line Feed
  20.         4.12.4 Form Feed
  21.    4.13 Write Font Data
  22.         4.13.1 File
  23.         4.13.2 Printer
  24.    4.14 Font Statistics
  25.         4.14.1 Activation Table
  26.         4.14.2 ON Characters
  27.         4.14.3 Average Width
  28.         4.14.4 Widest Character
  29.         4.14.5 Narrowest Character
  30.         4.14.6 Font Status
  31.    4.15 Memory Information
  32.    4.16 Delete
  33.         4.16.1 File
  34.         4.16.2 Amiga Font
  35.    4.17 About
  36.    4.18 Quit
  37.  
  38. "Personal Fonts Maker -  4. PFM: The Project Menu"
  39.  
  40.  
  41. 4.         PFM: The Project Menu
  42.  
  43.    This chapter describes the functions which can be accessed through the
  44. "Project" menu of the Personal Fonts Maker. The "Project" menu contains
  45. all commands used to read and save data to peripheral units. Other
  46. commands, which are used to create a new font, obtain information on the
  47. font status or the program, or terminate the work with the Personal Fonts
  48. Maker, are also included in this menu.
  49.  
  50.  
  51. 4.1        New Font
  52.  
  53.    This function clears the current font and restores the standard font
  54. parameters. All character bitmaps are cleared (section 3.8). The
  55. characters are switched to the "Off" status (section 3.10). The "X Size"
  56. (section 3.4) and "Space" (section 3.5) parameters of the characters are
  57. set to "X Max", while "Kerning" (section 3.6) is set to 0 (zero).
  58.  
  59.    Only the font data of the current font environment (section 3.2) is
  60. cleared. If another font is in memory, it is not modified. The memory
  61. occupied by the font's bitmaps is cleared, but not released. Section 4.2
  62. explains how to free the associated memory.
  63.  
  64.    If the displayed font has not yet been stored, the Personal Fonts Maker
  65. displays a warning message. The program always displays such messages
  66. before something which has not yet been saved is cleared. The "Proceed"
  67. gadget of the message requester must be selected to confirm the choice and
  68. clear the font data. If the "Cancel" gadget is selected the function is
  69. aborted and nothing happens. The the <Return> key and the <Esc> key on the
  70. keyboard can be pressed instead of the two gadgets, as explained in
  71. sections 1.10.11 and 1.10.15.
  72.  
  73.  
  74. 4.2        Free Font Memory
  75.  
  76.    When the program starts, it allocates memory only for one font in the
  77. selected format (section 7.3). The other font environment does not occupy
  78. any font memory until the user enters the second font environment through
  79. the "Font" gadget (section 3.2).
  80.  
  81.    The user generally does not have to bother about when the program
  82. occupies or frees some memory. These operations are done automatically by
  83. the program. In some cases, however, it may be useful to limit the
  84. occupied memory, especially if there is not enough free system memory. If
  85. both font environments have been used, but one of the two is not necessary
  86. any more, this function can be used.
  87.  
  88.    This function does all the things the "New Font" function does (section
  89. 4.1). In addition, it frees the arrays containing the values "X Size",
  90. "Space" and "Kerning" for each character, the bitmap memory allocated by
  91. the current font environment and the whole character set data (section
  92. 4.7). The program automatically switches to the other font environment
  93. (section 3.2).
  94.  
  95.    The font memory can be freed only if the other font environment has
  96. some memory allocated. This limitation is necessary because the program
  97. needs at least one font environment to work properly. If neither font
  98. environment had any memory allocated for the bitmap and the other font
  99. data, the user could do almost nothing with the Personal Fonts Maker. This
  100. is why the program automatically switches to the other font environment
  101. after this function is called. For the same reason, memory is allocated
  102. when the user switches to the second font environment for the first time
  103. (or after a call to this function). An error message is displayed if this
  104. function is called when the current font environment is the only one which
  105. has some allocated memory. The error message is displayed, for example, if
  106. this function is called two times consecutively, whereas the first call
  107. would leave only one font environment in working condition.
  108.  
  109.    The memory freed by this function is automatically reallocated when the
  110. user re-enters the font environment as described in section 3.2.
  111.  
  112.  
  113. 4.3        Load PFM Font
  114.  
  115.    Sections 2.4 ("Storage of Fonts") and 3.23 ("The File Requester") ought
  116. to be read for a better understanding of this section.
  117.  
  118.    This function loads a font previously stored in the PFM format. If the
  119. displayed font has not yet been stored, the Personal Fonts Maker displays
  120. a warning message. The "Proceed" gadget of the message requester must be
  121. selected (or the <Return> key pressed) to confirm the choice and load a
  122. new font which will clear the data of the font currently displayed. If the
  123. "Cancel" gadget is selected, or the <Esc> key is pressed, the function is
  124. aborted. The same happens if the "Cancel" gadget of the file requester is
  125. selected.
  126.  
  127.    If the font which is to be loaded has a different format than that
  128. currently selected (section 7.3), a requester appears. The requester
  129. indicates the sizes and densities currently selected and those of the
  130. specified font. Four gadgets at the bottom of the requester let the user
  131. choose how to continue. If the "Proceed" gadget is selected, the font is
  132. loaded with no modifications to its bitmaps. The characters which do not
  133. fit in the current limits are cut. If the height of the selected font is
  134. smaller than the current font height, the origin of all character
  135. coordinates remains the top left corner of the character box. Selecting
  136. "Stretch", each character of the new font is stretched (or "shrunk") to
  137. the current format, depending on the currently selected stretch mode.
  138. Section 7.10 explains how to set different stretch modes. If the "Adapt"
  139. gadget is selected, the size and densities of the current font environment
  140. (section 7.3, "Font Description") are adapted to those of the selected
  141. font. If the "Cancel" gadget is selected, the operation is aborted.
  142.  
  143.    The font file contains some data regarding the horizontal and vertical
  144. sizes and densities of the characters. If these values are the same as
  145. those of the current font environment, the font is loaded normally.
  146. Otherwise, the requester mentioned above is displayed. If the "Stretch"
  147. gadget is selected, the values are used to stretch the characters in the
  148. font so that they fit in the current font environment. If the "Adapt"
  149. gadget is selected, the font description variables of the current font
  150. environment (section 7.3) are adapted to the format of the font being
  151. loaded. The font description variables can also be modified manually using
  152. the requester described in section 7.3, or can be loaded from an existing
  153. parameter file as described in section 7.1.
  154.  
  155.    The "Adapt" option should be selected with care if a font to be
  156. downloaded to a printer is being loaded, as the current format should
  157. already be set to the size and density required by the printer. Most
  158. low-end impact printers are not flexible enough to accept more than two
  159. different font heights (e.g. 8 for draft and 16 for letter quality), while
  160. the majority of page printers can deal with an almost unlimited range of
  161. font sizes.
  162.  
  163.    Also contained in the font file is the name of the character set which
  164. was used when the font was last saved. This is usually the set following
  165. which the font was designed (section 2.8, "Character Sets"). If the
  166. current character set is different from the set after which the characters
  167. in the newly selected font are arranged, a warning message is displayed.
  168. The message informs the user about the character set used when the font
  169. was saved, and the current set (if one has been selected). The warning
  170. message is useful because if the current character set does not match the
  171. font's set, the default character images used by the program (e.g. in the
  172. "Default" gadget and the "Quick Character Selection" box, sections 3.7 and
  173. 3.22) could be ordered differently from the characters in the font. Even
  174. if this message is displayed, the font is loaded normally, but the user is
  175. advised to load the specified character set too.
  176.  
  177.    In most cases, only one character set is used. It sometimes happens,
  178. for example, that some fonts are designed specifically for a given dot
  179. matrix printer, while other - high resolution fonts - are designed for a
  180. laser printer using a different character set. If the same font
  181. environment is used to edit the different fonts alternatively, the
  182. character sets must also be updated accordingly. To re-arrange the
  183. characters in a font after a different character set, the Amiga font
  184. format can be used as an intermediate format (section 4.5).
  185.  
  186.    The "Load PFM Font" function does not load fonts in the standard Amiga
  187. font format. The "Import Amiga Font" (section 4.5) must be used for this
  188. purpose.
  189.  
  190.    Appendix O contains a detailed technical description of the IFF CPFM
  191. font format used by the Personal Fonts Maker.
  192.  
  193.  
  194. 4.4        Save PFM Font
  195.  
  196.    Sections 2.4 ("Storage of Fonts") and 3.23 ("The File Requester")
  197. introduce notions which are important for a proper understanding of this
  198. function.
  199.  
  200.    This function saves the font data of the current font environment to
  201. the specified file. The standard file requester is used for the selection
  202. of the file.
  203.  
  204.    The function stores only "On" characters (section 3.10). "Off"
  205. characters are not saved and do not occupy any memory in the file. In
  206. particular, the undefined character (sections 2.8 and 3.10), which is
  207. always saved by the "Export Amiga Font" function (section 4.6) is not
  208. saved if it is "Off".
  209.  
  210.    Neither the character set, nor the brush, nor any macros, nor the
  211. program parameters are saved by this function. Sections 4.9, 5.2, 6.2 and
  212. 7.2 respectively explain how to save this data.
  213.  
  214.    Any problems encountered by the program or the Amiga operating system
  215. during the save operation are signalled through specific messages.
  216. Appendix G lists all program messages. Section 14.1 contains important
  217. information on how to handle any errors which may occur during a write
  218. operation.
  219.  
  220.    Fonts stored by this function cannot be read by programs which handle
  221. only the standard Amiga fonts. If the font is to be read by one of these
  222. programs, it should be saved with the "Export Amiga Font" function,
  223. described in section 4.6.
  224.  
  225.    As described in section 2.4, fonts saved in the PFM format by this
  226. function contain more information that those stored in the Amiga format.
  227. PFM fonts also occupy considerably less storage space than Amiga fonts.
  228.  
  229.    Appendix O contains a detailed technical description of the IFF CPFM
  230. font format used by this function to store fonts. Programmers are
  231. encouraged to use that documentation to write their own font handling
  232. routines.
  233.  
  234.  
  235. 4.5        Import Amiga Font
  236.  
  237.    This function loads a font stored in the Amiga font format (section
  238. 2.4, "Storage of Fonts"). A special version of the file requester, called
  239. the font requester, is used for the selection of the font file (section
  240. 3.24, "The Font Requester").
  241.  
  242.    This function is very similar to the "Load PFM Font" procedure,
  243. described in section 4.3. Most notes regarding that operation also apply
  244. for this function. This is true in particular for the character stretch
  245. and adapting options.
  246.  
  247.    The characters in an Amiga font file are re-mapped according to the
  248. character set currently in use (section 2.8). If the current character set
  249. is the Amiga set, the order of the characters in the font is left almost
  250. unchanged (any characters whose code is in the range 0-31 or 128-159 are
  251. ignored). But if the character set currently used is not the Amiga set
  252. (for example, the "PC_Usa2" set), the characters of the Amiga font are
  253. automatically inserted into the appropriate positions of the new set.
  254.  
  255.    The conversion to a non-Amiga character set is very important if an
  256. Amiga screen font is to be used as a point of departure for a different
  257. type of font, like a printer-downloadable font. As explained in section
  258. 2.8, printers do not use the same character set used by the Amiga. In
  259. fact, there is not even a standard among printer character sets. This is
  260. one of the cases in which the program's flexibility of being able to use
  261. different character sets becomes invaluable.
  262.  
  263.    The word "import" is used to define this function because the program
  264. has to do some conversions before the characters of an Amiga font can be
  265. processed by the user. As explained above, the characters may have to be
  266. re-arranged in the font. Compared to the PFM default format, Amiga font
  267. files lack some information (section 2.4) which is either calculated by
  268. the program, or replaced with default values.
  269.  
  270.    The effects of a re-mapping to a non-Amiga character set are reversed
  271. when the font is exported back to the Amiga format (section 4.6). It
  272. should be noted that only the two functions which read and write Amiga
  273. fonts use the character set data to change the order of the characters in
  274. the font.
  275.  
  276.    The undefined character (sections 2.8 and 3.10) is always the last
  277. character in a font. The character has the decimal code 256, therefore it
  278. is the 257th character, since the code of the first character is 0 (zero).
  279. The undefined character is used only in Amiga fonts, and has no equivalent
  280. in the Personal Fonts Maker character sets. The undefined character is
  281. always loaded, edited and saved as the last character in the font.
  282.  
  283.    If a character which appears in the selected Amiga font has no
  284. equivalent in the current character set, then that character is not
  285. loaded. As described in section 4.10 ("Define Character Set"), this
  286. happens when a -1 code appears in that character's position of the reverse
  287. encoding vector. If no character set is selected when an Amiga font is
  288. loaded, all positions of the encoding vector will contain the default -1
  289. value. This means that only the undefined character can be loaded.
  290.  
  291.    When the program starts, it automatically loads a default character set
  292. for each font environment. But if the user frees the character set data
  293. (sections 4.2 and 4.7), or if the program cannot access the default
  294. character sets, it may happen that - as mentioned above - no character set
  295. is selected. This could lead to the rather unusual situation just
  296. described, where only the undefined character of an Amiga font is loaded.
  297. It is sufficient to select a character set (sections 4.8 and 4.10) to load
  298. the desired characters from an Amiga font.
  299.  
  300.  
  301. 4.6        Export Amiga Font
  302.  
  303.    Two sections are closely related to the concepts described here.
  304. Section 4.4 describes the "Save PFM Font" function, which is very similar
  305. to this function. Section 4.5 explains how the "Import Amiga Font"
  306. function, which is the reverse of the function described here, works. Both
  307. sections should be read as an introduction to this section. Appendix G
  308. explains the meaning of the error messages which may be displayed.
  309.  
  310.    The "Export Amiga Font" function stores the current font in the Amiga
  311. font directory of the volume specified in the font requester. As explained
  312. in section 3.24 ("The Font Requester"), a special version of the file
  313. requester is used to access Amiga font files.
  314.  
  315.    The program ensures that the characters of the current font are placed
  316. in the order defined by the Amiga character set. Therefore, if the
  317. character set of the font environment is not the Amiga set (sections 2.8
  318. "Character Sets" and 4.10 "Define Character Set"), the program changes the
  319. order of the characters as necessary. Those characters which appear in the
  320. current font, but have no equivalent in the Amiga character set (e.g. a
  321. "heart" sign), are not saved.
  322.  
  323.    An Amiga font must contain at least one "On" character (section 3.10)
  324. in addition to the undefined character. The Personal Fonts Maker saves
  325. only the characters marked as "On". The undefined character is always
  326. saved, even if it is "Off", since an Amiga font must contain data for that
  327. character (sections 2.8 and 3.10). An error message is displayed if there
  328. is not at least one "On" character which has an equivalent in the Amiga
  329. character set. This can happen if no character set is defined, as already
  330. described in section 4.5 ("Import Amiga Font").
  331.  
  332.    When the Personal Fonts Maker modifies an Amiga font which is currently
  333. used by other programs, those programs continue to use the old version of
  334. the font.
  335.  
  336.    It is possible to create a font file which can replace the default font
  337. used by the operating system for menu texts, Workbench icons and so on. To
  338. replace the "Topaz 8" (8 x 8 character size) and "Topaz 9" (10 x 9
  339. character size) system fonts, for example, two fonts must be created. All
  340. characters in both fonts must be eight or ten dots wide, respectively. One
  341. font must be eight dots tall, the other nine. The "Fixed Pitch" flag
  342. (section 8.14) must be set in both fonts. Once the fonts are saved in the
  343. Amiga format, they can be selected with the "FF" (FastFonts, section 1.13)
  344. program. For example, the command
  345.  
  346.      FF fontname.font
  347.  
  348. will cause the font saved with the name "fontname" to become the default
  349. system font for that font size. The ".font" suffix is automatically
  350. appended by the Personal Fonts Maker to the name written in the font
  351. requester. The ".font" suffix must be added by the user of "FF" to the
  352. name which was specified in the font requester of the Personal Fonts
  353. Maker. The suffix does not need to be appended in the font requester by
  354. the user. The "FF" program can be found on the standard Amiga version 1.3
  355. Workbench disks. The Amiga documentation explains how to use the command.
  356. Under version 2.0 (and beyond) of the Amiga operating system, there is no
  357. need to use the "FF" program, as the selection of the system font is a
  358. standard feature.
  359.  
  360.    The remaining part of this section should be particularly interesting
  361. to programmers who access Amiga fonts directly.
  362.  
  363.    The following table shows how the Personal Fonts Maker defines the
  364. Amiga font data structures:
  365.  
  366.      Amiga Variable      PFM Parameter       Sections
  367.  
  368.      Baseline            REF3 (minus 1)      2.3, 2.7.2.14, 3.21
  369.      CharBitWidth        X Size              2.7.2.22, 3.4
  370.      CharKern            Kerning             2.7.2.10, 3.6
  371.      CharSpace           Space               2.7.2.16, 3.5
  372.      Style, Flags        ATRB                2.7.2.1, Chapter 8
  373.      XSize (font width)  X Max               2.7.2.21, 2.7.2.22, 3.4,
  374. 7.3.1
  375.      YSize               Y Size (Y Max)      2.7.2.25, 2.7.2.26, 7.3.2
  376.  
  377.    When an Amiga font is imported, the "X Max" parameter is set to the
  378. width of the widest character in the Amiga font, rather than to the
  379. nominal width stored in the Amiga "X Size" parameter.
  380.  
  381.    It should be noted that the third reference point of a PFM font is used
  382. to calculate the position of the Amiga font baseline. This is based on the
  383. assumption (section 3.21, "Reference Points") that the most likely
  384. reference point to be used to mark the baseline is the third from the top,
  385. whereas the first two could be used to mark the positions of the cap line
  386. and the meanline, and the fourth for the underline position. The origin of
  387. the Amiga baseline is just below the origin of the reference points,
  388. therefore the program subtracts 1 (one) to the value stored in the REF3
  389. variable to calculate the Amiga baseline.
  390.  
  391.    Chapter 8 describes the attributes which can be associated with a font.
  392. Some of these attributes also apply for Amiga fonts, as explained in that
  393. chapter.
  394.  
  395.  
  396. 4.7        Free Character Set
  397.  
  398.    Sections 2.8 ("Character Sets"), 4.5 ("Import Amiga Font") and 4.6
  399. ("Export Amiga Font") are closely related with this and the following
  400. sections dealing with character sets. All these sections should be read
  401. for a better understanding of the topic.
  402.  
  403.    This function frees all the memory occupied by the character set data
  404. of the current font environment. This includes the default images of the
  405. characters in the set and the encoding vector used to convert characters
  406. between the current character set and the Amiga set. A warning message
  407. allows the user to abort the operation if the encoding vector of the
  408. current character set has been modified, and the set has not yet been
  409. saved.
  410.  
  411.    After this command is executed, the current font environment will not
  412. be able to do any operations which require a character set to be defined,
  413. until a new set is loaded or defined (sections 4.8 and 4.10). This means
  414. that no Amiga fonts can be loaded or saved, as the program would not know
  415. where to place (i.e. which code to assign to) the Amiga characters in the
  416. current font, and vice versa. Without the default character images, both
  417. the "Default" gadget (section 3.7) and the quick character selection
  418. window (section 3.22) require a lot of imagination and good will.
  419.  
  420.    This function frees only one character set. The character set data of
  421. the other font environment is not modified. It is not necessary to free
  422. the character set to load a new character set (section 4.8).
  423.  
  424.  
  425. 4.8        Load Character Set
  426.  
  427.    Different character sets can be used with the Personal Fonts Maker.
  428. This makes it possible to work with fonts from different environments
  429. (section 2.8). For example, it is possible to edit Amiga fonts, 7-bit
  430. coded national fonts (appendix E), PC printer fonts and many more fonts
  431. all with the same program.
  432.  
  433.    This function can be used to load and use a character set which has
  434. previously been defined and stored. The character sets described in
  435. appendices C (IBM PC), D (Amiga) and E (national 7-bit sets) are already
  436. stored in the default "PFM_CharSets" drawer (section 1.12). A new
  437. character set can be created by the user with the "Define Character Set"
  438. and "Edit Character Set" functions (sections 4.10 and 4.11).
  439.  
  440.    When a character set file is loaded, both the encoding vector and the
  441. default images of the characters are loaded, as explained in section 2.8
  442. ("Character Sets"). A warning message allows the user to abort the load
  443. operation if the current character set has not yet been saved. If the
  444. operation is confirmed by the user, the previous character set data of the
  445. font environment is cleared.
  446.  
  447.    It should be noted that this function does not copy the default
  448. character images contained in the file to the current font. To do this,
  449. the "Edit Character Set" function (section 4.11) must be used.
  450.  
  451.    Each font environment (sections 2.6 and 3.2) can use a different
  452. character set. When a character set file is loaded, the selected character
  453. set is applied only to the current font environment. The character set
  454. must be loaded again from the other font environment if it is to be used
  455. there as well. Initially the program automatically loads one default
  456. character set for each font environment (sections 1.12 and 2.6.8), whereas
  457. the second environment's character set is initialized only if there is
  458. enough free RAM.
  459.  
  460.  
  461. 4.9        Save Character Set
  462.  
  463.    A character set created or modified by the user can be saved with this
  464. function, so that it can be loaded and used again in the future.
  465.  
  466.    The descriptions of the standard file requester (section 3.23), the
  467. warning messages (section 7.11.4, "Confirm Overwriting") and the error
  468. messages (section 14.1 and appendix G) are also valid for this function.
  469.  
  470.    As explained in section 2.8 ("Character Sets"), both the encoding
  471. vector and the images of the characters in the set are saved. The current
  472. font is used to create the default images of the characters. All font
  473. data, including the reference points and style attributes, is saved. This
  474. makes it easier to modify the default character images at any time.
  475. Section 4.11 ("Edit Character Set") explains how to select the proper font
  476. format (e.g. 16 by 18 character size). An error message is displayed if
  477. the format of the font is not suitable to create the default images
  478. (appendix G).
  479.  
  480.    The format of the file created by this function resembles in part that
  481. of the standard PFM font file. A character set file is also an IFF file.
  482. Like a font file, a character set file contains graphic data for the
  483. default character images. Other parts of the file format differ, since a
  484. character set contains information not needed in a font file (i.e. the
  485. encoding vector), and vice versa. Appendix O contains the technical
  486. documentation necessary to access the Personal Fonts Maker character set
  487. files through external programs.
  488.  
  489.    A character set cannot be loaded by the "Load PFM Font" function. To
  490. edit the default images of the characters in the set, the character set
  491. must first be loaded with the "Load Character Set" function (section 4.8).
  492. Then, a font with the graphic data contained in the set must be created
  493. with the "Edit Character Set "function (section 4.11).
  494.  
  495.    This function is not the exact reverse function of "Load Character Set"
  496. (section 4.8), as this latter function does not create a font with the
  497. default character images. The reverse of this function is "Load Character
  498. Set" followed by "Edit Character Set" (section 4.11).
  499.  
  500.    Once a character set has been saved, the name of that set can also be
  501. stored as a reference with all fonts created using that character set. For
  502. this reason, a character set file should never be deleted or renamed if
  503. fonts which reference that set exist. The worst thing that may happen in
  504. this case is that these fonts need to be loaded and saved again to update
  505. their internal reference to the character set (not so terrible, after
  506. all). To prevent this from happening by mistake, the Personal Fonts Maker
  507. also stores the name of the character set inside the character set file
  508. itself. This allows the program to display a warning message (appendix G)
  509. if a program other than the Personal Fonts Maker was used to rename the
  510. character set file. If the file is renamed, for example with the AmigaDOS
  511. "Rename" command, the Personal Fonts Maker displays a warning message when
  512. that file is loaded, since the file name is different from the internal
  513. name of the character set.
  514.  
  515.  
  516. 4.10       Define Character Set
  517.  
  518.    As described in section 2.8 ("Character Sets"), each of the two font
  519. environments can work with a different character set. A character set
  520. consists of an encoding vector and a set of default character images. The
  521. encoding vector allows the program to exchange data between Amiga fonts
  522. and fonts based on a different character set (sections 4.5, "Import Amiga
  523. Font" and 4.6, "Export Amiga Font"). The function described here allows
  524. the user to modify the encoding vector. Section 4.11 ("Edit Character
  525. Set") explains how to edit the character images.
  526.  
  527.    The Personal Fonts Maker uses a flexible character encoding scheme. The
  528. association between each character in a font and its Amiga character set
  529. code is not part of the font, but is described by the encoding vector
  530. which is part of the character set. The encoding vector is only used to
  531. exchange data to and from Amiga font files.
  532.  
  533.    The encoding vector is defined by a 256-element array. The 257th
  534. character in a font is always the undefined character, which is never
  535. translated and therefore does not need a position in the encoding vector.
  536. The array is indexed by character code (an integer in the range 0 to 255).
  537. The elements of the array are Amiga character set codes. This means that
  538. the encoding vector is a conversion table from codes of the selected
  539. character set to Amiga character set codes.
  540.  
  541.    The encoding vector allows the Personal Fonts Maker to save a font
  542. which adopts any character set selected by the user to an Amiga font file.
  543. The encoding vector is used to re-order the characters in the font so that
  544. they follow the order specified by the Amiga character set (appendix D).
  545. If a particular character in the font does not exist in the Amiga
  546. character set, then it is not translated. A -1 (minus one) must be placed
  547. in the positions of the encoding vector associated with those characters
  548. which have no Amiga equivalent. For example, the code for the "heart" sign
  549. in the "PC_Usa2" character set is 3 (three). The Amiga has no "heart"
  550. sign, therefore it would be impossible to save that character of the font
  551. to an Amiga font. For this reason, a -1 (minus one) is placed at position
  552. 3 (three) of the encoding vector. Element number 3 is the fourth element
  553. of the vector, as the count starts from 0 (zero).
  554.  
  555.    The Amiga character set can be used from the beginning to create a
  556. font. One of the predefined character set files which come with the
  557. Personal Fonts Maker contains the Amiga character set. The encoding vector
  558. of that set is very simple: each element contains the same code as the
  559. position code of the element in the array, except the characters whose
  560. decimal code in the Amiga set ranges from 0 to 31 or from 128 to 159,
  561. which have no graphical equivalent (these are marked by a -1 in the
  562. encoding vector). The encoding vector of most character sets is not as
  563. repetitive. The "PC_Usa2" character set, for example, uses the code 171
  564. for the '½' (one half) character, whereas in the Amiga set the code of
  565. that character is 189. The position 171 of the encoding vector will
  566. therefore contain the value 189. Other characters are processed in a
  567. similar way. If a character in the "PC_Usa2" set has no equivalent in the
  568. Amiga set (like the "heart" sign mentioned above), a -1 (minus one) is
  569. placed in its position of the encoding vector. Some characters have the
  570. same code in both sets, as those whose codes are in the range from 33 to
  571. 126. Those positions in the vector will contain the same codes as the
  572. array element code, as described for the Amiga characer set. Appendices C
  573. and D illustrate the differences between the IBM PC and the Amiga set.
  574.  
  575.    The encoding vector just described can only be used to convert
  576. characters to the Amiga set. What if a font is to be converted from the
  577. Amiga character set? The answer is very simple. The Personal Fonts Maker
  578. creates a reverse vector, based on the data stored in the original vector.
  579. The reverse vector is used by the "Import Amiga Font" function (section
  580. 4.5).
  581.  
  582.    Some character sets contain the same character more than once, i.e. the
  583. same character has more than one code. In IBM's Code Page 850, for
  584. example, the '' (section) character appears both at position 21, and at
  585. position 245. When the reverse encoding vector is built by the Personal
  586. Fonts Maker, only the highest of multiple codes is used. This means that
  587. when the '' (section, Amiga code 167) character is loaded from an Amiga
  588. font, it is copied only to position 245 of the font environment using the
  589. set mentioned above. Multiple assignments of the same character should,
  590. however, be avoided, as the effects are not always intuitive. All codes
  591. but one should be excluded, setting the associated parameter in the
  592. encoding vector to -1.
  593.  
  594.    When the program is started, it automatically loads one default
  595. character set for each font environment (sections 1.12 and 2.6.8). If a
  596. set cannot be loaded, or if the user clears the character set data
  597. (section 4.7) without loading a new set, all positions of the encoding
  598. vector will contain a -1 (minus one). Under these conditions, the "Import
  599. Amiga Font" and "Export Amiga Font" functions will not work, as explained
  600. in sections 4.5 and 4.6.
  601.  
  602.    All default characters with an associated Amiga conversion code other
  603. than -1 (minus one) must be marked as "On". This should be done when a
  604. character set is created or modifed, and before that character set is
  605. saved. If a character has no default image (i.e. if it is "Off") it cannot
  606. have a translation code. "Off" characters are not saved with the character
  607. set data. The conversion codes associated with these characters are
  608. automatically reset to -1 (minus one) when a character set is loaded.
  609.  
  610.    The requester displayed by this function allows the user to change the
  611. codes of the encoding vector, so that a character set can be created or
  612. modified. The left part of the requester contains the "Character #"
  613. gadgets, similar to those described in section 3.3. The right part
  614. contains the gadget associated with the Amiga code linked to the character
  615. displayed at the left.
  616.  
  617.    Each part contains a string gadget where the user can type a character
  618. code. Two gadgets under each string gadget allow the user to decrease or
  619. increase the value displayed in the string gadget by one unit at a time.
  620. On the right of each of the two string gadgets, there is the default image
  621. of the character associated with the displayed code.
  622.  
  623.    The codes of the character set being defined by the user are used in
  624. the left string gadget. Standard Amiga character set codes, as in appendix
  625. D, are used in the right string gadget. The left default image is the
  626. image of the character having the selected code in the set defined by the
  627. user. The images on the left side can be modified by the user, as
  628. explained in section 4.11 ("Edit Character Set"). However, any redefined
  629. images are displayed in the requester described here only after the
  630. character set containing these images has been selected to be the current
  631. character set. The character images on the right part are those of the
  632. Amiga "Topaz 8" font.
  633.  
  634.    Using the gadgets on the left part of the requester, the user can
  635. quickly access any position in the encoding vector. During this phase, the
  636. gadgets on the right part are automatically updated by the program so that
  637. they always show which Amiga character is associated with the character on
  638. the left. The user can link a new Amiga character with the character on
  639. the left, either using the keyboard to write a new code in the right
  640. string gadget, or with the two little gadgets below the string gadget. If
  641. the Amiga set has no equivalent character, a -1 (minus one) code must be
  642. specified on the right part.
  643.  
  644.  
  645. 4.11       Edit Character Set
  646.  
  647.    This function can be used in conjunction with "Define Character Set" to
  648. modify or create a new character set. While "Define Character Set"
  649. (section 4.10) is used to access and modify the encoding vector of the
  650. character set, this function allows the user to edit the default images of
  651. the characters in the set. Sections 2.8 ("Character Sets"), 3.7 ("The
  652. 'Default' gadget"), 3.22 ("Quick Character Selection"), 4.7 ("Free
  653. Character Set"), 4.8 ("Load Character Set"), 4.9 ("Save Character Set")
  654. and 4.10 ("Define Character Set") contain additional information on this
  655. subject.
  656.  
  657.    A character set contains the images of the "normal" aspect of the
  658. characters included in the set. The program uses these images to show the
  659. user which character is currently being edited, or which character appears
  660. at a certain position in the character set. An Amiga font cannot be used
  661. for this purpose, as the character set selected by the user could contain
  662. characters which are not included in the Amiga set. Similarly, a "smaller"
  663. version of the font being edited by the user cannot be used for the same
  664. purpose, as that font could be completely "empty" or in the middle of
  665. radical editing operations. For these reasons, it is important that the
  666. default images in the character set contain clear and readable default
  667. images of all characters in the set.
  668.  
  669.    The default images can be edited as if they were part of a standard
  670. font created with the Personal Fonts Maker. This function automatically
  671. adjusts some font parameters to edit the character set. The same
  672. parameters could, however, also be set manually, following a few rules.
  673. The characters must be 16 dots wide and 18 dots tall. All characters must
  674. have the same width. The X/Y ratio (sections 7.3.3 and 7.3.4) should be as
  675. close as possible to the screen display proportions, so that the
  676. characters displayed on the screen will look the same as in the character
  677. editing box. The average Width:Height proportions are 65:28 in NTSC mode
  678. (640 x 200 pixels), and 62:33 in PAL mode (640 x 256 pixels). The X Dpi
  679. and Y Dpi parameters (sections 7.3.3 and 7.3.4) can be set manually by the
  680. user to these values.
  681.  
  682.    This function automatically selects the proper character size and
  683. proportions. This function also copies the graphic data, the reference
  684. points and the style attributes (chapter 8) of the default character
  685. images to the current font. A warning message is displayed before an
  686. unsaved font is cleared by this new data.
  687.  
  688.    The font with the default images can be edited like any other font.
  689. Characters having codes not defined by the character set should be marked
  690. as "Off".
  691.  
  692.    If the character set being edited is to be used to create printer
  693. downloadable fonts, all codes used by that particular printer as control
  694. codes should be marked as "Off". This will help the users of the character
  695. set to remember that some places in the font should not be occupied by
  696. graphic characters. For example, on most printers the decimal code 27 is
  697. reserved for the "Escape" command. If the character set had a user-defined
  698. sign in that position, the user could be "tempted" to place a similar
  699. character in the font. A font with such a redefined character would
  700. probably cause some "mysterious" printer errors if downloaded.
  701.  
  702.    When the character set is saved, only the data associated with the "On"
  703. characters is stored. All conversion codes associated with characters
  704. marked as "Off" are reset to the default -1 (minus one) code when the
  705. character set is loaded.
  706.  
  707.  
  708. 4.12       Printer Test
  709.  
  710.    This section contains the two subsections "Character" and "Font", named
  711. after the menu items used to verify the printed aspect of the entire font
  712. or the current character, respectively. The content of this section covers
  713. the general aspects of both functions. Each subsection contains a
  714. description of the details specific to each function.
  715.  
  716.    These functions allow the user to verify the aspect of the current font
  717. when it is downloaded and printed. The functions are also useful to check
  718. whether the specified FFDL sequences work correctly with the printer, or
  719. need any changes.
  720.  
  721.    The functions work in two steps. First, they output the font data
  722. processed by the FFDL sequences. This phase is similar to the "Write Font
  723. Data/Printer" function described in sections 4.13 and 4.13.2. After the
  724. download, some characters are sent to the printer, as described in the
  725. following subsections. The character codes are not processed in any way by
  726. the printer driver, i.e. the same codes which are output by the Personal
  727. Fonts Maker are also received by the printer. The character set of the
  728. current font environment must be the same as that of the printer.
  729.  
  730.    Sections 4.13 ("Write Font Data") and 7.3 ("Font Description") explain
  731. the execution of the FFDL sequences in more detail. Section 14.2
  732. ("Problems with Printers") contains some suggestions on what can be done
  733. if the printer does not behave as expected.
  734.  
  735.  
  736. 4.12.1     Character
  737.  
  738.    This function causes the character currently displayed in the character
  739. editing box to be printed. The character is printed four times on the same
  740. line. It is printed three times consecutively, followed by a space and
  741. then printed again. This allows the user to see what the character looks
  742. like when it is surrounded by other characters, or isolated. Also, having
  743. the character printed three times consecutively makes it possible to judge
  744. the appearance of patterns generated by repetitions of the same
  745. character.
  746.  
  747.    The FFDL sequences are executed as if the first character and the last
  748. character in the range of the characters to be output were the same
  749. character, i.e. the current character. It is not possible to print an
  750. "Off" character, nor the undefined character (decimal character code 256).
  751. Similarly, it is not possible to print a character which is out of the
  752. selected range (sections 2.7.2.7 "FFDL Variables: FRST", 2.7.2.11 "FFDL
  753. Variables: LAST" and 7.3.9 "Range").
  754.  
  755.  
  756. 4.12.2     Font
  757.  
  758.    This function prints all "On" characters in the specified range of the
  759. current font. For this reason, it is important that the valid range
  760. specified for the FFDL sequences (section 7.3.9 "Font Description/Range")
  761. covers all "On" character that are to be tested.
  762.  
  763.    Each line contains 64 characters. If the current font has more than 64
  764. characters, or the codes of these characters fall between two or more
  765. different multiples of 64, the characters are distributed over several
  766. lines.
  767.  
  768.  
  769. 4.12.3     Line Feed
  770.  
  771.    This command advances the paper by one line. This can be very useful
  772. for reading a text which is still under the printer head without having to
  773. access the printer controls.
  774.  
  775.  
  776. 4.12.4     Form Feed
  777.  
  778.    This command has been designed for page printers, i.e. printers which
  779. print one sheet of paper at a time (like most laser printers), and do not
  780. eject the paper until the text reaches the end of the page, or a "Form
  781. Feed" command is received. On some printers this command causes the
  782. printer to print the content of the page buffer and eject the page. On
  783. other printers, for example impact printers with automatic sheet feeder,
  784. the command causes the current sheet of paper to be ejected and a new
  785. sheet to be introduced from the paper hopper. If continuous forms paper is
  786. used, the command positions the printer head at the beginning of the
  787. following page.
  788.  
  789.  
  790. 4.13       Write Font Data
  791.  
  792.    This section contains the two subsections "File" and "Printer", named
  793. like the menu items used to write the font data to the printer or to a
  794. file, respectively. The content of this section covers the general aspects
  795. of both functions. Each subsection contains a description of the details
  796. specific to each function.
  797.  
  798.    The functions described here execute the FFDL sequences of the current
  799. font environment, in the order described in section 7.3 ("Font
  800. Description"). The resulting output is sent to a file or directly to the
  801. printer, depending on the selected function. Sections 2.4 ("Storage of
  802. Fonts"), 2.7 ("Programming the Output Format: the Cloanto FFDL") and 7.3
  803. ("Font Description") contain important information on this subject.
  804. Chapter 13 contains several examples using these functions.
  805.  
  806.    If an error occurs during the execution of the FFDL sequences, the
  807. execution is aborted and a message is displayed. Appendix G contains a
  808. detailed explanation of all messages. The data associated with the FFDL
  809. sequences executed before the error is output normally. If the "Font
  810. Description" requester (section 7.3) is displayed after the execution of
  811. an FFDL sequence is interrupted by an error, the cursor is automatically
  812. positioned where the error occurred.
  813.  
  814.    During the output, the title bar on the top of the screen displays
  815. information relative to the current execution status. The following is a
  816. sample content of the title bar:
  817.  
  818.      Writing in progress (0-255)   #115 - Bytes written: 3452
  819.  
  820.    The title bar displays the following information: the codes (between
  821. parentheses) of the first and the last characters through which the FFDL
  822. sequences are cycling, as specified in section 7.3.9 ("Font
  823. Description/Range"); the code of the character currently processed by the
  824. FFDL sequences, or the "EPIL" or "PROL" abbreviations to indicate that the
  825. epilogue or prologue FFDL sequence is being executed (sections 7.3.5 to
  826. 7.3.8); the last number indicates the number of bytes already output,
  827. particularly useful for checking whether the memory limit of the printer
  828. has been exceeded. This information remains displayed for a few additional
  829. seconds after the termination of the data output.
  830.  
  831.  
  832. 4.13.1     File
  833.  
  834.    This function stores the data output by the FFDL sequences associated
  835. with the current font environment to a file. The standard file requester
  836. (section 3.23) is displayed to let the user specify the file name. If the
  837. file already exists, a warning message is displayed, unless the user has
  838. disabled this function as described in section 7.11.4 ("Confirm
  839. Overwriting"). The function can be aborted by selecting the "Cancel"
  840. gadget of either requester.
  841.  
  842.    The data stored to the file is exactly the same as the data which would
  843. be sent to the printer if the user so specified. If the output data
  844. contains a printer downloadable font, the file can be sent to the printer
  845. by a word processor or by the user clicking the Workbench icon. If the
  846. user enables the Workbench icon function (section 7.8, "Icons") the icon
  847. created by the Personal Fonts Maker will contain a reference to the
  848. "PrintRawFiles" program as a default tool. This means that when the user
  849. double-clicks on the icon of the file created by this function, the
  850. "PrintRawFiles" will automatically send the content of the file to the
  851. printer. Section 12.2 explains how the "PrintRawFiles" utility works.
  852.  
  853.  
  854. 4.13.2     Printer
  855.  
  856.    This function is useful whenever printer downloadable fonts are created
  857. with the Personal Fonts Maker. Once the download format is specified
  858. through the FFDL sequences, the program can create font data ready to be
  859. processed to the printer. Downloaded fonts are printed with the same speed
  860. and quality as the printer's internal fonts.
  861.  
  862.    This function causes the data to be output to the printer. A requester
  863. is displayed before the output begins. If the "Cancel" gadget of the
  864. requester is selected the operation is aborted.
  865.  
  866.    The data is not translated or processed in any way by the Amiga printer
  867. driver, therefore it does not matter which printer driver is installed.
  868. The printer receives exactly the same data that would be stored in the
  869. file if the function was called to send the data to a file. The program
  870. uses the printer driver only to direct the data flow to the printer. The
  871. user must specify through the Amiga "Preferences" program, or another
  872. program designed for this purpose, the port to which the printer is
  873. connected. If more than one printer is connected to the Amiga, the one
  874. currently selected will be used.
  875.  
  876.    When the program is initially loaded it checks whether there is a
  877. memory expansion to at least 1 Mbyte of RAM. If there is enough memory,
  878. the printer driver is automatically installed from the Workbench disk to
  879. the computer's RAM. This frees the user from having to insert the
  880. Workbench disk when this function (or "Printer Test") is called. In case
  881. of memory shortage, or if a different printer driver is specified through
  882. the "Preferences" program, the memory occupied by the printer driver is
  883. freed. If the printer driver is not in RAM, it will have to be executed
  884. from the Workbench disk (or hard disk). The Amiga operating system will
  885. ask the user to insert the appropriate disk if it is not already mounted.
  886.  
  887.    If the printer is switched off, or if it is not "On Line", an Amiga
  888. system message will be displayed after a few seconds. If the user selects
  889. the "Cancel" gadget of the system requester, the operation will be
  890. aborted.
  891.  
  892.    The font data is cleared from the printer's memory whenever the printer
  893. is reset or switched off. If the user wishes to preserve the font data
  894. without having to load the Personal Fonts Maker again, the data can be
  895. stored in a file.
  896.  
  897.    After a font has been downloaded and selected with the appropriate
  898. printer control commands, it is ready to be used by the printer when a
  899. program sends text to it. Section 14.2 contains useful suggestions for
  900. improving the output quality and solving any problems which may occur.
  901.  
  902.  
  903. 4.14       Font Statistics
  904.  
  905.    This function displays a requester containing general information on
  906. the status of the current font. The requester does not contain any gadgets
  907. except "OK", at the bottom-right of the requester, which can be used to
  908. remove the requester. Pressing <Esc> or <Return> has the same effect.
  909.  
  910.    The requester displays different types of information. The following
  911. subsections, named after the texts on the requester, explain the meaning
  912. of the displayed data.
  913.  
  914.  
  915. 4.14.1     Activation Table
  916.  
  917.    The top part of the requester contains a map which shows the "On/Off"
  918. status of each character in the font. The table looks like a simplified
  919. form of the "Quick Character Selection" requester (section 3.22). The
  920. order of the characters is the same, but asterisks are displayed instead
  921. of the character images. Each column contains ten asterisks. Black
  922. asterisks are associated with "On" characters, light green asterisks with
  923. "Off" characters.
  924.  
  925.  
  926. 4.14.2     ON Characters
  927.  
  928.    This number indicates the quantity of active ("On") characters in the
  929. font. The number is the same as that of the black asterisks in the top
  930. part of the requester. The undefined character is included in this count,
  931. if it is "On".
  932.  
  933.    This information can be very useful when a certain limit of "On"
  934. characters cannot be passed. For example, some printers will not accept
  935. more than 128 characters to be downloaded. If the current font is to be
  936. downloaded to such a printer, this field can be checked to prevent any
  937. inconvenience.
  938.  
  939.  
  940. 4.14.3     Average Width
  941.  
  942.    This field contains the average width, in dots, of the characters
  943. marked as "On". This information can be useful to get a quick idea of how
  944. large the characters in the font are.
  945.  
  946.    The displayed value could be used to modify the density setting for
  947. proportional characters on a word processor which is to print with the
  948. font. Section 13.6 ("Creating a Word Processor Font Size Table") explains
  949. how to obtain more detailed information on the size of the characters.
  950.  
  951.    If all the characters have fixed-width, the displayed value will be the
  952. same as the character width.
  953.  
  954.  
  955. 4.14.4     Widest Character
  956.  
  957.    The displayed value indicates the code (as in section 3.3, "Character
  958. #") of the widest "On" character in the current font. If more than one
  959. character has the same width, the value indicates the position of the
  960. character with the lowest code.
  961.  
  962.    The number indicating the character code is followed by a second value,
  963. enclosed between parentheses, which gives the width, in dots, of that
  964. character. If a proportionally-spaced font whose limits are not known is
  965. loaded or imported, this value can be used to determine the minimum value
  966. of the "X Max" parameter (section 7.3.1). If the font has fixed-width
  967. characters, the second value is the same as the average width and the
  968. width of the narrowest character.
  969.  
  970.  
  971. 4.14.5     Narrowest Character
  972.  
  973.    This field is similar to "Widest Character", except that the code and
  974. the width values of the narrowest character are displayed.
  975.  
  976.  
  977. 4.14.6     Font Status
  978.  
  979.    The text indicates the status of the current font. One of six texts can
  980. be displayed:
  981.  
  982.      "New"
  983.      "Loaded"
  984.      "Imported"
  985.      "Stretched"
  986.      "Saved"
  987.      "Modified"
  988.  
  989.    The font is "New" if the program has just been loaded, or if the "New
  990. Font" (section 4.1) was executed. When the current font is "New" the title
  991. bar contains a copyright notice instead of the name of the font.
  992.  
  993.    "Loaded" indicates that the current font has been loaded from a font
  994. file in the default PFM format. The font has not yet been modified.
  995.  
  996.    "Imported" is similar to "Loaded", but indicates that the current font
  997. has been imported from an Amiga font file (e.g. an Amiga screen font).
  998.  
  999.    "Stretched" means that the font has just been automatically stretched
  1000. by the program from one format to a different one. This can also occur
  1001. when a font is read from a file, if the "Stretch" option has been
  1002. selected. Section 7.10 explains how the stretch works.
  1003.  
  1004.    The status of the current font is "Saved" if the font has just been
  1005. saved in the PFM format. The status is not changed to "Saved" when a font
  1006. is exported to an Amiga font file, as the Amiga font format does not
  1007. contain all the information of the PFM format, and some characters in the
  1008. font may not have an equivalent in the Amiga character set. The "Saved"
  1009. status is used to inform the user that the current font can be safely
  1010. cleared, with no loss of data.
  1011.  
  1012.    The font becomes "Modified" as soon as the user edits a character
  1013. image, defines a new position for a reference point or changes the style
  1014. attribute flags. The "Modified" status replaces any other previous status.
  1015. If the previous status was "New", the default "Unnamed.fnt" font name is
  1016. displayed on the title bar.
  1017.  
  1018.  
  1019. 4.15       Memory Information
  1020.  
  1021.    This function displays a requester containing information on the amount
  1022. of available RAM. The "OK" gadget of the requester can be selected to
  1023. remove the requester.
  1024.  
  1025.    The requester contains different numbers. The displayed values are
  1026. calculated before the requester is displayed. In this way, the memory
  1027. temporarily occupied to display the requester is not subtracted and
  1028. counted as occupied. The unit for all numbers is the byte. Sections 1.3
  1029. ("Memory") and 2.4 ("Storage of Fonts") contain additional information on
  1030. memory.
  1031.  
  1032.    The upper part of the requester contains nine numbers, divided into
  1033. three columns of three rows each. The three rows are labelled: "Chip",
  1034. "Fast" and "Total" (abbreviated "Tot."). The three columns are: "Used",
  1035. "Free" and "Largest".
  1036.  
  1037.    "Chip" stands for "Chip Memory", which is the portion of the system
  1038. memory which can be accessed by the Amiga special-purpose custom chips.
  1039. The custom chips are used, for example, to handle graphical data, like the
  1040. contents of screens and windows. If there is not enough chip memory, some
  1041. operations, like the opening of a requester, may fail. Section 7.7
  1042. explains how some chip memory can be freed by closing the Workbench
  1043. screen.
  1044.  
  1045.    All the remaining RAM is called "Fast" memory. This memory is outside
  1046. the range that the custom chips can access. It is called "Fast" because
  1047. the custom chips cannot access this memory, therefore the microprocessor
  1048. does not have to wait if a custom chip is working with the same memory
  1049. (this is called "bus contention").
  1050.  
  1051.    The Amiga's memory is either "Chip" or "Fast", therefore the sum of the
  1052. two yields the "Total" memory. The "Total" row contains the sums of each
  1053. column's "Chip" and "Fast" memory occupation numbers.
  1054.  
  1055.    For each row (type of memory) there are three columns: "Used", "Free"
  1056. and "Largest". The first number in the row indicates how much of the
  1057. particular kind of memory associated with the row is already occupied. The
  1058. second number tells how much memory is still available to be used by the
  1059. Amiga operating system or other programs. The third number indicates the
  1060. size of the largest chunk of free memory.
  1061.  
  1062.    The "Largest" field deserves a more detailed explanation. The free
  1063. memory is usually fragmented into several non-contiguous segments. For
  1064. example, 200 Kbytes of free memory may consist of a single chunk of 140
  1065. Kbytes, another 50 Kbytes long, and several other smaller chunks for a
  1066. total of 10 Kbytes. If a program asks the system for a block of 200
  1067. Kbytes, it will not get that memory. The available 200 Kbytes cannot be
  1068. merged into one single chunk, as other programs are using the memory
  1069. between the free chunks. It is possible that new Amiga operating systems,
  1070. beyond the versions available at the time of writing, take advantage of
  1071. the features of the more powerful microprocessors mounted in the Amiga,
  1072. making the operation just described possible. Currently, the only thing
  1073. that can be done by the operating system in case of memory shortage is the
  1074. freeing of some libraries, devices and other resources which are not
  1075. currently used.
  1076.  
  1077.    In a multitasking environment like the Amiga, it is possible that
  1078. programs other than the Personal Fonts Maker allocate and free memory.
  1079. Therefore, the displayed values represent only a "snapshot" of the current
  1080. situation.
  1081.  
  1082.    The lower part of the requester contains information regarding the
  1083. memory currently allocated by the program's two font environments. This
  1084. includes the bitmap memory for each font's character images and the memory
  1085. reserved for the character buffer, the brush and the "Undo" function.
  1086.  
  1087.    The amount of memory occupied by the graphical data of the current font
  1088. is independent from the quantity of "On" characters. However, the program
  1089. always allocates enough memory for a full font consisting of 257
  1090. characters in the maximum allowed size. The memory occupied by the "Undo"
  1091. function and the character buffer is always sufficient to contain the
  1092. largest character in any of the two font environments. The amount of
  1093. memory reserved for the brush depends on the size of the selected brush.
  1094. The displayed values do not include the memory occupied by the program
  1095. code itself or by its screens and windows.
  1096.  
  1097.    The first two numbers, introduced by the "Font 1" and "Font 2" texts,
  1098. contain the memory occupied by the graphical data of each font environment
  1099. separately.
  1100.  
  1101.    These amounts of memory, plus the memory occupied by the default images
  1102. of the character set and the space, offset and character conversion
  1103. vectors, are those which would be freed by the "Free Font Memory" function
  1104. (section 4.2) on each of the two font environments. The third number
  1105. ("Total") is the sum of the two values, plus the memory occupied by the
  1106. undo, character buffer and brush functions (sections 3.9, 3.11 and 3.17).
  1107. This total is already included in the data regarding the total system
  1108. memory occupied, displayed in the upper part of the requester.
  1109.  
  1110.  
  1111. 4.16       Delete
  1112.  
  1113.    The Personal Fonts Maker can also delete files. This may be used to
  1114. remove old files which are not needed any more, or to rename a file, by
  1115. deleting it and saving it again with the new name. Two functions can be
  1116. used, each of which is described in the following subsections.
  1117.  
  1118.  
  1119. 4.16.1     File
  1120.  
  1121.    This function can delete any file accessible through the Amiga
  1122. operating system. The standard file requester (section 3.23) can be used
  1123. to delete the file. A warning message is displayed before the file is
  1124. deleted. The operation can be aborted by selecting the "Cancel" gadget of
  1125. either the file requester or the warning message.
  1126.  
  1127.    This command can be used to delete any kind of file, regardless of its
  1128. content. The function may be used freely to remove parameter files, macro
  1129. files, character sets and fonts in the Personal Fonts Maker default
  1130. format. The command should not, however, be used to delete Amiga fonts, as
  1131. there is a special function for this purpose (section 4.16.2).
  1132.  
  1133.    If a Workbench icon is associated with the file to be deleted, it is
  1134. removed as well.
  1135.  
  1136.  
  1137. 4.16.2     Amiga Font
  1138.  
  1139.    This is a variant of the "Delete File" function, described in section
  1140. 4.16.1. The font requester (section 3.24) is used instead of the more
  1141. general file requester to select the Amiga font to be deleted. This is the
  1142. function which must be used to delete Amiga fonts. All other files,
  1143. including fonts saved in the Personal Fonts Maker format, can be deleted
  1144. with the "Delete File" function (section 4.16.1).
  1145.  
  1146.    The reason for which a special function is needed to delete Amiga
  1147. fonts, is that data regarding such a font is not stored in a single file.
  1148. When an Amiga font is deleted, information in other files must be updated
  1149. by the Personal Fonts Maker. If other programs are used to directly
  1150. delete, or in any way alter a file containing Amiga font data, the
  1151. Commodore "FixFonts" program must be used to reorganize the font
  1152. information structures.
  1153.  
  1154.    An error message is displayed if a font which is stored in ROM (e.g.
  1155. the default "Topaz 8" font) is selected, as such a font cannot be
  1156. deleted.
  1157.  
  1158.  
  1159. 4.17       About
  1160.  
  1161.    A requester appears when this option is selected. Some information on
  1162. the Personal Fonts Maker version, the copyrights and its authors is
  1163. displayed. The "OK" gadget (or the <Return> or <Esc> keys) can be selected
  1164. to remove the requester.
  1165.  
  1166.  
  1167. 4.18       Quit
  1168.  
  1169.    This command is used to terminate the work with the Personal Fonts
  1170. Maker. A warning requester can appear to inform the user about all the
  1171. pieces of data which have not yet been saved. The "Proceed" and "Cancel"
  1172. gadgets of the requester can be used to confirm or cancel the command. If
  1173. the choice is confirmed, the program terminates. The screen is closed, all
  1174. memory and resources occupied by the program are freed.
  1175.  
  1176.    It is good practice to always exit from all programs before switching
  1177. the computer off or resetting the system (with the <Commodore> + <Amiga> +
  1178. <Ctrl> keys).
  1179.  
  1180.