Out of necessity I've created my own library called opentype.js. It parses OpenType and TrueType fonts. PostScript and WOFF will be supported in the future.
Here's how it parses a typeface:
- Load the
.ttf
/ .otf
file using a XMLHttpRequest
.
- Parse the
glyf
and loca
table to extract the letter shapes (glyphs).
- Parse the
cname
table which contains the mapping from characters to glyphs.
- Parse the
head
and hmtx
table to get the metrics, basically the spacing between each letter.
Then it can create a bézier path:
- Convert the letters of the text into glyphs.
- Convert the coordinates of the glyph to quadratic curves.
- Adjust the spacing using kerning information.
This results in a path that you can draw using the HTML5 canvas:
var font = opentype.parseFont(arrayBuffer);
var path = font.getPath("Hello, World!", {x:0, y:150, fontSize:72});
path.draw(ctx);
The demo website has a live example.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…