SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
TheLazy
DIGITAL TYPOGRAPHY
1
25 years of text rendering in computer graphics
Bitmap font (Kilgard, 1994) Stroke font (Kilgard, 1994) Texture font (Kilgard, 1997) Signed Distance Field (Green, 2007)
GPU Bézier (Loop & Blinn, 2005)
Over
Arc SDF (Esfahbod, 2011)
Stencil & Cover (Kilgard & Bolz, 2012)
Dog
Multi-channel SDF (Chlumsky, 2016)
Path Finder (Walton, 2017)
(Boston Journal, 1855)
Higher 2D Quality (Rougier, 2013)
Adaptive Distance Field (Fresken et al., 2000)
GPU glyphs (Lengyel, 2017)
SIGGRAPH '18 Course - August 12-16, 2018 - Vancouver, BC, Canada - 10.1145/3214834.3214837
Copyright 2018 © B.Esfahbod & N.P Rougier Creative Commons Attribution 4.0 International (CC BY 4.0)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
INTRODUCTION
2
A specimen sheet of typefaces and languages,
by William Caslon I, letter founder; dated 1734.
Typography is the art of arranging type to make written
language legible, readable, and appealing when
displayed.
However, for the neophyte, typography is mostly
apprehended as the juxtaposition of characters
displayed on the screen while for the expert,
typography means typeface, scripts, unicode, glyphs,
ascender, descender, tracking, hinting, kerning,
shaping, weight, slant, etc.
Typography is actually much more than the mere
rendering of glyphs and involves many different
concepts.
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
NOPE, NOT ARABIC!
3
From “Nope, not Arabic” tumbler (https://nopenotarabic.tumblr.com/)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
I UNICODE
4
?
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
BAD KERNING (keming)
5
Disaster is a space away… (FLICK, click, CLINT, FINAL)
click versus dick Apple added an extra space
Rockstar game removed the extra space
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
GIBBERISH CAN BE PRETTY…
6
The Matrix code is actually a sushi recipe…
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
DIGITAL TYPOGRAPHY
7
Typography is a vast and complex domain with many rules.
You might consider to enforce some basic rules.
The Anatomy of Typography - Janie Kliever
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
UNICODE
8
Unicode is a computing industry standard for the
consistent encoding, representation, and handling
of text expressed in most of the world's writing
systems. The latest version contains a repertoire
of 136,755 characters covering 139 modern and
historic scripts, as well as multiple symbol sets.
UTF-8 (Unicode Transformation Format, RFC
3629) is a variable width character encoding
capable of encoding all 1,112,064 valid code
points in Unicode using one to four 8-bit bytes.
XKCD #1953
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
FAMOUS FONTS
9 1931
1495 17981757
1926
1734
19821957
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ONE FONT TO RULE’EM ALL
10
When text is rendered by a computer, sometimes characters are displayed as “tofu”. They are little
boxes to indicate your device doesn’t have a font to display the text. Google has been developing a
font family called Noto, which aims to support all languages with a harmonious look and feel.
Noto is Google’s answer to tofu.
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ITSY BITSY BITMAP FONTS
11
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
BASIC TYPOGRAPHY
12
Kerning is the process of adjusting
the spacing between characters in
a proportional font.
A ligature occurs where two or more graphemes
or letters are joined as a single glyph.
Hinting is the use of instructions to
adjust the display of a font so that
it lines up with a rasterized grid. A various number of face metrics are defined
for all glyphs in a given font.
A diacritic mark is a glyph added to a letter,
or basic glyph.
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ADVANCED TYPOGRAPHY
13
Text shaping is the process of converting Unicode
text to glyph indices and positions.
द ◌् ध ◌् र ◌् य
The set of rules applied to produce the correct order at the time
of display are described by the Unicode Bidirectional Algorithm.
The title is ‫الويب‬ ‫معايير‬ ‫مفتاح‬ in Arabic.
द्ध्र्यComplex text layout (CTL) refers to
the typesetting of writing systems in
which the shape or positioning of a
grapheme depends on its relation to
other graphemes (wikipedia).Stylistic alternate allows to replace
a glyph by some variant.
Etc.
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ADVANCED TYPOGRAPHY
14
Anatomy of the Hindi Font by Aditya Dipankar.
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
OTHER FORMS OF COMPLEX LAYOUT
15
kX
n=1
1
n
>
Z k+1
1
1
x
dx = ln(k + 1)
1X
n=0
( 1)n
2n + 1
= 1
1
3
+
1
5
1
7
+ · · · =
⇡
4
Z b
a
f(x)dx = F(b) F(a)
f0
(a) = lim
h!0
f(a + h) f(a)
h
(z/w) = ¯z/ ¯w
r = |z| =
p
x2 + y2

1 2
3 4

0 1
0 0
=

0 1
0 3<latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit><latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit><latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit><latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit>
Made with Latex (what else?)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
FONT FORMATS
16
Types
Type 1(.pfm, .pfb): glyphs are described with cubic Bézier curves
True Type (.ttf): glyphs are described with quadratic Bézier curves
Open Type (.otf): glyphs are described with quadratic or cubic Bézier curves
Web Open Font (.woff): compressed TrueType or Open Type
And many more actually…
Cubic Bézier curves Quadratic Bézier curves
The Missing Guide to Font Formats
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
A PRIMER ON BÉZIER CURVES
17
Sergei Natanovich Bernstein (1912) / Paul de Casteljau (1959) / Pierre Bézier (1962)
A Bézier curve is defined by a set of control points P0 through Pn, where n is called its order. The
first and last control points are always the end points of the curve.
Some related problems: signed distance, thick curves, subdivision, bounding box, linear speed,
self-intersection, curve splitting, arc length, approximation of a cubic with quadratics, etc.
Pomax (2017) A primer on Bézier curves
Linear (n=1): BP0/P1(t) = (1-t)P0 + tP1
Quadratic (n=2): BP0/P1/P2(t) = (1-t)BP0/P1(t) + tBP1/P2(t)
Cubic(n=3): BP0/P1/P2/P3(t) = (1-t)BP0/P1/P2(t) + tBP1/P2/P3(t)
P1
P0
P2
P3P0
P1
P2P0
P1
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
A PRIMER ON BÉZIER CURVES
18
Cubic Bézier curves have a lot of corner cases: inflection points, cusp, loop, overlap
Pomax (2017) A primer on Bézier curves
P1
P0
P2
P3
P1
P0
P2
P3
P1
P0
P2
P3
P1
P0
P2
P3
P1
P0
P2
P3
P1
P0
P2
P3
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ANATOMY OF A GLYPH
19
Vector fonts are collections of vector images, consisting of lines and curves defining the
boundary of glyphs (wikipedia). Type 1 and Type 3 Postscript fonts are described with cubic
Bézier curves. Truetype fonts are described with quadratic Bézier curves.
Images by The Australian Graphic Supply Co Images by FontLab
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
FONT TABLES
20
Open Type Tables
BASE: Baseline data
CMAP: Character to glyph mapping
GDEF: Glyph definition data
GSUB: Glyph substitution data
Single: Replaces one glyph with one glyph.
Multiple: Replaces one glyph with more than one glyph.
Alternate: Replaces one glyph with one of many glyphs.
Ligature: Replaces multiple glyphs with one glyph.
Context: Replaces one or more glyphs in context.
Chaining: Replaces one or more glyphs in chained context.
GPOS: Glyph positioning data
JSTF: Justification data 

and many more…
Libraries
STB_truetype (single header file, basic support)
→ https://github.com/nothings/stb
FreeType (standard support without text shaping)
→ https://www.freetype.org
HarfBuzz (advanced support with text shaping)
→ https://harfbuzz.github.io
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
TEXT RENDERING PIPELINE
21
Itemization
Reordering Shaping
Justification
Rendering
Text Buffer
45 6E 67 6C 69 73 68 20 D9 8A
D8 A8 D8 B1 D8 B9 20 31 32 33
English ‫ع‬ ‫ر‬ ‫ب‬ ‫ي‬ 123
‫ع‬ ‫ر‬ ‫ب‬ ‫ي‬English 123
‫ع‬ ‫ر‬ ‫ب‬ ‫ي‬English 123
‫عربي‬English 123
‫عربي‬
English
123
1
2
3 4
5
6
‫ي‬‫ب‬‫ر‬‫ع‬
English
123
Latin Shortcut
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
PART I
22
Image by Daniel Ullrich
commons.wikimedia.org/wiki/User:Threedots
Near the end of the last century (1997), Mark
Kilgard introduced a simple OpenGL-based API
for texture mapped text.
The method packed many rasterized glyphs into
a single alpha-only texture map and used a
lookup table to assign texture coordinates to a
quadrilateral to extract a glyph when rendering.
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
2D RASTERIZATION
23
Same input, different outputs
FreeType Native CFF Rasterizer 
FreeType Light Auto Hint Rasterizer
FreeType using the New Adobe CFF Rasterizer (2013)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
2D RASTERIZATION
24
GDI rendering of FacitWeb (above) and Minion Pro (below) with no antialiasing.
(Source Adobe Typekit Blog)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
2D RASTERIZATION
25
GDI rendering of FacitWeb (above) and Minion Pro (below) with standard antialiasing.
(Source Adobe Typekit Blog)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
2D RASTERIZATION
26
Core text rendering of FacitWeb (above) and Minion Pro (below).
(Source Adobe Typekit Blog)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
2D RASTERIZATION
27
DirectWrite rendering of FacitWeb (above) and Minion Pro (below).
(Source Adobe Typekit Blog)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
2D RASTERIZATION
28
GDI rendering of FacitWeb (above) and Minion Pro (below) with ClearType enabled.
(Source Adobe Typekit Blog)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
2D RASTERIZATION
29
Gamma correction, hinting, energy distribution, etc.
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
TEXTURE FONT I
30
Texture mapping is well suited for rendering text because textures can be rendered quickly with
current 3D hardware and even via clever programming of today's fast CPUs. Textures can be
stretched. rotated, scaled, and even projected (assuming the texture mapping is perspective
correct) so that texture mapped text looks reasonable in 3D scenes.
https://github.com/rougier/freetype-gl
Kilgard (1997) A Simple OpenGL-based API for Texture Mapped Text
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
BIN PACKING ALGORITHMS
31
Several algorithms that can be used to solve the problem of packing rectangles into two-
dimensional finite bins. Most of the algorithms have well been studied in literature, but some of
the variants are less known and some are apparently regarded as "folklore" and no previous
reference is known. Different variants are presented and compared.
Naïve packing Skyline-BL packing
Jylänky (2010) A Thousand Ways to Pack the Bin
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
TEXTURE FONT II
32
When displaying text on low-resolution devices (DPI < 150), one typically has to decide if one
wants to respect the pixel grid (e.g., Cleartype technology / Microsoft / native hinting) for crisp
rendering or, to privilege glyph shapes (Quartz technology / Apple / no hinting) at the cost of
blurring. There is, however, a third way that may combine the best of the two technologies (vertical
hinting).
No hinting Native hinting Auto hinting Vertical hinting
Rougier (2013) Higher Quality 2D Text Rendering
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
TEXTURE FONT II
33
i. Use horizontal RGB sub-pixel anti-aliasing for LCD flat panels.
ii. Use vertical hinting only and completely discard the horizontal one.
iii. Use accurate glyph advance values from unhinted glyph
iv. Use accurate, high resolution values from the kerning table.
Rougier (2013) Higher Quality 2D Text Rendering
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
TEXTURE FONT II
34
Subpixel rendering on the CPU
Subpixel positioning on the GPU
Rougier (2013) Higher Quality 2D Text Rendering
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
PART II
35
Work & image by Xavier Casalta
casaltaxavier.com
Distance based rendering takes advantage of a
signed distance function (that can be
approximated) to compute the individual
coverage for each pixel.
The coverage can be selected to implement
various effects (stroke, thinner, thicker, shadow,
etc)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
DISTANCE BASED RENDERING
36
Distance based rendering takes advantage of a signed distance function (that can be
approximated) to compute the individual coverage for each pixel. The coverage can be selected
to implement various effects (stroke, thinner, thicker, shadow, etc)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
COMPUTING SDF
37
We present a modified distance measure for use with distance transforms of anti-aliased, area
sampled grayscale images of arbitrary binary contours. The modified measure can be used in any
vector-propagation Euclidean distance transform. Our test implementation in the traditional
SSED8 algorithm shows a considerable improvement in accuracy and homogeneity of the
distance field compared to a traditional binary image transform.
See also http://contourtextures.wikidot.com
Gustavson & Strand (2011) Anti-Aliased Euclidean distance transform
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
SINGLE CHANNEL SDF
38
A distance field is generated from a high resolution image, and then stored into a channel of a
lower-resolution texture. In the simplest case, this texture can then be rendered simply by using
the alpha- testing and alpha-thresholding feature of modern GPUs, without a custom shader. This
allows the technique to be used on even the lowest-end 3D graphics hardware. With the use of
programmable shading, the technique is extended to perform various special effect renderings,
including soft edges, outlining, drop shadows, multi-colored images, and sharp corners.
Alpha blended Alpha tested (no shader) Alpha tested (shader)64x64 64x64 64x64
Green (2007) Improved Alpha-Tested Magnification for Vector Textures
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
SDF: MULTIPLE CHANNELS
39
Plane partioningEdge Coloring Decomposition Padded DecompositionInner padding
Chlumsky (2015) Shape Decomposition for Multi-channel Distance Fields
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
SDF: MULTIPLE CHANNELS
40
Chlumsky (2015) Shape Decomposition for Multi-channel Distance Fields
Texture Single channel SDF Multi channel SDF
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ARC APPROXIMATION
41
Since distance to arbitrary Bézier curves is hard, we can instead first convert a glyph into
(approximated) circular arc splines and upload this converted vector glyph to the GPU. Distance
are then computed onto the GPU. Corner cases are overlapping contours, tangent arcs and float
precision.
Esfahbod (2012) Glyphy
Mean size is ~25 segments
Mean size is ~8 arcs
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ARC APPROXIMATION
42
SDF-based antialiasing + subpixel positioning + random access (coarse grid).
Esfahbod (2012) Glyphy
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
ARC APPROXIMATION
43
Drawback: Memory and speed are font dependent
Esfahbod (2012) Glyphy
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
PART III
44
Image by Black[Foundry]
black-foundry.com
Charles Loop and Jim Blinn introduced in 2005
a new approach for resolution-independent
rendering of quadratic and cubic spline curves.
By tessellating a glyph the proper way, they
offered de facto a method for resolution
independent rendering of a glyph with good
rendering quality.
AA
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
GPU FRIENDLY
45
We present a method for resolution independent rendering of paths and bounded regions, defined
by quadratic and cubic spline curves, that leverages the parallelism of programmable graphics
hardware to achieve high performance. Our result is a mechanism for rendering vector geometry
that has the following properties: resolution independence, compact geometric representation,
high performance.
Loop & Blinn (2005) Resolution Independent Curve Rendering
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
GPU FRIENDLY
46
We determine if the pixel is inside or outside the curve by evaluating f(u, v) = u² − v in a pixel
shader program. If f (u, v) < 0 then the pixel is inside the curve, otherwise it is outside.
See also
"Rendering Vector Art on the GPU" (Charles Loop & Jim Blinn, GPU Gems 3, Chapter 25)
“Easy Scalable Text Rendering on the GPU” (Evan Wallace Medium)
Loop & Blinn (2005) Resolution Independent Curve Rendering
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
This sketch presents a new method for resolution independent rendering of vector images
suitable for programmable graphics hardware. We have enhanced a previous method [Loop and
Blinn 2005] by using a stencil buffer and transparency multisampling.
GPU FRIENDLY
47
Kokojima et al (2006) Resolution Independent Rendering of Deformable Vector Objects(a) (b) (c)
(d) (e) (f)
Color Buffer
Processing
Stencil
Image
(Figure 1(f))
Vector
Object
(Figure 1(a))
Curve-Edged
Triangles
(Figure 1(c))
Line-Edged
Triangle Fans
(Figure 1(b))
CPU Process GPU Process
Alpha
Image Alpha to
Coverage
Stencil Buffer
Processing
Alpha
Assignment
Triangulation
(a) (b) (c)
(d) (e) (f)
Color Buffer
Processing
Stencil
Image
(Figure 1(f))
Vector
Object
(Figure 1(a))
Curve-Edged
Triangles
(Figure 1(c))
Line-Edged
Triangle Fans
(Figure 1(b))
Alpha
Image Alpha to
Stencil Buffer
Processing
Alpha
Triangulation
(a) (b) (c)
(d) (e) (f)
Color Buffer
Processing
Stencil
Image
(Figure 1(f))
Vector
Object
(Figure 1(a))
Curve-Edged
Triangles
(Figure 1(c))
Line-Edged
Triangle Fans
(Figure 1(b))
CPU Process GPU Process
Alpha
Image Alpha to
Coverage
Stencil Buffer
Processing
Alpha
Assignment
Triangulation
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
This sketch presents a new method for resolution independent rendering of vector images
suitable for programmable graphics hardware. We have enhanced a previous method [Loop and
Blinn 2005] by using a stencil buffer and transparency multisampling.
GPU FRIENDLY
48
Kokojima et al (2006) Resolution Independent Rendering of Deformable Vector Objects
Animations by Evan Wallace (Easy Scalable Text Rendering on the GPU)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
GPU FRIENDLY
49
We present a vector graphics representation suitable for real-time rendering on GPUs. Our
representation can be used in place of a texture map, and renders precise antialiased edges at any
magnification. A combination of texture data and procedural computation is used to evaluate an
exact signed distance to a contour and its gradient.
Anisotropic antialiasing technique + GPU-based representation of contours + Packed grid
accelerator structure based + Sprite mapping technique + Special effects
Qin et al (2006) Real-Time Texture-Mapped Vector Glyphs
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
We introduce a two-step “Stencil, then Cover” (StC) programming interface. Our GPU-based
approach builds upon existing techniques for curve rendering using the stencil buffer, but we
explicitly decouple in our programming interface the stencil step to determine a path’s filled or
stroked coverage from the subsequent cover step to rasterize conservative geometry intended to
test and reset the coverage determinations of the first step while shading color samples within the
path.
GPU FRIENDLY
50
Kilgard & Bolz (2012) GPU-accelerated Path Rendering
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
GPU ONLY
51
This paper describes a method for rendering antialiased text directly from glyph outline data on
the GPU without the use of any precomputed texture images or distance fields. This capability is
valuable for text displayed inside a 3D scene because, in addition to a perspective projection, the
transform applied to the text is constantly changing with a dynamic camera view. Our method
overcomes numerical precision problems that produced artefacts in previously published
techniques and promotes high GPU utilization with an implementation that naturally avoids
divergent branching.
See demo at sluglibrary.com
See also GPU-Centered font rendering & GPU font rendering
Lengyel (2017) GPU-Centered Font Rendering Directly from Glyph Outlines
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
GPU ONLY
52
“Today I’m pleased to announce Pathfinder, a Rust library for OpenType font rendering. The goal is
nothing less than to be the fastest vector graphics renderer in existence, and the results so far are
extremely encouraging. Not only is it very fast according to the traditional metric of raw
rasterization performance, it’s practical, featuring very low setup time (end-to-end time superior to
the best CPU rasterizers), best-in-class rasterization performance even at small glyph sizes,
minimal memory consumption (both on CPU and GPU), compatibility with existing font formats,
portability to most graphics hardware manufactured in the past five years (DirectX 10 level), and
security/safety.”
Walton (2017) Pathfinder, a fast GPU-based font rasterizer in Rust
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
GPU ONLY
53
PathFinder algorithm takes advantage of compute shaders (GL 4.3) & post-transform cache and
rasterization occurs on the fly on the GPU. CPU setup time is minimal. Subpixel antialiasing &
positionning, 2D, 3D, outline, etc.
It is mostly a (highly efficient) translation of CPU rasterization onto the GPU.
Walton (2017) Pathfinder, a fast GPU-based font rasterizer in Rust
Rasterization time, Arial
Pathfinder (GPU)
Loop-Blinn (GPU)
GLyphy (GPU)
font.rs (CPU)
FreeType (CPU)
stb_truetype (CPU)
40 80 120 160 200
0
12.5
25
37.5
50
Font size (px)
Rasterizationtime(µs/glyph)
Setup and rasterization time, Arial 24px
Setup time Rasterization time
Pathfinder (GPU) Loop-Blinn (GPU) GLyphy (GPU) font.rs (CPU) FreeType (CPU) stb_truetype (CPU)
0
1.5
3
4.5
6
7.5
Time(µs/glyph)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers
BEYOND MERE GEOMETRY
54
We present an algorithm for creating digital micrography images, or micrograms, a special type of
calligrams created from minuscule text. These attractive text-art works successfully combine
beautiful images with readable meaningful text.
Maharik et al (2011) Digital Micrography
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers

CONCLUSION
55
Television typography by Offstock
www.flickr.com/photos/126275939@N05
Offset lithography Gravure
Flexography Electrophotographic
(laser)
Inkjet Engraving
Thermography LCD Display
Many available techniques. Choice is dependent
of usage (2D or 3D, dynamic or static, memory
vs speed vs accuracy, etc).
PathFinder and Slug library seem to be the main
players in 2018. Loop & Blinn still competitive.
Hinting and anti-aliasing still needed until we (all)
get screen with dpi > 600.
Complex text layout is (really, really) difficult, you
don’t want to do it yourself: github.com/HOST-
Oman/libraqm
Lot of patents around !
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers

FURTHER READING
56
Web
Texts Rasterization Exposures - Maxim Shemanarev (2006)
The Technology of Text - Kevin Larson (2007)
Treatise on Font Rasterisation - Freddie Witherden (2010)
State of Text Rendering - Behdad Esfahbod (2012)
CS 354 Typography - Mark Kilgard (2012)
High-DPI, Subpixel Text Positioning, Hinting - Behdad Esfahbod (2012)
Android’s Font Renderer - Romain Guy (2014)
Complex Text on Simple Devices - Pedro Navarro (2016)
Introducing DirectWrite - Microsoft (2017)
A Primer on Bézier curves - Pomax (2017)
Papers
Mark Kilgard. A Simple OpenGL-based API for Texture Mapped Text (1997)
Sarah F. Frisken, et al. Adaptively sampled distance fields (2000)

Charles Loop and Jim Blinn. Resolution Independent Curve Rendering (2005) 

Zhipei Qin et al, Real-Time Texture-Mapped Vector Glyphs (2006)
Chris Green. Improved Alpha-Tested Magnification for Vector Textures and Special Effects (2007)
Behdad Esfahbod. Glyphy (2011)

Ron Maharik et al. Digital Micrography (2011)

Stefan Gustavson. 2D Shape Rendering by Distance Fields (2012)

Mark Kilgard and Jeff Bolz. GPU-Accelerated Path Rendering (2012)
Nicolas P. Rougier. Higher Quality 2D Text Rendering (2013)
Viktor Chlumsky. Shape Decomposition for Multi-channel Distance Fields (2015)
Eric Lengyel. GPU-Centered Font Rendering Directly from Glyph Outlines (2017)
Patrick Walton. Path Finder (2017)
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers

RELATED SHADERTOYS
57
www.shadertoy.com/view/MdycWh www.shadertoy.com/view/Mt2GWD www.shadertoy.com/view/4s3XDn
www.shadertoy.com/view/4sVyWh www.shadertoy.com/view/ldXyRn www.shadertoy.com/view/llyXDV
www.shadertoy.com/view/4dfXDn www.shadertoy.com/view/XdXGRB www.shadertoy.com/view/4ts3DB
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers

QUESTIONS?
58
• Where to find good fonts? dafont.com, fontsquirrel.com
• When does cleartype patent end ? Not clear (ha ha)
• Are hinting and aliasing still needed? Yes
• What are the most complete font families? Noto, DejaVu
• How many languages in the world? Around 7000
• How many scripts in latest unicode (11.0)? 146
• How many characters in latest unicode (11.0)? 137,439
• Is there any forthcoming support for text in Vulkan ? No
• Should I tell my colleagues I love Comic Sans? No
• Are there any open source tools to design fonts? FontForge
• Why “ff” & “fi” disappear when I copy text ? Ligatures
• Should I apply AA before or after gamma correction? Before
• Should I stay or should I go? stay (a few more minutes)
Any other questions?
DIGITAL TYPOGRAPHY
N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE)
/60
INTRODUCTION
• Digital Typography
• Font Types & Formats
• Text Rendering Pipeline

