├── .DS_Store ├── README.md ├── resume ├── .DS_Store └── index.html ├── ampersands ├── .DS_Store └── index.html ├── css-demos ├── .DS_Store ├── js │ ├── .DS_Store │ ├── dropcap.min.js │ └── prefixfree.min.js ├── widows │ ├── .DS_Store │ └── index.html ├── drop-cap │ ├── .DS_Store │ └── index.html ├── flexbox │ ├── .DS_Store │ ├── img │ │ ├── mastering-type.jpg │ │ ├── typographic-style.jpg │ │ └── thinking-with-type.jpg │ └── index.html ├── kerning │ ├── .DS_Store │ └── index.html ├── full-screen │ ├── .DS_Store │ └── index.html ├── ligatures │ ├── .DS_Store │ └── index.html ├── line-length │ ├── .DS_Store │ └── index.html ├── small-caps │ ├── .DS_Store │ └── index.html ├── multi-column │ ├── .DS_Store │ └── index.html ├── hanging-punctuation │ ├── .DS_Store │ └── index.html └── prism │ ├── prism.css │ └── prism.js ├── editorial ├── .DS_Store ├── img │ ├── .DS_Store │ ├── fig2-anti-alias.jpg │ ├── fig3-new-yorker.jpg │ ├── fig1-first-web-site.gif │ └── fig5-typeface.svg └── index.html ├── portfolio ├── .DS_Store ├── work │ ├── .DS_Store │ ├── img │ │ ├── vietjazz.svg │ │ ├── unitea.svg │ │ ├── prowebtype.svg │ │ └── miles-app.svg │ └── index.html ├── index.html ├── about │ └── index.html └── style.css ├── text-wrap ├── .DS_Store ├── miles.jpg ├── miles-posing.png ├── prefixfree.min.js └── index.html ├── animating-type ├── .DS_Store ├── slide-down.html ├── expand-open.html └── fade-in.html ├── choosing-headings ├── .DS_Store └── index.html ├── setting-paragraphs ├── .DS_Store └── index.html └── index.html /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # prowebtype 2 | 3 | Typographic demos for Professional Web Typography 4 | -------------------------------------------------------------------------------- /resume/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/resume/.DS_Store -------------------------------------------------------------------------------- /ampersands/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/ampersands/.DS_Store -------------------------------------------------------------------------------- /css-demos/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/.DS_Store -------------------------------------------------------------------------------- /editorial/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/editorial/.DS_Store -------------------------------------------------------------------------------- /portfolio/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/portfolio/.DS_Store -------------------------------------------------------------------------------- /text-wrap/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/text-wrap/.DS_Store -------------------------------------------------------------------------------- /text-wrap/miles.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/text-wrap/miles.jpg -------------------------------------------------------------------------------- /css-demos/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/js/.DS_Store -------------------------------------------------------------------------------- /editorial/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/editorial/img/.DS_Store -------------------------------------------------------------------------------- /animating-type/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/animating-type/.DS_Store -------------------------------------------------------------------------------- /css-demos/widows/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/widows/.DS_Store -------------------------------------------------------------------------------- /portfolio/work/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/portfolio/work/.DS_Store -------------------------------------------------------------------------------- /text-wrap/miles-posing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/text-wrap/miles-posing.png -------------------------------------------------------------------------------- /choosing-headings/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/choosing-headings/.DS_Store -------------------------------------------------------------------------------- /css-demos/drop-cap/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/drop-cap/.DS_Store -------------------------------------------------------------------------------- /css-demos/flexbox/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/flexbox/.DS_Store -------------------------------------------------------------------------------- /css-demos/kerning/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/kerning/.DS_Store -------------------------------------------------------------------------------- /setting-paragraphs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/setting-paragraphs/.DS_Store -------------------------------------------------------------------------------- /css-demos/full-screen/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/full-screen/.DS_Store -------------------------------------------------------------------------------- /css-demos/ligatures/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/ligatures/.DS_Store -------------------------------------------------------------------------------- /css-demos/line-length/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/line-length/.DS_Store -------------------------------------------------------------------------------- /css-demos/small-caps/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/small-caps/.DS_Store -------------------------------------------------------------------------------- /css-demos/multi-column/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/multi-column/.DS_Store -------------------------------------------------------------------------------- /editorial/img/fig2-anti-alias.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/editorial/img/fig2-anti-alias.jpg -------------------------------------------------------------------------------- /editorial/img/fig3-new-yorker.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/editorial/img/fig3-new-yorker.jpg -------------------------------------------------------------------------------- /editorial/img/fig1-first-web-site.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/editorial/img/fig1-first-web-site.gif -------------------------------------------------------------------------------- /css-demos/flexbox/img/mastering-type.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/flexbox/img/mastering-type.jpg -------------------------------------------------------------------------------- /css-demos/hanging-punctuation/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/hanging-punctuation/.DS_Store -------------------------------------------------------------------------------- /css-demos/flexbox/img/typographic-style.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/flexbox/img/typographic-style.jpg -------------------------------------------------------------------------------- /css-demos/flexbox/img/thinking-with-type.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/visualgui/prowebtype/HEAD/css-demos/flexbox/img/thinking-with-type.jpg -------------------------------------------------------------------------------- /css-demos/prism/prism.css: -------------------------------------------------------------------------------- 1 | code[class*="language-"],pre[class*="language-"]{color:black;text-shadow:0 1px white;font-family:Consolas,Monaco,'Andale Mono',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]::-moz-selection,pre[class*="language-"]::-moz-selection,code[class*="language-"]::-moz-selection,code[class*="language-"]::-moz-selection{text-shadow:none;background:#b3d4fc}pre[class*="language-"]::selection,pre[class*="language-"]::selection,code[class*="language-"]::selection,code[class*="language-"]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*="language-"],pre[class*="language-"]{text-shadow:none}}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre) >code[class*="language-"],pre[class*="language-"]{background:#f5f2f0}:not(pre) >code[class*="language-"]{padding:.1em;border-radius:.3em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray}.token.punctuation{color:#999}.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function{color:#DD4A68}.token.regex,.token.important,.token.variable{color:#e90}.token.important{font-weight:bold}.token.entity{cursor:help} 2 | -------------------------------------------------------------------------------- /animating-type/slide-down.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Slide-Down Animation 7 | 8 | 9 | 10 | 11 | 70 | 71 | 72 | 73 | 74 | 75 | 76 |

PROWEBTYPE

77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /animating-type/expand-open.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Expand Open 7 | 8 | 9 | 10 | 11 | 69 | 70 | 71 | 72 | 73 | 74 | 75 |

PROWEBTYPE

76 | 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /animating-type/fade-in.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Fade-In Text 7 | 8 | 9 | 10 | 11 | 61 | 62 | 63 | 64 | 65 | 66 | 67 |

PROWEBTYPE

68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /css-demos/widows/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Widows 7 | 8 | 9 | 10 | 11 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |

Widows

51 | 52 | 53 | 54 |

The stub-ends left when paragraphs end on the first line of a page are called widows. They have a past but not a future, and they look foreshortened and forlorn. It is the custom—in most, if not all, the world’s typographic cultures—to give them one additional line for company. This rule is applied in close conjunction with the next.

55 | 56 | 57 | 58 | 59 |

Syntax

60 |
p {widows: 3;}
61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /css-demos/ligatures/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Ligatures 7 | 8 | 9 | 10 | 11 | 43 | 44 | 45 | 46 | 47 | 48 |

Ligatures

49 | 50 | 51 | 52 |

ff fi fl ffi ffl fk fh ft

53 | 54 |

In most roman faces the letter f reaches into the space beyond it. In most italics, the f reaches into the space on both sides. Typographers call these overlap kerns. Only a few kerns, like those in the arm of the f and the tail of the j, are implicit in a normal typefont, while others, like the overlap in the combination To, are optional refinements, dependent of the letterforms.

55 |

Reaching into the space in front of it, the arm of the f will collide with certain letters—b, f, h, i, j, k, l—and with question marks or parentheses, if these are in its way.

56 | 57 | 58 | 59 | 60 | 61 |

Syntax

62 |
body {
63 | 	font-variant-ligatures: common-ligatures;
64 | 	}
65 | 	
66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /portfolio/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Donny Truong: Home 6 | 7 | 8 | 21 | 22 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 44 | 45 | 46 | 53 | 54 | 55 |
56 |

Hi, I am Donny, a web designer with a passion for typography.

57 |

Find out why I love the web.

58 |
59 | 60 | 61 |
62 | 70 | 71 | 72 | 75 | 76 |
77 | 78 | 79 | -------------------------------------------------------------------------------- /css-demos/kerning/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Kerning 7 | 8 | 9 | 10 | 11 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |

Kerning

55 | 56 |

Inconsistencies in letterfit are inescapable, given the forms of the Latin alphabet, and small irregularities are after all essential to the legibility of roman type. Kerning—altering the space between selected pairs of letters—can increase consistency of spacing in a word like Washington or Toronto, where the combinations of Wa and To are kerned. 57 | 58 |

59 | 60 | 61 |

Washington

62 |

No kern

63 | 64 |

Washington

65 |

Kerned

66 | 67 |

Toronto

68 |

No kern

