
As I was testing the printing of my web page this morning, I discovered that Webkit (the HTML rendering engine used by the Safari and Chrome browsers) has a nasty @font-face bug: It can not correctly print pages that use a custom font.
The problem is that the character mapping of the font gets screwed up when sent to the printer, making the text gibberish. I am seeing this problem in Windows 7 using the Safari browser.
My solution is to add something like this to the bottom of my printing CSS:
@media print and (-webkit-min-device-pixel-ratio:0) {
h1 { font-family: sans-serif; }
h2 { font-family: sans-serif; }
h3 { font-family: sans-serif; }
.blogtitle { font-family: sans-serif; }
/* Any other classes or tags that use the custom font get the
* same treatment */
}
The first line of the above CSS tells browsers "ignore this CSS if you are
not Webkit"; the rest of the CSS tells Webkit "never mind the custom font,
just use an ordinary sans-serif font". I'm not a big fan of CSS hacks like
-webkit-min-device-pixel-ratio, but I figure by the time Webkit
no longer recognizes this tag, they will have fixed their @font-face
printing bug.
While discussing @font-face issues, another issue is that some browsers don't show anything while the font is loading. This is an issue for people still in dial-up hell and one I have kept in mind. My solution is to only use one custom font (at one single weight and style); I have also edited the font so that it only has characters in languages I personally know.
To post a comment about an entry, send me an email and I may or may not post your comment (with or without editing)