Re: TWM: truetype support

Marc Aurele La France <[email protected]> Mon, 8 Oct 2007 17:09:59 -0600 (Mountain Daylight Time)
Newsgroups gmane.comp.xfree86.devel
Message-ID <Pine.WNT.4.64.0710081650090.1992@tsi>
On Mon, 1 Oct 2007, Eeri Kask wrote:

> Here are patchsets (against Xorg twm release 1.0.3) completing and
> polishing Xft support for twm (and improving the icon manager):

> (1) twm-1.0.3-diff1.MyFont_ChangeGC.tgz
> to my knowing has not changed from last time: cleans up bitmap font drawing.

OK.

> (2) twm-1.0.3-diff2.TWM_USE_XFT.tgz
> introduces Xft support (replaces bitmap text rendering functions with
> xft-font rendering). [Compile with -DTWM_USE_XFT to activate.]

This leaks memory in the form of XftDraw structures that never get released. 
I've reworked this to fix that problem, and also to re-instate "core" font 
support even if TWM_USE_XFT is #define'd.  If a font cannot be found through 
libXft, it will be looked for through the older standard mechanism.

> (3) twm-1.0.3-diff3.Spacing.tgz
> (Vertical) spacing corrections; having scalable fonts one should use
> "scalable spacing" as well, otherwise one day having 600x600 dpi screen
> vertical spacing of, e.g. 4 pixels, results in text line distance of
> zero. Now baseline skip is computed like 1.2 times font height or something.

I would prefer that this be done only for Xft fonts, or, better, be made 
configurable.

> Maybe here some spacing corrections need to be done as some ttf-fonts
> may include "bad metrics". I have mostly tested with bitstream vera
> fonts.  (E.g. Apple's Lucida Grande looks vertically definitely too tight.)

I don't believe fonts with bad metrics should be dealt with in twm.

> (4) twm-1.0.3-diff4.TWM_USE_OPACITY.tgz
> If you value transparency in twm menus and icon manger/icons, apply
> this. This patchset introduces "MenuOpacity" and "IconOpacity" keywords
> having integer values in range 0...255. [Enable with -DTWM_USE_OPACITY]

As stated previously, this will not be integrated as it relies on 
X.Org-specific functionality.

> (5) twm-1.0.3-diff5.Appearance.tgz
> Here lies probably the most radical change I have made to twm: the
> iconmanager painting DrawIconManagerBorder() is now
> DrawIconManagerEntry() and draws the iconmanager entry in full. This
> work is not completed yet.

I'm inclined to delay this one until it is complete.

> This patchset introduces "DefaultFont"
> keyword. The default font was up to now like some orphan parameter not
> configurable by the user and in the same time used prominently in
> rendering InfoWindow/SizeWindow text. (Letting it be "fixed" as in
> bitmap rendering would cause twm become non-usable in whole as
> XftFontOpenXlfd() (at least the installed library I have to use) is not
> able to load that font, so something needed to be done anyway. Lacking
> any better idea now by default DefaultFont is set to "mono-10" if XFT is
> compiled in.)

My rework of your second change fixes this.

> (6) twm-1.0.3-diff6.Fixes.tgz
> Here are bugs I encountered in twm as improving icon manager
> functionality; some are serious.

Such as?  Please be more descriptive.

> (7) twm-1.0.3-diff7.Improvements.tgz
> Here are some improvements to the icon manager. The old behaviour is
> kept as long as "WarpCursor" is not defined: actually the meaning of
> this variable is broadened in the sense that everywhere where warping
> mouse makes sense, this is done:

> (*) if some client window has focus and this client opens a transient
> window, then mouse is transfered there; like in password prompt and
> file-open dialogs (this is a valuable idea from vtwm);

> (*) if iconifying some client window and the icon manager is currently
> mapped, the mouse is transfered into the corresponding icon manager entry;

> (*) if executing f.hideiconmgr transfer mouse into the corresponding
> client if some iconmanager entry was "active".

> (*) iconmanager navigation functions raise the corresponding client
> windows as stepping around entries.

OK, except that, as you currently have it coded, that last one does not 
depend on "WarpCursor".  Is that intentional?

> P.P.S. How to put TWM_USE_XFT, TWM_USE_OPACITY into autoconfig or Imake
> if you are interested please kindly help as not coming from software
> development it is a little complicated. (Few weeks ago I only learned
> how to use 'diff'.)  :-)

The "automangle" suite isn't a concern here, and my integration of these 
changes, as it currently stands, already takes care of imake.

Marc.

+----------------------------------+----------------------------------+
|  Marc Aurele La France           |  work:   1-780-492-9310          |
|  Academic Information and        |  fax:    1-780-492-1729          |
|    Communications Technologies   |  email:  [email protected]         |
|  352 General Services Building   +----------------------------------+
|  University of Alberta           |                                  |
|  Edmonton, Alberta               |    Standard disclaimers apply    |
|  T6G 2H1                         |                                  |
|  CANADA                          |                                  |
+----------------------------------+----------------------------------+
XFree86 developer and VP.  ATI driver and X server internals.