69 | 70 |

Toronto

71 |

Kerned

72 | 73 | 74 | 75 | 76 |

Syntax

77 |
body {font-kerning: normal;}
78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /css-demos/full-screen/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Full Screen 7 | 8 | 9 | 10 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 |
76 |
77 |

Congratulations!

78 |
79 |
80 | 81 |
82 |
83 |

Today is your day.

84 |
85 |
86 | 87 |
88 |
89 |

You’re off to Great Places!

90 |
91 |
92 | 93 |
94 |
95 |

You’re off & away!

96 |
97 |
98 | 99 | 100 |
101 |
102 |

By Dr. Seuss

103 |
104 |
105 | 106 |
107 |
108 |

Syntax

109 |

section { height: 100vh; }

110 |
111 |
112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /css-demos/small-caps/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Small Caps 7 | 8 | 9 | 10 | 11 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 |

Small Caps

54 | 55 |

Genuine small caps are not simply shrunken versions of the full caps. They differ from large caps in stroke weight, letterfit and internal proportions as well as in height. Any good set of small caps is designed as such from the ground up. Thickening, shrinking and squashing the full caps with digital modification routines will only produce a parody.

56 | 57 | 58 | 59 | 60 | 61 |

Example

62 |

Thus: 3:00 am, 3:00 pm, the ninth century ce, 450 bc to ad 450, the oas and nato; World War ii or wwii; but JFK and Fr J.A.S. O’Brien, omi; hms Hypothesis and uss Ticonderoga; Washington, DC, and Mexico, DF; J.S.Bach’s Prelude and Fugue in B♭ minor, bwv 867. 63 | 64 |

65 | 66 | 67 |

Syntax

68 |
span { font-variant: common-ligatures, small-caps; 
69 | /*fallback*/ font-family: 'Alegreya Sans SC', sans-serif;}
70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /css-demos/js/dropcap.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2014 Adobe Systems Incorporated. Licensed under the Apache 2.0 License. 3 | http://www.apache.org/licenses/LICENSE-2.0.html 4 | */ 5 | 6 | !function(){"use strict";function a(a){var b=parseFloat(a.fontSize),c="normal"===a.lineHeight?q*b:parseFloat(a.lineHeight);return{leading:c-b,lineHeight:c,fontSize:b}}function b(a){var b=a.createElement("div");return b.style.position="fixed",b.style.padding=p,b.style.opacity="0",b.style.fontSize=o,b.style.lineHeight="1",a.body.appendChild(b),b}function c(a){var b=a.ownerDocument.createElement("span");return b.textContent=m,a&&a.appendChild(b),b}function d(a){a.ownerDocument.body.removeChild(a)}function e(a,b,c,d){function e(a,b){var c=4*b,d=a.data[c],e=a.data[c+1],f=a.data[c+2];return 0===d||0===e||0===f?!0:!1}var f=-1,g=document.createElement("canvas");g.width=c,g.height=d,a.appendChild(g);var h=g.getContext("2d");h.font=o+" "+b,h.fillStyle="#ffffff",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle="#000000",h.textBaseline="top",h.fillText("E",0,0);for(var i=h.getImageData(Math.ceil(g.width/2),0,1,g.height),j=null,k=g.height-1;k>=0;k--)if(e(i,k)){j=k;break}for(var k=0;kd){var x=parseFloat(n.marginTop);l.style.marginTop=g(x+-1*w)}var y=0;i(k)?y=v*(1-o.baselineRatio):h(k)&&(y=v-u),k.style.height=g(u+y);var z=k.dcapjsStrut;z||(z=e.createElement("span"),z.style.display="inline-block",k.appendChild(z),k.dcapjsStrut=z),z.style.height=g(u)}function l(a){function b(a){return a in c.style}var c=window.document.body?window.document.body:document.createElement("div");if(b(a))return a;for(var d=["-webkit-","-moz-","-ms-","-o"],e=0;eb||c&&1>c)throw new RangeError("Dropcap.layout expects the baseline position and height to be 1 or above");if(a instanceof HTMLElement)k(a,b,c);else{if(!(a instanceof NodeList))throw new TypeError("Dropcap.layout expects a single HTMLElement or a NodeList");var e=Array.prototype.forEach;e.call(a,function(a){k(a,b,c)})}}}}(); -------------------------------------------------------------------------------- /portfolio/work/img/vietjazz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 30 | 31 | 32 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /portfolio/work/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Donny Truong: Work 6 | 7 | 20 | 21 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 42 | 43 | 44 | 51 | 52 | 53 |
54 | 55 |

Work

56 | 57 | 58 | 59 |

Professional Web Typography

60 | Professional Web Typography 61 |
62 |

Wrote, designed, and published a web-based book as a graduate independent study (Practices in Graphic Design).

63 | 64 | 65 | 66 | 67 |

Vietjazz

68 | Vietjazz 69 |
70 |

Vietjazz is a recording company I created for a branding class. The concept was to connect Vietnamese ballad with jazz. I designed the logo, stationery and applications. I also developed a responsive web site for the brand guidelines.

71 | 72 | 73 | 74 |

Sketches of Miles

75 | Sketches of Miles 76 |
77 |

Created a tablet app prototype for my graduate course on Professional Design Practices.

78 | 79 | 80 | 81 | 82 |

Unitea

83 | Unitea 84 |
85 |

Unitea is a fictitious tea company I developed for the final project of my graduate design seminar. The goal was to build a brand with a unique story.

86 | 87 | 88 |
89 | 90 | 91 |
92 | 93 | 101 | 102 | 103 | 106 |
107 | 108 | 109 | -------------------------------------------------------------------------------- /portfolio/about/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Donny Truong: About 6 | 7 | 20 | 21 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 41 | 42 | 43 | 50 | 51 | 52 |
53 | 54 |

About

55 | 56 |

Donny Truong is a designer with a passion for typography and a developer with an appreciation for the command line. He enjoys crafting digital products that centered in user experience. He is web services developer for the George Mason University’s School of Law. He received his BA in Digital Arts & Multimedia Design at La Salle University and is pursuing his MA in graphic design at George Mason University’s School of Art.

57 | 58 | 59 |

Contact

60 |

Donny can be reached via email, Twitter or LinkedIn. His résumé is available online.

61 | 62 | 63 |

Colophon

64 |

This site is designed and hand-coded by Donny Truong. The typeface is Raleway. The fonts are served through Google Fonts. The site, which might render goofy in outdated browser, is built with modern HTML and CSS.

65 |
66 | 67 | 68 |
69 | 77 | 78 | 79 | 82 |
83 | 84 | 85 | -------------------------------------------------------------------------------- /css-demos/flexbox/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Flexbox 7 | 8 | 9 | 10 | 11 | 12 | 76 | 77 | 78 | 79 | 80 | 81 |
82 |

Typographic Books

83 | 84 |
85 | 86 |
87 | The Elements of Typographic Style 88 |

The Elements of Typographic Style

89 |
ROBERT BRINGHURST
90 |

The essential type book to be read at least once a year.

91 |
92 | 93 | 94 |
95 | Thinking with Type 96 |

Thinking With Type

97 |
ELLEN LUPTON
98 |

A rare gem—a book on typography that is as thoughtfully explained as it is designed.

99 |
100 | 101 |
102 | Mastering Type 103 |

Mastering Type

104 |
DENISE BOSLER
105 |

From leading to legibility, Bosler provides insightful guides and good-vs.-bad examples on typography.

106 |
107 | 108 |
109 | 110 | 111 | 112 |
113 | 114 | 115 | 116 |
.books {
117 | display: flex;
118 | flex-direction: row;
119 | flex-wrap: wrap;
120 | align-items: stretch;
121 | justify-content: space-between;
122 | }
123 | 			
124 | .book {
125 | padding-right: 1em;			
126 | flex:1;
127 | }
128 | 129 | 130 | 131 | 132 | 133 | 134 | -------------------------------------------------------------------------------- /css-demos/line-length/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Line Length 7 | 8 | 9 | 10 | 11 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |

Choose a comfortable measure

57 | 58 |

Anything from 45 to 75 characters is widely regarded as a satisfactory length of line for a single-column page set in a serifed text face in a text size. The 66-character line (counting both letters and spaces) is widely regarded as ideal. For multiple-column work, a better average is 40 to 50 characters.

59 | 60 |
Source: Robert Bringhurst’s The Elements of Typographic Style, (p.26)
61 | 62 | 63 |

Examples

64 | 65 |

Use CSS’s ch unit (the advance measure of the glyph ‘0’) to determine the comfortable reading measure

66 | 67 | 68 |

Line length of the 47-character zero

69 | 70 |

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

71 | 72 |
p {max-width: 47ch;}
73 | 74 | 75 |

Line length of the 67-character zero

76 | 77 |

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus.

78 | 79 | 80 | 81 | 82 |
p {max-width: 67ch;}
83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /css-demos/hanging-punctuation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hanging Punctuation 7 | 8 | 9 | 10 | 11 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |

Hanging Punctuation

57 | 58 | 59 |

Ellen Lupton’s Thinking with Type, (p.58):

60 | 61 |

“Hanging punctuation” prevents quotations and other marks from taking a bite out of the crisp left edge of a text block.

