Slide 1

Slide 1 text

Sta THE STATE OF WEB TYPE BASELINE SERIF X-HEIGHT FF QUIXO @bram_stein #wbfntdy

Slide 2

Slide 2 text

The second half is not as boring as the first. “ ” ― My wife

Slide 3

Slide 3 text

The material was out of date. Even I know this stuff. I didn’t learn anything. “ ” ― Anonymous

Slide 4

Slide 4 text

Web fonts It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. ARIAL It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. TIMES NEW ROMAN

Slide 5

Slide 5 text

Web fonts FF QUIXO It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. FREIGHT SANS

Slide 6

Slide 6 text

@font-face { font-family: My Font; src: url(myfont.woff); } ! body { font-family: My Font, Arial, Verdana, sans-serif; } Web fonts CSS

Slide 7

Slide 7 text

@font-face { font-family: Helvetica Neue; src: url(comicsans.ttf); } Helvetica Neue CSS Web fonts

Slide 8

Slide 8 text

@font-face { font-family: My Font; src: url(myfont.eot#?ie) format(“embedded-opentype”), url(myfont.woff) format(“woff”), url(myfont.ttf) format(“truetype”), url(myfont.otf) format(“opentype”), url(myfont.svg#myfont) format(“svg”); } CSS Web fonts

Slide 9

Slide 9 text

Formats TTF Ag OTF Ag EOT Ag WOFF Ag WOFF2 Ag SVG

Slide 10

Slide 10 text

Formats Woof!

Slide 11

Slide 11 text

Formats Woof! Woof!

Slide 12

Slide 12 text

Formats TTF Ag OTF Ag EOT Ag WOFF Ag WOFF2 Ag SVG

Slide 13

Slide 13 text

Formats TTF Ag OTF Ag EOT Ag WOFF Ag WOFF2 Ag SVG

Slide 14

Slide 14 text

Formats TTF Ag OTF Ag EOT Ag WOFF Ag WOFF2 Ag SVG

Slide 15

Slide 15 text

Formats TTF Ag OTF Ag EOT ?? WOFF ?? WOFF2 ?? SVG

Slide 16

Slide 16 text

Formats TTF Ag OTF Ag EOT WOFF WOFF2 SVG TTF OTF TTF OTF TTF OTF

Slide 17

Slide 17 text

Formats TTF Ag OTF Ag EOT WOFF WOFF2 SVG TTF OTF TTF OTF TTF OTF + GZIP

Slide 18

Slide 18 text

Formats TTF Ag OTF Ag EOT WOFF WOFF2 SVG TTF OTF TTF OTF TTF OTF + GZIP + Zopfli

Slide 19

Slide 19 text

Format IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera TrueType No Yes Yes Yes Yes Yes Yes Yes OpenType No Yes Yes Yes Yes Yes Yes Yes EOT Yes Yes Yes Yes n/a n/a n/a n/a WOFF No Yes Yes Yes Yes Yes Yes Yes WOFF2 No No No No Yes No No Yes Formats

Slide 20

Slide 20 text

Format IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera TrueType No Yes Yes Yes Yes Yes Yes Yes OpenType No Yes Yes Yes Yes Yes Yes Yes EOT Yes Yes Yes Yes n/a n/a n/a n/a WOFF No Yes Yes Yes Yes Yes Yes Yes WOFF2 No No No No Yes No No Yes Formats

Slide 21

Slide 21 text

Format IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera TrueType No Yes Yes Yes Yes Yes Yes Yes OpenType No Yes Yes Yes Yes Yes Yes Yes EOT Yes Yes Yes Yes n/a n/a n/a n/a WOFF No Yes Yes Yes Yes Yes Yes Yes WOFF2 No No No No Yes No No Yes Formats

Slide 22

Slide 22 text

Format IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera TrueType No Yes Yes Yes Yes Yes Yes Yes OpenType No Yes Yes Yes Yes Yes Yes Yes EOT Yes Yes Yes Yes n/a n/a n/a n/a WOFF No Yes Yes Yes Yes Yes Yes Yes WOFF2 No No No No Yes No No Yes Formats

Slide 23

Slide 23 text

@font-face { font-family: My Font; src: url(myfont.woff2) format(‘woff2’), url(myfont.woff) format(‘woff’); } Formats CSS

Slide 24

Slide 24 text

@font-face { font-family: My Font; src: url(myfont.woff2) format(‘woff2’), url(myfont.woff) format(‘woff’), url(myfont.otf) format(‘opentype’); } Formats CSS

Slide 25

Slide 25 text

@font-face { font-family: My Font; src: url(myfont.woff) format(‘woff’); font-style: normal; font-weight: normal; font-stretch: normal; font-variant: normal; font-feature-settings: normal; unicode-range: U+0-10FFFF; } CSS Web fonts

Slide 26

Slide 26 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-style Yes Yes Yes Yes Yes Yes Yes Yes font-weight Yes Yes Yes Yes Yes Yes Yes Yes font-stretch No Yes Yes Yes No Yes No No font-variant No No No No No No No No font-feature-settings No No No No No Yes No No unicode-range No Partial Partial Partial Yes No Partial Yes Web fonts

Slide 27

Slide 27 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-style Yes Yes Yes Yes Yes Yes Yes Yes font-weight Yes Yes Yes Yes Yes Yes Yes Yes font-stretch No Yes Yes Yes No Yes No No font-variant No No No No No No No No font-feature-settings No No No No No Yes No No unicode-range No Partial Partial Partial Yes No Partial Yes Web fonts

Slide 28

Slide 28 text

ULTRA… 200 300 400 500 600 700 800 900 EXTRA- CON. CONDENSE D SEMI-CON. NORMAL SEMI-EXP. EXPANDED EXTRA-EXP. ULTRA-EXP. ULTRA… 200 300 400 500 600 700 800 900 EXTRA- CON. CONDENSE D SEMI-CON. NORMAL SEMI-EXP. EXPANDED EXTRA-EXP. ULTRA-EXP. ULTRA… 200 300 400 500 600 700 800 900 EXTRA… CONDE… Aa Aa Aa Aa Aa Aa SEMI-… Aa Aa Aa Aa Aa Aa NORM… Aa Aa Aa Aa Aa Aa SEMI-… EXPAN… Aa Aa Aa Aa Aa Aa EXTRA… ULTRA… FONT-STRETCH FONT-WEIGHT FONT-STYLE Kepler by Robert Slimbach Web fonts

Slide 29

Slide 29 text

ULTRA… 200 300 400 500 600 700 800 900 EXTRA- CON. CONDENSE D SEMI-CON. NORMAL SEMI-EXP. EXPANDED EXTRA-EXP. ULTRA-EXP. ULTRA… 200 300 400 500 600 700 800 900 EXTRA- CON. CONDENSE D SEMI-CON. NORMAL SEMI-EXP. EXPANDED EXTRA-EXP. ULTRA-EXP. ULTRA… 200 300 400 500 600 700 800 900 EXTRA… CONDE… Aa Aa Aa Aa Aa Aa SEMI-… Aa Aa Aa Aa Aa Aa NORMAL Aa Aa Aa Aa Aa Aa SEMI-… EXPAN… Aa Aa Aa Aa Aa Aa EXTRA… ULTRA… FONT-STRETCH FONT-WEIGHT FONT-STYLE Kepler by Robert Slimbach Web fonts

Slide 30

Slide 30 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-style Yes Yes Yes Yes Yes Yes Yes Yes font-weight Yes Yes Yes Yes Yes Yes Yes Yes font-stretch No Yes Yes Yes No Yes No No font-variant No No No No No No No No font-feature-settings No No No No No Yes No No unicode-range No Partial Partial Partial Yes No Partial Yes Web fonts

Slide 31

Slide 31 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-style Yes Yes Yes Yes Yes Yes Yes Yes font-weight Yes Yes Yes Yes Yes Yes Yes Yes font-stretch No Yes Yes Yes No Yes No No font-variant No No No No No No No No font-feature-settings No No No No No Yes No No unicode-range No Partial Partial Partial Yes No Partial Yes Web fonts

Slide 32

Slide 32 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-style Yes Yes Yes Yes Yes Yes Yes Yes font-weight Yes Yes Yes Yes Yes Yes Yes Yes font-stretch No Yes Yes Yes No Yes No No font-variant No No No No No No No No font-feature-settings No No No No No Yes No No unicode-range No Partial Partial Partial Yes No Partial Yes Web fonts

Slide 33

Slide 33 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-style Yes Yes Yes Yes Yes Yes Yes Yes font-weight Yes Yes Yes Yes Yes Yes Yes Yes font-stretch No Yes Yes Yes No Yes No No font-variant No No No No No No No No font-feature-settings No No No No No Yes No No unicode-range No Partial Partial Partial Yes No Partial Yes Web fonts

Slide 34

Slide 34 text

100 MS 200 MS 300 MS 400 MS 500 MS 600 MS 700 MS 800 MS 900 MS FONT LOADING

Slide 35

Slide 35 text

body { font-family: Arial, Verdana, sans-serif; } CSS Font Loading

Slide 36

Slide 36 text

body { font-family: Arial, Verdana, sans-serif; } CSS Font Loading

Slide 37

Slide 37 text

@font-face { font-family: My Font; src: url(myfont.woff); } ! body { font-family: My Font, Arial, Verdana, sans-serif; } CSS Font Loading

Slide 38

Slide 38 text

@font-face { font-family: My Font; src: url(myfont.woff); } ! body { font-family: Arial, Verdana, sans-serif; } CSS Font Loading

Slide 39

Slide 39 text

Font Loading HTML CSS 100 MS 200 MS 300 MS 400 MS 500 MS 600 MS 700 MS LOAD

Slide 40

Slide 40 text

Font Loading HTML CSS 100 MS 200 MS 300 MS 400 MS 500 MS 600 MS 700 MS FONTS READY FONT A FONT B LOAD

Slide 41

Slide 41 text

Font Loading 1. The font family is not recognised and a fallback font is applied; 2. The font family is recognised but not yet loaded, and will be applied when it has finished downloading; 3. The font family is recognised and has already been loaded and will be applied immediately.

Slide 42

Slide 42 text

Font Loading 1. The font family is not recognised and a fallback font is applied; 2. The font family is recognised but not yet loaded, and will be applied when it has finished downloading; 3. The font family is recognised and has already been loaded and will be applied immediately.

Slide 43

Slide 43 text

Font Loading 1. The font family is not recognised and a fallback font is applied; 2. The font family is recognised but not yet loaded, and will be applied when it has finished downloading; 3. The font family is recognised and has already been loaded and will be applied immediately.

Slide 44

Slide 44 text

Font Loading 1. The font family is not recognised and a fallback font is applied; 2. The font family is recognised but not yet loaded, and will be applied when it has finished downloading; 3. The font family is recognised and has already been loaded and will be applied immediately.

Slide 45

Slide 45 text

Font Loading 1. The font family is not recognised and a fallback font is applied; 2. The font family is recognised but not yet loaded, and will be applied when it has finished downloading; 3. The font family is recognised and has already been loaded and will be applied immediately.

Slide 46

Slide 46 text

Font Loading ← → ↻

Slide 47

Slide 47 text

Font Loading http://www.example.com ← → ↻ Loading example.com…

Slide 48

Slide 48 text

Font Loading http://www.example.com ← → ↻ Loading example.com… It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers.

Slide 49

Slide 49 text

Font Loading http://www.example.com ← → ↻ Loaded example.com It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers.

Slide 50

Slide 50 text

Font Loading ← → ↻

Slide 51

Slide 51 text

Font Loading http://www.example.com ← → ↻ Loading example.com…

Slide 52

Slide 52 text

Font Loading http://www.example.com ← → ↻ Loading example.com…

Slide 53

Slide 53 text

Font Loading http://www.example.com ← → ↻ Loaded example.com It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers.

Slide 54

Slide 54 text

Font Loading Flash Of Unstyled Text (FOUT) Flash Of Invisible Text (FOIT) http://www.example.com ← → ↻ http://www.example.com ← → ↻ It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. http://www.example.com ← → ↻ It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. http://www.example.com ← → ↻ http://www.example.com ← → ↻ http://www.example.com ← → ↻ It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers.

Slide 55

Slide 55 text

Font Loading IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera Font Loading FOUT FOUT FOUT FOUT FOIT FOIT FOIT FOIT Timeout n/a n/a n/a n/a 3 sec. 3 sec. ∞ 3 sec.

Slide 56

Slide 56 text

Font Loading IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera Font Loading FOUT FOUT FOUT FOUT FOIT FOIT FOIT FOIT Timeout n/a n/a n/a n/a 3 sec. 3 sec. ∞ 3 sec.

Slide 57

Slide 57 text

Font Loading IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera Font Loading FOUT FOUT FOUT FOUT FOIT FOIT FOIT FOIT Timeout n/a n/a n/a n/a 3 sec. 3 sec. ∞ 3 sec.

Slide 58

Slide 58 text

Font Loading IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera Font Loading FOUT FOUT FOUT FOUT FOIT FOIT FOIT FOIT Timeout n/a n/a n/a n/a 3 sec. 3 sec. ∞ 3 sec.

Slide 59

Slide 59 text

Web Font Loader Web Font Loader https://github.com/typekit/webfontloader HTML

Slide 60

Slide 60 text

Web Font Loader WebFont.load({ …, fontactive: function (family, variation) { // Font has loaded }, active: function () { // All fonts have loaded } }); JAVASCRIPT

Slide 61

Slide 61 text

Web Font Loader … HTML html { font-family: sans-serif; } CSS

Slide 62

Slide 62 text

Web Font Loader … HTML html.wf-myfont-active { font-family: My Font, sans-serif; } CSS

Slide 63

Slide 63 text

var myfont = new FontFace(‘My Font’, ‘url(font.woff)’, {}); ! document.fonts.add(myfont); ! document.fonts.load(‘16px My Font’).then(function () { // Font has loaded }, function () { // Font failed to load }); CSS Font Loading JAVASCRIPT

Slide 64

Slide 64 text

IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera CSS Font Loading No No No No Yes No No Yes CSS Font Loading

Slide 65

Slide 65 text

IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera CSS Font Loading No No No No Yes No No Yes CSS Font Loading

Slide 66

Slide 66 text

IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera CSS Font Loading No No No No Yes No No Yes CSS Font Loading

Slide 67

Slide 67 text

FontLoader polyfill https://github.com/bramstein/fontloader CSS Font Loading Specification http://www.w3.org/TR/css-font-loading/ CSS Font Loading

Slide 68

Slide 68 text

AVAST OPENTYPE FEATURES fi1⁄2ffl1s 70 70 8 6 FRAC LIGA LIGA ORDN

Slide 69

Slide 69 text

OpenType fi → fi st → st (CSS) → (CSS) 789 → 789 W3C → w3c Q → Q LIGATURES: LIGA DISCRETIONARY LIGATURES: DLIG OLD STYLE NUMERALS: ONUM SMALL-CAPS: SMCP CASE-SENSITIVE FORMS: CASE STYLISTIC ALTERNATES: SALT Kepler by Robert Slimbach

Slide 70

Slide 70 text

span { font-variant: common-ligatures, small-caps; } ! ul.menu { font-variant: no-common-ligatures; } OpenType CSS

Slide 71

Slide 71 text

span { font-feature-settings: “liga” on, “smcp” on; } ! ul.menu { font-feature-settings: “liga” off; } OpenType CSS

Slide 72

Slide 72 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-feature-settings No No Yes Yes Yes Yes Sort of Yes liga n/a n/a Yes Yes Yes Yes Yes Yes dlig n/a n/a Yes Yes Yes Yes No Yes calt n/a n/a Yes Yes Yes Yes Yes Yes onum n/a n/a Yes Yes Yes Yes No Yes smcp n/a n/a Yes Yes Yes Yes No Yes salt n/a n/a Yes Yes Yes Yes No Yes OpenType

Slide 73

Slide 73 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-feature-settings No No Yes Yes Yes Yes Sort of Yes liga n/a n/a Yes Yes Yes Yes Yes Yes dlig n/a n/a Yes Yes Yes Yes No Yes calt n/a n/a Yes Yes Yes Yes Yes Yes onum n/a n/a Yes Yes Yes Yes No Yes smcp n/a n/a Yes Yes Yes Yes No Yes salt n/a n/a Yes Yes Yes Yes No Yes OpenType

Slide 74

Slide 74 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-feature-settings No No Yes Yes Yes Yes Sort of Yes liga n/a n/a Yes Yes Yes Yes Yes Yes dlig n/a n/a Yes Yes Yes Yes No Yes calt n/a n/a Yes Yes Yes Yes Yes Yes onum n/a n/a Yes Yes Yes Yes No Yes smcp n/a n/a Yes Yes Yes Yes No Yes salt n/a n/a Yes Yes Yes Yes No Yes OpenType

Slide 75

Slide 75 text

Kerning AWAY 291x493 411x493 291x493 271x493

Slide 76

Slide 76 text

body { font-kerning: auto; } h1, h2, h3 { font-kerning: normal; } ul.menu { font-kerning: none; } Kerning CSS

Slide 77

Slide 77 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-kerning No No No No No No Yes No Kerning

Slide 78

Slide 78 text

body { font-feature-settings: “kern” on; } Kerning CSS

Slide 79

Slide 79 text

body { font-feature-settings: “kern” on; font-kerning: normal; } Kerning CSS

Slide 80

Slide 80 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-feature-settings No No Yes Yes Yes Yes No Yes font-kerning No No No No No No Yes No Kerning

Slide 81

Slide 81 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-feature-settings No No Yes Yes Yes Yes No Yes font-kerning No No No No No No Yes No Kerning

Slide 82

Slide 82 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera font-feature-settings No No Yes Yes Yes Yes No Yes font-kerning No No No No No No Yes No Kerning

Slide 83

Slide 83 text

I call our world Flatland, not because we call it so, but to make its nature clearer to you, my happy readers, who are privileged to live in Space. Imag- ine a vast sheet of paper on which straight Lines, Triangles, Squares, Penta- JRQV+H[DJRQVDQGRWKHU̧JXUHVLQVWHDGRIUHPDLQLQJ̧[HGLQWKHLUSODF- es, move freely about, on or in the surface, but without the power of rising above or sinking below it, very much like shadows — only hard and with luminous edges — and you will then have a pretty cor- rect notion of my country and coun- trymen. Alas, a few years ago, I should have said “my universe;” but now my mind has been opened to higher views of things. In such a country, you will perceive at once that it is impossible that there should be anything of what you call a “solid” kind; but I dare say you will suppose that we could at least distinguish by VLJKWWKH7ULDQJOHV6TXDUHVDQGRWKHU̧JXUHVPRYLQJDERXWDV,KDYHGH- HYPHENATION JUSTIFICATION

Slide 84

Slide 84 text

h1 { text-align: right; } .menu { text-align: center; } p { text-align: justify; } Justification CSS

Slide 85

Slide 85 text

It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. 420 310 200 Justification

Slide 86

Slide 86 text

It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. 420 310 200 Justification

Slide 87

Slide 87 text

It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. 420 310 200 Justification

Slide 88

Slide 88 text

It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. 420 310 200 Justification

Slide 89

Slide 89 text

Justification In olden times when wishing still helped one, Greedy algorithm

Slide 90

Slide 90 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all Greedy algorithm

Slide 91

Slide 91 text

In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful Justification Greedy algorithm

Slide 92

Slide 92 text

In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… Justification Greedy algorithm

Slide 93

Slide 93 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that the sun itself, which… In olden times when wishing still helped one, In olden times when wishing still helped one, there lived a king whose daughters were all there lived a king whose daughters were all beautiful In olden times when wishing still helped one, Knuth & Plass algorithm

Slide 94

Slide 94 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that the sun itself, which… In olden times when wishing still helped one, In olden times when wishing still helped one, there lived a king whose daughters were all there lived a king whose daughters were all beautiful In olden times when wishing still helped one, Knuth & Plass algorithm

Slide 95

Slide 95 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that the sun itself, which… In olden times when wishing still helped one, In olden times when wishing still helped one, there lived a king whose daughters were all there lived a king whose daughters were all beautiful In olden times when wishing still helped one, Knuth & Plass algorithm

Slide 96

Slide 96 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that the sun itself, which… In olden times when wishing still helped one, In olden times when wishing still helped one, there lived a king whose daughters were all there lived a king whose daughters were all beautiful In olden times when wishing still helped one, Knuth & Plass algorithm

Slide 97

Slide 97 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that the sun itself, which… In olden times when wishing still helped one, In olden times when wishing still helped one, there lived a king whose daughters were all there lived a king whose daughters were all beautiful In olden times when wishing still helped one, Knuth & Plass algorithm

Slide 98

Slide 98 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that the sun itself, which… In olden times when wishing still helped one, In olden times when wishing still helped one, there lived a king whose daughters were all there lived a king whose daughters were all beautiful In olden times when wishing still helped one, Knuth & Plass algorithm

Slide 99

Slide 99 text

Justification In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that In olden times when wishing still helped one, there lived a king whose daughters were all beautiful; and the youngest was so beautiful that the sun itself, which… there lived a king whose daughters were all In olden times when wishing still helped one, beautiful; and the youngest was so beautiful that the sun itself, which… In olden times when wishing still helped one, In olden times when wishing still helped one, there lived a king whose daughters were all there lived a king whose daughters were all beautiful In olden times when wishing still helped one, Knuth & Plass algorithm

Slide 100

Slide 100 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera Justification algorithm Greedy Greedy Greedy Greedy Greedy Greedy Greedy Greedy Justification

Slide 101

Slide 101 text

It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. 420 310 200 Justification

Slide 102

Slide 102 text

It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solu- tion of it has been repeatedly at- tempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated ques- tion, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-in- vestigated question, “What is the origin of light?” and the solu- tion of it has been re- peatedly attempted, with no other result than to crowd our lu- natic asylums with the would-be solvers. 420 310 200 Justification

Slide 103

Slide 103 text

It was in old days, with our learned men, an interesting and oft-investigated question, “What is the origin of light?” and the solu- tion of it has been repeatedly at- tempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-investigated ques- tion, “What is the origin of light?” and the solution of it has been repeatedly attempted, with no other result than to crowd our lunatic asylums with the would-be solvers. It was in old days, with our learned men, an interesting and oft-in- vestigated question, “What is the origin of light?” and the solu- tion of it has been re- peatedly attempted, with no other result than to crowd our lu- natic asylums with the would-be solvers. 420 310 200 Justification

Slide 104

Slide 104 text

BEFORE AFTER Justification

Slide 105

Slide 105 text

HTML p { hyphens: auto; } Hyphenation CSS

Slide 106

Slide 106 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera hyphens No No Yes Yes Yes Yes Yes Yes Hyphenation

Slide 107

Slide 107 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera hyphens No No Yes Yes Sort of Yes Yes Sort of Hyphenation

Slide 108

Slide 108 text

$(‘p, a, span’).hyphenate(‘en-us’); Hyphenation Hyphenator.js https://code.google.com/p/hyphenator Hypher https://github.com/bramstein/hypher JAVASCRIPT

Slide 109

Slide 109 text

It was in old days, with our learned men, an in- teresting and oft-inves- tigated question, “What is the origin of light?” and the solution of it has been repeatedly at- tempted, with no other result than to crowd our lunatic asylums with the would-be solv- ers. Hyphenation

Slide 110

Slide 110 text

It was in old days, with our learned men, an in- teresting and oft-inves- tigated question, “What is the origin of light?” and the solution of it has been repeatedly at- tempted, with no other result than to crowd our lunatic asylums with the would-be solv- ers. CONSECUTIVE LINES WITH HYPHENATION Hyphenation

Slide 111

Slide 111 text

p { hyphenate-limit-lines: 1; } ! p.small-column { hyphenate-limit-lines: no-limit; } Hyphenation CSS

Slide 112

Slide 112 text

It was in old days, with our learned men, an in- teresting and oft-inves- tigated question, “What is the origin of light?” and the solution of it has been repeatedly at- tempted, with no other result than to crowd our lunatic asylums with the would-be solv- ers. HYPHENATION OF LAST WORD Hyphenation

Slide 113

Slide 113 text

p { hyphenate-limit-last: always; } ! p { hyphenate-limit-last: none; } Hyphenation CSS

Slide 114

Slide 114 text

It was in old days, with our learned men, an in- teresting and oft-inves- tigated question, “What is the origin of light?” and the solution of it has been repeatedly at- tempted, with no other result than to crowd our lunatic asylums with the would-be solv- ers. HYPHENATION AFTER 2 CHARACTERS HYPHENATION AFTER 2 CHARACTERS Hyphenation

Slide 115

Slide 115 text

p { hyphenate-limit-chars: auto auto auto; } hy•phen•ation is need•ed for jus•ti•fi•ca•tion Hyphenation CSS

Slide 116

Slide 116 text

p { hyphenate-limit-chars: 7 auto auto; } hy•phen•ation is need•ed for jus•ti•fi•ca•tion Hyphenation CSS

Slide 117

Slide 117 text

p { hyphenate-limit-chars: 7 3 auto; } hy•phen•ation is need•ed for jus•ti•fi•ca•tion Hyphenation CSS

Slide 118

Slide 118 text

p { hyphenate-limit-chars: 7 3 5; } hy•phen•ation is need•ed for jus•ti•fi•ca•tion Hyphenation CSS

Slide 119

Slide 119 text

It was in old days, with our learned men, an in- teresting and oft-inves- tigated question, “What is the origin of light?” and the solution of it has been repeatedly at- tempted, with no other result than to crowd our lunatic asylums with the would-be solv- ers. Hyphenation HYPHENS HYPHEN HYPHEN

Slide 120

Slide 120 text

p { hyphenate-character: auto; } Hyphenation hy-phen-ation CSS

Slide 121

Slide 121 text

p { hyphenate-character: “\u2605”; } Hyphenation hy★phen★ation CSS

Slide 122

Slide 122 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera hyphens No No Yes Yes Sort of Yes Yes Sort of hyphenate-limit-lines No No Yes Yes No No No No hyphenate-limit-last No No Yes Yes No No No No hyphenate-limit-chars No No Yes Yes No No No No hyphenate-character No No No No Yes Yes Yes Yes Hyphenation

Slide 123

Slide 123 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera hyphens No No Yes Yes Sort of Yes Yes Sort of hyphenate-limit-lines No No Yes Yes No No No No hyphenate-limit-last No No Yes Yes No No No No hyphenate-limit-chars No No Yes Yes No No No No hyphenate-character No No No No Yes Yes Yes Yes Hyphenation

Slide 124

Slide 124 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera hyphens No No Yes Yes Sort of Yes Yes Sort of hyphenate-limit-lines No No Yes Yes No No No No hyphenate-limit-last No No Yes Yes No No No No hyphenate-limit-chars No No Yes Yes No No No No hyphenate-character No No No No Yes Yes Yes Yes Hyphenation

Slide 125

Slide 125 text

Properties IE8 IE9 IE10 IE11 Chrome Firefox Safari Opera hyphens No No Yes Yes Sort of Yes Yes Sort of hyphenate-limit-lines No No Yes Yes No No No No hyphenate-limit-last No No Yes Yes No No No No hyphenate-limit-chars No No Yes Yes No No No No hyphenate-character No No No No Yes Yes Yes Yes Hyphenation

Slide 126

Slide 126 text

Web Design is 95% Typography “ ” ― Oliver Reichenstein

Slide 127

Slide 127 text

accelerator accesskey align-content align-items align-self alignment-baseline all animation animation-delay animation-direction animation-duration DQLPDWLRQ̧OOPRGH animation-iteration-count animation-name animation-play-state animation-timing-function app-region appearance aspect-ratio audio-level backface-visibility background background-attachment background-blend-mode background-clip background-color background-composite background-image background-origin background-position background-position-x background-position-y background-repeat background-repeat-x background-repeat-y background-size baseline-shift behavior binding block-progression border border-after border-after-color border-after-style border-after-width border-before border-before-color border-before-style border-before-width border-bottom border-bottom-color border-bottom-colors border-bottom-left-radius border-bottom-right-radius border-bottom-style border-bottom-width border-collapse border-color border-end border-end-color border-end-style border-end-width ERUGHU̧W border-horizontal-spacing border-image border-image-outset border-image-repeat border-image-slice border-image-source border-image-width border-left border-left-color border-left-colors border-left-style border-left-width border-radius border-right border-right-color border-right-colors border-right-style border-right-width border-spacing border-start border-start-color border-start-style border-start-width border-style border-top border-top-color border-top-colors border-top-left-radius border-top-right-radius border-top-style border-top-width border-vertical-spacing border-width bottom box-align box-decoration-break box-direction ER[̨H[ ER[̨H[JURXS box-lines box-ordinal-group box-orient box-pack ER[UH̨HFW box-shadow box-sizing break-after break-before break-inside buffered-rendering caption-side clear clip clip-path clip-rule color color-correction color-interpolation FRORULQWHUSRODWLRQ̧OWHUV FRORUSUŖOH color-rendering column-axis column-break-after column-break-before column-break-inside column-count FROXPQ̧OO column-gap column-progression column-rule column-rule-color column-rule-style column-rule-width column-span column-width columns FRPSRVLWLRQ̧OOFRORU composition-frame-color content content-zoom-chaining content-zoom-limit content-zoom-limit-max content-zoom-limit-min content-zoom-snap content-zoom-snap-points content-zoom-snap-type content-zooming counter-increment counter-reset cursor cursor-visibility dashboard-region direction display display-align dominant-baseline empty-cells enable-background ̧OO ̧OORSDFLW\ ̧OOUXOH ̧OWHU ̨H[ ̨H[DOLJQ ̨H[EDVLV ̨H[GLUHFWLRQ ̨H[̨RZ ̨H[JURZ ̨H[LWHPDOLJQ ̨H[OLQHSDFN ̨H[QHJDWLYH ̨H[RUGHU ̨H[SDFN ̨H[SRVLWLYH ̨H[SUHIHUUHGVL]H ̨H[VKULQN ̨H[ZUDS ̨RDW ̨RDWHGJH ̨RRGFRORU ̨RRGRSDFLW\ ̨RZIURP ̨RZLQWR font font-family font-feature-settings font-kerning font-language-override font-size font-size-adjust font-size-delta font-smoothing font-stretch font-style font-synthesis font-variant font-variant-alternates font-variant-caps font-variant-east-asian font-variant-ligatures font-variant-numeric font-variant-position font-weight force-broken-image-icon glyph-orientation-horizontal glyph-orientation-vertical grid-after grid-auto-columns JULGDXWR̨RZ grid-auto-rows grid-before grid-column grid-column-align grid-column-span grid-columns grid-end grid-row grid-row-align grid-row-span grid-rows grid-start height high-contrast-adjust highlight hyphenate-character hyphenate-limit-after hyphenate-limit-before hyphenate-limit-chars hyphenate-limit-lines hyphenate-limit-zone hyphens image-orientation image-region image-rendering ime-align ime-mode input-format input-required interpolation-mode justify-content kerning OD\RXW̨RZ layout-grid layout-grid-char layout-grid-line layout-grid-mode layout-grid-type left letter-spacing lighting-color line-align line-box-contain line-break line-clamp line-grid line-height line-increment line-snap link link-source list-style list-style-image list-style-position list-style-type locale logical-height logical-width margin margin-after margin-after-collapse margin-before margin-before-collapse margin-bottom margin-bottom-collapse margin-collapse margin-end margin-left margin-right margin-start margin-top margin-top-collapse marker marker-end marker-mid marker-offset marker-start marks marquee marquee-dir marquee-direction marquee-increment marquee-loop marquee-repetition marquee-speed marquee-style mask mask-attachment mask-box-image mask-box-image-outset mask-box-image-repeat mask-box-image-slice mask-box-image-source mask-box-image-width mask-clip mask-composite mask-image mask-origin mask-position mask-position-x mask-position-y mask-repeat mask-repeat-x mask-repeat-y mask-size mask-type match-nearest-mail- blockquote-color max-height max-logical-height max-logical-width max-width max-zoom min-height min-logical-height min-logical-width min-width min-zoom mix-blend-mode nav-down nav-index nav-left nav-right nav-up nbsp-mode REMHFW̧W object-position opacity order orient orientation orphans osx-font-smoothing outline outline-color outline-offset outline-radius outline-radius-bottomleft outline-radius-bottomright outline-radius-topleft outline-radius-topright outline-style outline-width RYHŲRZ RYHŲRZVFUROOLQJ RYHŲRZVW\OH RYHŲRZZUDS RYHŲRZ[ RYHŲRZ\ padding padding-after padding-before padding-bottom padding-end padding-left padding-right padding-start padding-top page page-break-after page-break-before page-break-inside paint-order perspective perspective-origin perspective-origin-x perspective-origin-y pointer-events position print-color-adjust quotes region-break-after region-break-before region-break-inside region-fragment resize right rtl-ordering ruby-align ruby-overhang ruby-position scroll-chaining scroll-limit scroll-limit-x-max scroll-limit-x-min scroll-limit-y-max scroll-limit-y-min scroll-rails scroll-snap-points-x scroll-snap-points-y scroll-snap-type scroll-snap-x scroll-snap-y scroll-translation scrollbar-arrow-color scrollbar-base-color scrollbar-dark-shadow-color scrollbar-darkshadow-color scrollbar-face-color scrollbar-highlight-color scrollbar-shadow-color scrollbar-track-color scrollbar3d-light-color scrollbar3dlight-color shape-image-threshold shape-margin shape-outside shape-rendering size solid-color solid-opacity speak src stack-sizing stop-color stop-opacity stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width VW\OH̨RDW svg-shadow tab-size table-baseline table-layout tap-highlight-color text-align text-align-last text-anchor text-autospace text-combine text-combine-horizontal text-decoration text-decoration-color text-decoration-line text-decoration-style text-decorations-in-effect text-emphasis text-emphasis-color text-emphasis-position text-emphasis-style WH[W̧OOFRORU text-indent text-justify text-justify-trim text-kashida text-kashida-space text-line-through text-line-through-color text-line-through-mode text-line-through-style text-line-through-width text-orientation WH[WRYHŲRZ text-overline text-overline-color text-overline-mode text-overline-style text-overline-width text-rendering text-security text-shadow text-size-adjust text-stroke text-stroke-color text-stroke-width text-transform text-underline text-underline-color text-underline-mode text-underline-position text-underline-style text-underline-width top touch-action touch-callout touch-select transform transform-origin transform-origin-x transform-origin-y transform-origin-z transform-style transition transition-delay transition-duration transition-property transition-timing-function unicode-bidi unicode-range user-drag user-focus user-input user-modify user-select user-zoom vector-effect vertical-align YLHZSRUW̧OO YLHZSRUW̧OORSDFLW\ visibility white-space widows width will-change window-shadow word-break word-spacing word-wrap ZUDS̨RZ wrap-margin wrap-through writing-mode z-index

Slide 128

Slide 128 text

accelerator accesskey align-content align-items align-self alignment-baseline all animation animation-delay animation-direction animation-duration DQLPDWLRQ̧OOPRGH animation-iteration-count animation-name animation-play-state animation-timing-function app-region appearance aspect-ratio audio-level backface-visibility background background-attachment background-blend-mode background-clip background-color background-composite background-image background-origin background-position background-position-x background-position-y background-repeat background-repeat-x background-repeat-y background-size baseline-shift behavior binding block-progression border border-after border-after-color border-after-style border-after-width border-before border-before-color border-before-style border-before-width border-bottom border-bottom-color border-bottom-colors border-bottom-left-radius border-bottom-right-radius border-bottom-style border-bottom-width border-collapse border-color border-end border-end-color border-end-style border-end-width ERUGHU̧W border-horizontal-spacing border-image border-image-outset border-image-repeat border-image-slice border-image-source border-image-width border-left border-left-color border-left-colors border-left-style border-left-width border-radius border-right border-right-color border-right-colors border-right-style border-right-width border-spacing border-start border-start-color border-start-style border-start-width border-style border-top border-top-color border-top-colors border-top-left-radius border-top-right-radius border-top-style border-top-width border-vertical-spacing border-width bottom box-align box-decoration-break box-direction ER[̨H[ ER[̨H[JURXS box-lines box-ordinal-group box-orient box-pack ER[UH̨HFW box-shadow box-sizing break-after break-before break-inside buffered-rendering caption-side clear clip clip-path clip-rule color color-correction color-interpolation FRORULQWHUSRODWLRQ̧OWHUV FRORUSUŖOH color-rendering column-axis column-break-after column-break-before column-break-inside column-count FROXPQ̧OO column-gap column-progression column-rule column-rule-color column-rule-style column-rule-width column-span column-width columns FRPSRVLWLRQ̧OOFRORU composition-frame-color content content-zoom-chaining content-zoom-limit content-zoom-limit-max content-zoom-limit-min content-zoom-snap content-zoom-snap-points content-zoom-snap-type content-zooming counter-increment counter-reset cursor cursor-visibility dashboard-region direction display display-align dominant-baseline empty-cells enable-background ̧OO ̧OORSDFLW\ ̧OOUXOH ̧OWHU ̨H[ ̨H[DOLJQ ̨H[EDVLV ̨H[GLUHFWLRQ ̨H[̨RZ ̨H[JURZ ̨H[LWHPDOLJQ ̨H[OLQHSDFN ̨H[QHJDWLYH ̨H[RUGHU ̨H[SDFN ̨H[SRVLWLYH ̨H[SUHIHUUHGVL]H ̨H[VKULQN ̨H[ZUDS ̨RDW ̨RDWHGJH ̨RRGFRORU ̨RRGRSDFLW\ ̨RZIURP ̨RZLQWR font font-family font-feature-settings font-kerning font-language-override font-size font-size-adjust font-size-delta font-smoothing font-stretch font-style font-synthesis font-variant font-variant-alternates font-variant-caps font-variant-east-asian font-variant-ligatures font-variant-numeric font-variant-position font-weight force-broken-image-icon glyph-orientation-horizontal glyph-orientation-vertical grid-after grid-auto-columns JULGDXWR̨RZ grid-auto-rows grid-before grid-column grid-column-align grid-column-span grid-columns grid-end grid-row grid-row-align grid-row-span grid-rows grid-start height high-contrast-adjust highlight hyphenate-character hyphenate-limit-after hyphenate-limit-before hyphenate-limit-chars hyphenate-limit-lines hyphenate-limit-zone hyphens image-orientation image-region image-rendering ime-align ime-mode input-format input-required interpolation-mode justify-content kerning OD\RXW̨RZ layout-grid layout-grid-char layout-grid-line layout-grid-mode layout-grid-type left letter-spacing lighting-color line-align line-box-contain line-break line-clamp line-grid line-height line-increment line-snap link link-source list-style list-style-image list-style-position list-style-type locale logical-height logical-width margin margin-after margin-after-collapse margin-before margin-before-collapse margin-bottom margin-bottom-collapse margin-collapse margin-end margin-left margin-right margin-start margin-top margin-top-collapse marker marker-end marker-mid marker-offset marker-start marks marquee marquee-dir marquee-direction marquee-increment marquee-loop marquee-repetition marquee-speed marquee-style mask mask-attachment mask-box-image mask-box-image-outset mask-box-image-repeat mask-box-image-slice mask-box-image-source mask-box-image-width mask-clip mask-composite mask-image mask-origin mask-position mask-position-x mask-position-y mask-repeat mask-repeat-x mask-repeat-y mask-size mask-type match-nearest-mail- blockquote-color max-height max-logical-height max-logical-width max-width max-zoom min-height min-logical-height min-logical-width min-width min-zoom mix-blend-mode nav-down nav-index nav-left nav-right nav-up nbsp-mode REMHFW̧W object-position opacity order orient orientation orphans osx-font-smoothing outline outline-color outline-offset outline-radius outline-radius-bottomleft outline-radius-bottomright outline-radius-topleft outline-radius-topright outline-style outline-width RYHŲRZ RYHŲRZVFUROOLQJ RYHŲRZVW\OH RYHŲRZZUDS RYHŲRZ[ RYHŲRZ\ padding padding-after padding-before padding-bottom padding-end padding-left padding-right padding-start padding-top page page-break-after page-break-before page-break-inside paint-order perspective perspective-origin perspective-origin-x perspective-origin-y pointer-events position print-color-adjust quotes region-break-after region-break-before region-break-inside region-fragment resize right rtl-ordering ruby-align ruby-overhang ruby-position scroll-chaining scroll-limit scroll-limit-x-max scroll-limit-x-min scroll-limit-y-max scroll-limit-y-min scroll-rails scroll-snap-points-x scroll-snap-points-y scroll-snap-type scroll-snap-x scroll-snap-y scroll-translation scrollbar-arrow-color scrollbar-base-color scrollbar-dark-shadow-color scrollbar-darkshadow-color scrollbar-face-color scrollbar-highlight-color scrollbar-shadow-color scrollbar-track-color scrollbar3d-light-color scrollbar3dlight-color shape-image-threshold shape-margin shape-outside shape-rendering size solid-color solid-opacity speak src stack-sizing stop-color stop-opacity stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width VW\OH̨RDW svg-shadow tab-size table-baseline table-layout tap-highlight-color text-align text-align-last text-anchor text-autospace text-combine text-combine-horizontal text-decoration text-decoration-color text-decoration-line text-decoration-style text-decorations-in-effect text-emphasis text-emphasis-color text-emphasis-position text-emphasis-style WH[W̧OOFRORU text-indent text-justify text-justify-trim text-kashida text-kashida-space text-line-through text-line-through-color text-line-through-mode text-line-through-style text-line-through-width text-orientation WH[WRYHŲRZ text-overline text-overline-color text-overline-mode text-overline-style text-overline-width text-rendering text-security text-shadow text-size-adjust text-stroke text-stroke-color text-stroke-width text-transform text-underline text-underline-color text-underline-mode text-underline-position text-underline-style text-underline-width top touch-action touch-callout touch-select transform transform-origin transform-origin-x transform-origin-y transform-origin-z transform-style transition transition-delay transition-duration transition-property transition-timing-function unicode-bidi unicode-range user-drag user-focus user-input user-modify user-select user-zoom vector-effect vertical-align YLHZSRUW̧OO YLHZSRUW̧OORSDFLW\ visibility white-space widows width will-change window-shadow word-break word-spacing word-wrap ZUDS̨RZ wrap-margin wrap-through writing-mode z-index

Slide 129

Slide 129 text

Web Design is 18.6% Typography “ ”

Slide 130

Slide 130 text

Web fonts, justification, hyphenation, balanced text, drop caps, OpenType features, colour fonts, text rendering, font loading, kerning, lettering, character alignment, fitting text, widows, orphans, math layout, etc.

Slide 131

Slide 131 text

THE STATE OF WEB TYPE www.stateofwebtype.com &

Slide 132

Slide 132 text

Thank you THE STATE OF WEB TYPE www.stateofwebtype.com Tablet Gothic by TypeTogether FF Quixo by Frank Grießhammer Input by David Jonathan Ross & Twitter: @bram_stein