Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Say Hello to Octicons
Search
Jon Rohan
July 21, 2012
Programming
105
7.2k
Say Hello to Octicons
Cameron McEfee and Jon Rohan talk about GitHub's icons.
Jon Rohan
July 21, 2012
Tweet
Share
More Decks by Jon Rohan
See All by Jon Rohan
GitHub's CSS Performance
jonrohan
1031
460k
Other Decks in Programming
See All in Programming
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
670
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
39
14k
レトロゲームから学ぶ通信技術の歴史
kimkim0106
0
120
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
26
7.8k
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
140
テスターからテストエンジニアへ ~新米テストエンジニアが歩んだ9ヶ月振り返り~
non0113
2
230
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
150
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
1
220
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
1.2k
テスト環境にCDを導入してみた
yasaigaoisi
0
100
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
270
構文解析器入門
ydah
7
1.7k
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.4k
Writing Fast Ruby
sferik
628
62k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
360
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Code Review Best Practice
trishagee
69
19k
Building Adaptive Systems
keathley
43
2.7k
Become a Pro
speakerdeck
PRO
29
5.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Site-Speed That Sticks
csswizardry
10
710
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Pragmatic Product Professional
lauravandoore
35
6.8k
Transcript
Cam & Rohan Making Icons @JONROHAN @CAMERONMCEFEE Saturday, July 21,
12
OCTICONS Say Hello To Saturday, July 21, 12
FAMFAMFAM Say Goodbye To Saturday, July 21, 12
ZOOMED Saturday, July 21, 12
Saturday, July 21, 12
Saturday, July 21, 12
Saturday, July 21, 12
SOME FACTS Saturday, July 21, 12
11% 22% 67% BROWSERS Chrome Firefox Safari Saturday, July 21,
12
SCREENS Saturday, July 21, 12
SCREENS 2000px 6% 1600px 42% 1440px 14% 1280px 30% Saturday,
July 21, 12
6 MILLION PAGE VIEWS Saturday, July 21, 12
1,469MS PAGE LOAD TIMES Saturday, July 21, 12
30+ HTTP REQUESTS Saturday, July 21, 12
MOSTLY ICONS Saturday, July 21, 12
ICON METHODS Saturday, July 21, 12
Images ICON METHODS Saturday, July 21, 12
Image Sprites Images ICON METHODS Saturday, July 21, 12
Image Sprites Images SVG ICON METHODS Saturday, July 21, 12
WHY CUSTOM ICONS? Saturday, July 21, 12
UNIQUE METAPHORS • Octocat • Repo • Issue • Fork
• Commit • Pull Request • Push • Submodule • Gist • Etc. Saturday, July 21, 12
OLD METAPHORS • Octocat • Repo • Issue • Fork
• Commit • Pull Request • Push • Submodule • Gist • Etc. Saturday, July 21, 12
NEW METAPHORS • Octocat • Repo • Issue • Fork
• Commit • Pull Request • Push • Submodule • Gist • Etc. Saturday, July 21, 12
CONSISTENCY Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES Saturday, July 21, 12
SPRITES SPRITE HELL Saturday, July 21, 12
Saturday, July 21, 12
Octicons
Saturday, July 21, 12
LET’S GET TECHNICAL Saturday, July 21, 12
STRATEGY Saturday, July 21, 12
METAPHORS Saturday, July 21, 12
METAPHORS Saturday, July 21, 12
FLEXIBLE SIZES Saturday, July 21, 12
FLEXIBLE SIZES 16px 32px Saturday, July 21, 12
FLEXIBLE SIZES • 16px: Optimized for 16px. Never scaled •
32px: Optimized for n*32px. Scaled when necessary. Saturday, July 21, 12
CRISPNESS Saturday, July 21, 12
CRISPNESS IS KEY Helve cons Pictos Oc cons Saturday, July
21, 12
CRISPNESS IS KEY Saturday, July 21, 12
RESIZING = BAD Saturday, July 21, 12
RESIZING = BAD Redesigned Scaled Saturday, July 21, 12
DESIGN > Saturday, July 21, 12
PHOTOSHOP TRICKS Saturday, July 21, 12
PHOTOSHOP TRICKS ILLUSIONS Saturday, July 21, 12
2-UP VIEW Saturday, July 21, 12
2-UP VIEW • Window > Application Frame • Window >
Arrange > New Window for …psd • Window > Arrange > 2-Up Vertical Saturday, July 21, 12
PIXEL GRID View > Show > Pixel Grid Saturday, July
21, 12
PIXEL SNAPPING Saturday, July 21, 12
BOXED ICONS Saturday, July 21, 12
SOURCE FILE Saturday, July 21, 12
GLYPHS PRIMER Saturday, July 21, 12
SKIPPING AHEAD Saturday, July 21, 12
THE BASICS Mx Cap-height X-height M-width Saturday, July 21, 12
MATH 32 16 = 2 32 32 = 1 Saturday,
July 21, 12
OUR “LOGICAL” SETUP 32 points 32 points Saturday, July 21,
12
THE MAGIC 2048 2048 16 = 128 2048 32 =
56 Saturday, July 21, 12
BASICALLY THE SAME width Saturday, July 21, 12
BASICALLY THE SAME height Saturday, July 21, 12
BASICALLY THE SAME resolu on (sort of) Saturday, July 21,
12
FILE SIZE IS WEIRD Size Grid Quality File Size (kb)
512 4 Meh 28 512 8 Meh 27 1024 0 Good 37 1024 32 Meh 29 1024 64 Bad 2048 32 Good 33 2048 64 Good 33 2048 128 Good 33 Saturday, July 21, 12
OUR FINAL FILE • Cap-height/x-height = 2048 points • Units
per em = 2048 points • Grid spacing = 32 Saturday, July 21, 12
MAKE THE FONT Saturday, July 21, 12
ALIGNMENT IS HARD Saturday, July 21, 12
ALIGNMENT IS HARD Saturday, July 21, 12
THE GRID (0,0) Glyphs Illustrator (0,X) (X,0) (0,-X) (0,0) (X,0)
Saturday, July 21, 12
STAGE IT (0,0) 2 grid square baseline shift 2048pts 256pts
Saturday, July 21, 12
STAGE IT paste at 16pts Saturday, July 21, 12
STAGE IT Saturday, July 21, 12
STAGE IT delete this copy this Saturday, July 21, 12
IT’S A FONT Saturday, July 21, 12
IT’S A FONT Saturday, July 21, 12
TO THE CLOUD Saturday, July 21, 12
OPENTYPE Saturday, July 21, 12
OTF > WEB FONT FONT QUIR L .otf .eot .svg
.ttf .woff Saturday, July 21, 12
PRIVATE USE UNICODE Saturday, July 21, 12
SUBSET FOR VICTORY Saturday, July 21, 12
@font-face { font-family: 'Octicons Regular'; src: font-url('octicons.eot'); src: font-url('octicons.eot#iefix') format('embedded-opentype'),
font-url('octicons.woff') format('woff'), font-url('octicons.ttf') format('truetype'), font-url('octicons.svg#newFontRegular') format('svg'); font-weight: normal; font-style: normal; } @FONT-FACE Saturday, July 21, 12
CSS CLASSES <span class="mini-icon search"></span> .mini-icon { ... -webkit-font-smoothing: antialiased;
} .mini-icon.search:before { content: "\f02e"; } Saturday, July 21, 12
CSS ANTI-ALIASING Subpixel Saturday, July 21, 12
CSS ANTI-ALIASING Subpixel None An -aliased Saturday, July 21, 12
ANTI-ALIASING Without With Saturday, July 21, 12
Saturday, July 21, 12
WHAT WORKED Saturday, July 21, 12
ALL THE COLORS Saturday, July 21, 12
ALL THE COLORS Saturday, July 21, 12
ANY SIZE Saturday, July 21, 12
ANY SIZE Saturday, July 21, 12
Saturday, July 21, 12
Retina Timing Saturday, July 21, 12
Saturday, July 21, 12
Saturday, July 21, 12
WHAT DIDN’T WORK Saturday, July 21, 12
TOO COMPLEX Saturday, July 21, 12
UPDATES ARE TEDIOUS 1.Icon concept 2.Draw 2 icons 3.Copy into
Illustrator 4.Copy into Glyphs 5.Export font 6.Convert font 7.Update font 8.Deploy GitHub Saturday, July 21, 12
GLYPHS IS LIMITED Saturday, July 21, 12
CLEAR TYPE Saturday, July 21, 12
ACCESSIBILITY Saturday, July 21, 12
@FONT-FACE DISABLED Saturday, July 21, 12
MAKING THINGS BETTER Saturday, July 21, 12
GRAPHIC CHANGES Saturday, July 21, 12
CSS PERFORMANCE .mini-icon { font-icon: stuff; } .mini-icon.private-repo { font:
unicode; } Saturday, July 21, 12
20K+ CSS MATCHES PER PAGE Saturday, July 21, 12
BREAK UP data-icon=”f023” .mini-icon:before { content: attr(“data-icon”); } Saturday, July
21, 12
BREAK UP .mini-icon { font-icon: stuff; } .mini-icon-private-repo { font:
unicode; } Saturday, July 21, 12
THANKS @JONROHAN @CAMERONMCEFEE Saturday, July 21, 12
THANKS @JONROHAN @CAMERONMCEFEE
Saturday, July 21, 12