62 | 63 | 64 |

Syntax

65 |
blockquote p {
 66 | 	/*Currently not supported*/
 67 | 	hanging-punctuation: first; 
 68 | 	
 69 | 	/*fallback*/
 70 | 	text-indent: -0.5em;}
71 | 72 | 73 |

Avoid overpunctuating lists.

74 | 75 |

A list is an inherently spacial and numerical arrangement. Speakers reciting lists often enumerate on their fingers, and lists set in type often call for equivalent typography gestures. This means that the list should be clarified as much as possible through spatial positioning and pointing, usually done with bullets, dashes or numerals. If the numbers are made visible either through prominence (e.g., by setting them in a contrasting face), additional punctuation—extra periods, parentheses or the like—should rarely be required.

76 | 77 |
Source: Robert Bringhurst’s The Elements of Typographic Style, (p.71)
78 | 79 | 80 |

Recommended Reading

81 | 86 | 87 | 88 |

Jan Tschichold’s New Typographic Rules

89 |
    90 |
  1. Fewest possible typefaces
  2. 91 |
  3. Fewest possible type sizes
  4. 92 |
  5. No letterspacing of lowercase (which was then still used for emphasis in German-speaking countries)
  6. 93 |
  7. Emphasis by using italic or bold of the same face
  8. 94 |
  9. Use of capitals only as an exception, then carefully letterspaced
  10. 95 |
  11. Format text lines into not more than three groups
  12. 96 |
97 | 98 | 99 | 100 |

Syntax

