RE: [AC21.5] internals.texi: document some issues raised by Xft

"Ben Wing" <[email protected]> Tue, 14 Dec 2004 19:22:57 -0600
Newsgroups gmane.emacs.xemacs.design
Message-ID <048901c4e244$9c4be6d0$210110ac@NEEEEEEE>
> @@ -13395,6 +13395,12 @@
>  contains multiple display devices, but only one keyboard and 
> mouse.  Most of the time, a console will contain exactly one device.
>  
> +@strong{This model may no longer suffice.}  The X Window System (at
> +least) now supports a variety of input devices, including 
> touchscreens 
> +and tablets, as well as the traditional keyboard and mouse, and may 
> +even be able to support multiple instances of a single type of input 
> +device (especially pointing devices) on a single console.
> +
>  Consoles are the top of a lisp object inclusion hierarchy.  
> Consoles  contain devices, which contain frames, which 
> contain windows.

I now really consider the exposure of consoles to be a mistake.

I'm interested in seeing if we can "de-expose" them and use devices in all
cases instead.  What do you think?

> @@ -13420,6 +13426,57 @@
>  menubar, scrollbar, toolbar, and other displayable-object 
> subsystems.  The reason for this is that all of these 
> subsystems have the same  subtypes (X, TTY, NeXTstep, 
> Microsoft Windows, etc.) as devices do.
> +
> +@strong{This abstraction is probably broken} (as of late 2004), at 
> +least for X consoles, with the advent of the @strong{Xft} 
> library.  Xft 
> +is a complete break from the traditional approach to text 
> rendering in 
> +the X11 environment, since fonts are composed of glyphs rendered by 
> +@emph{client-side} code.  These glyphs are then transmitted to the 
> +server as sets of trapezoids, and displayed by the @strong{XRender} 
> +extension (where available; the X11 core protocol can also 
> be used, but 
> +this is slow).  The XRender extension is especially 
> attractive because 
> +it allows modern image composition techniques to be used to render 
> +antialiased fonts.
> +

Note also another issue under Windows, if we want to support glyph shaping,
as required for Arabic, Devanagari, etc.  Windows has built-in routines to
take care of this but you need to pass the whole string of text and do
text-width calculations similarly on the whole string rather than
char-by-char.