FREETYPE 2.2.0 ISSUES |
The Problem The Fixes Rogue Patches Homepage |
IntroductionInstalling FreeType 2.2.0 on a Unix system is likely to break your desktop, by making it impossible to start any graphics application. This includes ‘gdm’ and ‘kdm’, the default graphical login programs of many distributions. The problem doesn't lie in the font engine itself, but on dependent libraries that use it incorrectly. This document node tries to explain the current situation, and what can be done. We also provide patches for the most important programs and libraries. Understanding the ProblemExposed InternalsThe source of our worries is that the font engine's internals were exposed in previous releases of FreeType 2.
Theory and RealityExperience has taught that our point of view has been naïve.
Notice that in nearly each release of FreeType, we do modify our internals in order to fix bugs, add features, or optimize things. However, we are very conservative with the public API, and the interface broke only once by mistake since the library's origin. ConsequencesWith some luck, the internal changes of a new FreeType release don't break anything. Otherwise we get e-mails to our mailing lists, telling us that ‘FreeType 2.1.x broke my system when I installed it’, or even ‘We, (distribution-name), can't update our version of FreeType because it breaks things’. Sometimes, it is real fun to find the mistakes in the application's code which causes the problem. In one specific case we even provided patches to correct a given ‘rogue’ library to make it use only standard FreeType APIs (without losing features), just to discover that its developers repeat the same mistakes in later releases. The SolutionStarting with FreeType version 2.2.0, we will no longer expose the internal interface to the public.
This decision probably cause incompatibilities or even crashes; the effects can be summarized as follows.
How to Fix Bad PackagesIf you are a developer or a distribution packager, here some steps to detect rogue packages. DetectionThe easiest way to detect rogue packages is by grepping its source code for the following items.
These indicate dependencies on FreeType internals at compile time. Note that they can be followed by anything in the source files. If they don't appear you are pretty safe! Find a Newer Version or a PatchIf you have a rogue package, first try to see whether a more recent version exists that fixes the problem. Otherwise, check our page to see whether we provide a patch for it. What to Do If No Patch is AvailableSend a note to our development mailing list describing the problem, giving us the full reference for the package and how to get its source code. We will take a look at it and try to provide a patch as soon as possible. Create a Patch and Please Send It to UsIn case you have namaged to write your own patch which fixes a rogue package please don't hesitate to send it to us!
Complain to The AuthorsIf none of the above appears as a valid solution you might complain directly to the application's or library's authors. Don't be rude, just tell them that what kind of problems you experience, and that they can get help on our development mailing list in case the problem is caused by a new FreeType version. |
The Problem The Fixes Rogue Patches Homepage |