FontManager for Windows - User's Guide FontManager automates the task of changing softfont entries in the PostScript application sections of WIN.INI. It was primarily written for users with more type 1 postscript fonts than can be contained in WIN.INI at one time. It will allow you to create pre-built FontPaks or font sets which can be quickly swapped into the desired PostScript printer section of Win.ini. It alleviates the common kludges of having multiple win.ini files that are activated as necessary. You may put more than one FontPak on a printer port, add individual fonts and save the contents of a printer port as a FontPak file. Thus, in addition to being able to build fontpaks in advance, you can modify the installed fonts on a port and save that setup to a FontPak for later use. You will still have to live with the Windows limit of approximately 150 installed soft fonts on a port, however. FontManager only manages .PFB and .PFM Postscript type 1 font files. It does not recognize nor deal with .AFM type files or other than Type 1 postscript fonts. Any time you modify the installed font set on a postscript port, the changes become effective in windows immediately. Unfortunately, most programs I've tried such as Page Maker and Word for Windows won't update their font resources when they receive the wm_WININICHANGE message from windows. They must be closed and re-opened. WHAT FONTMANAGER DOES TO WIN.INI Quite simply, it just creates the necessary soft font lines to identify installed soft fonts. The lines have the following format: ;FONTPAKINSTALLED=[pakname] SOFTFONTS=XX SOFTFONTYY=[drive]:\[path]\[filename].PFM (or) SOFTFONTYY=[drive]:\[path]\[filename].PFM,[drive]:\[path]\[filename].PFB The paths for .PFM and .PFB files may be as deep as you like and there is no need for any relationship between .PFM and .PFB directories. There is a limit of 40 characters for a files path string. FontManager also creates a dummy application section in WIN.INI with the following lines: [FONTMANAGER] FontManager=Installed This section is used by the WriteProfileString windows API call that forces Windows to re-read WIN.INI. Without this section, the API call places "[],=" at the end of Win.ini. This doesn't create any problems, but it can be confusing for anyone looking at WIN.INI. INSTALLING FONTMANAGER There are four basic files you will need to use FontManager: 1. FONTMGR.EXE This is the main executable file. It may be placed anywhere you like, but I would suggest creating a directory on the same drive as your windows directory named [drive]:\FONT_MGR. If you don't create this directory, the initial setup routine will create it as this is where all Fontpaks will be stored. 2. HUGEARR.DLL This is a windows Dynamic Link Library that handles huge array processing. It must be placed in the main windows directory unless you want to add the \FONT_MGR directory to your path and we know you dont want to do that. If you don't have it, it is available on CIS, MSLANG, Lib 6, "HUGARR.ZIP" 3. PSETUP.DLL This is a very small DLL library file which also must be placed in the Windows main directory. It handles all the printer setup routines. It is the work of Costas Kitsos, and it is included with this upload. 4. VBRUN100.DLL This is the main Visual Basic run time Dynamic Link Library (DLL) file. It, too, must be located in your windows directory. This file is also on CIS, MSLANG, Lib 6, as VBRUN.ZIP Simply place these files in the correct directories, fire up windows and run FONTMGR.EXE. The first time you run FontMgr.EXE, only one menu item will be active - FILES/INITIAL SETUP. Simply click on the FILES menu and then INITIAL SETUP - it's the only one available. You will be asked what drives you want searched for font files to catalog, and then sit back and enjoy. This process may take a few minutes on machines with huge hard drives and/or a very large number of fonts. When testing on a 386/33 with hyperdisk and a total of 1823 PFM and 1823 PFB files, it took about 3 minutes to search, build indexs, sort, and create the master file. FONTMANAGER LIMITATIONS FontManager is capable of managing up to 2048 type 1 postscript fonts. As with most PC programs, this limit has its roots in the "Sector" format of DOS memory. Handling more than this number of fonts would require foregoing some very fast binary string processing, or in short, it would slow things down a bunch. Further, FontManager is limited to 6 installed PostScript ports in WIN.INI. If you have more than six, FontManger will only work with the first six it finds. FontManager has not been designed for or tested in any network environments. WHAT INITIAL SETUP DOES First it searches the drives you indicate for all .PFM and .PFB files and catalogs them. It then matches up .PFM and .PFB files for the same font. Missing .PFB files are no problem and will be normal for users with fonts stored on a printer's hard disk. It will list any .PFB files it finds without a matching .PFM file, however. Fonts with a .PFM file but no .PFB file are forced to a PRINTER RESIDENT status when creating FontPaks and adding these fonts to a port regardless of how you set the resident/not resident option at that time. Initial setup will ceate the directory [windows drive]:\FONT_MGR if it does not already exist. It will place the master font library file (LIBRARY.FNT) in this directory. This file along with all FontPak files must be in this directory for FontManager to find them. Maybe I'll get tricky in a later version and allow you to designate your own directory name like the shrink wraps, but for now, you'll have to live with a directory named FONT_MGR. Once you have run the initial setup, all the other menu options will be activated, and the INITIAL SETUP menu will be disabled. The only way you can run INITIAL SETUP again is to manually delete the LIBRARY.FNT file from the \FONT_MGR directory. To get a printed listing of your Font Library, simply use the PRINT MASTER LIBRARY menu under the FILES menu. This listing will be needed if you opt to use Font ID numbers for creating fontpaks. It's also a good reference of all the Type 1 postscript fonts you have on your system. LIBRARY.FNT MASTER FILE This file is created when the initial setup is run. It is a random access file with information on all the fonts Initial Setup and subsequent Updates find on user selected logical disk drives. If this file is ever deleted and re-created using Initial Setup, ALL EXISTING FONTPAK FILES WILL BE INVALID AND MUST BE DELETED. I STRONGLY SUGGEST MANUALLY MAKING A BACKUP COPY OF THIS FILE AFTER INITIAL INSTALLATION AND ANY TIME IT IS UPDATED WITH THE UPDATE PROCEDURE. UPDATE MASTER FILE This routine again searches selected drives for all .PFM and .PFB files. This time, however, it will simply add any new files to the master library file. You may run this routine as often as you like, but it will do nothing unless it finds new files. It's designed to be run after you've added new fonts to the system, Update can be run for a single logical drive even if you have fonts on more than one drive. Thus, if you add fonts to only one drive, you don't have to search all drives as with initial setup. If a font in the master library no longer has a .PFM file, it will mark that font as deleted so that it can't be used in future fontpaks. No attempt is made at this time to update existing FontPaks that contain any deleted files. This is a doable feature for the next version. CREATING FONTPAKS You may create FontPaks in one of two ways. You may either enter the desired fonts by their Font ID Number as shown on the printed Master Library Catalog, or you can select fonts based on thier full name from a displayed selection list. When using the Font ID method, I used a technique not normally found in window apps. You enter the font ID number in a text box and press enter to accept it. Normally in windows apps, pressing enter selects the OK or CONTINUE or some such command button while the tab key usually accepts data from a text box. As only numbers are used to create FontPaks in this mode and the TAB key is on the other side of the keyboard, I used this ENTER method. If you enter an incorrect font ID, just select the appropriate displayed line for it and press the delete button. When selecting fonts based on font names, a more traditional windows approach is used. You'll have a list of available fonts on the left, and a list of selected fonts on the right. Simply click on the desired font in the available list, and it will be transfered to the selected list. FontManager will not allow you to select a font more than once. You can remove a selected font by clicking on it and pressing the delete button. You may also include whole fontpaks when creating a new fontpak. Simply press the INCLUDE FONTPAK button, select the desired fontpak and it will be inserted. FontManager will not allow duplicating font's in a fontpak, so don't worry if an included fontpak includes some fonts that you have already selected for inclusion. MODIFYING FONTPAKS This procedure uses exactly the same window as creating a font pack using font names. It simply starts with the FontPak to modify already loaded into the selected list. You may add fonts, delete fonts or include other fontpaks just as when creating a new fontpak. DELETEING FONTPAKS Another no-brainer. Select DELETE A FONTPAK from the FILES menu, select the desired FontPak, press Delete, answer yes to another "Are you sure?" query, and it's gone. If you delete a fontpak by mistake, hopefully you have Norton Utilities handy. PRINTING THE MASTER CATALOG AND FONTPAK LISTS Again, very straight forward. You may print to either a PostScript or other type printer. If you're using a PostScript printer, FontManager will recognize the selected paper size and print accordingly. SETUP PRINTER This feature utilizes the small Psetup.DLL created by Costas Kitsos. It simply allows you access to your printer driver setup feature. If you wish to actually change selected printers, you will need to do that through Control Panel. LIST INSTALLED FONTPAKS This routine is in the "WIN.INI" main menu. It simply displays every PostScript port you have and the FontPak that is installed on each. If you have modified an installed FontPak by adding another fontpak or individual fonts to a port, it will say "CUSTOM". If you have no softfonts installed on a port, it will say "NONE". If one of the displayed postscript ports is also the active printer port, that line will be highlighted. CHANGE OR SAVE FONTS This is the actual routine to make changes to installed softfonts with FontManger. It is decribed in detail below. If you ever look at WIN.INI in a text editor after it has been modified by FontManger, you'll see the line: ;FONTPAKINSTALLED=[text] immediately preceeding the SOFTFONTS=XX line. This line is used by FontManger to know what pak is installed on that port. It is installed as a comment line to preclude it interfering in any way with that ports functionality. MOVING .PFM and .PFB FILES If you should move any PFM or PFB files, FontManager will update the master library file with the new locations the next time UPDATE is run on the drive that contains the moved files. No changes are necessary to any FontPaks if any font files are moved. Just Make sure to run UPDATE after moving any file. CHANGING A PRINTER PORT'S FONT SETUP You may perform any combination of 4 actions in this window: 1. REPLACE A PORT'S FONTPAK: This action will delete all currently installed softfonts lines from the selected Port or ports and install the selected font pack. 2. ADD A FONTPAK TO A PORT: This action will add the selected FontPak to any currently installed softfonts installed on the selected port. No exisitng softfont lines are deleted. 3. ADD SINGLE FONTS TO A PORT: This action will add selected single fonts to any currently existing softfont lines on the selected ports. 4. SAVE PORT SETUP TO A FONTPAK: This action will save the softfont configuration of a selected port to a FontPak file for future use. The FontPak file created may be printed and modified just like any other FontPak. The SAVE action is only available when only one port is selected. If you have selected more than one port, SAVE will not be available. In steps 1 thru 3, the softfonts=xx line is updated to reflect the actual number of softfont lines for that port. Additionally, FontManager makes it impossible to have a font listed more than once in a port section. Even if you add a fontpak that contains some fonts already in the section, it will not make duplicate entries for the same font. You may perform any combination or all of these actions at one time. You may replace the base fontpak, add a second font pak, and add some individual fonts. If your actions only affect one port, you may also save the final font contents created on that port to a fontpak file. The SAVE action may also be used by itself to create a fontpak file from a port's font configuration. The only limitation is that you may only ADD one FontPak with the Add FontPak action. You may add all the single fonts you want. REPLACING AND MODIFYING INSTALLED SOFTFONTS Modifying a port's installed softfonts is done in two steps. First, select the printer port(s) you want to change, select a desired action, select the appropriate FontPak or individual softfonts to use and click on Post Change. Then select the next desired action, FontPak or fonts and click on Post Change again. Clicking on Post Change tells the system that you are done with this action and ready to do another. When you click on Post Change, the selected Action button line will change from blue to red to indicate this action will occur when you finally Write Win.Ini. If you find you're working on the wrong action line, simply click on the correct action line without pressing Post Change. If you're unsure about an action you have already comitted (Action button line is red), simply click on that action line again and make any necessary changes. NOTE: At this time, there is no way to completely UNDO an action once it has been committed with Post Change. If you have slected an action and Posted it, you can change the Port, the FontPak or the individual fonts, but you can't stop the basic action from occuring when you Write Win.Ini. The only current way to get out of this situation is to Exit the window and restart it from the Main Menu. Candidly, I've run out of room on the window for another command button to UNDO and I'll need to modify the window to handle this. SELECTED PORTS TO MODIFY This selection determines which PostScript printer ports will be modified. When Win.Ini is finally written, all actions will occur for the Port(s) selected at that time. Thus, you can change the desired ports between different change actions if the original selections were incorrect. If you have selected multiple ports, the same changes will be carried out on all the selected ports. SELECTING INDIVIDUAL FONTS TO ADD TO PORT The sub-dialog box for this action is very similar to the Create a FontPak window. Simply enter the Font ID number for the desired font(s) in the Add Font# text box and press ENTER after each one. Alternatively, you can press the SHOW FONTS button which will display a list of all fonts in the master library. When this list is displayed, double clicking on an available font will place it in the selected list. The list of availbale fonts can be erased by either pressing SHOW FONTS again, or exiting the Add Individual Fonts action. If you add an incorrect font ID, simply select the bad font in the list and press Delete Font. The printer resident box is straight forward. When selected, it indicates fonts are printer resident. When not selected, it indicates fonts are NOT printer resident. It can be changed for each font added. When the Add SINGLE Fonts to a Port action button is inactive, the entire Select Individual Fonts sub-dialog is disabled. POST CHANGE This command button acts to validate an action. If you're missing something required for the particular change to occur, you will be prompted for the missing information. If you do not press Post Change before going to another Action, the action just left WILL NOT be carried out when Write Win.Ini is selected. Post Change also turns the selected Action line red to indicate that this action will occur when you do Write Win.Ini. WRITE WIN.INI This is the big one that will actually cause all selected actions and changes to be made to Win.ini. If you select Write Win.Ini by mistake, there is still a dialog box which summarizes all your changes where you'll be able to abort. Even if you don't abort here and discover a problem, Win.Ini is saved to a file named WIN.WFM in your windows directory which may be manually copied back to WIN.INI to restore the previous setup. In the next revision, the option to do this automatically will be added. Write Win.Ini also forces Windows to re-read Win.Ini and update the system resources. Thus, all changes you make with FontManager are immediately available to all Windows apps. This is accomplished by sending the wm_WININICHANGE message. If a running app does not respond to this message by updateing it's font resources, you'll have to close and re-open that app for the new fonts to be available in it. Unfortuneatly, PageMaker and Word for Windows are two big ones that don't update their font resources even when notified by windows of a change in resources. SUMMARY MESSAGE BOX After selecting Write Win.Ini to make your changes, you'll get a dialog box that summarizes what changes will be made. It will also give you the option of aborting these changes and return to the Change Window. IF YOU'RE NOT SURE If you make some complex changes to a port and aren't sure about their accuracy, simply start over and do it again. ADDING MULTIPLE FONTPAKS TO A PORT You may ADD multiple font packs to a port by doing it one at a time. Select ADD a FontPak to a Port, select the port and FontPak, press Post Change, Write Win.ini and repeat these steps until all the desired FontPaks have been added to the port. Just remember that Win.Ini has a practical limit of somewhere around 150 fonts. ORDER ACTIONS ARE CARRIED OUT Actions are carried out in the same order the Action Button Lines are displayed in the window. Save Port to a FontPak is the last action. This allows you to make any combination or all of the first three Actions and save the result of those Actions to a new FontPak in one pass. Remember, the SAVE action is only available if you're acting on only a single port. If you select more than one port, the SAVE action is disabled. AVAILABLE FONTPAKS The Available FontPak list displays FontPaks with their ".FP" file extensions which FontManager adds to the names of all FontPak files. Whenever you are asked for a FontPak name, you DO NOT need to enter this extension. Doing so, however, won't hurt a thing. GENERAL - SCREEN DESIGNS vs SCREEN RESOLUTION The windows in FontManger were written to look the best on high resolution video systems, 1024x768 in particular. They display just fine in std VGA mode, but do look a little "Horsey" to steal a Kathleen Tinkel phrase. I just felt most people with enough fonts to need this program would have better than VGA resolution video systems. FONT ID NUMBERS During Initial Setup and Update, FontManager assigns Font ID Numbers to each font it adds to the Master Font Library. These Font ID Numbers are used when creating new fontpaks and when adding individual fonts to a printer port. When FontManager is initally setup, these Font ID numbers are in the same order as the alphabetical order of the full font names. As the UPDATE routine adds newly installed fonts, they are added to the end of the master file and their Font ID numbers have no relationship to any alphabetical order. Thus, if the 1789th font added to the library is named AARDVARK, it will have the Font ID number 1789 and not 1. Just don't be surprised when you print a Master Font Library Catalog which is ordered alphabetically by full font name and the Font ID numbers are not in order. VIEW/EDIT WIN.INI Selecting this option under the FILES menu will display the current WIN.INI file in a text box. You may move through this text box with the scroll bars, up/down arrows or page up/page down keys. You may also edit WIN.INI in this text box. All the standard Windows text box editing tools are available. Save the edited version by selecting SAVE from the FILE menu. If you save an edited version of WIN.INI, Windows will re-read it immediately. WHO'S RESPONSIBLE? The guy below did it, and he'd sure appreciate any comments about problems or ways to improve this program. If you need to get ahold of me, I can be reached at: Dennis Harrington 7300 Evergreen Way Everett, Wa. 98203 (206) 355-6690 CIS id: 76216,3472 THERE IS NO REGISTRATION FEE OR ANY OTHER FEES NEEDED TO USE FontManager. It is totally public domain freeware. Please feel free to share it with anyone you want if you find it helpful. Consider it my token of appreciation for all the help I've received from the members of the DTP forum on CIS. The author sure wouldn't turn down any C notes, though. THE CURRENT WINDOWS VERSION OF FONTMANAGER IS A BETA VERSION. IF IT CAUSES ANY PROBLEMS OF ANY KIND, PLEASE LET ME KNOW, BUT PLEASE DON'T EXPECT ANY KIND OF FINANCIAL ASSISTANCE. CONSIDER THIS THE OLD "I AIN'T RESPONSIBLE FOR NOTHIN" DISCLAIMER.