NOTE: what follows is a stripped and reformatted version of an email conversation in 2004 or 2005 between me (Marco Fioretti) and Keith Packard, the author of kdrive and of the xft2/fontconfig libraries which make client side font management possible. I put it online here, obviously with Keith’s permission, to point out that the RULE philosophy (“less is more” or, as some RULE list member said, “advancing to the past”) can indeed be the most efficient and even advanced way to have the most modern functionality (if not look) on a limited desktop. Another reason to put this here is to encourage whoever has the bandwidth and skills to do so to help M. Fratoni with his kdrive hacking. My messages are in plain face, Keith’s answers in italic, prepended by his name)
Keith, many of our potential users need non-ASCII alphabet support, so, from that point of view, the arrival of UTF-8, xft2 and fontconfig on popular distros is a definite plus. At the same time, many RULE users will have PCs unable to run a full blown X, hence we started playing with kdrive. Now the real question: is it at all possible that an xft2/fontconfig enabled application may coexist/talk with a more or less hacked kdrive? (possible use case: a P133/32 MB of RAM used as internet kiosk or document viewer in an asian school).
If yes, may I ask you what might be the best way to do it? If no, any other suggestions for displaying one or two UTF-8 non european fonts/scripts on (very) low end machines running Linux and X? Keep in mind that in those cases we only care for real functionality: displaying a document in one font only is OK, no need for many fonts, fancy visual effects, 3-d games support, whatever…
KEITH: That works just fine; any X server will do for Xft2.
MARCO: (just to make sure that my XP-challenged brain (XP = X11 Programming) got it clearly): This means that, once kdrive runs, using only xft2/fontconfig apps, an end user will have antialiasing, bi-directional ideographic text, TPOS, TSUB, and so on, right?
KEITH: kdrive is just another bottom end for the standard X server; it provides alternate implementations of the mouse and keyboard drivers along with a different set of graphics card drivers. 90% of the code is shared with all other X servers. kdrive supports most of the extensions that the XFree86 server does, including the Xv extension for video and the Render extension for advanced graphics.
Xft2 provides two text drawing implementations. One uses the Render extension to accelerate drawing and reduce network bandwidth; the second uses the original protocol rendering routines. Both provide all of the same capabilities — anti-aliasing and client-side font goodness. The only difference is performance. Without the Render extension, Xft2 must fetch images from the X server, manipulate them in the client and ship them back over the wire. Owen Taylor is currently implementing some short-circuiting code in Gtk+ 2.4 that avoids fetching images when the app already knows the contents, but the resulting image must still be delivered to the screen.
MARCO: This is yet another reason why the new xft2/fontconfig system is good, because with it the part that must always run on the desktop (X server) is minimized, and specific apps needing those features only slow down the CPU when directly used, right?
KEITH: Yes, precisely. Xft2 handles older X servers with the second text drawing implementation described above. This permits applications to always use client-side fonts for their many advantages and not need to continue providing backward compatibility kludges for the old server-side font mechanisms.
MARCO: The reason why it is important to me is that, if things are as I understood them, these are all more demonstrations that the RULE project is doing the right thing by instisting to squeeze the right set of the *latest* applications on obsolete HW (compared with the crow saying “if you have to do the most with old PCs, put old SW on them”)
KEITH: Yes, of course, the key is to use the SW which is most efficient on the particular hardware.
One of the big features in kdrive is that it uses smaller implementations of the various X server features than even older XFree86 servers. By leveraging functionality in the video card for mode selection, code in the Linux kernel for keyboard handling and limiting acceleration to that which is actually useful for real applications, kdrive servers can be significantly smaller than an equivalent XFree86 server.
MARCO: Thanks again in advance for any feedback!