FOIT, FOUT, FUCK

A presentation at Berliner Typo­stammtisch in June 2018 in Berlin, Germany by Gunnar Bittersmann

Slide 1

Slide 1

FOIT FOUT FUCK

Slide 2

Slide 2

@font-face { font-family: 'What The Font'; font-weight: normal; font-style: normal; src: url('wtf.eot'); src: url('wtf.eot?#iefix') format('embedded-opentype'), url('wtf.woff2') format('woff2'), url('wtf.woff') format('woff'), url('wtf.ttf') format('truetype'), url('wtf.svg#wtf') format('svg') }

Slide 3

Slide 3

WOFF Weg mit den ollen Font-Formaten!

Slide 4

Slide 4

Slide 5

Slide 5

FOIT Flash of invisible text

Slide 6

Slide 6

FOUT Flash of unstyled text

Slide 7

Slide 7

Slide 8

Slide 8

nein ist Webfont im localStorage? ja lade Webfont aus localStorage render Text in Webfont

Slide 9

Slide 9

nein ist Webfont im localStorage? ja render Text in Systemschrift lade Webfont aus localStorage download Webfont im Hintergrund, speicher in localStorage render Text in Webfont

Slide 10

Slide 10

block swap ≈3s FOIT FOUT

Slide 11

Slide 11

font-display: block block swap swap swap ≈0.1s ≈3s

Slide 12

Slide 12

font-display: block block swap swap swap swap fallback fallback fallback optional ≈0.1s ≈3s

Slide 13

Slide 13

@font-face { font-family: 'What The Font'; font-weight: normal; font-style: normal; src: url('wtf.woff2') format('woff2'), url('wtf.woff') format('woff'); font-display: optional; }

Slide 14

Slide 14

CSS Font Loading API var wtfFace = new FontFace("What the Font", "url(wtf.woff)", {}); wtfFace.load().then(function (loadedFace) { document.fonts.add(loadedFace); document.body.style.fontFamily = "What the Font, sans-serif"; });

Slide 15

Slide 15

Flash of faux text

Slide 16

Slide 16

Flash of faux text

Slide 17

Slide 17

Liebe Gerda, wir müssen reden. LiebeGerda-Regular.woff 893 KB LiebeGerda-RegularItalic.woff 974 KB LiebeGerda-Bold.woff 1.3 MB LiebeGerda-BoldItalic.woff 1.3 MB

Slide 18

Slide 18

<img src="LiebeGerda-600.png" srcset="LiebeGerda-1200.png 1200w, LiebeGerda-900.png 900w" alt="Liebe Gerda, wir müssen reden."/> LiebeGerda-1200.png 27.3 KB LiebeGerda-900.png 18.4 KB LiebeGerda-750.png 14.4 KB LiebeGerda-600.png 10.8 KB

Slide 19

Slide 19

FOCS Flash of Comic Sans

Slide 20

Slide 20

Die Art des Inhalts und der Interaktionen setzen gewisse Grenzen; die Bedürfnisse und Ziele der Nutzer setzen andere. Die Tätigkeit des Webdesigns besteht nun darin, diese Grenzen auszuloten und in Einklang zu bringen. — Laura Kalbag, Accessibility for Everyone