How to move forward with fonts on X is a worthy discussion
and I'm glad to see people thinking about it.

I'd like to add a bit of input but from a different 
perspective. There has been a lot of discussion about X
fonts recently in the mozilla world. This has caused me 
to look at X fonts from many directions.

X fonts are currently lag fonts on the Mac and
Microsoft Windows. I believe that this is directly 
caused by the choice to put font handling on the 
X server.

The choice to put X font handling on the server as opposed
to the client has some advantages (feel free to add more):

  sharing a common resource => memory savings

  the pixels are at the X server => minimal network bandwidth

The choice to put X font handling on the server as opposed
to the client has some disadvantages (feel free to add more):

  New font types require a X server (or X font server)
  upgrade which means it takes a long time for it to 
  propagate on to users desktops since upgrading one's 
  X server (or font server) is not commonly done except 
  when the OS is upgraded or when a user gets a new 
  system.

  It is hard to get new font information such as TrueType's 
  GSUB, GPOS table down to the client. Any efficient way 
  basically requires a X protocol upgrade/change. Changing 
  the X protocol will take a long time since it requires
  people to agree on the protcol change and then the X 
  servers in the field to be upgraded.

  It is hard to get the fonts to the printer. This is an
  area where X has lacked for a long time.

>From my perspective the client-side vs server-side font
choice boils down to:

  server-side font handling:  
    most memory efficient
    most network bandwidth efficient

  client-side font handling:
    fastest way to get new features in

While I said that server-side font handling is most
memory efficient this is not always the case. If an 
app wants one large glyph (or one CJK glyph) the X 
server currently renders the entire set of characters 
which uses a lot of server memory (anyone know if Xfs 
does incremental rasterization?). This can be fixed 
(and should be fixed) but even when it is fixed it 
will take a while for the bulk of users to see the 
benefit because it is on the server side and requires
a X server upgrade.

While I said that server-side font handling is most
network bandwidth efficient this is not always the 
case. If an app want one glyph from a font with a
large amount of glyphs (think Unicode fonts) the
X server currently has to send the per-glyph metrics 
for the entire set of characters (1). 

I don't know whether Keith directly considered this 
issue when he designed Xft or just thought "I can 
make a big improvement in X fonts and get it into the 
users hands (without a protocol change)". Either way 
I agree with his choice to have Xft do client side 
rendering. It allows new features to get into the 
field without requiring a server upgrade every time a 
new feature comes along. I believe that Xft's choice
to do client-side font handling will lead to a vast
improvment in X fonts over the next few years. 

A couple of things to note about Xft:

  Xft uses the Xrender extension to draw which
  give relatively good network performance since
  Xft/Xrender does require the glyphs to be sent
  up to the server (once) but Xft does not require 
  the per-glyph metrics to be sent down from the 
  server to the client.

  Xft is relatively memory efficient since apps 
  only generate per-glyphs metrics for the glyphs 
  they actually use and (assuming I understand this) 
  the glyphs at the server are shared.

-- 
Brian Stell

Notes:
1: There si a trick an app can do using XLFD to 
workaround downloading the entire per-glyphs metrics
for a font. This trick involves modifing the font
XLDF name to specify a subset of glyphs. This can
only work if "an app knows ahead of time what
characters it needs". While this could be true for
simple display programs it cannot be true for
work processors. It also cannot be true for browsers 
which start displaying the page before the entire 
page is received (makes slow modem display tolerable).
_______________________________________________
Fonts mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/fonts

Reply via email to