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