PART I : TEXTURE BASED
• Rasterization
• Fast & Versatile (but ugly)
• Fast & Beaufitul (but only 2D)

PART II : DISTANCE BASED
• Signed Distance Fields
• Single Channel
• Arc approximation
• Multiple Channels

PART III : GEOMETRY BASED
• Bézier curves & glyphs
• GPU friendly
• GPU only

CONCLUSION
• Beyond this course
• Questions & answers

DIGITAL TYPOGRAPHY
59
Between art & design.
Raghed Abu HamdanGary Hustwit Unknown artist
Digital Typography Rendering - Nicolas P. Rougier & Behdad Esfahbod
SIGGRAPH '18 Course - August 12-16, 2018 - Vancouver, BC, Canada - 10.1145/3214834.3214837
Copyright 2018 © N.P Rougier & B.Esfahbod - Creative Commons Attribution 4.0 International

Contenu connexe

Tendances

Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
Golang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageGolang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageAniruddha Chakrabarti
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료BJ Jang
 
GO programming language
GO programming languageGO programming language
GO programming languagetung vu
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)ShubhamMishra485
 
In Memory Analytics with Apache Spark
In Memory Analytics with Apache SparkIn Memory Analytics with Apache Spark
In Memory Analytics with Apache SparkVenkata Naga Ravi
 