101 |
ul, ol {margin: 0; padding: 0}
102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /portfolio/style.css: -------------------------------------------------------------------------------- 1 | /* Donny Truong Portfolio */ 2 | 3 | body { 4 | background-color:#fff; 5 | color:#222; 6 | font: 100%/1.6 'Raleway', 'Helvetica Neue', Helvetica , Arial, sans-serif; 7 | font-weight:300; 8 | margin:0 auto; 9 | padding: 0 1em; 10 | text-align: left; 11 | } 12 | 13 | 14 | /* Styling links*/ 15 | a { 16 | color: #ee2418; 17 | text-decoration:none; 18 | transition: all .5s ease; 19 | } 20 | a:visited { 21 | color: #ee2418; 22 | } 23 | 24 | a:hover { 25 | color: #000; 26 | } 27 | 28 | 29 | /* Making images responsive */ 30 | img { 31 | border: 1px solid #f1f1f1; 32 | height: auto; 33 | margin-top: 1em; 34 | width: 100%; 35 | } 36 | 37 | 38 | h1, h2, h3 { 39 | font-weight: 900; 40 | margin:0; 41 | padding:0; 42 | } 43 | 44 | h1 { 45 | font-size: 1.875em; /*30px*/ 46 | margin-top: .5em; 47 | text-transform: uppercase; 48 | } 49 | 50 | a h3, 51 | a:visited h3, 52 | h1 a, 53 | h1 a:visited { 54 | color: #444; 55 | } 56 | 57 | a:hover h3, 58 | h1 a:hover { 59 | color: #ee2418; 60 | } 61 | 62 | h2 { 63 | font-size: 2.5em; /*40px*/ 64 | line-height:1.1; 65 | } 66 | 67 | h3 { 68 | font-size: 1.25em; /* 20px*/ 69 | margin: 1.5em 0 0 0; 70 | line-height:1; 71 | } 72 | 73 | .work p { 74 | border-bottom: 2px solid #444; 75 | margin-bottom: 3em; 76 | padding-bottom: 4em; 77 | } 78 | 79 | .work p:last-child { 80 | border:none; 81 | margin: 0; 82 | padding: 0; 83 | } 84 | 85 | 86 | ul { 87 | margin: 0; 88 | } 89 | 90 | ul li li { 91 | margin: 0 0 0 1em;} 92 | 93 | 94 | .more-info ul, 95 | nav ul { 96 | list-style: none; 97 | padding: 0; 98 | margin: 0 ; 99 | } 100 | 101 | 102 | .main-nav { 103 | border-bottom: 3px solid #444; 104 | font-weight: 900; 105 | margin: 1em 0 2em 0; 106 | padding: 0 0 2em 0; 107 | } 108 | 109 | .main-nav li { 110 | display: inline; 111 | letter-spacing: .1em; 112 | padding: 0 2em 0 0; 113 | text-transform: uppercase; 114 | } 115 | 116 | .main-nav li a { 117 | color:#444; 118 | } 119 | 120 | .main-nav li a:hover, 121 | .main-nav li.active a { 122 | color:#ee2418; 123 | } 124 | 125 | .main-content { 126 | padding-bottom: 1em; 127 | } 128 | 129 | .footer-info, 130 | .more-info { 131 | border-top: 1px solid #000; 132 | font-size: 0.875em; /*14px*/ 133 | margin: 1em 0; 134 | padding: 1em 0 0 0; 135 | } 136 | 137 | 138 | 139 | 140 | /* ------------------------------------------------------------------------------------------------------------------------------------------- */ 141 | 142 | @media only screen and (min-width: 40em) /*640px*/ { 143 | 144 | body { 145 | max-width:58.75em; /*940px*/ 146 | } 147 | 148 | 149 | .banner { 150 | border-bottom: 3px solid #444; 151 | margin-bottom: 2em; 152 | padding-bottom: 1em; 153 | width: 100%; 154 | } 155 | 156 | h1 { 157 | font-size: 2.313em; /*37px*/ 158 | } 159 | 160 | 161 | h2 { 162 | font-size: 6.25em; /*100px*/ 163 | line-height: 1.15; 164 | margin-bottom:.2em; 165 | } 166 | 167 | h3 { 168 | font-size: 2.500em; /*40px*/ 169 | } 170 | 171 | .main-nav { 172 | border:none; 173 | float: left; 174 | margin: 1em 0 0 0; 175 | padding: 0; 176 | width: 15%; /* 140px/940px*/ 177 | } 178 | 179 | .main-nav li { 180 | display: block; 181 | margin: 0 0 .3em 0; 182 | padding: 0; 183 | } 184 | 185 | 186 | .main-content { 187 | float: right; 188 | margin:0; 189 | width: 83%; /*780px/940px*/ 190 | } 191 | 192 | 193 | .wrap { 194 | border-top: 3px solid #444; 195 | float: left; 196 | margin-top: 2em; 197 | width: 100%; 198 | } 199 | 200 | .more-info { 201 | border: none; 202 | float: right; 203 | } 204 | 205 | .more-info li { 206 | display: inline; 207 | padding: 0 0 0 2em; 208 | } 209 | 210 | .footer-info { 211 | border: none; 212 | float: left; 213 | } 214 | 215 | 216 | } /*close media query*/ 217 | 218 | 219 | 220 | 221 | /* ------------------------------------------------------------------------------------------------------------------------------------------- */ 222 | @media print { 223 | 224 | body { 225 | width: 100%; 226 | margin: 0; 227 | padding: 1em; 228 | font-size: 12pt; 229 | line-height: 1.5; } 230 | 231 | h1, h2, h3 { 232 | font-size: 14pt; 233 | } 234 | 235 | /* links */ 236 | a:link, 237 | a:visited { 238 | color: #333; 239 | text-decoration: none; 240 | } 241 | 242 | /* hide */ 243 | .main-nav, 244 | .more-info { 245 | display: none; 246 | } 247 | 248 | } /*close media query*/ 249 | 250 | 251 | 252 | 253 | 254 | -------------------------------------------------------------------------------- /css-demos/drop-cap/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Drop cap 7 | 8 | 9 | 10 | 11 | 60 | 61 | 62 | 63 | 64 | 65 |

Drop cap CSS

66 | 67 | 68 | 69 |

Another excellent method of making the start of the text, inherited from ancient scribal practice, is a large initial capital: a versal or lettrine. Versals can be treated in many ways. Indented or centered, they can stick up from the text. Flush left, they can be nested into text (typographers call these drop caps, as oppose to elevated or stick-up caps.) If there is room, they can hang in left margin. They can be set in the same face as the text or something outlandishly different. In scribal and typographic tradition alike, where the budget permits, versals too are generally red or another color in preference to black. 70 | 71 | 72 |

Source: Robert Bringhurst’s The Elements of Typographic Style, (p.63)
73 | 74 | 75 |

Syntax

76 | 77 | 78 |
p:first-of-type:first-letter {
 79 | 	font-size: 6.8em;
 80 | 	padding:.12em .1em 0 0;
 81 | 	margin: 0;
 82 | 	float: left;
 83 | 	line-height: .8;
 84 | 	font-family: 'Bevan', cursive;
 85 | 	font-weight:400;
 86 | 	color: red;
 87 | 	}	
 88 | 	
 89 | 	/* Clear Drop cap on blockquote*/
 90 | 	blockquote p:first-of-type:first-letter {
 91 | 	font-size: 1em; 
 92 | 	padding: 0; float: none; 
 93 | 	font-family:'Lato', sans-serif;  
 94 | 	font-weight:400;  
 95 | 	}
96 | 97 | 98 | 99 |

Dropcap.js

100 | 101 | 102 | 103 |

Another excellent method of making the start of the text, inherited from ancient scribal practice, is a large initial capital: a versal or lettrine. Versals can be treated in many ways. Indented or centered, they can stick up from the text. Flush left, they can be nested into text (typographers call these drop caps, as oppose to elevated or stick-up caps.) If there is room, they can hang in left margin. They can be set in the same face as the text or something outlandishly different. In scribal and typographic tradition alike, where the budget permits, versals too are generally red or another color in preference to black. 104 | 105 | 106 |

Source: Robert Bringhurst’s The Elements of Typographic Style, (p.63)
107 | 108 | 109 | 110 |

Syntax

111 | 112 | 113 |
<script src='../js/dropcap.min.js'></script>
114 | <script>
115 |     var dropcaps = document.querySelectorAll(".dropcap"); 
116 |     window.Dropcap.layout(dropcaps, 3); 
117 | </script>	
118 | 
119 | 120 | 121 | 122 | 123 | 124 | 125 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Donny Truong: Home 7 | 8 | 9 | 10 | 11 | 12 | 136 | 137 | 138 | 139 | 140 | 141 | 144 | 145 | 146 | 147 |
148 |

Professional Web Typography

149 |

Download typographic demos

150 |
151 | 152 | 153 |
154 | 162 | 163 | 164 | 167 |
168 | 169 | 170 | -------------------------------------------------------------------------------- /text-wrap/prefixfree.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * StyleFix 1.0.3 & PrefixFree 1.0.7 3 | * @author Lea Verou 4 | * MIT license 5 | */(function(){function t(e,t){return[].slice.call((t||document).querySelectorAll(e))}if(!window.addEventListener)return;var e=window.StyleFix={link:function(t){try{if(t.rel!=="stylesheet"||t.hasAttribute("data-noprefix"))return}catch(n){return}var r=t.href||t.getAttribute("data-href"),i=r.replace(/[^\/]+$/,""),s=t.parentNode,o=new XMLHttpRequest,u;o.onreadystatechange=function(){o.readyState===4&&u()};u=function(){var n=o.responseText;if(n&&t.parentNode&&(!o.status||o.status<400||o.status>600)){n=e.fix(n,!0,t);if(i){n=n.replace(/url\(\s*?((?:"|')?)(.+?)\1\s*?\)/gi,function(e,t,n){return/^([a-z]{3,10}:|\/|#)/i.test(n)?e:'url("'+i+n+'")'});var r=i.replace(/([\\\^\$*+[\]?{}.=!:(|)])/g,"\\$1");n=n.replace(RegExp("\\b(behavior:\\s*?url\\('?\"?)"+r,"gi"),"$1")}var u=document.createElement("style");u.textContent=n;u.media=t.media;u.disabled=t.disabled;u.setAttribute("data-href",t.getAttribute("href"));s.insertBefore(u,t);s.removeChild(t);u.media=t.media}};try{o.open("GET",r);o.send(null)}catch(n){if(typeof XDomainRequest!="undefined"){o=new XDomainRequest;o.onerror=o.onprogress=function(){};o.onload=u;o.open("GET",r);o.send(null)}}t.setAttribute("data-inprogress","")},styleElement:function(t){if(t.hasAttribute("data-noprefix"))return;var n=t.disabled;t.textContent=e.fix(t.textContent,!0,t);t.disabled=n},styleAttribute:function(t){var n=t.getAttribute("style");n=e.fix(n,!1,t);t.setAttribute("style",n)},process:function(){t('link[rel="stylesheet"]:not([data-inprogress])').forEach(StyleFix.link);t("style").forEach(StyleFix.styleElement);t("[style]").forEach(StyleFix.styleAttribute)},register:function(t,n){(e.fixers=e.fixers||[]).splice(n===undefined?e.fixers.length:n,0,t)},fix:function(t,n,r){for(var i=0;i-1&&(e=e.replace(/(\s|:|,)(repeating-)?linear-gradient\(\s*(-?\d*\.?\d*)deg/ig,function(e,t,n,r){return t+(n||"")+"linear-gradient("+(90-r)+"deg"}));e=t("functions","(\\s|:|,)","\\s*\\(","$1"+s+"$2(",e);e=t("keywords","(\\s|:)","(\\s|;|\\}|$)","$1"+s+"$2$3",e);e=t("properties","(^|\\{|\\s|;)","\\s*:","$1"+s+"$2:",e);if(n.properties.length){var o=RegExp("\\b("+n.properties.join("|")+")(?!:)","gi");e=t("valueProperties","\\b",":(.+?);",function(e){return e.replace(o,s+"$1")},e)}if(r){e=t("selectors","","\\b",n.prefixSelector,e);e=t("atrules","@","\\b","@"+s+"$1",e)}e=e.replace(RegExp("-"+s,"g"),"-");e=e.replace(/-\*-(?=[a-z]+)/gi,n.prefix);return e},property:function(e){return(n.properties.indexOf(e)?n.prefix:"")+e},value:function(e,r){e=t("functions","(^|\\s|,)","\\s*\\(","$1"+n.prefix+"$2(",e);e=t("keywords","(^|\\s)","(\\s|$)","$1"+n.prefix+"$2$3",e);return e},prefixSelector:function(e){return e.replace(/^:{1,2}/,function(e){return e+n.prefix})},prefixProperty:function(e,t){var r=n.prefix+e;return t?StyleFix.camelCase(r):r}};(function(){var e={},t=[],r={},i=getComputedStyle(document.documentElement,null),s=document.createElement("div").style,o=function(n){if(n.charAt(0)==="-"){t.push(n);var r=n.split("-"),i=r[1];e[i]=++e[i]||1;while(r.length>3){r.pop();var s=r.join("-");u(s)&&t.indexOf(s)===-1&&t.push(s)}}},u=function(e){return StyleFix.camelCase(e)in s};if(i.length>0)for(var a=0;a600)){n=e.fix(n,!0,t);if(i){n=n.replace(/url\(\s*?((?:"|')?)(.+?)\1\s*?\)/gi,function(e,t,n){return/^([a-z]{3,10}:|\/|#)/i.test(n)?e:'url("'+i+n+'")'});var r=i.replace(/([\\\^\$*+[\]?{}.=!:(|)])/g,"\\$1");n=n.replace(RegExp("\\b(behavior:\\s*?url\\('?\"?)"+r,"gi"),"$1")}var u=document.createElement("style");u.textContent=n;u.media=t.media;u.disabled=t.disabled;u.setAttribute("data-href",t.getAttribute("href"));s.insertBefore(u,t);s.removeChild(t);u.media=t.media}};try{o.open("GET",r);o.send(null)}catch(n){if(typeof XDomainRequest!="undefined"){o=new XDomainRequest;o.onerror=o.onprogress=function(){};o.onload=u;o.open("GET",r);o.send(null)}}t.setAttribute("data-inprogress","")},styleElement:function(t){if(t.hasAttribute("data-noprefix"))return;var n=t.disabled;t.textContent=e.fix(t.textContent,!0,t);t.disabled=n},styleAttribute:function(t){var n=t.getAttribute("style");n=e.fix(n,!1,t);t.setAttribute("style",n)},process:function(){t('link[rel="stylesheet"]:not([data-inprogress])').forEach(StyleFix.link);t("style").forEach(StyleFix.styleElement);t("[style]").forEach(StyleFix.styleAttribute)},register:function(t,n){(e.fixers=e.fixers||[]).splice(n===undefined?e.fixers.length:n,0,t)},fix:function(t,n,r){for(var i=0;i-1&&(e=e.replace(/(\s|:|,)(repeating-)?linear-gradient\(\s*(-?\d*\.?\d*)deg/ig,function(e,t,n,r){return t+(n||"")+"linear-gradient("+(90-r)+"deg"}));e=t("functions","(\\s|:|,)","\\s*\\(","$1"+s+"$2(",e);e=t("keywords","(\\s|:)","(\\s|;|\\}|$)","$1"+s+"$2$3",e);e=t("properties","(^|\\{|\\s|;)","\\s*:","$1"+s+"$2:",e);if(n.properties.length){var o=RegExp("\\b("+n.properties.join("|")+")(?!:)","gi");e=t("valueProperties","\\b",":(.+?);",function(e){return e.replace(o,s+"$1")},e)}if(r){e=t("selectors","","\\b",n.prefixSelector,e);e=t("atrules","@","\\b","@"+s+"$1",e)}e=e.replace(RegExp("-"+s,"g"),"-");e=e.replace(/-\*-(?=[a-z]+)/gi,n.prefix);return e},property:function(e){return(n.properties.indexOf(e)?n.prefix:"")+e},value:function(e,r){e=t("functions","(^|\\s|,)","\\s*\\(","$1"+n.prefix+"$2(",e);e=t("keywords","(^|\\s)","(\\s|$)","$1"+n.prefix+"$2$3",e);return e},prefixSelector:function(e){return e.replace(/^:{1,2}/,function(e){return e+n.prefix})},prefixProperty:function(e,t){var r=n.prefix+e;return t?StyleFix.camelCase(r):r}};(function(){var e={},t=[],r={},i=getComputedStyle(document.documentElement,null),s=document.createElement("div").style,o=function(n){if(n.charAt(0)==="-"){t.push(n);var r=n.split("-"),i=r[1];e[i]=++e[i]||1;while(r.length>3){r.pop();var s=r.join("-");u(s)&&t.indexOf(s)===-1&&t.push(s)}}},u=function(e){return StyleFix.camelCase(e)in s};if(i.length>0)for(var a=0;a 2 | 3 | 4 | 6 | 7 | 16 | 26 | 34 | 39 | 46 | 57 | 58 | 60 | 62 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /css-demos/prism/prism.js: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ 2 | self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof a)){c.lastIndex=0;var m=c.exec(d);if(m){u&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),N=[p,1];b&&N.push(b);var O=new a(l,g?t.tokenize(m,g):m,h);N.push(O),w&&N.push(w),Array.prototype.splice.apply(r,N)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var o="";for(var s in i.attributes)o+=s+'="'+(i.attributes[s]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+o+">"+i.content+""},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);; 3 | Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\&#?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))});; 4 | Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/gi,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,punctuation:/[\{\};:]/g,"function":/[-a-z0-9]+(?=\()/gi},Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/gi,inside:{tag:{pattern:/|<\/style>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});; 5 | Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//g,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*?(\r?\n|$)/g,lookbehind:!0}],string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/gi,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/gi,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};; 6 | Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/gi,inside:{tag:{pattern:/|<\/script>/gi,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});; 7 | -------------------------------------------------------------------------------- /css-demos/multi-column/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Multi-Columns 7 | 8 | 9 | 10 | 11 | 12 | 80 | 81 | 82 | 83 | 84 | 85 |
86 |

Designing With Miles

87 | 88 | 89 | 90 |

Miles Davis opened up my ears and introduced me to the world of jazz and fusion, but beyond that he changed the way I do my professional work. While Davis who reinvented jazz at least five times was constantly changing his musical direction, he was also refining and redefining his sound. His choices of notes were thoughtful and his phrasings were meaningful. The notes he left out were as essentials as the notes he played.

91 | 92 |

As I listened to Davis’s music, particularly his quintessential Kind of Blue, I began to change my design approach. Davis’s improvisations in “So What,” “Freddie Freeloader” and “All Blues” were complete opposite from John Coltrane’s and Cannonball Adderley’s. Whereas Coltrane and Adderley played swift, blazing solos, Davis played only the most telling notes. In a similar way, I began to see the important elements emerge in my design as I stripped away decorative ones. I came to realize that design is not only what I put in, but also what I left out.

93 | 94 |

While the process sounds easy, it took me tremendous amount of time and decision to accomplish. In many occasions, I keep turning on and off layers in Photoshop, Illustrator or even Cascading Style Sheet (CSS) to figure out whether I should leave in or take out a certain elements without over-simplifying the design. Coltrane had similar problem in his early career. He was having a hard time finding the right place to end his solo; therefore, he sought Davis for advice. Davis suggested, “Take the horn out of your mouth.”

95 | 96 | 97 | 98 |

In addition to being one of the world greatest trumpet players, Davis was also a master of communication. The recording of “Autumn Leaves” (with Adderley as the leader) is a brilliant example of Davis’s power of precision and command. After a brief intro from the quintet, which includes Hank Jones on piano, Art Blakey on drums and Sam Jones on bass, Davis cut straight to the melodic core. Each note he played on his muted trumpet struck the emotional cord: brooding, melancholy and hauntingly clear. In my own work, I explore emotional design through the practice of selection and the art of reduction. Whether working with colors, types or images, I would choose the ones that give the most emotional value to my design. I have also learned to cut out the non-essential parts and applied more detail to essence.

99 | 100 |

Using space, another design-related element, was one of the techniques Davis had acquired in his early career. With the rise of bebop in the 1950s, every jazz musician at the time wanted to play like Charlie Parker and Dizzy Gillespie. They filled in as many notes as they could into their improvisation. In contrast, Davis left plenty of space in his phrasing. As a result, he let his melodic lines breathe and gave listeners a chance to absorb his music.

101 | 102 |

When I first started doing creative work, I crammed as much elements as I could into my design. My first web page was filled with at least four different typefaces, animated GIFs (Graphical Interchangeable Format) and unrelated colors. Later on, I learned the concept of using space to make the key message stronger through one of Davis’s fusion albums titled Bitches Brew. In exploring the jazz-rock territory, Davis gave his rhythm section, which was made up of four drummers, three electric keyboardists and two bassists, the freedom to work out its chaotic, organic groove. He only came in to play when he had something to say. Every time he blew his horn, however, he created the order out of the disorder. Likewise, my responsibility as a designer is to take the client contents and organize them into a logical sense. While Davis had demonstrated that space in music creates harmony and balance, white space in web design can also create harmonious layouts and free the eye from clutter. The correct use of white space not only brings out the content, but also enhances readability.

103 | 104 | 105 |

In his late career, Davis experimented with funk, rock, electric, pre-recorded orchestration and even hip-hop backbeat. The way he played opened my ears once again on the art of adaptation. Because he was such a versatile and flexible trumpeter, Davis was able to response and adapt to any musical backdrop. For instance, he was skillfully maneuvered his way around the pre-recorded arrangements in Tutu. In the hand of another musician, Tutu might sound like lightweight background music, but Davis made it into, as critic Kevin Le Gendre puts it: “a work of engrossingly fraught atmospheres.”

106 | 107 |

With the rise of smartphones, tablets and various digital devices, a designer must embrace the fluidity of the web. I learned to let go of the fixed design and abandon making mockups in Photoshop. I took on the challenge of designing web site where it actually lives. Designing in the browser feels much more natural once I get past the technicality. Davis once said, “The way you change and help music is by tryin’ to invent new ways to play.” I keep his words in mind whenever I need to learn and adapt to new technologies in the fast-changing paste of web design and development.

108 | 109 | 110 | 111 |

Written for Advanced Web Design class at George Mason University School of Art.

112 |
113 | 114 | 115 |
article {
116 | column-width: 20em;
117 | column-gap: 2em;
118 | }
119 | 			
120 | article h1 {
121 | column-span: all;
122 | }
123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /resume/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Donny Truong’s Résumé 7 | 8 | 9 | 10 | 11 | 12 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 |
85 |

Donny Truong

86 |
87 | 91 |
92 |
93 | 94 | 95 |
96 |
97 |

Experience

98 | 99 |
100 |

Director of Design & Web Services

101 |

George Mason University Antonin Scalia Law School

102 | 103 |
Arlington, VA
104 |
    105 |
  • Worked with deans on the branding and messaging for the law school.
  • 106 |
  • Collaborated with admissions associate dean on print marketing designs and digital strategies for recruitments.
  • 107 |
  • Worked with associate dean of alumni relations and third-party vendors to design an online community for alumni members.
  • 108 |
  • Led front-end design and back-end development to create comprehensive, usable, and accessible web experiences.
  • 109 |
  • Advised and consulted with members of the law school community on their design and technology needs.
  • 110 |
  • Supervised a back-end web developer.
  • 111 |
112 |
113 | 114 | 115 | 116 | 117 |
118 |

Senior Web Developer

119 |

George Washington University School of Business

120 | 121 |
Washington, DC
122 |
    123 |
  • Led user experience design, front-end development, and content strategy for the business school.
  • 124 |
  • Researched, designed, and published the online version of the school’s magazine.
  • 125 |
  • Customized and managed WordPress as an easy-to-publish news system.
  • 126 |
  • Integrated new media marketing efforts into the school’s overall strategy.
  • 127 |
128 |
129 | 130 | 131 |
132 |

Senior Web Designer

133 |

Vassar College

134 | 135 |
Poughkeepsie, NY
136 |
    137 |
  • Designed and developed web experiences to meet the specific needs of the academic departments and their users.
  • 138 |
  • Contributed in enhancing the online experience of Vassar’s established brand.
  • 139 |
  • Collaborated with a team of talented designers and developers to maintain and improve more than 200 websites.
  • 140 |
141 |
142 |
143 | 144 | 145 | 195 |
196 | 197 | 198 | 199 | -------------------------------------------------------------------------------- /text-wrap/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Text Wrap 7 | 8 | 9 | 10 | 11 | 93 | 94 | 95 | 96 | 97 | 98 |
99 | 100 | 101 | 102 |

Designing With Miles

103 | 104 |
105 | 106 | 107 | 108 | 109 | 110 |

Miles Davis opened up my ears and introduced me to the world of jazz and fusion, but beyond that he changed the way I do my professional work. While Davis who reinvented jazz at least five times was constantly changing his musical direction, he was also refining and redefining his sound. His choices of notes were thoughtful and his phrasings were meaningful. The notes he left out were as essentials as the notes he played.

111 | 112 |

As I listened to Davis’s music, particularly his quintessential Kind of Blue, I began to change my design approach. Davis’s improvisations in “So What,” “Freddie Freeloader” and “All Blues” were complete opposite from John Coltrane’s and Cannonball Adderley’s. Whereas Coltrane and Adderley played swift, blazing solos, Davis played only the most telling notes. In a similar way, I began to see the important elements emerge in my design as I stripped away decorative ones. I came to realize that design is not only what I put in, but also what I left out.

113 | 114 |

While the process sounds easy, it took me tremendous amount of time and decision to accomplish. In many occasions, I keep turning on and off layers in Photoshop, Illustrator or even Cascading Style Sheet (CSS) to figure out whether I should leave in or take out a certain elements without over-simplifying the design. Coltrane had similar problem in his early career. He was having a hard time finding the right place to end his solo; therefore, he sought Davis for advice. Davis suggested, “Take the horn out of your mouth.”

115 | 116 | 117 |

In addition to being one of the world greatest trumpet players, Davis was also a master of communication. The recording of “Autumn Leaves” (with Adderley as the leader) is a brilliant example of Davis’s power of precision and command. After a brief intro from the quintet, which includes Hank Jones on piano, Art Blakey on drums and Sam Jones on bass, Davis cut straight to the melodic core. Each note he played on his muted trumpet struck the emotional cord: brooding, melancholy and hauntingly clear. In my own work, I explore emotional design through the practice of selection and the art of reduction. Whether working with colors, types or images, I would choose the ones that give the most emotional value to my design. I have also learned to cut out the non-essential parts and applied more detail to essence.

118 | 119 | 120 | 121 |

Using space, another design-related element, was one of the techniques Davis had acquired in his early career. With the rise of bebop in the 1950s, every jazz musician at the time wanted to play like Charlie Parker and Dizzy Gillespie. They filled in as many notes as they could into their improvisation. In contrast, Davis left plenty of space in his phrasing. As a result, he let his melodic lines breathe and gave listeners a chance to absorb his music.

122 | 123 | Miles Davis 124 | 125 | 126 |

When I first started doing creative work, I crammed as much elements as I could into my design. My first web page was filled with at least four different typefaces, animated GIFs (Graphical Interchangeable Format) and unrelated colors. Later on, I learned the concept of using space to make the key message stronger through one of Davis’s fusion albums titled Bitches Brew. In exploring the jazz-rock territory, Davis gave his rhythm section, which was made up of four drummers, three electric keyboardists and two bassists, the freedom to work out its chaotic, organic groove. He only came in to play when he had something to say. Every time he blew his horn, however, he created the order out of the disorder. Likewise, my responsibility as a designer is to take the client contents and organize them into a logical sense. While Davis had demonstrated that space in music creates harmony and balance, white space in web design can also create harmonious layouts and free the eye from clutter. The correct use of white space not only brings out the content, but also enhances readability.

127 | 128 | 129 | 130 | 131 | 132 |

In his late career, Davis experimented with funk, rock, electric, pre-recorded orchestration and even hip-hop backbeat. The way he played opened my ears once again on the art of adaptation. Because he was such a versatile and flexible trumpeter, Davis was able to response and adapt to any musical backdrop. For instance, he was skillfully maneuvered his way around the pre-recorded arrangements in Tutu. In the hand of another musician, Tutu might sound like lightweight background music, but Davis made it into, as critic Kevin Le Gendre puts it: “a work of engrossingly fraught atmospheres.”

133 | 134 |

With the rise of smartphones, tablets and various digital devices, a designer must embrace the fluidity of the web. I learned to let go of the fixed design and abandon making mockups in Photoshop. I took on the challenge of designing web site where it actually lives. Designing in the browser feels much more natural once I get past the technicality. Davis once said, “The way you change and help music is by tryin’ to invent new ways to play.” I keep his words in mind whenever I need to learn and adapt to new technologies in the fast-changing paste of web design and development.

135 | 136 |
137 | 138 |
Written for Advanced Web Design class at George Mason University School of Art.
139 | 140 | 141 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /ampersands/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ampersand 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 100 | 101 | 102 | 103 | 104 | 105 |

Selected Ampersands From Google Fonts

106 | 107 | 108 |
109 | & 110 | & 111 | & 112 | & 113 | & 114 | & 115 | & 116 | & 117 | & 118 | & 119 | & 120 | & 121 | & 122 | & 123 | & 124 | & 125 | & 126 | & 127 | & 128 | & 129 | & 130 | & 131 | & 132 | & 133 | & 134 | & 135 | & 136 | & 137 | & 138 | & 139 | & 140 | & 141 |
142 | 143 |

The ampersand is a mark that represents and or et in Latin. Because the ampersand is often used as a decorative element, the more flourished its design the better. Choosing a custom ampersand is a fun typographic activity. Finding an italic font with a gorgeous ampersand is like discovering a rare gem.

144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /setting-paragraphs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Setting Paragraphs 6 | 7 | 8 | 9 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |

In his presentation titled “Universal Typography,” Adobe Typekit manager Tim Brown stated: “The web is the best place for text. Unlike a printed artifact, text at a URL can be searched, copied, translated, linked to other documents. It can be printed. It’s convenient. It’s accessible.” (Brown 2014) Since the invention of the Internet, text has always played a major role on the web. In its two and a half decades of existence—the web celebrated its twenty-fifth anniversary in March of this year—the web has revolutionized our daily communication, interaction and business transaction, but the true transformation of typography to the web only took off in the last few years. For the first twenty years, the web had gone through many changes such as adopting web standards, using CSS for layouts instead of tables, and focusing on content strategy and user-centered design. Even though the web embraced text from the beginning, they were not well integrated together for quite some time.

40 | 41 | 42 |

On December 12, 1990, web inventor Tim Berners-Lee published the first web site ever on the Internet after he figured out the basic concept of the web including Uniform Resource Locator (URL), Hypertext Transfer Protocol (HTTP), and Hypertext Markup Language (HTML). He also created the browser and wrote the software to run the web server. The project Berners-Lee launched was about the World Wide Web, in which he defined, “a wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents.” (Berners-Lee 1990) The site has nothing but texts and links to other documents. As a result, the site still works today as it did when the project was first published twenty-five years ago, which is impressive, despite the changes and advancement in web technologies.

43 | 44 | 45 |

In the mid-1990s, type designer Matthew Carter gave birth to Georgia and Verdana, two widely used typefaces for screen-based media. Commissioned by Microsoft specifically for texts on web pages, both of these typefaces were designed first in bitmaps (to match the pixels of the screen resolutions at the time) and then translated into outline fonts. To make texts legible and readable on screen, Carter had meticulously designed these fonts with large x-height, open aperture and generous space. In addition to Georgia and Verdana, the web could only display system fonts such as Arial, Helvetica and Times New Roman, which are available on all computers.

46 | 47 | 48 |

As graphic design was making the transition to the web from mid-1990s to mid-2000s, designers wanted to use more typefaces than just the handful that come with the system fonts. The simplest alternative was to use image as text. One of the advantages of using this method is that designers didn’t have deal with font licensing. Designers could use any typefaces available on their computer, but the downside was that each piece of text had to be sliced up individually in tools like Photoshop or Fireworks. One popular site that used images as texts was the New Yorker. To be consistent with its printed publication, each headline on the New Yorker web site served up images as texts in order to use NY Vogue Goat as its branded typeface. Until November 2010 when the publication started using Typekit to serve its custom fonts, someone’s job at the New Yorker was simply to slice up those images all day long.

49 | 50 | 51 | 52 | 53 | 54 |

A major issue of using image as type was that text was not searchable, selectable, or translatable. To get around that problem, web practitioners came up with various image replacement techniques to fill the void. In April 2004, web designer and developer Shaun Inman developed a technique called Scalable Inman Flash Replacement (sIFR) to embed custom fonts in a small Flash movie. He also used JavaScript and CSS to make the text selectable.

55 | 56 |

While sIFR solved the issue of image slicing, its main drawback was relying on Flash, an Adobe’s proprietary software program for delivering rich contents on the web. Furthermore, setting up sIFR required some web knowledge. In April 2009, system engineer Simo Kinnunen created a new and improved technique called Cufón (Scalable Vector Graphics, SVG). Cufón used JavaScript to render generated fonts (SVG format) to the browser. This technique was easier to set up and did not rely on Flash. Although many image replacement techniques have continued to be developed and advanced over the years—CSS image replacement is still in use today for logo on web sites—they are not genuine web typography.

57 | 58 | 59 | 60 |

Web typography is not a new concept. In 1998, the Cascading Style Sheet (CSS) Working Group proposed the support of the @font-face rule to allow any typeface to be displayed on web pages. Internet Explorer 4 was the first browser to implement it, but with no success. The proposal had no piracy protection or licensing agreement in place. As a result, @font-face was stalled for almost a decade.

61 | 62 |

In 2008, @font-face made a comeback when Apple Safari and Mozilla Firefox implemented the rule. In May 2009, Jeffrey Veen introduced Typekit, a type hosting service that let designers use high-quality fonts on web sites with the ease of implementation and the worry-free of licensing and cross-browser compatibility. In just two years, Adobe acquired Typekit bringing more classic types such as Garamond Pro, Minion Pro, and Myriad Pro to the web.

63 | 64 | 65 |

In 2010, Google launched its own library of fonts for the world to use for free. As a result, Google only hosts open-source fonts. With its ease of use API (application programming interface), Google has succeeded in making the web more accessible, readable, beautiful and open.

66 | 67 |

The @font-face rule is now supported on all modern browsers (Internet Explorer, Firefox, Chrome, Safari, and Opera) and mobile browsers (iOS Safari, Android, and Chrome, except for Opera Mini). In addition to Typekit and Google Fonts, many foundries, including Font Bureau, Fontdeck, FontShop, Hoefler & Co., and Webtype, began to offer web-font services. In just a few years, web fonts have swept the world of design. With the rise of responsive web design, typography is going through a new transformation like never before. Unlike a printed publication, the flexibility of the web gives designers no control of their work. Whether through smartphones, tablets, laptops or game consoles, they have no idea how their work will be viewed on a user’s device. In order to accommodate the growing number of devices coming to the market continuously, they have to embrace the fluidity of the web and let go of the notion of pixel perfect control. Designing for the unknown could be intimidating, but that also makes web design challenging and exciting. Brown is right in his statement. The web is the best place for accessing text.

68 | 69 | 70 | 71 |

When we read, our eyes move along the lines in a series of brief moments called saccades. As our eyes jump back and forth, we absorb information in between those hops known as fixed periods. The better the reader, the larger the saccades, and the shorter the fixed periods. We read faster if the subject is familiar to us. As we read, we recognize the shapes of the words rather than individual letters; therefore, the strokes and the spaces play a key role in legibility and readability. Particularly with screen resolution, strokes and spaces might disappear at small sizes on devices with low pixel density.

72 | 73 | 74 |

When choosing text typefaces to be read on screens, designers need to consider the following elements: a generous x-height, even spacing, open counters and apertures, prominent ascenders and descenders, and clear stroke joints. Also keep Erik Spiekermann’s advice in mind: “Don’t sacrifice esthetics for practicality. Pick a typeface that has character and strength. Basically, the models which survived 500 years will look good on screens today.” (Spiekermann 2013, 179)

75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /choosing-headings/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Choosing Headings 6 | 7 | 8 | 9 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |

Web Typography

59 | 60 |

In his presentation titled “Universal Typography,” Adobe Typekit manager Tim Brown stated: “The web is the best place for text. Unlike a printed artifact, text at a URL can be searched, copied, translated, linked to other documents. It can be printed. It’s convenient. It’s accessible.” (Brown 2014) Since the invention of the Internet, text has always played a major role on the web. In its two and a half decades of existence—the web celebrated its twenty-fifth anniversary in March of this year—the web has revolutionized our daily communication, interaction and business transaction, but the true transformation of typography to the web only took off in the last few years. For the first twenty years, the web had gone through many changes such as adopting web standards, using CSS for layouts instead of tables, and focusing on content strategy and user-centered design. Even though the web embraced text from the beginning, they were not well integrated together for quite some time.

61 | 62 | 63 |

The First Web Site

64 |

On December 12, 1990, web inventor Tim Berners-Lee published the first web site ever on the Internet after he figured out the basic concept of the web including Uniform Resource Locator (URL), Hypertext Transfer Protocol (HTTP), and Hypertext Markup Language (HTML). He also created the browser and wrote the software to run the web server. The project Berners-Lee launched was about the World Wide Web, in which he defined, “a wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents.” (Berners-Lee 1990) The site has nothing but texts and links to other documents. As a result, the site still works today as it did when the project was first published twenty-five years ago, which is impressive, despite the changes and advancement in web technologies.

65 | 66 | 67 |

Types for Screen

68 |

In the mid-1990s, type designer Matthew Carter gave birth to Georgia and Verdana, two widely used typefaces for screen-based media. Commissioned by Microsoft specifically for texts on web pages, both of these typefaces were designed first in bitmaps (to match the pixels of the screen resolutions at the time) and then translated into outline fonts. To make texts legible and readable on screen, Carter had meticulously designed these fonts with large x-height, open aperture and generous space. In addition to Georgia and Verdana, the web could only display system fonts such as Arial, Helvetica and Times New Roman, which are available on all computers.

69 | 70 | 71 |

Image Replacement Techniques

72 | 73 |

As graphic design was making the transition to the web from mid-1990s to mid-2000s, designers wanted to use more typefaces than just the handful that come with the system fonts. The simplest alternative was to use image as text. One of the advantages of using this method is that designers didn’t have deal with font licensing. Designers could use any typefaces available on their computer, but the downside was that each piece of text had to be sliced up individually in tools like Photoshop or Fireworks. One popular site that used images as texts was the New Yorker. To be consistent with its printed publication, each headline on the New Yorker web site served up images as texts in order to use NY Vogue Goat as its branded typeface. Until November 2010 when the publication started using Typekit to serve its custom fonts, someone’s job at the New Yorker was simply to slice up those images all day long.

74 | 75 | 76 |

A major issue of using image as type was that text was not searchable, selectable, or translatable. To get around that problem, web practitioners came up with various image replacement techniques to fill the void. In April 2004, web designer and developer Shaun Inman developed a technique called Scalable Inman Flash Replacement (sIFR) to embed custom fonts in a small Flash movie. He also used JavaScript and CSS to make the text selectable.

77 | 78 |

While sIFR solved the issue of image slicing, its main drawback was relying on Flash, an Adobe’s proprietary software program for delivering rich contents on the web. Furthermore, setting up sIFR required some web knowledge. In April 2009, system engineer Simo Kinnunen created a new and improved technique called Cufón (Scalable Vector Graphics, SVG). Cufón used JavaScript to render generated fonts (SVG format) to the browser. This technique was easier to set up and did not rely on Flash. Although many image replacement techniques have continued to be developed and advanced over the years—CSS image replacement is still in use today for logo on web sites—they are not genuine web typography.

79 | 80 | 81 |
The @font-face Rule
82 |

Web typography is not a new concept. In 1998, the Cascading Style Sheet (CSS) Working Group proposed the support of the @font-face rule to allow any typeface to be displayed on web pages. Internet Explorer 4 was the first browser to implement it, but with no success. The proposal had no piracy protection or licensing agreement in place. As a result, @font-face was stalled for almost a decade.

83 | 84 |

In 2008, @font-face made a comeback when Apple Safari and Mozilla Firefox implemented the rule. In May 2009, Jeffrey Veen introduced Typekit, a type hosting service that let designers use high-quality fonts on web sites with the ease of implementation and the worry-free of licensing and cross-browser compatibility. In just two years, Adobe acquired Typekit bringing more classic types such as Garamond Pro, Minion Pro, and Myriad Pro to the web.

85 | 86 | 87 |

In 2010, Google launched its own library of fonts for the world to use for free. As a result, Google only hosts open-source fonts. With its ease of use API (application programming interface), Google has succeeded in making the web more accessible, readable, beautiful and open.

88 | 89 |

The @font-face rule is now supported on all modern browsers (Internet Explorer, Firefox, Chrome, Safari, and Opera) and mobile browsers (iOS Safari, Android, and Chrome, except for Opera Mini). In addition to Typekit and Google Fonts, many foundries, including Font Bureau, Fontdeck, FontShop, Hoefler & Co., and Webtype, began to offer web-font services. In just a few years, web fonts have swept the world of design. With the rise of responsive web design, typography is going through a new transformation like never before. Unlike a printed publication, the flexibility of the web gives designers no control of their work. Whether through smartphones, tablets, laptops or game consoles, they have no idea how their work will be viewed on a user’s device. In order to accommodate the growing number of devices coming to the market continuously, they have to embrace the fluidity of the web and let go of the notion of pixel perfect control. Designing for the unknown could be intimidating, but that also makes web design challenging and exciting. Brown is right in his statement. The web is the best place for accessing text.

90 | 91 | 92 |
How We Read
93 |

When we read, our eyes move along the lines in a series of brief moments called saccades. As our eyes jump back and forth, we absorb information in between those hops known as fixed periods. The better the reader, the larger the saccades, and the shorter the fixed periods. We read faster if the subject is familiar to us. As we read, we recognize the shapes of the words rather than individual letters; therefore, the strokes and the spaces play a key role in legibility and readability. Particularly with screen resolution, strokes and spaces might disappear at small sizes on devices with low pixel density.

94 | 95 | 96 |

When choosing text typefaces to be read on screens, designers need to consider the following elements: a generous x-height, even spacing, open counters and apertures, prominent ascenders and descenders, and clear stroke joints. Also keep Erik Spiekermann’s advice in mind: “Don’t sacrifice esthetics for practicality. Pick a typeface that has character and strength. Basically, the models which survived 500 years will look good on screens today.” (Spiekermann 2013, 179)

97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /editorial/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Web Typography: A Brief History 7 | 8 | 9 | 10 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
100 |
101 |

Web

102 |

Typography

103 |

A Brief History

104 | 105 | 106 |
107 | 108 |
By Donny Truong on November 20, 2014
109 | 110 |
111 | 112 | 113 | 114 |

In his presentation titled “Universal Typography,” Adobe Typekit manager Tim Brown stated: “The web is the best place for text. Unlike a printed artifact, text at a URL can be searched, copied, translated, linked to other documents. It can be printed. It’s convenient. It’s accessible.” (Brown 2014) Since the invention of the Internet, text has always played a major role on the web. In its two and a half decades of existence—the web celebrated its twenty-fifth anniversary in March of this year—the web has revolutionized our daily communication, interaction and business transaction, but the true transformation of typography to the web only took off in the last few years. For the first twenty years, the web had gone through many changes such as adopting web standards, using CSS for layouts instead of tables, and focusing on content strategy and user-centered design. Even though the web embraced text from the beginning, they were not well integrated together for quite some time.

115 | 116 | 117 |
118 | 119 | 120 | 121 |

The First Web Site

122 | 123 | 129 |

On December 12, 1990, web inventor Tim Berners-Lee published the first web site ever on the Internet after he figured out the basic concept of the web including Uniform Resource Locator (URL), Hypertext Transfer Protocol (HTTP), and Hypertext Markup Language (HTML). He also created the browser and wrote the software to run the web server. The project Berners-Lee launched was about the World Wide Web, in which he defined, “a wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents.” (Berners-Lee 1990) The site has nothing but texts and links to other documents. As a result, the site still works today as it did when the project was first published twenty-five years ago, which is impressive, despite the changes and advancement in web technologies.

130 | 131 |

Type on Screen

132 | 133 |
134 | Anti Alias 135 |
FIG 2: The lowercase g in pixels with 136 | vector outlines. Design: Young Sun 137 | Compton, 2013.
138 |
139 | 140 |

In the mid-1990s, type designer Matthew Carter gave birth to Georgia and Verdana, two widely used typefaces for screen-based media. Commissioned by Microsoft specifically for texts on web pages, both of these typefaces were designed first in bitmaps (to match the pixels of the screen resolutions at the time) and then translated into outline fonts. To make texts legible and readable on screen, Carter had meticulously designed these fonts with large x-height, open aperture and generous space. In addition to Georgia and Verdana, the web could only display system fonts such as Arial, Helvetica and Times New Roman, which are available on all computers.

141 | 142 |

Image as Text

143 | 144 | 145 |
146 | The New Yorker 147 |
FIG 3: New Yorker’s old page using images as texts.
148 |
149 | 150 | 151 | 152 |

As graphic design was making the transition to the web from mid-1990s to mid-2000s, designers wanted to use more typefaces than just the handful that come with the system fonts. The simplest alternative was to use image as text. One of the advantages of using this method is that designers didn’t have deal with font licensing. Designers could use any typefaces available on their computer, but the downside was that each piece of text had to be sliced up individually in tools like Photoshop or Fireworks. One popular site that used images as texts was the New Yorker. To be consistent with its printed publication, each headline on the New Yorker web site served up images as texts in order to use NY Vogue Goat as its branded typeface. Until November 2010 when the publication started using Typekit to serve its custom fonts, someone’s job at the New Yorker was simply to slice up those images all day long.

153 | 154 | 155 | 156 | 157 | 158 |

Image Replacement Techniques

159 | 160 |

A major issue of using image as type was that text was not searchable, selectable, or translatable. To get around that problem, web practitioners came up with various image replacement techniques to fill the void. In April 2004, web designer and developer Shaun Inman developed a technique called Scalable Inman Flash Replacement (sIFR) to embed custom fonts in a small Flash movie. He also used JavaScript and CSS to make the text selectable.

161 | 162 |

While sIFR solved the issue of image slicing, its main drawback was relying on Flash, an Adobe’s proprietary software program for delivering rich contents on the web. Furthermore, setting up sIFR required some web knowledge. In April 2009, system engineer Simo Kinnunen created a new and improved technique called Cufón (Scalable Vector Graphics, SVG). Cufón used JavaScript to render generated fonts (SVG format) to the browser. This technique was easier to set up and did not rely on Flash. Although many image replacement techniques have continued to be developed and advanced over the years—CSS image replacement is still in use today for logo on web sites—they are not genuine web typography.

163 | 164 |

Web Fonts

165 | 166 |

Web typography is not a new concept. In 1998, the Cascading Style Sheet (CSS) Working Group proposed the support of the @font-face rule to allow any typeface to be displayed on web pages. Internet Explorer 4 was the first browser to implement it, but with no success. The proposal had no piracy protection or licensing agreement in place. As a result, @font-face was stalled for almost a decade.

167 | 168 |

In 2008, @font-face made a comeback when Apple Safari and Mozilla Firefox implemented the rule. In May 2009, Jeffrey Veen introduced Typekit, a type hosting service that let designers use high-quality fonts on web sites with the ease of implementation and the worry-free of licensing and cross-browser compatibility. In just two years, Adobe acquired Typekit bringing more classic types such as Garamond Pro, Minion Pro, and Myriad Pro to the web.

169 | 170 | 171 |

In 2010, Google launched its own library of fonts for the world to use for free. As a result, Google only hosts open-source fonts. With its ease of use API (application programming interface), Google has succeeded in making the web more accessible, readable, beautiful and open.

172 | 173 |

The @font-face rule is now supported on all modern browsers (Internet Explorer, Firefox, Chrome, Safari, and Opera) and mobile browsers (iOS Safari, Android, and Chrome, except for Opera Mini). In addition to Typekit and Google Fonts, many foundries, including Font Bureau, Fontdeck, FontShop, Hoefler & Co., and Webtype, began to offer web-font services. In just a few years, web fonts have swept the world of design. With the rise of responsive web design, typography is going through a new transformation like never before. Unlike a printed publication, the flexibility of the web gives designers no control of their work. Whether through smartphones, tablets, laptops or game consoles, they have no idea how their work will be viewed on a user’s device. In order to accommodate the growing number of devices coming to the market continuously, they have to embrace the fluidity of the web and let go of the notion of pixel perfect control. Designing for the unknown could be intimidating, but that also makes web design challenging and exciting. Brown is right in his statement. The web is the best place for accessing text.

174 | 175 |

Evaluating Types

176 | 177 |
178 | saccades 179 |
FIG 4: Series of saccades. Designed by Jost Hochuli, 2008.
180 |
181 | 182 |

When we read, our eyes move along the lines in a series of brief moments called saccades. As our eyes jump back and forth, we absorb information in between those hops known as fixed periods. The better the reader, the larger the saccades, and the shorter the fixed periods. We read faster if the subject is familiar to us. As we read, we recognize the shapes of the words rather than individual letters; therefore, the strokes and the spaces play a key role in legibility and readability. Particularly with screen resolution, strokes and spaces might disappear at small sizes on devices with low pixel density.

183 | 184 | 185 |

When choosing text typefaces to be read on screens, designers need to consider the following elements: a generous x-height, even spacing, open counters and apertures, prominent ascenders and descenders, and clear stroke joints. Also keep Erik Spiekermann’s advice in mind: “Don’t sacrifice esthetics for practicality. Pick a typeface that has character and strength. Basically, the models which survived 500 years will look good on screens today.” (Spiekermann 2013, 179)

186 | 187 |
188 | Typeface 189 |
FIG 5: Elements of web typography. Designed by Donny Truong, 2014.
190 |
191 | 192 | 193 |
194 | 195 |
196 | 197 | 198 |

Bibliography

199 | 200 |
    201 |
  • Brown, Tim. “Universal Typography.” Lecture presented at the SmashingConf, New York, New York, June 18, 2014.
  • 202 | 203 | 204 |
  • CERN. 1990. “World Wide Web.” Accessed October 27, 2014.
  • 205 | 206 | 207 |
  • Franz, Laura. 2012. Typographic Web Design: How to Think Like a Typographer in HTML and CSS. West Sussex: John Wiley & Sons.
  • 208 | 209 | 210 |
  • Hochuli, Jost. 2008. Detail in Typography. London: Hyphen.
  • 211 | 212 | 213 |
  • Lupton, Ellen, edit. 2014. Type on Screen: A Critical Guide for Designers, Writers, Developers, and Students. New York: Princeton Architectural.
  • 214 | 215 | 216 |
  • Santa Maria, Jason. 2014. On Web Typography. New York: A Book Apart.
  • 217 | 218 | 219 |
  • Spiekermann, Erik. 2013. Stop Stealing Sheep and Find Out How Type Works, Third Edition. San Francisco: Adobe.
  • 220 | 221 | 222 |
  • Typekit. 2010. “Bring Your Own Fonts to Typekit.” Accessed October 27, 2014.
  • 223 | 224 | 225 | 226 |
227 | 228 | 229 |
230 | 231 |
Written for Graphic Design History class at George Mason University School of Art.
232 |
233 | 234 | 235 | 236 | 237 | 238 | 239 | -------------------------------------------------------------------------------- /portfolio/work/img/prowebtype.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /portfolio/work/img/miles-app.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 21 | 24 | 27 | 30 | 35 | 38 | 41 | 45 | 50 | 53 | 56 | 60 | 65 | 69 | 74 | 77 | 80 | 84 | 87 | 90 | 93 | 98 | 101 | 104 | 107 | 112 | 115 | 118 | 122 | 126 | 129 | 130 | 131 | 135 | 137 | 141 | 145 | 148 | 153 | 157 | 161 | 165 | 169 | 171 | 175 | 180 | 181 | 182 | 184 | 191 | 195 | 200 | 201 | 202 | 206 | 213 | 217 | 220 | 226 | 227 | 228 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | -------------------------------------------------------------------------------- /editorial/img/fig5-typeface.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 50 | 51 | 52 | 53 | 54 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 70 | 81 | 93 | 103 | 116 | 132 | 142 | 173 | 185 | 203 | 219 | 230 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | --------------------------------------------------------------------------------