T1ManagerM is a mock-up of a new GUI design for T1Manager from
util/libs/Type1Engine. It is a MUI application written in ARexx, developed on an
A4000/040 with AmigaOS 3.9, MUI 3.8, RxMUI 42.2, and RoyalBridge 1.1.
I have some criticisms of T1Manager, and although the source code is available,
my programming experience is more with ARexx than with C. As this package
apparently has been out of development for many years, I appeal to the Amiga
community for an interested developer to consider my input. I offer this mock-up
and the accompanying suggestions in the spirit of improving software on the
Amiga.
My mock-up script illustrates many of my suggestions. It reads the installed
font files but doesn't change them, so you can play with it all you want. To
open the modify window you must have installed at least one Type 1 font using
the real T1Manager.
GUI Errors
An input listview should have an input (raised) frame rather than a read-only
(recessed) frame, e.g. the Fonts listview.
An action button that opens a window or requester should have a label that ends
with an ellipsis, e.g. "Install...".
Boolean yes/no, with/without values should be shown as checkboxes instead of
cycle gadgets, e.g. Serifs.
GUI Improvements
My mock-up sets the SingleTask attribute: A tool that manages fonts, which are
global resources, probably shouldn't run as multiple copies.
In my judgment the main window looks better with the Drawer gadget under the
listview and the buttons at the bottom.
Loading and multiple changes to lists should use quiet mode for better speed and
less visual activity.
Input listviews should have a control character and indicate it in a label.
An empty input listview should be disabled.
The multiple-selection listviews Fonts and Sizes should have pop-up selection
menus containing All, Toggle, and None items. Of course, each item should be
disabled when it has nothing to do.
The Fonts listview should be the main window's default object. For the Modify
window it should be the Sizes listview. (My script tries two ways but fails to
set the Sizes listview; apparently a RxMUI/MUI bug.)
Load the Fonts list initially before opening the main window.
The Install file requester's OK button label should be "Install" and the title
should include that word.
Installing fonts shouldn't show the totals requester; instead, because the
process can be slow, show a progress window with a gauge. (To see my example,
simulate installing multiple files - and stopping - with the mock-up.) Either
insert the font entries individually as they are installed, or if they are
inserted together or the list is fully reloaded, use quiet mode.
When installing a font that already exists in the drawer, it seems rude to
refuse to install it. It would be more helpful to present a string requester
for entering a new name and provide the options Rename, Replace, Replace All,
Skip, Skip All, and Cancel.
When installing a font that already exists in another drawer, it seems
presumptuous to arbitrarily rename the font. Present a string requester with the
options Rename, Skip, Skip All, and Cancel. If you implement my request to
support drawers not in the Fonts: path (see below under Feature Requests), this
situation wouldn't apply - unless you decide to determine whether the drawer is
in the path and if it is, to test for cross-drawer duplicates.
The font installation error requesters I've seen are cryptic and unhelpful. One
says "Error 4, Can't build SpaceWidth & YSizeFactor for type1 file:" followed by
the file name. Why can't T1Manager install the font? Is there a programming
error in T1Manager? Is the font file broken? The user needs to know.
Removing fonts shouldn't show a total requester; removing the entries from the
list is enough confirmation. As for install use quiet mode if necessary.
I reorganized the Modify window using register pages to facilitate adding new
values to modify and to alleviate the shortage of control characters. The window
is resizable in both directions.
In my redesign I prevent the cycles and numeric strings from uselessly
expanding horizontally.
I relabeled some gadgets with more user-friendly names, e.g. "YSizeFactor" to
"Height Factor", and with more specific and accurate names, e.g. "Delete Size"
to "Remove Sizes". In my view "remove" is more appropriate for taking entries
and values off a list; "delete" is normally used for erasing an object from
existence.
The gadgets for maintaining font sizes behave strangely: for example, activating
a listview entry loads the string; it shouldn't.
When I enter a new font size, press Add Size, and activate the size I just
added, Delete Size disables; it shouldn't.
The string accepts values as small as 2; this doesn't seem useful. I changed the
lower limit to 4, as this appears to be the value used by the ASL font
requester.
When sizes without bitmaps are selected, setting the string to a non-existing
value disables Add Bitmaps; it shouldn't.
Entering a new size greater than 124 disables Add Size. Unless there are reasons
I don't know about to reject large sizes, T1Manager should be able to create
large (e.g. 400-pixel-high) bitmaps.
Adding and removing bitmaps changes the select states of the list entries; it
shouldn't.
Creating bitmaps can take time. It should show a progress window similar to that
for installing fonts, but saying "Creating bitmap" and e.g. "30". (This is done
during the saving of changes, which my script doesn't implement or simulate.)
Processing Error
I've found that renaming a font that has no sizes drawer unnecessarily creates
one.
Feature Requests
The history log has a 3/27/94 note about a desire to save the install source
drawer. My mock-up does this by adding a text gadget at the bottom of the
window's root group with a ShowMe value of false. I update the requester's
drawer when I drop an icon and at quit time set the text and save it.
Support maintaining fonts in any drawer, not just in drawers already in the
assigned Fonts: path. TTFLib does this.
Include Full Name in the modify window for display and updating. My script gets
it from the PFA/PFB file at modify time, but T1Manager would add it to the .otag
file at install time.
As shown on the Styles page, the Family name should be modifiable to fix bad
names and to reorganize families.
Also, please support the use of style variants in preference to algorithmic
styles. I assume the variants would come from the same drawer as the font being
modified. The pop-ups show the family's member fonts that were read when loading
the Fonts listview. Renaming a font, and installing and removing fonts would
update the family lists. Changing the font's family would remove the font from
the current family and add it to the new. Canceling the modify would remove the
font from the new family and restore it to family it had when it was loaded.
My mock-up doesn't implement the renaming of fonts, and my simulation of
installing them doesn't update the family lists, but removing fonts, changing
the family, and canceling modify demonstrate the processing I describe.
Finally, I'd like to specify algorithmically generated styles to be inhibited.
These values would apply when a variant wasn't specified or found.
History
1.3 Fixed bug: Last fix was broken.
1.2 Fixed bug: Mishandled 32-bit memory address values.
1.1 Fixed bug: Style variant pop-up list used family string contents when value
hadn't been finalized by pressing return.
Fixed bug: Font list didn't respond to cursor keys in font string.
1.0 First Aminet release.
If you find errors or problems in this mock-up, please let me know, but
preferably I hope you'll improve T1Manager by incorporating corrections in your
new release of this important tool for the Amiga.
|