Python tools to deploy your machine learning models faster
Python tools to deploy your machine learning models fasterPython tools to deploy your machine learning models faster
Python tools to deploy your machine learning models fasterJeff Hale
 
Working with Shared Libraries in Perl
Working with Shared Libraries in PerlWorking with Shared Libraries in Perl
Working with Shared Libraries in PerlIdo Kanner
 
GeoServer in Production: we do it, here is how!
GeoServer in Production: we do it, here is how!GeoServer in Production: we do it, here is how!
GeoServer in Production: we do it, here is how!GeoSolutions
 
Better Full Text Search in PostgreSQL
Better Full Text Search in PostgreSQLBetter Full Text Search in PostgreSQL
Better Full Text Search in PostgreSQLArtur Zakirov
 
Coding with golang
Coding with golangCoding with golang
Coding with golangHannahMoss14
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes EverythingLori MacVittie
 
HADOOP TECHNOLOGY ppt
HADOOP  TECHNOLOGY pptHADOOP  TECHNOLOGY ppt
HADOOP TECHNOLOGY pptsravya raju
 
Vectors are the new JSON in PostgreSQL
Vectors are the new JSON in PostgreSQLVectors are the new JSON in PostgreSQL
Vectors are the new JSON in PostgreSQLJonathan Katz
 

