- From: Bert Bos <bert@w3.org>
- Date: Fri, 18 Aug 2006 18:36:31 +0200
- To: www-style@w3.org
On Tuesday 15 August 2006 11:21, David Hyatt wrote:
> Looking at the Web Fonts spec, it seems to me that it is way too
> complex right now (and that this is probably a significant reason
> that it hasn't seen more success in being implemented).
It's complex if you want all its functions: font download, font
database, font substitution and font synthesis. But IE uses it for font
download and Prince as a font database (in the sense of section 15.2 of
CSS 2.1) and those functions aren't so difficult.
>
> Wouldn't it be sufficient to simply support the addition of URIs to
> font-family? This would work properly with fallback, and thus could
> work in conjunction with installed fonts on the system, and the URI
> could be to a zip file that contained all the variants of a font as
> well if needed.
We had a discussion[1] about this a few months back. There was no clear
conclusion, I believe, so it's good that the discussion continues. But
the question of syntax seems to be part of a wider issue.
The original observation was that "image replacement" techniques are
most often used to replace text by an image of text in a specific font
and it seems Web Fonts, if they had been available, would make probably
80% of image replacement unnecessary. Web Fonts would be easier for the
designer and more accessible for the reader. So why aren't they
implemented?
There was another question, which may become important if the answer to
the above involves syntax changes: CSS3 will make image replacement
itself as easy as a single property, viz., 'content', but then the
question becomes if there is a need to link image replacement and
fonts, so that the image replacement can act as a fallback when a font
isn't available.
As for the first question, possible reasons that Web Fonts are
implemented so poorly (only one Web browser on one platform, and for
the rest only in SVG viewers):
a. Syntax not attractive enough
b. Implementation is difficult
c. Lack of rights management
d. Security problems (fonts containing malicious code)
e. Lack of tools for authors to create downloadable fonts
f. more?
Ad a: The indirection through @font-face is seen by some as a threshold
that may be too high. The minimum to write would be
@font-face {
font-family: Headline;
src: url(http://example.com/fonts/hdl);
}
...
h1 {font-family: Headline, serif}
On the other hand, when you use the same downloadable font also in other
rules in the style sheet, the overhead becomes less.
Ad b: On some platforms it may not be possible to install new fonts or
not possible to install them for one process only. However, I think I
heard implementers say (they can correct me if I'm wrong) that there
are sufficient platforms where it *is* possible (Windows, Mac,
Unix/X...), even if the restriction to one process is by convention
only and cannot be enforced. The real implementation problems seem to
be c and d.
Ad c: There are by some estimates around 500 free fonts available, in
the sense that you can redistribute them freely. But many are of poor
quality, others only cover a very small range (only ASCII, or even only
uppercase ASCII). There are certainly useful fonts among them (I've
used some in presentations I've given), but maybe too few to make it
worthwhile to implement @font-face.
There are also many fonts that may be "embedded" in documents, but the
way the 'src' descriptor works requires the "embedded" font to be
downloadable at a certain URL. Copy-pasting that URL from a style sheet
into something else is so easy, it can hardly be seen as a conscious
effort to steal a font.
Microsoft has developed a solution for that: its EOT[2] format is a
variant of OpenType that embeds in the font file the list of documents
(URLs) the font may be used with. So now if you download the font and
want to use it for another document, you have to actually modify the
font file, which is (for most people, I think) a clear enough sign that
you are breaking a license.
The problem with EOT is that it is proprietary and that it leads to
problem e, lack of tools. So maybe we need a standard format that does
what EOT does: associate in one file both the glyph outlines and the
URLs of the documents they may be used with. (Note that it is not a
copy-protection technique in the sense of making it difficult to copy
the font, it just makes it easy for people to "do the right thing,"
i.e., embed rather than redistribute.)
There are also many fonts that may not even be embedded. They may only
be used on one machine. The question there is why that is the case. Did
the font designer simply forget to tick the "embeddable" check box in
his drawing program? Did he consciously uncheck it because he believes
current implementations (such as the EOT format) provide insufficient
protection? I don't have any answers to this question, but it may be
worthwhile to lobby with font designers to allow embedding of their
fonts.
Ad d: Modern font formats such as OpenType contain little programs that
are executed by the font rasterizer. In principle, that code is limited
to computing the shape of a glyph, but as always, some interpreters may
suffer from buffer overflows and similar bugs and indeed there have
been cases of fonts being used to break into systems.
When a font comes as part of a Web page, the user has no idea it is
being installed. So how to ensure the font is safe?
Of course, if a font crashes a system, it is first of all a bug in the
system and it should be fixed. I don't know how real this problem still
is and how difficult it would be to protect against it, maybe with some
form of sandboxing.
Ad e: Fonts on the Web are very often distributed as ZIP files and those
ZIP files often contain more than one font (e.g., roman, italic, bold
and bold-italic faces of one family). Current implementations of
@font-face don't handle such ZIP files, so an author has to do a bit of
work to unzip and upload the individual font files.
If fonts are only licensed for embedding, you need to use EOT, which
requires running a program, WEFT, which is only available on Windows.
You may also want to subset a font, to eliminate glyphs that you don't
need and make the file quicker to download.
CSS could be enhanced to allow ZIP files directly (or in general
downloads of multiple fonts from one URL), but subsetting and embedding
still require some work from the author.
As for the other question, whether to make image replacement dependent
on fonts, the WG decided to try the following in the next draft of
Generated Content:
h1#main { content: require-font(Zapfino) content, url(main1.png) }
which should be read as: if the font Zapfino is available display the
element's content normally, otherwise display the image. (Note that it
doesn't say to use Zapfino, that's the task of 'font-family'.)
This syntax only works with font names so far, not with URLs.
In conclusion:
It is currently not clear that allowing an alternative, shorter syntax
(viz., a URL in the 'font-face' property) will significantly increase
the use of downloadable fonts. Providing a fallback for failed font
downloads in the form of image replacement and providing some form of
DRM may be more important.
[1] http://lists.w3.org/Archives/Public/www-style/2006Apr/0070.html
[2] http://www.microsoft.com/typography/web/embedding/default.htm
Bert
--
Bert Bos ( W 3 C ) http://www.w3.org/
http://www.w3.org/people/bos W3C/ERCIM
bert@w3.org 2004 Rt des Lucioles / BP 93
+33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Friday, 18 August 2006 16:36:37 UTC