On CentOS/RHEL 5 in particular, I found the fonts in KDE 3 were ragged, and unresponsive to efforts to clean them up via recompiling Freetype2 libs with bytecode hinting turned on. After reading up on it a bit, I decided it might be possible to fix it by recompiling the basic Qt libraries from the source RPM.
As of this writing, the current SRPM is qt-3.3.6-23.
If you follow the canonical method, you’ll place the source RPM in /usr/src/redhat/SRPMS/
and install from there:
rpm -ivh qt-3.3.6-23.el5.src.rpm
Then you navigate to /usr/src/redhat/SPEC/
and run the command:
rpmbuild -bb qt.spec
If you are missing any build requirements, it will complain and you can install them using yum
. Run the RPMbuild command again. After a while, you’ll get the prompt back, hopefully indicating nothing went wrong.
Navigate to /usr/src/redhat/RPMS/
and choose the folder containing files matching your hardware architecture. Mine was i386
, where I found the newly made qt-3.3.6-23.i386.rpm
.
You’ll have to use the --force
switch because RPM can’t tell this is different from the one already installed:
rpm -Uvh --force qt-3.3.6-23.i386.rpm
Once it’s installed, you’ll need to restart any part of KDE currently running to get the full effect. Just for good measure, I used the same procedure and rebuilt the kdelibs
package on the new Qt libraries. However, I doubt it really makes that much difference in the results. As far as I can tell, Qt handles most of the font rendering operations in KDE. Something in the way it builds under RedHat and clones requires building Qt with the changed Freetype libraries.
Caveat: I have tested KDE 4 on other systems and hate it, so don’t waste your time with comments insisting it’s better. That’s entirely subjective. KDE 3 was fine, basically, but the developers never bothered to fix everything, just abandoned it and moved onto the next, even buggier release. That’s the way Open Source works, and I accept that, but the criticism still stands. When you have a system which is developer-centric, the user will never be satisfied because the developers don’t care about users, for the most part.