W3C home > Mailing lists > Public > www-style@w3.org > August 2006

Re: Web Fonts

From: Bert Bos <bert@w3.org>
Date: Fri, 18 Aug 2006 18:36:31 +0200
To: www-style@w3.org
Message-Id: <200608181836.31284.bert@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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:46 GMT