This is a FreeType/2 users' mini-FAQ

Table of Contents:

Q1: Where can I find the latest FreeType/2 release?
Q2: Now that I have FreeType/2 installed, how do I actually add TrueType fonts to OS/2?
Q3: When will you add font-smoothing to the DLL? I really want that!
Q4: Why does IBM's TrueType engine do such a poor job?
Q5: But there are still differences with the glyphs produced by Windows or the Mac, right?
Q6: I've got TrueType Times New Roman installed but the system still seems to be using the original ATM (Type 1) font. Why this odd behaviour?
Q7: I noticed it takes a second or two before the Font Palette object opens for the first time. Why?
Q8: I noticed the characters sometimes have odd spacing. When will you fix it?
Q9: Could you explain the open fonts limit?
Q10: Can you recommend some fonts to use?
Q11: What's a 'broken glyph'?
Q12: Why do some fonts appear twice, once starting with an '@'?
Q13: I've got a Chinese (Japanese, Korean) font but the characters aren't there! Why?
Q14: I tried to use a DBCS font but I got an exception un UCONV.DLL. What's wrong?
Q15: My system won't boot after I installed FreeType/2 and the uninstall script won't work when I boot to command line. What now?
Q16: I'm upgrading from previous version and I don't want to uninstall and reinstall. Is there any other way?
Q17: What's this stuff about Times New Roman being aliased to Tms Rmn? Please explain this.

Questions & Answers:

Q1: Where can I find the latest FreeType/2 release?

A1: Links to the latest release can be found at the FreeType/2 homepage at http://www.freetype.org/ft_os2/index.html.

Q2: Now that I have FreeType/2 installed, how do I actually add TrueType fonts to OS/2?

A2: I thought everyone knew that... It's simple, really. Open the Font Palette object (in System Setup folder) then click 'Edit font' and 'Add'. Now type the directory path where your TrueType fonts reside, such as 'C:\WINDOWS\FONTS' if you have Win95 and click 'Add'. You'll be presented a list of all fonts that OS/2 found in specified directory. Simply select all fonts you wish to install click 'Add' for the last time. If you wish to remove fonts, just use the 'Delete' button in the 'Edit Font' dialog.
TIP: If you wish to add font to OS/2 but don't want to actually copy the file, just type the directory name where the font files already are instead of 'X:\PSFONTS' in the 'Add New Fonts' dialog.

Q3: When will you add font-smoothing to the DLL? I really want that!

A3: Short answer: We can't.
Long answer: The FreeType library already supports font-smoothing (or antialiasing or grayscaling). The problem is that OS/2's font engine, in its current incarnation, doesn't know anything about anti-aliased text and is only able to manage monochrome bitmaps. Font smoothing support would require some changes of PM/GPI/GRE components, which certainly is out of our scope, and isn't planned by IBM (to our knowledge) in foreseeable future, if ever.

If you really need font smoothing in your application, you can still use the FreeType library itself. Be warned that it is a rather low-level engine and that you'll need to add a various number of text features on top of this code to get the equivalent of PM's font API.

There is a good chance that FreeType 2.0 will ease the pain for developers when it's available.

And if you really want font smoothing in OS/2, ask IBM!

Q4: Why does IBM's TrueType engine do such a poor job?

A4: It'd be easy to throw one or two stones at IBM's engineers if this was the result of lazy coding or bad software engineering. However, the problem is more complex, and PSP programmers deserve little, if any, blame.

Trouble is that the TrueType specification, which can be found both on Microsoft and Apple sites, has severe lacks, as well as particularly fuzzy definitions. Part of the TT spec is the TrueType bytecode specification. This bytecode is used to write glyph programs that are used to explicitely hint each glyph to have it rendered perfectly on the screen (and on printers). It is made of approximately 200 opcodes, which relate to moving points on a pixel grid, measuring distances in any kind of direction, keeping widths and heights consistent across a single font, etc..

Some of these opcodes are simply un-documented, or lack precise and important details related to their exact implementation. As a consequence, when FreeType started, it's first bytecode interpreter exhibited results which were very similar to OS/2's one (i.e. bad baseline, incoherent widths, "swashs" and bad serifs, etc..). There are several commercial engines which provide the same kind of "erroneous" output, like the one in the BeOS for instance.

It took FreeType developers _many_ months and experimentation to discover the real meaning of some opcodes, and incorporate it into the library. This "spelunker" work has been painful and slow, which is why few commercial companies, if any, dared to do it, but it finally pays off ! Moreover, the FreeType library is released under a BSD-like free license. This means that _anyone_ is now able to take the work that has been done to rewrite or fix his own TrueType interpreter. (Of course, another good idea is to use FreeType as your core TrueType engine, to be able to benefit to ongoing fixes and "undocumented features" discoveries, etc...)

Q5: But there are still differences with the glyphs produced by Windows or the Mac, right?

A5: Right. Another feature of the TrueType specification is to use fixed float pixel coordinates. When measuring distances along diagonals, some rouding error usually occur. Also, some TrueType opcodes have a more or less "chaotic" behaviour, where a ridiculous difference in inputs can produce vastly different results. These factors mean that the only way to match bit-to-bit the glyphs produced by Windows or the Macintosh is to implement the _exact_ same computation routines, and reproduce all their rounding errors ! As FreeType is a clean-room implementation, this will never be possible. Note that the bitmaps match in 95% cases, at least, and that there are already differences between the Win 3.1 and Win95 TrueType renderers (i.e. look at the "m" of Arial at size 8 for example).

The FreeType team tries very hard to "catch" differences, but there is a point where this just isn't possible... However, we're very satisfied with its current quality, and we hope you'll be too :-)

Q6: I've got TrueType Times New Roman installed but the system still seems to be using the original ATM (Type 1) font. Why this odd behaviour?

