Slowly, but surely, web browsers are creeping towards some form of parity when it comes to using custom fonts in CSS. It's rather disturbing how long it's taken considering that dynamic fonts were possible in Netscape Navigator 4 and Internet Explorer 4.
A lot has changed since then. What used to exist as two mismatched specifications for embedding fonts (Netscape with TrueDoc and Microsoft with Embedded Open Type) is now starting to congeal towards a single standards-based solution: The CSS3 Web Fonts specification.
Slowly, but surely, browsers, and other vendors, are starting to implement this specification (especially now that its use is implied by the ACID 3 test).
The primary aspect of the web fonts specification comes down to the use of @font-face within your stylesheets. Using it you could define, and load, a custom font like so:
@font-face { font-family: "Kimberley"; src: url(kimberle.ttf) format("truetype"); } h1 { font-family: "Kimberley", sans-serif; }
There's an A List Apart article that provides a number of examples on how to use this.
The biggest gotcha to how @font-face works, though, is in what font file formats it supports. By default an implementor isn't required to support any, much like the <video/> and <audio/> elements in the HTML 5 specification.
This leads to the question: How's the browser support?
Surprisingly, Internet Explorer has had an implementation of @font-face for quite some time now (over a decade, in fact). Much of the web-fonts specification is based off of their work (and is edited by a Microsoft employee). However the only font file format that is supported is the proprietary Embedded Open Type format (although Microsoft is currently attempting to standardize EOT within the W3C).
The WebKit team has also implemented @font-face support, along with support for the de-facto TrueType file format. This is expected to make its public debut in the upcoming Safari 4 release.