My ar­ti­cles have ap­peared in PAGE Mag­a­zine, Net Mag­a­zine, 8 Faces mag­a­zine, and the Type­kit blog. I’m also the au­thor of the Web­font Hand­book, and co-au­thor of Smash­ing Book 5.

Webfont Handbook

Sep­tem­ber 5, 2017

There’s more to choos­ing a web­font than aes­thet­ics—ren­der­ing, lan­guage sup­port, host­ing, and li­cens­ing are equally cru­cial to com­mu­ni­cat­ing your mes­sage. Think of web­fonts as pro­gres­sive en­hance­ment, and learn how to har­ness CSS and browser fea­tures to im­prove per­for­mance. From se­lec­tion to op­ti­miza­tion, the Web­font Hand­book shows you how web­fonts can make the web a more vi­su­ally di­verse, ef­fi­cient, and read­able en­vi­ron­ment.

The Web­font Hand­book is avail­able on the A Book Apart web­site.

Net Magazine: CSS font loading API

Feb­ru­ary 23, 2017

I wrote a short in­tro­duc­tion to the CSS font load­ing API for the April 2017 is­sue of Net Mag­a­zine. The ar­ti­cle high­lights the most use­ful parts of the API and how it can be used to load web fonts asyn­chro­nously. Net Magazine Issue 291

It’s still pos­si­ble to back or­der the April 2017 is­sue of Net Mag­a­zine.

Performance Calendar 2016: Loading Web Fonts Asynchronously

De­cem­ber 21, 2016

The Web Per­for­mance Cal­en­dar is a re­cur­ring ad­vent cal­en­dar fo­cused on web per­for­mance. I wrote an ar­ti­cle on load­ing web fonts asyn­chro­nously for the 2016 cal­en­dar. The ar­ti­cle con­cisely de­scribes why web font per­for­mance mat­ters, and how to use Font Face Ob­server to get the best pos­si­ble per­for­mance and user ex­pe­ri­ence.

Web Font Loading Patterns

April 13, 2016

Web font load­ing may seem com­pli­cated, but it is ac­tu­ally quite sim­ple if you fol­low some sim­ple font load­ing pat­terns. By com­bin­ing pat­terns you can cre­ate cus­tom font load­ing be­hav­iours that work in all browsers. Con­tinue read­ing…

Web Font Anti-Patterns

Oc­to­ber 13, 2015

There is a lot of con­fu­sion about web fonts. Are they re­ally bad for per­for­mance? Maybe you should not use web fonts at all? This on­go­ing se­ries of ar­ti­cles takes a look at some of the most com­mon anti-pat­terns for cre­at­ing, us­ing, and load­ing web fonts. Web fonts can be great when used cor­rectly and with mod­er­a­tion. Con­tinue read­ing…

Typography.Guru interview

Au­gust 3, 2015

I an­swered seven ques­tions about web ty­pog­ra­phy and the State of Web Type in this Ty­pog­ra­phy.Guru in­ter­view.

Preload Hints For Web Fonts

Au­gust 7, 2015

Web fonts are a pop­u­lar topic in the web per­for­mance com­mu­nity. How­ever, one fun­da­men­tal prob­lem is of­ten over­looked: web fonts are lazy loaded. Can web font pre­load hints help us? Con­tinue read­ing…

Detecting System Fonts Without Flash

July 30, 2015

Many web-based text ed­i­tors al­low the user to se­lect cus­tom fonts through a drop down menu. These font menus of­ten in­clude sys­tem fonts. Un­for­tu­nately, there is no web plat­form API for re­triev­ing a list of lo­cally in­stalled fonts.

Google Docs font menu

Find out how you can use JavaScript to de­tect sys­tem fonts. Con­tinue read­ing…

Smashing Book 5: Web Fonts Performance

July 28, 2015

Smash­ing Mag­a­zine asked me to write a chap­ter about web fonts per­for­mance for Smash­ing Book 5. I think web fonts are great, but they suf­fer from one big prob­lem: by de­fault they block ren­der­ing in al­most all browsers. You may have ex­pe­ri­enced this your­self on a site us­ing web fonts while us­ing a slow cel­lu­lar net­work. Star­ing at a blank page is no fun, es­pe­cially when the con­tent has al­ready loaded.

Smashing Book 5

Block­ing ren­der­ing while down­load­ing fonts is wrong and against the very idea of pro­gres­sive en­hance­ment. Af­ter all, the con­tent is what peo­ple come for. Web fonts are an en­hance­ment of that con­tent. Im­por­tant, but not crit­i­cal. This chap­ter will show you how to op­ti­mise web fonts and how to load them with­out in­con­ve­nienc­ing your vis­i­tors. Con­tinue read­ing…

Dev.Opera: State of Web Type

March 3, 2015

Ty­pog­ra­phy has a long and rich his­tory, but much has been lost in the tran­si­tion to the web. Even though browser sup­port for ty­pog­ra­phy has im­proved a lot in the last few years, there are still many fea­tures that are un­sup­ported.

Opera asked me to write an overview of the state of web type for their Dev.Opera blog. The ar­ti­cle cov­ers browser sup­port for Open­Type fea­tures, font load­ing, and hy­phen­ation and jus­ti­fi­ca­tion (or the lack thereof). Con­tinue read­ing…

PAGE Magazine: Web Fonts

Oc­to­ber 1, 2014

What ex­actly is a web font? Are web fonts dif­fer­ent from desk­top fonts? What do you need pay at­ten­tion to when pur­chas­ing fonts? My ar­ti­cle in the Oc­to­ber 2014 is­sue of PAGE Mag­a­zine an­swers these ques­tions and more.

PAGE Magazine: Web Fonts cover and spread

The is­sue also fea­tures other ar­ti­cles on web fonts and web ty­pog­ra­phy and can be or­dered at the PAGE Mag­a­zine web shop. The is­sue is only avail­able in Ger­man.

8 Faces Magazine: Hyphenation & Justification

Oc­to­ber 6, 2013

Jus­ti­fi­ca­tion has al­ways been a source of con­tention on the web. Should you jus­tify text, or should­n’t you? To find out why there is such a dis­agree­ment, I take a closer look at what jus­ti­fi­ca­tion is, how it is im­ple­mented, and why browsers make the choice even more dif­fi­cult.

8 Faces

This ar­ti­cle ap­peared in is­sue #7 of 8 Faces mag­a­zine. Un­for­tu­nately the is­sue (and mag­a­zine) is out of print, but it will be avail­able in book form later this year.

Advanced Pattern Matching in JavaScript

May 7, 2012

A con­tin­u­a­tion of the pat­tern match­ing ar­ti­cle. This ar­ti­cle in­tro­duces a sim­pli­fied pat­tern syn­tax, an op­ti­miza­tion and ex­plains how to use pat­tern match­ing to­gether with al­ge­braic data types. Con­tinue read­ing…

Pattern Matching in JavaScript

Feb­ru­ary 13, 2012

A step by step guide for im­ple­ment­ing con­di­tional pat­tern match­ing in JavaScript as seen in func­tional pro­gram­ming lan­guages such as ML, Er­lang and Haskell. Con­tinue read­ing…