
 This is a FreeType/2 users' mini-FAQ

.........................................................................

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

A1: This has not been decided yet (at the time of writing this).
   The FreeType project web page is at
       http://www.physiol.med.tu-muenchen.de/~robert/freetype.html

.........................................................................

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

A2: The FreeType library already supports font-smoothing (or anti-aliasing
   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
   a major rewrite 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 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.

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

.........................................................................

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

A3: It'd be easy to throw one or two stones to 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 few, 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 consistant 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
   its 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...)

.........................................................................

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

A4: 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 :-)

.........................................................................

Q5: 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?

A5: 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.

.........................................................................

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

A6: 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.

.........................................................................

Q7: It seems the placement of glyphs is incorrect in some applications.
    This is very visible on some pages with Netscape. Is this normal ?

   Actually, it seems that this is another "OS/2" feature. Our favorite
   operating system uses WYSIWYG glyph placement in many cases, and this
   usually results in varying inter-letter spacing, and a display that
   _really_ looks like what it is when printed. However, as you may
   experiment, this is not always pleasant.

   There is nothing we can do about this currently.

.........................................................................

Q8: My swapper grows when I install a lot of fonts. Is this normal ?

   We have noticed that the Graphics Engine (GRE) doesn't always seem to
   release font handles accordingly. Hence, you may experience excessive
   swapper growth using this beta version of FreeType/2. We don't know
   if the original TRUETYPE.DLL provides something against it, but hope
   to incorporate a solution for the final release where we'll transparently
   limit the overall number of opened fonts in memory (providing automatic
   open-on-demand processing)..

   The memory taken by a single font is between 20 and  50 Kb. You should
   not experience a lot of trouble if you have 16 Megs or more. Tests with
   more than 55 fonts installed led to a GRE memory usage of 800 Kb, which
   was mainly swapped to disk.