A6: It seems in case of a name clash OS/2 is using the font that was installed later. Try removing and reinstalling the TrueType font. Alternately remove the ATM (Type 1) font (not recommended).
Experiments also suggest that different apps behave differently. Some apps will for example show both fonts but will use only one of them anyway. It really depends.

Q7: I noticed it takes a second or two before the Font Palette object opens for the first time. Why?

A7: Because FreeType/2 postpones as much work on the fonts as possible until it's really needed. This means the first opening of a font is a bit slower. But it also means no resources are unnecessarily wasted. And it's not really that bad :-) This behaviour is also noticeable when e.g. opening a document for the first time. Note that subsequent openings are OK because OS/2 caches as much information as possible.

Q8: I noticed the characters sometimes have odd spacing. When will you fix it?

A8: I won't. It's not really a bug, it's a feature. If they weren't spaced 'oddly', the result might look better, but only at the cost of Windows-style 'WYSIWYG', i.e. what you see on screen will almost certainly look totally different on any other device. Anyway, the spacing is controlled by OS/2 and not by the Font Driver itself, so if you still don't like it, IBM is the right one to ask :-)

This problem is particularly visible in Netscape. Most probably this happens because Netscape tries to use fractional pointsizes, but most TrueType fonts don't allow that. This means that Netscape sometimes positions characters as if they were e.g. 8.6 points while their actual size is only 8 points.

Q9: Could you explain the open fonts limit?

A9: Sure. If you install 50 fonts in OS/2, the system opens them all at startup and keeps them open until shutdown. While many users may want to have large number of fonts installed (like me), very few of them probably use all the fonts all the time. This of course wastes lots of memory and swap space. Just for your information, normal fonts take up 30-50 K of memory with FreeType/2, but for example Times New Roman MT 30 takes over 500K!

FreeType/2 overcomes this problem by only actually keeping in memory the last n most recently used fonts. The actual number is settable via entry in OS2.INI and there's an simple REXX script to do that. Good default might be 10-15 fonts, depending what you want to do with them.

Note that this process is totally transparent to the system. You won't have to do anything, FreeType/2 will take care of everything. The only things you will notice is dramatically reduced memory consumption and when working with large numbers of fonts there may be slight delay when reopening a font.

Q10: Can you recommend some fonts to use?

A10: Yes! I recommend to use Micro$oft's (oh no!) Core Fonts - Times New Roman, Arial and Courier New, plus other MS fonts. There are several reasons: the fonts have very good quality, stick to the TrueType spec prety well, support many countries and are widely available. Moreover they're free. You can certainly find some Win95 or NT machine in your neighbourhood (all too easily I'm afraid). They should also be available from MS's Web site.
Note: If you want to copy the fonts from a Win95 machine, they're in \WINDOWS\FONTS. Watch out, the directory is hidden!

Q11: What's a 'broken glyph'?

A11: Some fonts contain buggy or 'broken' glyphs that cannot be reliably loaded and rendered. Those glyphs are usually very rarely used so you might never notice. There was a problem with the first Beta of FreeType/2 that if there was a single broken glyph in a font, the
whole font didn't work.

Q12: Why do some fonts appear twice, once starting with an '@'?

A12: It's because of DBCS systems. If you don't have one, you can safely ignore these fonts. The DBCS characters in them are rotated 90 degrees counterclockwise. It allows you to write vertical text (e.g. Chinese) with a normal word processor. You write the text horizontally but if you turn the resulting page 90 degrees clockwise, you've got vertical text.
It's not working perfectly yet.

Q13: I've got a Chinese (Japanese, Korean) font but the characters aren't there! Why?

A13: Most probably the font and your system settings don't mix. One possible cause is that your country setting is different than that of the font and the font contains no information about what language it's meant for. In that case, FreeType/2 has to guess from your country setting. This means it might try to treat e.g. Japanese font as a Korean one which means you won't be able to access the Japanese characters in it. It's all a bit more complicated but it's a result of how national language support is done in OS/2.

Q14: I tried to use a DBCS font but I got an exception un UCONV.DLL. What's wrong?

A14: UCONV.DLL it used for character code translation. A likely cause is that you are missing the required translation table in \LANGUAGE\CODEPAGE directory on your boot drive. Look for file named 'IBM<CP>', where <CP> is the codepage you use, e.g. IBM950 for Taiwan or IBM949 for Korea.

Q15: My system won't boot after I installed FreeType/2 and the uninstall script won't work when I boot to command line. What now?

A15: But you've archived the key files, haven't you? If not, one way out of this mess is booting to command line and renaming or deleting FREETYPE.DLL from \OS2\DLL. Your system should boot then.

Q16: I'm upgrading from previous version and I don't want to uninstall and reinstall. Is there any other way?

A16: Yes! There's a little utility called REPMOD.EXE which allows you to replace files that are in use. In case you don't already have it, it's included in the FreeType/2 package. You should simply run UPDATE.CMD. The new version will be used on next reboot.

Q17: What's this stuff about Times New Roman being aliased to Tms Rmn? Please explain this.

A17: OS/2 contains bitmap font called Tms Rmn which is often used in dialog windows and elsewhere. The bitmap font contains only several pointsizes (8, 10, 12, 14, 18, 24). If you request a missing pointsize, OS/2's graphics engine (GRE) substitutes it from the (outline) ATM font Times New Roman which can also be referred to as Roman/Tms Rmn. Now FreeType/2 mimics this functionality and can fully replace the ATM version. I recommend to uninstall the ATM font since if both fonts are installed, some apps use the ATM one, others TrueType one, without any apparent logic. If you uninstall (via Font Palette) the ATM version, you will always get high-quality TrueType Times New Roman.