Tendances (20)

Go. Why it goes
Go. Why it goesGo. Why it goes
Go. Why it goes
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Golang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageGolang - Overview of Go (golang) Language
Golang - Overview of Go (golang) Language
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
 
GO programming language
GO programming languageGO programming language
GO programming language
 
.NET6.pptx
.NET6.pptx.NET6.pptx
.NET6.pptx
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)
 
In Memory Analytics with Apache Spark
In Memory Analytics with Apache SparkIn Memory Analytics with Apache Spark
In Memory Analytics with Apache Spark
 
Python tools to deploy your machine learning models faster
Python tools to deploy your machine learning models fasterPython tools to deploy your machine learning models faster
Python tools to deploy your machine learning models faster
 
PostGIS 시작하기
PostGIS 시작하기PostGIS 시작하기
PostGIS 시작하기
 
Working with Shared Libraries in Perl
Working with Shared Libraries in PerlWorking with Shared Libraries in Perl
Working with Shared Libraries in Perl
 
GeoServer in Production: we do it, here is how!
GeoServer in Production: we do it, here is how!GeoServer in Production: we do it, here is how!
GeoServer in Production: we do it, here is how!
 
Optimizing MySQL queries
Optimizing MySQL queriesOptimizing MySQL queries
Optimizing MySQL queries
 
Better Full Text Search in PostgreSQL
Better Full Text Search in PostgreSQLBetter Full Text Search in PostgreSQL
Better Full Text Search in PostgreSQL
 
Coding with golang
Coding with golangCoding with golang
Coding with golang
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes Everything
 
Flutter
FlutterFlutter
Flutter
 
HADOOP TECHNOLOGY ppt
HADOOP  TECHNOLOGY pptHADOOP  TECHNOLOGY ppt
HADOOP TECHNOLOGY ppt
 
Vectors are the new JSON in PostgreSQL
Vectors are the new JSON in PostgreSQLVectors are the new JSON in PostgreSQL
Vectors are the new JSON in PostgreSQL
 

Similaire à SIGGRAPH 2018 - Digital typography

CeedMath & CeedGL, Let's talk 3D...
CeedMath & CeedGL, Let's talk 3D...CeedMath & CeedGL, Let's talk 3D...
CeedMath & CeedGL, Let's talk 3D...rsebbe
 
GTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path RenderingGTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path Rendering Mark Kilgard
 
R spatial presentation
R spatial presentationR spatial presentation
R spatial presentationTodd Barr
 
Saving Money with Open Source GIS
Saving Money with Open Source GISSaving Money with Open Source GIS
Saving Money with Open Source GISbryanluman
 
Wherecamp Navigation Conference 2015 - New written standards for the new maps?
Wherecamp Navigation Conference 2015 - New written standards for the new maps?Wherecamp Navigation Conference 2015 - New written standards for the new maps?
Wherecamp Navigation Conference 2015 - New written standards for the new maps?WhereCampBerlin
 
Nutiteq Wherecamp Berlin 2015
Nutiteq Wherecamp Berlin 2015Nutiteq Wherecamp Berlin 2015
Nutiteq Wherecamp Berlin 2015Jaak Laineste
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?Tarun Vashisth
 

Similaire à SIGGRAPH 2018 - Digital typography (7)

CeedMath & CeedGL, Let's talk 3D...
CeedMath & CeedGL, Let's talk 3D...CeedMath & CeedGL, Let's talk 3D...
CeedMath & CeedGL, Let's talk 3D...
 
GTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path RenderingGTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path Rendering
 
R spatial presentation
R spatial presentationR spatial presentation
R spatial presentation
 
