[html5] Accessing the user's installed fonts
Jukka K. Korpela
jukka.k.korpela at kolumbus.fi
Mon Jul 29 04:01:48 PDT 2013
2013-07-24 18:02, Oliver Sartun wrote:
> for all I know it's not possible to retrieve a list of all fonts a
> user has installed on his system via JavaScript. Is that correct?
It's not possible to retrieve such information in any standardized manner.
> You either have to use Flash or a rather hackish solution that
> involves assigning a potentially installed font to a DOM element and
> measuring its dimensions
There's also an old trick that works on IE (only), see e.g.
http://forums.mozillazine.org/viewtopic.php?f=8&t=300609&start=0
I've used it on my page that lets you view (on IE) a piece of text in
all the fonts installed on your system:
http://www.cs.tut.fi/~jkorpela/listfonts1.html
There are other similar services, and this might look like something you
should do with software installed on your system. But I think it is an
interesting possibility to implement it with HTML and JavaScript.
> For
> instance, it wouldn't be possible to create advanced word processors /
> DTP applications like InDesign for the open web platform, if I get
> that right.
A more common need for access to font information arises if you wish to
create an HTML application that has a simple font changer – e.g., a
dropdown that lets the user select the font of the copy text, or some
special text.
Even more often, authors face the problem of not knowing which of the
fonts of their font-family list gets (or may get) applied. I can specify
in CSS e.g. body { font-family: Calibri, Helvetica, Arial, sans-serif },
but how could I select other presentation to suit the font? I can't. For
example, Helvetica and Arial need a considerably larger line-height than
Calibri. Just relying on line-height: normal is not reasonable. Line
height should also depend on line length and other issues; the "normal"
value is, at best, a compromise.
Typographic settings should depend on each other. The choice of a font
should affect many other aspects. Authors who care about typography
could do some simple programming to make the style settings different
depending on e.g. the availability of the primary font. (One style if
Calibri is available; something else if not, since we can pretty much
expect virtually any system to have Arial or Helvetica.)
The problem is that CSS does not have tools for it, so access to font
list in JavaScript would indeed be desirable. This has been said years
ago, and it seems that reluctance to implement it largely depends on
expected security issues, basically security of personal data; see e.g.
"Feature request: Get font list in Javascript",
http://forums.mozillazine.org/viewtopic.php?f=8&t=300609&start=0
I think the usefulness of disclosing the information far exceeds the
real impact of the risks. Currently, information about fonts is
available in ways mentioned above - clumsy, hackish ways - so if this
were a serious security breach, I think we would have heard of attacks
using it. Providing a simple, standardized access to information would
mainly help people who would use it to improve the quality of
applications or pages.
--
Yucca, http://www.cs.tut.fi/~jkorpela/
More information about the Help
mailing list