ujazdowskip / node-fontnik

Fonts ⇢ protobuf-encoded SDF glyphs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

node-fontnik

NPM Build Status Coverage Status

A library that delivers a range of glyphs rendered as SDFs (signed distance fields) in a protocol buffer. We use these encoded glyphs as the basic blocks of font rendering in Mapbox GL. SDF encoding is superior to traditional fonts for our usecase terms of scaling, rotation, and quickly deriving halos - WebGL doesn't have built-in font rendering, so the decision is between vectorization, which tends to be slow, and SDF generation.

The approach this library takes is to parse and rasterize the font with Freetype (hence the C++ requirement), and then generate a distance field from that rasterized image.

API

Installing

By default, installs binaries. On these platforms no external dependencies are needed.

  • 64 bit OS X or 64 bit Linux
  • Node.js v0.10.x, v0.12.x, v4.x or v5.x

Just run:

npm install

However, other platforms will fall back to a source compile: see building from source for details.

Building from source

Make sure you have boost, freetype, and protobuf installed. With Homebrew, you can type brew install boost --c++11 freetype protobuf --c++11. The Makefile uses pkg-config to find these libraries and links dynamically to them, so make sure that pkg-config can find them.

npm install --build-from-source

Background reading

About

Fonts ⇢ protobuf-encoded SDF glyphs

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 50.1%Language:JavaScript 37.0%Language:Python 5.7%Language:Shell 5.7%Language:Protocol Buffer 1.5%