Saving Money with Open Source GIS
Saving Money with Open Source GISSaving Money with Open Source GIS
Saving Money with Open Source GIS
 
Wherecamp Navigation Conference 2015 - New written standards for the new maps?
Wherecamp Navigation Conference 2015 - New written standards for the new maps?Wherecamp Navigation Conference 2015 - New written standards for the new maps?
Wherecamp Navigation Conference 2015 - New written standards for the new maps?
 
Nutiteq Wherecamp Berlin 2015
Nutiteq Wherecamp Berlin 2015Nutiteq Wherecamp Berlin 2015
Nutiteq Wherecamp Berlin 2015
 
Go: What's Different ?
Go: What's Different ?Go: What's Different ?
Go: What's Different ?
 

Plus de Nicolas Rougier

The Art of Braincrafting
The Art of BraincraftingThe Art of Braincrafting
The Art of BraincraftingNicolas Rougier
 
Neural fields, a cognitive approach
Neural fields, a cognitive approachNeural fields, a cognitive approach
Neural fields, a cognitive approachNicolas Rougier
 
Modern OpenGL scientific visualization
Modern OpenGL scientific visualizationModern OpenGL scientific visualization
Modern OpenGL scientific visualizationNicolas Rougier
 
On ne voit que ce que l’on regarde (French)
On ne voit que ce  que l’on regarde (French)On ne voit que ce  que l’on regarde (French)
On ne voit que ce que l’on regarde (French)Nicolas Rougier
 
Cybercriminalité (French)
Cybercriminalité (French)Cybercriminalité (French)
Cybercriminalité (French)Nicolas Rougier
 
Computational neuroscience
Computational neuroscienceComputational neuroscience
Computational neuroscienceNicolas Rougier
 
Scientific visualization
Scientific visualizationScientific visualization
Scientific visualizationNicolas Rougier
 
One critic, two actors, one decision
One critic, two actors, one decisionOne critic, two actors, one decision
One critic, two actors, one decisionNicolas Rougier
 

Plus de Nicolas Rougier (12)

The Art of Braincrafting
The Art of BraincraftingThe Art of Braincrafting
The Art of Braincrafting
 
Neural fields, a cognitive approach
Neural fields, a cognitive approachNeural fields, a cognitive approach
Neural fields, a cognitive approach
 
Machine learning
Machine learningMachine learning
Machine learning
 
Modern OpenGL scientific visualization
Modern OpenGL scientific visualizationModern OpenGL scientific visualization
Modern OpenGL scientific visualization
 
Open science
Open scienceOpen science
Open science
 
On ne voit que ce que l’on regarde (French)
On ne voit que ce  que l’on regarde (French)On ne voit que ce  que l’on regarde (French)
On ne voit que ce que l’on regarde (French)
 
Cybercriminalité (French)
Cybercriminalité (French)Cybercriminalité (French)
Cybercriminalité (French)
 
Where is my mind?
Where is my mind?Where is my mind?
Where is my mind?
 
Computational neuroscience
Computational neuroscienceComputational neuroscience
Computational neuroscience
 
Scientific visualization
Scientific visualizationScientific visualization
Scientific visualization
 
ReScience
ReScienceReScience
ReScience
 
One critic, two actors, one decision
One critic, two actors, one decisionOne critic, two actors, one decision
One critic, two actors, one decision
 

Dernier

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 

Dernier (20)

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 

