home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / keyboard / kw_1 / !KeyWindow / !Help < prev    next >
Text File  |  1993-05-10  |  24KB  |  605 lines

  1. Key Window                                  (v 1.50)
  2. -=-=-=-=-=-
  3.  
  4. by Richard G. Hallas
  5.  
  6. (See the end of this file for details of the latest
  7. version. There are a couple of important points.)
  8. ____________________________________________________
  9.  
  10. This program provides an on-screen function keystrip
  11. in a window. It should prove useful to owners of
  12. A3000s, A5000s and A540s who do not have keystrip
  13. holders on their keyboards, but it does more than
  14. that: you can 'press' the keys by clicking on them
  15. with the mouse, and Key Window can keep track of a
  16. list of up to 32 keystrips, opening and closing them
  17. automatically as you load, use & quit applications.
  18.  
  19. To use:
  20. -------
  21.  
  22. Load by double-clicking in the usual way. If you are
  23. in the habit of booting up a number of applications
  24. when you switch on, then you might like to include
  25. Key Window near the beginning of your boot-up
  26. sequence so that it can keep track of other
  27. applications starting up and open keystrips for
  28. them.
  29.  
  30. Once loaded, clicking SELECT on the icon-bar icon
  31. will open a keystrip window; either the first one
  32. on the list, or the last one shown if you closed a
  33. strip which was opened automatically. (If you ignore
  34. Key Window, and load DeskEdit [for example] a
  35. keystrip will appear anyway, since DeskEdit is
  36. defined as one of the applications for which Key
  37. Window has a keystrip.) The keystrip will appear
  38. behind other windows so that it is inobtrusive, but
  39. you can easily bring it to the front by clicking
  40. its title bar in the usual way.
  41.  
  42. Pressing the hot-key combination <SHIFT-CTRL-TAB>
  43. or <CTRL-SHIFT-INSERT> will toggle the keystrip
  44. between the front and the back of the desktop.
  45. (The hot-key may not work if an application such
  46. as DeskEdit has the input focus; it is for this
  47. reason that there are two version of the same
  48. hot-key.)
  49.  
  50. In addition to opening and closing keystrips when
  51. you load and quit applications, Key Window is also
  52. 'context sensitive', and will update the contents of
  53. the keystrip window according to whichever program
  54. currently owns the caret. If a program which does
  55. not have a keystrip defined claims the caret, then
  56. the keystrip will be closed, but if the caret is
  57. turned off completely, then the last keystrip used
  58. will continue to be shown.
  59.  
  60. The icon-bar menu has the usual 'Info' and 'Quit'
  61. options, along with two others: 'Keystrips' and
  62. 'Options'. The first of these provides access to an
  63. 'Applications' submenu, and choosing an application
  64. from this menu will open a keystrip for it.
  65.  
  66. The other icon-bar submenu, 'Options', governs how
  67. the keystrip window will operate. The options are as
  68. follows:
  69.  
  70. ☓ 'Open at top': If this is ticked, the window will
  71.  always appear at the top of the screen; otherwise
  72.  it will appear just above the icon bar, or wherever
  73.  you put it last.
  74.  
  75. ☓ 'Auto scroll': This makes the keystrip window
  76.  behave in the same way as the icon bar does when it
  77.  is full; that is, it scrolls sideways automatically
  78.  when the pointer is moved to the left and right
  79.  hand edges.
  80.  
  81. ☓ 'Scroll bar': This toggles the horizontal scroll
  82.  bar and size icon; if 'Auto scroll' is selected,
  83.  then the scroll bar is unnecessary, but you may
  84.  wish to use it to get from one side to the other
  85.  more quickly.
  86.  
  87. It is not possible to deselect both 'Auto scroll'
  88. and 'Scroll bar' at the same time, since it would
  89. obviously then be impossible to move from one side
  90. of the keystrip to the other.
  91.  
  92. ☓ 'Compress': This option will force the entire
  93.  strip to fit onto the screen. Obviously, since the
  94.  key labels have space for 16 characters, the fully-
  95.  annotated keystrip cannot be fitted on the screen
  96.  (except with very large screen modes indeed). If
  97.  you select this option, the full window will cease
  98.  to scroll, and will be sqaushed to fit whichever
  99.  screen mode you are using. Any key labels which are
  100.  wholly visible will be centred in their slots as
  101.  usual, but labels which overflow their slots will
  102.  be justified to the left, so that you can at least
  103.  see how they begin. In all standard screen modes it
  104.  is possible to see almost 6 characters in a
  105.  compressed strip. If you do happen to be using a
  106.  very large screen mode which can accommodate the
  107.  whold strip without having to scroll, then the
  108.  Compress option will be turned off in that mode,
  109.  and you won't be able to turn it on again (it will
  110.  appear shaded until you select a mode which could
  111.  use it). <F12> and <CTRL-SHIFT-F12> are usually
  112.  automatically given the respective labels "Command
  113.  Line" and "Exit Desktop". In Compress mode, these
  114.  will appear as "* CLI" and "Exit", but if you save
  115.  a strip the full labels will be used. If these two
  116.  keypresses are being used for other purposes, and
  117.  therefore have different labels from standard, the
  118.  new labels will not be affected by the Compress
  119.  mode.
  120.  
  121. The last two options are separated from the others
  122. by a dotted line, and they govern the way the
  123. 'context switching' aspects of the program work.
  124.  
  125. ☓ 'Sense caret': If this option is selected, the
  126.  keystrip will be fully context sensitive, and as
  127.  the input focus moves between windows, the keystrip
  128.  will change to reflect its position. (Note that for
  129.  the sake of simplicity, the program's menu refers
  130.  to the 'caret' when it actually means the 'input
  131.  focus'; there doesn't really have to be a physical
  132.  caret. A good example is of this Draw Plus, which
  133.  only shows a caret when entering text objects; the
  134.  keystrip nevertheless still applies.)
  135.  
  136. ☓ 'Sense apps': If this option is selected, Key
  137.  Window will open and close strips as applications
  138.  are loaded and quit. Since this could potentially
  139.  interfere with the context switching option above,
  140.  then if the 'Sense caret' option is on, the 'Sense
  141.  Apps' option will only work if a keystrip is not
  142.  currently in use.
  143.  
  144. All this makes Key Window sound very complicated,
  145. but you should find it quite easy and natural to
  146. use.
  147.  
  148. Regardless of the state of these options, whenever
  149. the window is opened, or the screen mode is changed,
  150. it will appear behind the other windows, and will
  151. resize itself to fit the current width of the
  152. screen. The default settings of these options can be
  153. defined by editing the !Run file; see that file for
  154. details, and also later in this !Help file.
  155.  
  156. On to the keystrip window itself. Clicking any of
  157. the key definitions with SELECT or ADJUST will
  158. 'press' that key. If you are not using the 'context
  159. switching' features you should remember that the
  160. same key is pressed regardless of whatever strip is
  161. showing; you may for example have the keystrip for
  162. Edit on the screen, but if you are currently using 
  163. Impression, then clicking on <CTRL-F4> will bring up
  164. the Find/Replace box rather than doing an Indent
  165. Block in Edit.  This seems obvious, but it's easy to
  166. forget. They're the same keys, regardless of how
  167. they're labelled.
  168.  
  169. Since <CTRL-SHIFT-F12> is a dangerous keystroke (it
  170. normally exits the desktop), I have made the icon as
  171. difficult to click by accident as possible. To
  172. activate it, you must click on it with both SELECT
  173. and ADJUST simultaneously. (The easiest way of doing
  174. this is probably to hold down SELECT and then click
  175. ADJUST.)
  176.  
  177. The keystrip window has its own menu so you can edit
  178. the strips and create new ones. The menu options are
  179. as follows; I shall deal with them in turn:
  180.  
  181. ☓ Edit item: this is context-sensitive, and only
  182.  appears when you click over a key label. Enter the
  183.  contents in the submenu leaf; up to 16 characters
  184.  are allowed for each, even when the strip is
  185.  compressed (you just won't be able to see all the
  186.  text).
  187.  
  188. ☓ Edit title: this allows you to edit the title of
  189.  the keystrip; the title will be used in the
  190.  keystrip window and in the 'Applications' menu.
  191.  
  192. ☓ Get strip: this is the same as the 'Keystrips'
  193.  option on the icon-bar menu, and updates the window
  194.  with whichever keystrip you choose. Any unsaved
  195.  contents of the keystrip window will be lost if you
  196.  use this option. The only difference here is that
  197.  the keystrip is opened at the front, whereas it is
  198.  opened at the back when you select a strip from the
  199.  icon-bar menu. You should note that if the 'Sense
  200.  caret' option is on, then using either of these
  201.  application keystrip menus will lose the input
  202.  focus. If it didn't, then the keystrip would change
  203.  back to the one needed for the current application
  204.  as soon as you had selected a different one.
  205.  
  206. ☓ Clear strip: this blanks the strip to give you a
  207.  fresh start. The two usual functions of F12
  208.  (Command Line & Exit Desktop) are entered for you
  209.  automatically, but you can delete them if you wish.
  210.  Note that if you are entering a strip in Compress
  211.  mode, "Command Line" and "Exit Desktop" will be
  212.  abbreviated to "* CLI" and "Exit". However, this is
  213.  for display purposes only, and if you save a strip
  214.  the full labels will be saved in the file (unless,
  215.  of course, you have replaced them with something
  216.  else).
  217.  
  218. ☓ Open with?: entering a taskname (as it appears in
  219.  the Task Display window) into this submenu will
  220.  make that strip open and close automatically when
  221.  you use a particular application. Leave the option
  222.  blank if you do not wish this to happen, but 
  223.  remember that this will disable the context switch
  224.  facilities for that particular application.
  225.  
  226. ☓ Save strip: there are two ways of saving
  227.  keystrips, which you must choose from the submenu
  228.  (clicking on 'Save strip' alone will do nothing).
  229.  Firstly, 'Replace old' will overwrite the existing
  230.  definition with your edited version, so you can
  231.  easily add to a strip or correct it. (This option
  232.  is unavailable if you have used 'Clear strip'.)
  233.  Secondly, 'Create new' will save a totally new
  234.  keystrip and add it to the 'Applications' menu.
  235.  
  236. Notes on saving new strips
  237. --------------------------
  238.  
  239. When saving a new strip, the data is saved into a
  240. text file within the 'Data' directory in the
  241. !KeyWindow application directory. If you use the
  242. 'Create new' save option, Key Window will save the
  243. file with a numeric filename, starting at number
  244. '0'. If '0' exists, then it uses '1', and so on. If
  245. there are 32 files in the directory, then Key Window
  246. will not allow you to save a new strip, only
  247. overwrite existing ones. When Key Window starts up,
  248. it reads in the contents of all the files in the
  249. 'Data' directory, in the order in which they appear
  250. in the directory viewer; this is also the order they
  251. will appear in the 'Applications' menu. If you want
  252. a particular strip to always be first on the
  253. 'Applications' list (and therefore be the default
  254. one to use when you click on the icon-bar icon) you
  255. should make sure it is the first to appear in the
  256. directory viewer; using the name '!' should ensure
  257. this. It doesn't actually matter what you call the
  258. files; the program just uses numerics for the sake
  259. of simplicity.
  260.  
  261. If you wish to create your function key files in
  262. DeskEdit, say, and not with Key Window itself, the
  263. file format is as follows:
  264.  
  265. ☓ The first line is the title of the application
  266.  (max. 20 characters) to appear in the window title
  267.  and 'Applications' menu.
  268.  
  269. ☓ The second line is either blank or a taskname
  270.  (max. 19 characters) for the strip to open
  271.  automatically.
  272.  
  273. ☓ The remainder of the file has up to 12 lines, one
  274.  for each key. If a line is blank, that key will
  275.  have no labels. Not all 12 keys need to be defined:
  276.  you use only as many lines as the keystrip
  277.  requires.
  278.  
  279.  Each line has up to four entries, separated by
  280.  commas: for the key alone, and in conjunction with
  281.  Shift, Ctrl and Ctrl-Shift. You need only enter as
  282.  many labels as necessary, so you can finish a line
  283.  before Ctrl-Shift, for example. Each line should
  284.  therefore contain 0 to 3 commas. Note that if, say,
  285.  a particular key has no function alone, but has a
  286.  function in conjunction with Shift, the definition
  287.  line should start with a comma.
  288.  
  289. Note also that although spurious commas are not
  290. necessary, they do not matter, and indeed if you
  291. save a definition file from the program, every line
  292. it produces will contain three commas.
  293.  
  294. Setting options with <KeyWindow$Flags>
  295. --------------------------------------
  296.  
  297. Key Window can be made to start up every time with a
  298. certain combination of options already in effect.
  299. You must edit the !Run file in the application
  300. directory to achieve this. Alter the number in the
  301. line 'Set KeyWindow$Flags 51' (The value of 51 is
  302. the default if you omit this line or enter an
  303. illegal value). The variable sets the default state
  304. for the six settings which can be temporarily
  305. toggled on and off in the 'Options' submenu.
  306.  
  307. The <KeyWindow$Flags> variable is a decimal number
  308. in the range 0 to 63, which is calculated from the
  309. following set of bits, which mean, when they are 
  310. set:
  311.  
  312.    Bit 0: Always open keystrip at top of screen.
  313.    Bit 1: Scroll strip when pointer reaches edges.
  314.    Bit 2: Show horizontal scroll bar, along with a
  315.           resize icon and a toggle size icon.
  316.    Bit 3: Always compress keystrip to fit screen.
  317.    Bit 4: Context sensitive: applications gaining
  318.           the caret will open new strips.
  319.    Bit 5: Load sensitive: applications starting up
  320.           and quitting will open and close strips.
  321.  
  322. So, for example, if you wanted just 'Open at top' &
  323. 'Compress' on by default, you would use the value 9,
  324. since you would be setting bits 0 and 6, and 9 is
  325. the decimal equivalent of binary 1001.
  326.  
  327. Do note that the bits are in descending order:
  328. namely, bit 0 is the one on the right.
  329.  
  330. Note also that any values with bits one and two both
  331. set to zero are invalid, since they would mean that
  332. both the 'Auto scroll' and the 'Scroll bar' options
  333. were off, and the program will not allow this. The
  334. smallest value you may use is 2, and if you try to
  335. use an illegal value the program will automatically
  336. turn on 'Auto scroll' for you.
  337.  
  338. If you examine the !Run file further, you will find
  339. another variable, <KeyWindow$DummyMessage>. This is
  340. a message number for internal use. It should always
  341. be an unassigned message; if at some point in the
  342. future this message is assigned a use, it will be
  343. necessary to amend this variable to avoid conflicts.
  344. This is very unlikely, though.
  345.  
  346. Finally
  347. -------
  348.  
  349. So there you have it - what I hope is a useful
  350. program! This is PUBLIC DOMAIN SOFTWARE and as such
  351. may be distributed quite freely, just as long as it
  352. is not modified or tampered with in any way, and all
  353. the associated files are kept together unmodified.
  354.  
  355. The !KeyWindow directory should contain the
  356. following files:
  357.   
  358. !Boot
  359. !Help  (This file)
  360. !Run
  361. !RunImage
  362. !Sprites
  363. !Sprites22
  364. Data
  365. Source
  366. Sprites
  367. Sprites22
  368. Templates
  369.  
  370. The Data sub-directory should contain a full set of
  371. 32 keystrips, numbered 100-131. You should examine
  372. these and delete the ones you don't need in your own
  373. working copy, but if you pass this application on,
  374. please supply all the keystrips. Note that if you
  375. don't delete some of the keystrips Key Window will
  376. not let you add any more, as you can only have a
  377. maximum of 32 available at any one time.
  378.  
  379. (Note: The default keystrips provided are all for
  380. commercial applications, except for three public
  381. domain items: Draw Plus by Jonathan Marten, Zap by
  382. Dominic Symes and DisAssem by Henrik Pedersen. All
  383. three of these applications are excellent, and are
  384. readily available through public domain libraries.)
  385.  
  386. I hope you like this program and find it useful. If
  387. you do, send me a disc with some PD software on it,
  388. and I'll return your disc with the other PD things
  389. I've written on it, and the latest version of this
  390. program if it has been updated. Remember to let me
  391. know which version number you have, and if you find
  392. any bugs, please TELL ME! I try to support all my
  393. programs, and will correct any bugs I know about.
  394. So please send letters, discs, bug reports and
  395. suggestions (none too rude, please!) to the
  396. following address:
  397.  
  398. Richard G. Hallas,
  399. 31 Skelton Crescent,
  400. Crosland Moor,
  401. Huddersfield,
  402. West Yorkshire,
  403. HD4 5PN
  404. ENGLAND
  405.  
  406. Version revisions:
  407. -=-=-=-=-=-=-=-=-=-
  408.  
  409. The following versions have been made available in
  410. the public domain:
  411.  
  412. Version 1.00: First release version, sent to APDL.
  413. This was only sensitive to applications loading and
  414. quitting, not to the movement of the caret between
  415. windows. Its only option was 'Open at top'.
  416.  
  417. Version 1.06: this provides the additional hot-key
  418. <CTRL-SHIFT-INSERT> (duplicating <CTRL-SHIFT-TAB>),
  419. since DeskEdit 1.20 now uses <CTRL-SHIFT-TAB> for
  420. one of its own features. The hot-key now toggles the
  421. window between front and back, rather than just
  422. bringing it to the front as in version 1.00.
  423.  
  424. Version 1.06 also corrects a small bug which caused
  425. the window to reopen upon a mode change or return to
  426. the desktop, when it had previously been closed by
  427. the user.
  428.  
  429. Clicking on the icon with Adjust does the same as
  430. Select, but also provides a little animation! (This
  431. has always happened, but was undocumented for
  432. version 1.00.) I like these little touches!
  433.  
  434. Version 1.07: Small cosmetic changes have been made
  435. to the Keystrip menu to bring it in line with normal
  436. RISC OS standards. The two Edit submenus used to
  437. have red borders and no titles, and the Save strip
  438. submenu also used to have no title bar. Thanks to
  439. Mark Moxon of RISC Developments for his comments.
  440.  
  441. Version 1.12: There are numerous modifications in
  442. this version: the system variable <KeyWindow$Flags>
  443. replaces <KeyWindow$Top> in previous versions, and
  444. provides two more options, 'Auto scroll' and 'Scroll
  445. bar'. The 'Open at top' option on the main icon-bar
  446. menu has been replaced by, and moved onto, a new
  447. 'Options' submenu, which also contains the two other
  448. options provided by the <KeyWindow$Flags> variable.
  449.  
  450. (All the menu items are now at the correct 44 OS
  451. units height, whereas they were previously only 40
  452. units high.)
  453.  
  454. The Keystrip window itself now behaves more sensibly
  455. in that it can scroll itself when the pointer pushes
  456. up to its edges, in the same way as the icon-bar. It
  457. is meant to mimic the icon-bar, and will 'sense' the
  458. pointer at a similar horizontal position.
  459.  
  460. For this reason, the horizontal scroll bar is much
  461. less necessary, and can now be toggled on and off.
  462. In the default state, the program leaves it switched
  463. off, which looks neater and saves a little space on
  464. the desktop.
  465.  
  466. Key-combination labels have been added to the right
  467. hand edge of the window, and are identical to the
  468. ones at the left.
  469.  
  470. My thanks must go to Henrik Pedersen for his very
  471. useful and helpful suggestions, some of which are
  472. implemented in version 1.12, notably the 'Auto
  473. scroll' feature. I can't imagine why I didn't think
  474. of this myself! Other suggestions will have to wait
  475. for a later version, when I have time to think about
  476. them.
  477.  
  478. Version 1.25: Credit must once again go to Henrik
  479. Pedersen, this time for showing me how to read the
  480. taskname of the application owning the caret. It's
  481. actually very easy to do, but I had managed to miss
  482. it every time I had consulted the PRM! Version 1.25
  483. represents a completely new way of operating for Key
  484. Window, and this is the way I wanted it to work in
  485. the first instance. The facility to read the caret
  486. owner's taskname enables it to be wholly context
  487. sensitive, whereas previous versions simply opened
  488. and closed strips as applications were loaded and
  489. quit.
  490.  
  491. The <KeyWindow$Flags> system variable and the
  492. 'Options' submenu have both been extended to take
  493. account of the new context options. Also, a very
  494. small but perfectly formed bug which has been around
  495. since the first version, and which meant that the
  496. strip didn't resize upon a mode change if it was
  497. closed, has finally been killed, and a very minor
  498. deficiency (not exactly a bug) concerning reopening
  499. the same strip has been corrected from previous
  500. versions.
  501.  
  502. Version 1.32: This is the first version to sport the
  503. 'Compress' option. Such a feature was suggested by
  504. Rob Sherratt and David Pilling; my thanks to them
  505. for their helpful comments. Minor modifications have
  506. been made to the Templates file in order to avoid
  507. scaling problems in certain modes, and Key Window
  508. will now also justify the text intelligently within
  509. the key labels.
  510.  
  511. A small bug in the Templates file has also now been
  512. fixed: all the key label icons previously had a
  513. button-type of Click/Drag, and these have now been
  514. changed to just Click, because I found that holding
  515. a mouse button down could cause a click to register
  516. twice, which was quite undesirable. The button-type
  517. Click ensures one click only being registered.
  518. The single exception to this modification is the key
  519. label for <CTRL-SHIFT-F12>, which requires the
  520. Double/Click/Drag button type for its safety
  521. precaution feature to work. This safety feature has
  522. also been changed slightly in this version, from a
  523. sort of double-drag-click within the icon to a click
  524. with both SELECT and ADJUST together. This is safer,
  525. more reliable and less temperamental.
  526.  
  527. The save routine has been slightly modified in this
  528. version to ensure that if automatic F12 labels are
  529. being used, the full label is saved, rather than the
  530. shorter version used in the Compress mode display.
  531.  
  532. Version 1.40: I'm supposed to be working on Key
  533. Window 2 at this point, but I'm not being able to
  534. find time to get down to it. Therefore I've fixed
  535. the bugs I knew about in version 1.32, and added
  536. some high resolution sprites for RISC OS 3 users. I
  537. also created some icons for use with the Pinboard.
  538. Full help on menus for RISC OS 3 has been added too.
  539.  
  540. Three small bugs corrected: trying to open a strip
  541. for a task which doesn't have one defined now sounds
  542. a beep rather than flashing a strip on and off the
  543. screen. Defining a 16-character key label no longer
  544. obliterates the label for the next key along. Strips
  545. now take the size of the title bar into account when
  546. different window tools are in use by RISC OS 3. I
  547. also found a fourth problem which I'm sure wasn't
  548. there under RISC OS 2: the checking of files in the
  549. keystrip data directory wasn't working, and so newly
  550. defined keystrips were overwriting existing ones.
  551. Not a happy situation! I've therefore used a better
  552. checking procedure, and the problem has gone away.
  553. I suspect that results from certain OS_File calls
  554. have changed with RISC OS 3, as this area of Key
  555. Window (which used to work) has not, so far as I can
  556. remember, been changed.
  557.  
  558. Version 1.50: Prior to this version, Key Window used
  559. to interfere with the auto-save document feature in
  560. Impression, preventing it from working. This was due
  561. to the use of a dummy message to follow which task
  562. owned the caret. However, I have discovered how to
  563. do this a better way, and so the dummy message has
  564. now gone (which is good) and the program no longer
  565. upsets any other applications. You can, therefore,
  566. now rely on Impression's auto-save whilst Key Window
  567. is running. This is the most important, but least
  568. visible, change in this version.
  569.  
  570. A second change is the addition of 3D templates.
  571. In order to use these, you must have (a) RISC OS 3·1
  572. or later fitted, and (b) have the 'desktop 3D'
  573. option switched on. (This is achieved by setting bit
  574. 1 of CMOS RAM byte 140.) There have been a few other
  575. changes to the templates so they work OK with the
  576. new Acorn desktop (with shaded window backgrounds).
  577.  
  578. Due to some scaling problems with the 3D borders,
  579. the 'compress' options's workings have been modified
  580. slightly, but this should not be noticeable. A small
  581. bug has also been fixed which used to cause the key
  582. label validation strings to sometimes get over-
  583. written; a similar case with the keystrips menu has
  584. also been fixed. I don't think there are any other
  585. bugs left in this version (I hope).
  586.  
  587. NB There will certainly be a Key Window 2 at some
  588. future point, but finding time to write it is a
  589. major problem. This version (1.50) is therefore a
  590. stop-gap: the new version will have many extra
  591. features, but I don't intend altering Key Window 1
  592. any further now unless I discover any remaining
  593. bugs.
  594.  
  595. One final point of note is that Key Window is now
  596. supplied with a full 32 keystrips, meaning you can't
  597. add any more without deleting some first. I intend
  598. that Key Window 2 will be able to handle any number
  599. of keystrips (and even have more than one per
  600. application, for applications which directly support
  601. this feature), and they will be stored in a similar
  602. way to fonts in a font directory. Watch this space.
  603.  
  604. - R.G.H.
  605.