FNTPRN.EXE (VERSION 1.0) Copyright (c) 1993 John Deurbrouck ------------------------------------------------------------------------- First Published in PC Magazine April 13, 1993 (Utilities) ------------------------------------------------------------------------- FNTPRN: FNTPRN lets you easily view multiple fonts and then generate your own font catalog for handy reference. Finding the font you want can be frustrating. Remembering the difference between Times New Roman and Arial may be easy, but what does Bembo look like? Does Gatineau have an attractive, true italic? And which font is the one that looks like the type that appears on an Old West Wanted poster? Font selection dialog boxes--for example, the one that pops up when you select CharacterFonts in Windows Write--show you fonts, but only one at a time. That gives you some nice confirmation of what you already know, but it's too slow and cumbersome if you need to search for or browse among more than a few fonts. FNTPRN gives you a way to view multiple fonts. To compile the source code, you'll need Borland's C++ 3.1 or Microsoft's C/C++ 7.0. FNTPRN requires Version 3.1 of Windows because it employs programming features found only in this release. The utility works with all of Windows' native fonts as well as any Microsoft TrueType and Adobe ATM fonts. ABOUT FACES A typeface (in Windows--typographers employ a stricter definition) is the name given to the design of a set of characters. Individual variations of a typeface--known as fonts--are described by three parameters: point size, weight, and degree of slant. The first, point size, measured in a unit called the point (1/72 of an inch), gives the vertical distance of an imaginary rectangle that surrounds each character of a font. Be careful to distinguish between this and height, as it is used to describe the distance from the bottom of a font's descenders (the tail in a lowercase y, for instance) to the top of its ascenders (the uppermost point on a lowercase f, for example). Height can--at a maximum--match the point size but rarely does, since a character seldom occupies the entire vertical dimension of its invisible box. The other two factors that separate fonts from one another are weight (bold, for instance) and degree of slant (italic, none, or oblique). (The combination of weight and slant is known as the font's style--bold-italic is one example, bold by itself is another.) Thus Arial (the TrueType Helvetica clone) is a single typeface and the following describes four of its fonts: 8-point Arial, 10-point Arial, 8-point Arial italic, and 8-point Arial bold. Windows assigns typefaces--based on their general appearance--to one of five groups called families. Typefaces suggestive of cursive writing fall into the Script family, while those with ornate designs are classified as Decorative. Of the remainder, most with constant-thickness strokes (the lines composing each character) are considered Modern (Courier, for one), while those with variable strokes land in the Roman family if they contain serifs (short, decorative strokes such as those hanging off the top of this T) or the Swiss category if they are sans serif (such as Arial or Helvetica). Fixed-pitch or monospaced fonts use the same amount of space for every character, while variable-pitch or proportional fonts use more space for larger characters. Monospaced fonts line up nicely into columns, while proportional fonts are more compact and easier to read. Finally, Windows actually contains a sixth font family known as Dontcare (labeled as Other in FNTPRN's Option window), which lets a program select a font without regard to the family. There are several technologies used to create fonts in Windows, but all fall into one of two general categories: bitmapped and vector. A bitmapped font is essentially a dot-by-dot description of every character. They're fast, but they don't scale (change size) well--printing an 8-point bitmapped font at 24 points yields a chunky, unattractive result. Vector fonts include stroke fonts, ATM, and TrueType. Instead of being a collection of dots, vector fonts are descriptions of each character: a line here, a curve there. Thus vector fonts scale well and look good at any size. Stroke fonts are an older technology, included mainly for printing on plotters. ATM (Adobe Type Manager) fonts are designed to work at any point size on both the screen and any Windows printer. ATM fonts can be particularly fast with PostScript printers. TrueType fonts were introduced to Windows in Version 3.1 and offer scalability like ATM fonts. INSTALLING AND DELETING FNTPRN The utility demands no special effort to install. To place its icon in the currently selected program group, use the Program Manager command File|New, choose Program Item from the dialog box, and after clicking OK, fill in the blanks in the Program Item Properties dialog that comes up, then choose OK once more. Removing FNTPRN takes as little effort. Dispose of its icon by selecting it and choosing File|Delete from the Program Manager menu. Repeat the procedure for all occurrences of the icon, then erase FNTPRN.EXE. The program makes no modifications to WIN.INI, and the only files it creates are .WRI files containing font examples. USING FNTPRN If you're in a hurry, you can use FNTPRN without installing it simply by selecting File|Run from the Program Manager menu and entering the utility's full pathname in the resulting dialog box, which brings up the FNTPRN window. Set the options you want, make sure that the Launch Write check box in the lower-left corner is checked (if it isn't, click on it), then click the OK button. You'll be presented with a standard Save As dialog box (but with a title bar that reads ``Choose Output Filename''). After you pick an output filename, select OK again. FNTPRN will generate and save a sample file based on the options you selected, then display it in Windows Write. (If you don't make any changes and then click on OK, a file named FNTPRN.WRI will be saved to the directory that contains FNTPRN.) FNTPRN is still running, so you can switch to it while Write is still running or after you're done, where you can design another report or quit the utility. That's the quick start. Now for a few details. Running FNTPRN takes you right to the heart of the program--its option window. Most items on this screen fall into one of three option groups--Fonts, Sample Text, and Description Formatting. The Fonts section allows you to configure the report file FNTPRN produces. Sort Order (covered in greater detail shortly) is a drop-down list used to determine the sequence of samples in the output, while the Pitch radio buttons let you include proportional fonts, monospace, or both, and the Device selection determines whether the file will contain printer or screen fonts. The output will incorporate whatever selections you make under the Font Families and Styles categories, but you must select at least one of each. If you check the check box labeled Allow Bold/Italic Synthesis, and if a particular typeface lacks any or all of the styles (italic, bold, or bold-italic), FNTPRN will request that Windows artificially create those you've included. (Some limits, which I'll describe a little later, exist.) Check the TrueType Only checkbox to restrict the report's contents to just those fonts. You may want to do this to exclude clunky, nonscalable fonts (such as LinePrinter) from your report. Don't check the box, though, if you use ATM fonts. Let your font collection be your guide! If you make no changes in the Font section's options, they default to alphabetical sort order, both spacing types, printer fonts, all styles and families, bold/italic synthesis, and any make of font (rather than TrueType alone). As implied above, Sort Order presents you with several choices. The first--Alphabetical--sorts by face name, so Arial would come before Bodoni Bold. To arrange the report by height (as defined near the beginning of the article) choose that item from the list. Width refers to the average width of the characters in the font, while Proportion sorts by the result of height divided by width, so tall, skinny fonts would come before short, squat ones. Weight orders the output by the boldness designation the vendor supplies, thus lighter fonts will precede darker ones. Font Family organizes the report alphabetically by the vendor-provided font family information and can help you zero in on a desired look quickly. Earlier I indicated that sometimes--but not always--Windows can artificially create styles not provided with a particular font. I have an Arial MT, for example, that comes only in regular, but Windows can easily widen the strokes to fake a bold look, slant them so they seem italicized, or combine both processes to give the characters a bold -italic appearance. Choosing to include these styles and selecting Allow Bold/Italic Synthesis will make them appear in FNTPRN's report. On the other hand, the Bodoni I use just offers a bold. Windows can make a bold-italic, but it can't thin out the strokes to imitate a regular or regular-italic--so allowing synthesis will do no good for those two styles. SAMPLE TEXT The Text drop-down list in this section of FNTPRN's screen lets you display each of your chosen fonts using one of four sample texts. The first selection prints exactly the characters it displays, chosen for their ability to show off most features of the font without taking a lot of room. Use Text Paragraph to get a better idea of how a large block of text will look and Alphabet to see all the upper- and lowercase characters, 0 through 9, and the symbols contained on IBM-compatible keyboards. The Sample Textlist item simply prints the phrase ``Sample Text,'' but for a specific purpose. FNTPRN supplies no direct way that you can enter your own example text. To use your own choice of text, use Write's search-and-replace to substitute it for Sample Text. Justification of text sets the spacing between words and controls where each line is placed relative to the left and right margins. FNTPRN presents the four possibilities via a drop-down list. Center places the middle of the text line halfway between the margins, dividing any remaining space (which can vary from line to line) equally and putting it at the ends. Justified adjusts the distance between each word so that unindented lines--except, possibly, the last in a paragraph-- stretch to the margins. This column is an example. Left forces every line against the left margin, pushing any extra space--which, again, can vary--to the other end. The uneven line endings give that side of the page a ragged appearance, so this is also known as ragged right. As you might guess, Right (or ragged left), does just the reverse, pushing lines against the right margin. To select the point size for your chosen sample text, enter any value from 6 to 72 in the Size box. 10 is a good choice for viewing fonts that you plan to use in the body of your writing. However, if you want to get a good look at candidates for headlines and decorative text, you should try a setting of 36. A little experimentation will quickly give you a feel for what to pick. The default Sample Text options are the sample list's first item, left justified at 18 points. DESCRIPTION FORMATTING FNTPRN labels each sample on its output using the font displayed under Description Formatting. To make modifications, click the Change button to bring up a standard font-selection dialog box. Make your selections from the scroll lists presented or type your choices in and click OK when finished. Your changes will be reflected in the Description Formatting area. The default is 8-point Arial Regular. The Launch Write check box, at the bottom left of the window, lies outside any option group. If checked (as it is unless changed), FNTPRN first follows its normal procedure when you click OK. It asks for a filename and, assuming you select OK again, creates and immediately saves its report to the .WRI file you specify. After, however, it also launches Microsoft Write, loading the newly generated report into it. If you would rather view the file later, remove the x from this option's check box. Now selecting OK from the program's window (and again from the Choose Output Filename dialog box that appears) saves the .WRI file but doesn't start Write. The Defaults button restores each control to the state it was in when you first started the utility, and, as you have seen, clicking OK produces the output file and loads it into Write. Press Cancel in the Choose Output Filename dialog to return to FNTPRN's main window without generating the font document. FNTPRN's REPORT FNTPRN produces easily understood output. An informational header at the top serves as a reminder of the choices you made to generate the report. The ``Number of Font Families Found'' appears first, then a list of included font families (Roman, modern, sans serif, script, novelty, and unknown), followed by your selections for Device (screen or printer), ``Synthetic Bold/Ital allowed,'' Styles (any combination of regular, bold, italic, and bold-italic), ``Sort Order,'' and ``TrueType only'' (if you made that restriction). The styles for each typeface appear as a group, so for example if you selected Arial, the sample paragraphs would appear in the order regular, bold, italic, and bold-italic. A line of description follows each and displays the font's name as provided by the manufacturer, the style, its spacing type (monospaced or proportional), the family, and if the font is TrueType or not--with all items separated by commas. Any synthesized styles will be described that way--Synthesized Bold, for example. You may notice some font names repeated. Courier shows up several times on my own system. This is because Windows actually allows the same name for multiple fonts. If the fonts are in different families, FNTPRN, Windows, and Write will distinguish among them correctly, so don't worry about duplicates in FNTPRN's report. If duplicates are in the same family, you'll see only one--the one Windows chooses--both on-screen and on the printer. Windows will choose the best version for each purpose. Some fonts, such as System (which is fixed-width and comes with Windows), are meant exclusively for screen display and can't be printed exactly. Others--LinePrinter on my laser printer, for instance--correctly reproduce on paper only. Since Write can both display and print files, FNTPRN's use of it gives you at least one way to see any font as it truly looks. Remember, though, when no font exists for a device, Windows substitutes something close--so you'll still see a representation, but not necessarily an accurate one. If your default printer is a PostScript device, certain fonts may not display or print correctly--whether you are using FNTPRN or some other application. For example, rather than Wingdings, you may get the native Symbols font. To correct the problem, open Control panel and select Printers|Setup|Options|Advanced. If ``Use Printer Fonts for all TrueType Fonts'' is checked, you're gaining speed but losing most of your TrueType fonts (Wingdings, for example). Uncheck this box and you'll be able to access your TrueType fonts again. EXPLORING YOUR FONTS Printed font catalogs are handy. If you use a lot of decorative faces, why not create a set of all your fonts at about 36-point size? Leafing through it from time to time will help you remember what you have. FNTPRN's Write files are compact, so leaving them on-disk is fine. Since they're ordinary .WRI files, you can edit them, use search-and-replace, and perform any other function possible on a typical Write document. This also ensures that they import well into most Windows word processors. Suppose you produce a newsletter and want to see how a paragraph of text might look in all of your Roman fonts. Generate a font list with FNTPRN, then import the file into your word processor and set your page format to three columns. A few cautions are in order. First, working in a word processor with FNTPRN's .WRI files can be rather slow. Nearly every line uses a new font, so the computing overhead can be high. Turn on your draft mode to save time until you want to look at the actual fonts. Though FNTPRN uses vendor-supplied information to produce its reports, not all font publishers provide accurate data. One simply reports every family as Unknown--even Times Roman and Helvetica clones, lumping them together with map symbols and script fonts. FNTPRN would be a mammoth program if it tried to distinguish these characteristics on its own, so its sorting ability is at the mercy of the font makers. I also ran across a limitation in Write. Though its file format supports up to 512 fonts per document, the program itself fails to handle more than about 60 correctly. As soon as it gets past its limit, Write starts using fonts from the beginning of its list over again, so your last font may be labeled Times New Roman but show up as Arial. This won't hurt your system, but you won't get an accurate rendering of your fonts. If this is a concern for you, you'll need to use another tool to look at FNTPRN's output (WinWord works fine). Careful use of fonts can make the pages you produce more effective. FNTPRN can help you use your fonts better than ever before. ---------------------------------------------------------------------- JOHN DEURBROUCK IS A C AND ASSEMBLY LANGUAGE PROGRAMMER.