SIGGRAPH 2018 - Digital typography

  • 1. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers TheLazy DIGITAL TYPOGRAPHY 1 25 years of text rendering in computer graphics Bitmap font (Kilgard, 1994) Stroke font (Kilgard, 1994) Texture font (Kilgard, 1997) Signed Distance Field (Green, 2007) GPU Bézier (Loop & Blinn, 2005) Over Arc SDF (Esfahbod, 2011) Stencil & Cover (Kilgard & Bolz, 2012) Dog Multi-channel SDF (Chlumsky, 2016) Path Finder (Walton, 2017) (Boston Journal, 1855) Higher 2D Quality (Rougier, 2013) Adaptive Distance Field (Fresken et al., 2000) GPU glyphs (Lengyel, 2017) SIGGRAPH '18 Course - August 12-16, 2018 - Vancouver, BC, Canada - 10.1145/3214834.3214837 Copyright 2018 © B.Esfahbod & N.P Rougier Creative Commons Attribution 4.0 International (CC BY 4.0)
  • 2. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers INTRODUCTION 2 A specimen sheet of typefaces and languages, by William Caslon I, letter founder; dated 1734. Typography is the art of arranging type to make written language legible, readable, and appealing when displayed. However, for the neophyte, typography is mostly apprehended as the juxtaposition of characters displayed on the screen while for the expert, typography means typeface, scripts, unicode, glyphs, ascender, descender, tracking, hinting, kerning, shaping, weight, slant, etc. Typography is actually much more than the mere rendering of glyphs and involves many different concepts.
  • 3. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers NOPE, NOT ARABIC! 3 From “Nope, not Arabic” tumbler (https://nopenotarabic.tumblr.com/)
  • 4. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers I UNICODE 4 ?
  • 5. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers BAD KERNING (keming) 5 Disaster is a space away… (FLICK, click, CLINT, FINAL) click versus dick Apple added an extra space Rockstar game removed the extra space
  • 6. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers GIBBERISH CAN BE PRETTY… 6 The Matrix code is actually a sushi recipe…
  • 7. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers DIGITAL TYPOGRAPHY 7 Typography is a vast and complex domain with many rules. You might consider to enforce some basic rules. The Anatomy of Typography - Janie Kliever
  • 8. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers UNICODE 8 Unicode is a computing industry standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The latest version contains a repertoire of 136,755 characters covering 139 modern and historic scripts, as well as multiple symbol sets. UTF-8 (Unicode Transformation Format, RFC 3629) is a variable width character encoding capable of encoding all 1,112,064 valid code points in Unicode using one to four 8-bit bytes. XKCD #1953
  • 9. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers FAMOUS FONTS 9 1931 1495 17981757 1926 1734 19821957
  • 10. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ONE FONT TO RULE’EM ALL 10 When text is rendered by a computer, sometimes characters are displayed as “tofu”. They are little boxes to indicate your device doesn’t have a font to display the text. Google has been developing a font family called Noto, which aims to support all languages with a harmonious look and feel. Noto is Google’s answer to tofu.
  • 11. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ITSY BITSY BITMAP FONTS 11
  • 12. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers BASIC TYPOGRAPHY 12 Kerning is the process of adjusting the spacing between characters in a proportional font. A ligature occurs where two or more graphemes or letters are joined as a single glyph. Hinting is the use of instructions to adjust the display of a font so that it lines up with a rasterized grid. A various number of face metrics are defined for all glyphs in a given font. A diacritic mark is a glyph added to a letter, or basic glyph.
  • 13. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ADVANCED TYPOGRAPHY 13 Text shaping is the process of converting Unicode text to glyph indices and positions. द ◌् ध ◌् र ◌् य The set of rules applied to produce the correct order at the time of display are described by the Unicode Bidirectional Algorithm. The title is ‫الويب‬ ‫معايير‬ ‫مفتاح‬ in Arabic. द्ध्र्यComplex text layout (CTL) refers to the typesetting of writing systems in which the shape or positioning of a grapheme depends on its relation to other graphemes (wikipedia).Stylistic alternate allows to replace a glyph by some variant. Etc.
  • 14. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ADVANCED TYPOGRAPHY 14 Anatomy of the Hindi Font by Aditya Dipankar.
  • 15. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers OTHER FORMS OF COMPLEX LAYOUT 15 kX n=1 1 n > Z k+1 1 1 x dx = ln(k + 1) 1X n=0 ( 1)n 2n + 1 = 1 1 3 + 1 5 1 7 + · · · = ⇡ 4 Z b a f(x)dx = F(b) F(a) f0 (a) = lim h!0 f(a + h) f(a) h (z/w) = ¯z/ ¯w r = |z| = p x2 + y2  1 2 3 4  0 1 0 0 =  0 1 0 3<latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit><latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit><latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit><latexit sha1_base64="6IszZoljZhpuB0XoQyi7/Qt6ekc=">AAADzXicfVNdb9MwFM1aPkb52uCRF8M0SFRti7uh8RI0gTQhXhgS+5DmpnJcZ7WaOCF2WFPPvPL/eOOZP8JNG6mjQ1iK7s095x6fXDtRngilff/XSqt96/adu6v3OvcfPHz0eG39yYnKyoLxY5YlWXEWUcUTIfmxFjrhZ3nBaRol/DQav6/x02+8UCKTX3SV835KL6SIBaMaSoP1ld9ElenAyADbcIxIXFBmsDXSoreICKkHODTjLrYLaGLRcIICRBLpAuIR0tnsNCpQ9m0IfbGumg53C3sh6FnTk7VOgDDaWqjtWtRdvL2217H9GcaGmVb1frMyyYU1e3a+ae2PhhEiz1HsTry5r0M38kDl0KVza/EryAKSCDA4IjoDh3Op2KXdkbcFwbNm1EhmMK16mMad7lx6tV0S0cJM7c4sXjY0zSda6SrhqAiuplcBUV8LbSZhr1uFvYYT8QshTZRSXQgYGkYvUY8QtAtxDyLhcrhAl9k+sDCw6ugvs4P/0neX6YO1DX/bny10M8FNsuE062iw9pMMM1amXGqWUKXOsZ/rvqGFFizhtkNKxXPKxvSCn0MqacpV38xuo0WbUBmiOCvgkRrNqtc7DE2VqtIImOBvpJaxuvgv7LzU8Zu+ETIvNZdsvlFcJgiOtL7aaCgKznRSQUJZIcArYiMKJ63hB+jAEPDyJ99MTnrb2N/Gn/c2Dt4141h1njkvHNfBzr5z4Hxwjpxjh7U+tvJW1Zq2P7XL9lX7+5zaWml6njp/rfaPPyyXLLA=</latexit> Made with Latex (what else?)
  • 16. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers FONT FORMATS 16 Types Type 1(.pfm, .pfb): glyphs are described with cubic Bézier curves True Type (.ttf): glyphs are described with quadratic Bézier curves Open Type (.otf): glyphs are described with quadratic or cubic Bézier curves Web Open Font (.woff): compressed TrueType or Open Type And many more actually… Cubic Bézier curves Quadratic Bézier curves The Missing Guide to Font Formats
  • 17. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers A PRIMER ON BÉZIER CURVES 17 Sergei Natanovich Bernstein (1912) / Paul de Casteljau (1959) / Pierre Bézier (1962) A Bézier curve is defined by a set of control points P0 through Pn, where n is called its order. The first and last control points are always the end points of the curve. Some related problems: signed distance, thick curves, subdivision, bounding box, linear speed, self-intersection, curve splitting, arc length, approximation of a cubic with quadratics, etc. Pomax (2017) A primer on Bézier curves Linear (n=1): BP0/P1(t) = (1-t)P0 + tP1 Quadratic (n=2): BP0/P1/P2(t) = (1-t)BP0/P1(t) + tBP1/P2(t) Cubic(n=3): BP0/P1/P2/P3(t) = (1-t)BP0/P1/P2(t) + tBP1/P2/P3(t) P1 P0 P2 P3P0 P1 P2P0 P1
  • 18. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers A PRIMER ON BÉZIER CURVES 18 Cubic Bézier curves have a lot of corner cases: inflection points, cusp, loop, overlap Pomax (2017) A primer on Bézier curves P1 P0 P2 P3 P1 P0 P2 P3 P1 P0 P2 P3 P1 P0 P2 P3 P1 P0 P2 P3 P1 P0 P2 P3
  • 19. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ANATOMY OF A GLYPH 19 Vector fonts are collections of vector images, consisting of lines and curves defining the boundary of glyphs (wikipedia). Type 1 and Type 3 Postscript fonts are described with cubic Bézier curves. Truetype fonts are described with quadratic Bézier curves. Images by The Australian Graphic Supply Co Images by FontLab
  • 20. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers FONT TABLES 20 Open Type Tables BASE: Baseline data CMAP: Character to glyph mapping GDEF: Glyph definition data GSUB: Glyph substitution data Single: Replaces one glyph with one glyph. Multiple: Replaces one glyph with more than one glyph. Alternate: Replaces one glyph with one of many glyphs. Ligature: Replaces multiple glyphs with one glyph. Context: Replaces one or more glyphs in context. Chaining: Replaces one or more glyphs in chained context. GPOS: Glyph positioning data JSTF: Justification data 
 and many more… Libraries STB_truetype (single header file, basic support) → https://github.com/nothings/stb FreeType (standard support without text shaping) → https://www.freetype.org HarfBuzz (advanced support with text shaping) → https://harfbuzz.github.io
  • 21. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers TEXT RENDERING PIPELINE 21 Itemization Reordering Shaping Justification Rendering Text Buffer 45 6E 67 6C 69 73 68 20 D9 8A D8 A8 D8 B1 D8 B9 20 31 32 33 English ‫ع‬ ‫ر‬ ‫ب‬ ‫ي‬ 123 ‫ع‬ ‫ر‬ ‫ب‬ ‫ي‬English 123 ‫ع‬ ‫ر‬ ‫ب‬ ‫ي‬English 123 ‫عربي‬English 123 ‫عربي‬ English 123 1 2 3 4 5 6 ‫ي‬‫ب‬‫ر‬‫ع‬ English 123 Latin Shortcut
  • 22. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers PART I 22 Image by Daniel Ullrich commons.wikimedia.org/wiki/User:Threedots Near the end of the last century (1997), Mark Kilgard introduced a simple OpenGL-based API for texture mapped text. The method packed many rasterized glyphs into a single alpha-only texture map and used a lookup table to assign texture coordinates to a quadrilateral to extract a glyph when rendering.
  • 23. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers 2D RASTERIZATION 23 Same input, different outputs FreeType Native CFF Rasterizer  FreeType Light Auto Hint Rasterizer FreeType using the New Adobe CFF Rasterizer (2013)
  • 24. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers 2D RASTERIZATION 24 GDI rendering of FacitWeb (above) and Minion Pro (below) with no antialiasing. (Source Adobe Typekit Blog)
  • 25. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers 2D RASTERIZATION 25 GDI rendering of FacitWeb (above) and Minion Pro (below) with standard antialiasing. (Source Adobe Typekit Blog)
  • 26. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers 2D RASTERIZATION 26 Core text rendering of FacitWeb (above) and Minion Pro (below). (Source Adobe Typekit Blog)
  • 27. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers 2D RASTERIZATION 27 DirectWrite rendering of FacitWeb (above) and Minion Pro (below). (Source Adobe Typekit Blog)
  • 28. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers 2D RASTERIZATION 28 GDI rendering of FacitWeb (above) and Minion Pro (below) with ClearType enabled. (Source Adobe Typekit Blog)
  • 29. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers 2D RASTERIZATION 29 Gamma correction, hinting, energy distribution, etc.
  • 30. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers TEXTURE FONT I 30 Texture mapping is well suited for rendering text because textures can be rendered quickly with current 3D hardware and even via clever programming of today's fast CPUs. Textures can be stretched. rotated, scaled, and even projected (assuming the texture mapping is perspective correct) so that texture mapped text looks reasonable in 3D scenes. https://github.com/rougier/freetype-gl Kilgard (1997) A Simple OpenGL-based API for Texture Mapped Text
  • 31. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers BIN PACKING ALGORITHMS 31 Several algorithms that can be used to solve the problem of packing rectangles into two- dimensional finite bins. Most of the algorithms have well been studied in literature, but some of the variants are less known and some are apparently regarded as "folklore" and no previous reference is known. Different variants are presented and compared. Naïve packing Skyline-BL packing Jylänky (2010) A Thousand Ways to Pack the Bin
  • 32. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers TEXTURE FONT II 32 When displaying text on low-resolution devices (DPI < 150), one typically has to decide if one wants to respect the pixel grid (e.g., Cleartype technology / Microsoft / native hinting) for crisp rendering or, to privilege glyph shapes (Quartz technology / Apple / no hinting) at the cost of blurring. There is, however, a third way that may combine the best of the two technologies (vertical hinting). No hinting Native hinting Auto hinting Vertical hinting Rougier (2013) Higher Quality 2D Text Rendering
  • 33. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers TEXTURE FONT II 33 i. Use horizontal RGB sub-pixel anti-aliasing for LCD flat panels. ii. Use vertical hinting only and completely discard the horizontal one. iii. Use accurate glyph advance values from unhinted glyph iv. Use accurate, high resolution values from the kerning table. Rougier (2013) Higher Quality 2D Text Rendering
  • 34. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers TEXTURE FONT II 34 Subpixel rendering on the CPU Subpixel positioning on the GPU Rougier (2013) Higher Quality 2D Text Rendering
  • 35. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers PART II 35 Work & image by Xavier Casalta casaltaxavier.com Distance based rendering takes advantage of a signed distance function (that can be approximated) to compute the individual coverage for each pixel. The coverage can be selected to implement various effects (stroke, thinner, thicker, shadow, etc)
  • 36. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers DISTANCE BASED RENDERING 36 Distance based rendering takes advantage of a signed distance function (that can be approximated) to compute the individual coverage for each pixel. The coverage can be selected to implement various effects (stroke, thinner, thicker, shadow, etc)
  • 37. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers COMPUTING SDF 37 We present a modified distance measure for use with distance transforms of anti-aliased, area sampled grayscale images of arbitrary binary contours. The modified measure can be used in any vector-propagation Euclidean distance transform. Our test implementation in the traditional SSED8 algorithm shows a considerable improvement in accuracy and homogeneity of the distance field compared to a traditional binary image transform. See also http://contourtextures.wikidot.com Gustavson & Strand (2011) Anti-Aliased Euclidean distance transform
  • 38. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers SINGLE CHANNEL SDF 38 A distance field is generated from a high resolution image, and then stored into a channel of a lower-resolution texture. In the simplest case, this texture can then be rendered simply by using the alpha- testing and alpha-thresholding feature of modern GPUs, without a custom shader. This allows the technique to be used on even the lowest-end 3D graphics hardware. With the use of programmable shading, the technique is extended to perform various special effect renderings, including soft edges, outlining, drop shadows, multi-colored images, and sharp corners. Alpha blended Alpha tested (no shader) Alpha tested (shader)64x64 64x64 64x64 Green (2007) Improved Alpha-Tested Magnification for Vector Textures
  • 39. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers SDF: MULTIPLE CHANNELS 39 Plane partioningEdge Coloring Decomposition Padded DecompositionInner padding Chlumsky (2015) Shape Decomposition for Multi-channel Distance Fields
  • 40. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers SDF: MULTIPLE CHANNELS 40 Chlumsky (2015) Shape Decomposition for Multi-channel Distance Fields Texture Single channel SDF Multi channel SDF
  • 41. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ARC APPROXIMATION 41 Since distance to arbitrary Bézier curves is hard, we can instead first convert a glyph into (approximated) circular arc splines and upload this converted vector glyph to the GPU. Distance are then computed onto the GPU. Corner cases are overlapping contours, tangent arcs and float precision. Esfahbod (2012) Glyphy Mean size is ~25 segments Mean size is ~8 arcs
  • 42. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ARC APPROXIMATION 42 SDF-based antialiasing + subpixel positioning + random access (coarse grid). Esfahbod (2012) Glyphy
  • 43. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers ARC APPROXIMATION 43 Drawback: Memory and speed are font dependent Esfahbod (2012) Glyphy
  • 44. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers PART III 44 Image by Black[Foundry] black-foundry.com Charles Loop and Jim Blinn introduced in 2005 a new approach for resolution-independent rendering of quadratic and cubic spline curves. By tessellating a glyph the proper way, they offered de facto a method for resolution independent rendering of a glyph with good rendering quality. AA
  • 45. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers GPU FRIENDLY 45 We present a method for resolution independent rendering of paths and bounded regions, defined by quadratic and cubic spline curves, that leverages the parallelism of programmable graphics hardware to achieve high performance. Our result is a mechanism for rendering vector geometry that has the following properties: resolution independence, compact geometric representation, high performance. Loop & Blinn (2005) Resolution Independent Curve Rendering
  • 46. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers GPU FRIENDLY 46 We determine if the pixel is inside or outside the curve by evaluating f(u, v) = u² − v in a pixel shader program. If f (u, v) < 0 then the pixel is inside the curve, otherwise it is outside. See also "Rendering Vector Art on the GPU" (Charles Loop & Jim Blinn, GPU Gems 3, Chapter 25) “Easy Scalable Text Rendering on the GPU” (Evan Wallace Medium) Loop & Blinn (2005) Resolution Independent Curve Rendering
  • 47. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers This sketch presents a new method for resolution independent rendering of vector images suitable for programmable graphics hardware. We have enhanced a previous method [Loop and Blinn 2005] by using a stencil buffer and transparency multisampling. GPU FRIENDLY 47 Kokojima et al (2006) Resolution Independent Rendering of Deformable Vector Objects(a) (b) (c) (d) (e) (f) Color Buffer Processing Stencil Image (Figure 1(f)) Vector Object (Figure 1(a)) Curve-Edged Triangles (Figure 1(c)) Line-Edged Triangle Fans (Figure 1(b)) CPU Process GPU Process Alpha Image Alpha to Coverage Stencil Buffer Processing Alpha Assignment Triangulation (a) (b) (c) (d) (e) (f) Color Buffer Processing Stencil Image (Figure 1(f)) Vector Object (Figure 1(a)) Curve-Edged Triangles (Figure 1(c)) Line-Edged Triangle Fans (Figure 1(b)) Alpha Image Alpha to Stencil Buffer Processing Alpha Triangulation (a) (b) (c) (d) (e) (f) Color Buffer Processing Stencil Image (Figure 1(f)) Vector Object (Figure 1(a)) Curve-Edged Triangles (Figure 1(c)) Line-Edged Triangle Fans (Figure 1(b)) CPU Process GPU Process Alpha Image Alpha to Coverage Stencil Buffer Processing Alpha Assignment Triangulation
  • 48. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers This sketch presents a new method for resolution independent rendering of vector images suitable for programmable graphics hardware. We have enhanced a previous method [Loop and Blinn 2005] by using a stencil buffer and transparency multisampling. GPU FRIENDLY 48 Kokojima et al (2006) Resolution Independent Rendering of Deformable Vector Objects Animations by Evan Wallace (Easy Scalable Text Rendering on the GPU)
  • 49. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers GPU FRIENDLY 49 We present a vector graphics representation suitable for real-time rendering on GPUs. Our representation can be used in place of a texture map, and renders precise antialiased edges at any magnification. A combination of texture data and procedural computation is used to evaluate an exact signed distance to a contour and its gradient. Anisotropic antialiasing technique + GPU-based representation of contours + Packed grid accelerator structure based + Sprite mapping technique + Special effects Qin et al (2006) Real-Time Texture-Mapped Vector Glyphs
  • 50. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers We introduce a two-step “Stencil, then Cover” (StC) programming interface. Our GPU-based approach builds upon existing techniques for curve rendering using the stencil buffer, but we explicitly decouple in our programming interface the stencil step to determine a path’s filled or stroked coverage from the subsequent cover step to rasterize conservative geometry intended to test and reset the coverage determinations of the first step while shading color samples within the path. GPU FRIENDLY 50 Kilgard & Bolz (2012) GPU-accelerated Path Rendering
  • 51. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers GPU ONLY 51 This paper describes a method for rendering antialiased text directly from glyph outline data on the GPU without the use of any precomputed texture images or distance fields. This capability is valuable for text displayed inside a 3D scene because, in addition to a perspective projection, the transform applied to the text is constantly changing with a dynamic camera view. Our method overcomes numerical precision problems that produced artefacts in previously published techniques and promotes high GPU utilization with an implementation that naturally avoids divergent branching. See demo at sluglibrary.com See also GPU-Centered font rendering & GPU font rendering Lengyel (2017) GPU-Centered Font Rendering Directly from Glyph Outlines
  • 52. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers GPU ONLY 52 “Today I’m pleased to announce Pathfinder, a Rust library for OpenType font rendering. The goal is nothing less than to be the fastest vector graphics renderer in existence, and the results so far are extremely encouraging. Not only is it very fast according to the traditional metric of raw rasterization performance, it’s practical, featuring very low setup time (end-to-end time superior to the best CPU rasterizers), best-in-class rasterization performance even at small glyph sizes, minimal memory consumption (both on CPU and GPU), compatibility with existing font formats, portability to most graphics hardware manufactured in the past five years (DirectX 10 level), and security/safety.” Walton (2017) Pathfinder, a fast GPU-based font rasterizer in Rust
  • 53. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers GPU ONLY 53 PathFinder algorithm takes advantage of compute shaders (GL 4.3) & post-transform cache and rasterization occurs on the fly on the GPU. CPU setup time is minimal. Subpixel antialiasing & positionning, 2D, 3D, outline, etc. It is mostly a (highly efficient) translation of CPU rasterization onto the GPU. Walton (2017) Pathfinder, a fast GPU-based font rasterizer in Rust Rasterization time, Arial Pathfinder (GPU) Loop-Blinn (GPU) GLyphy (GPU) font.rs (CPU) FreeType (CPU) stb_truetype (CPU) 40 80 120 160 200 0 12.5 25 37.5 50 Font size (px) Rasterizationtime(µs/glyph) Setup and rasterization time, Arial 24px Setup time Rasterization time Pathfinder (GPU) Loop-Blinn (GPU) GLyphy (GPU) font.rs (CPU) FreeType (CPU) stb_truetype (CPU) 0 1.5 3 4.5 6 7.5 Time(µs/glyph)
  • 54. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers BEYOND MERE GEOMETRY 54 We present an algorithm for creating digital micrography images, or micrograms, a special type of calligrams created from minuscule text. These attractive text-art works successfully combine beautiful images with readable meaningful text. Maharik et al (2011) Digital Micrography
  • 55. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers
 CONCLUSION 55 Television typography by Offstock www.flickr.com/photos/126275939@N05 Offset lithography Gravure Flexography Electrophotographic (laser) Inkjet Engraving Thermography LCD Display Many available techniques. Choice is dependent of usage (2D or 3D, dynamic or static, memory vs speed vs accuracy, etc). PathFinder and Slug library seem to be the main players in 2018. Loop & Blinn still competitive. Hinting and anti-aliasing still needed until we (all) get screen with dpi > 600. Complex text layout is (really, really) difficult, you don’t want to do it yourself: github.com/HOST- Oman/libraqm Lot of patents around !
  • 56. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers
 FURTHER READING 56 Web Texts Rasterization Exposures - Maxim Shemanarev (2006) The Technology of Text - Kevin Larson (2007) Treatise on Font Rasterisation - Freddie Witherden (2010) State of Text Rendering - Behdad Esfahbod (2012) CS 354 Typography - Mark Kilgard (2012) High-DPI, Subpixel Text Positioning, Hinting - Behdad Esfahbod (2012) Android’s Font Renderer - Romain Guy (2014) Complex Text on Simple Devices - Pedro Navarro (2016) Introducing DirectWrite - Microsoft (2017) A Primer on Bézier curves - Pomax (2017) Papers Mark Kilgard. A Simple OpenGL-based API for Texture Mapped Text (1997) Sarah F. Frisken, et al. Adaptively sampled distance fields (2000)
 Charles Loop and Jim Blinn. Resolution Independent Curve Rendering (2005) 
 Zhipei Qin et al, Real-Time Texture-Mapped Vector Glyphs (2006) Chris Green. Improved Alpha-Tested Magnification for Vector Textures and Special Effects (2007) Behdad Esfahbod. Glyphy (2011)
 Ron Maharik et al. Digital Micrography (2011)
 Stefan Gustavson. 2D Shape Rendering by Distance Fields (2012)
 Mark Kilgard and Jeff Bolz. GPU-Accelerated Path Rendering (2012) Nicolas P. Rougier. Higher Quality 2D Text Rendering (2013) Viktor Chlumsky. Shape Decomposition for Multi-channel Distance Fields (2015) Eric Lengyel. GPU-Centered Font Rendering Directly from Glyph Outlines (2017) Patrick Walton. Path Finder (2017)
  • 57. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers
 RELATED SHADERTOYS 57 www.shadertoy.com/view/MdycWh www.shadertoy.com/view/Mt2GWD www.shadertoy.com/view/4s3XDn www.shadertoy.com/view/4sVyWh www.shadertoy.com/view/ldXyRn www.shadertoy.com/view/llyXDV www.shadertoy.com/view/4dfXDn www.shadertoy.com/view/XdXGRB www.shadertoy.com/view/4ts3DB
  • 58. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers
 QUESTIONS? 58 • Where to find good fonts? dafont.com, fontsquirrel.com • When does cleartype patent end ? Not clear (ha ha) • Are hinting and aliasing still needed? Yes • What are the most complete font families? Noto, DejaVu • How many languages in the world? Around 7000 • How many scripts in latest unicode (11.0)? 146 • How many characters in latest unicode (11.0)? 137,439 • Is there any forthcoming support for text in Vulkan ? No • Should I tell my colleagues I love Comic Sans? No • Are there any open source tools to design fonts? FontForge • Why “ff” & “fi” disappear when I copy text ? Ligatures • Should I apply AA before or after gamma correction? Before • Should I stay or should I go? stay (a few more minutes) Any other questions?
  • 59. DIGITAL TYPOGRAPHY N. ROUGIER (INRIA) & B. ESFAHBOD (GOOGLE) /60 INTRODUCTION • Digital Typography • Font Types & Formats • Text Rendering Pipeline
 PART I : TEXTURE BASED • Rasterization • Fast & Versatile (but ugly) • Fast & Beaufitul (but only 2D)
 PART II : DISTANCE BASED • Signed Distance Fields • Single Channel • Arc approximation • Multiple Channels
 PART III : GEOMETRY BASED • Bézier curves & glyphs • GPU friendly • GPU only
 CONCLUSION • Beyond this course • Questions & answers
 DIGITAL TYPOGRAPHY 59 Between art & design. Raghed Abu HamdanGary Hustwit Unknown artist
  • 60. Digital Typography Rendering - Nicolas P. Rougier & Behdad Esfahbod SIGGRAPH '18 Course - August 12-16, 2018 - Vancouver, BC, Canada - 10.1145/3214834.3214837 Copyright 2018 © N.P Rougier & B.Esfahbod - Creative Commons Attribution 4.0 International