Natural Preference for Minification
    Wondering what’s next for npm?Check out our public roadmap! »

    fontnik

    0.6.0 • Public • Published

    node-fontnik

    NPM Build Status codecov

    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 in 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.

    See also TinySDF, which is a faster but less precise approach to generating SDFs for fonts.

    API

    Installing

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

    • 64 bit OS X or 64 bit Linux
    • Node.js v8-v14

    Just run:

    npm install
    

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

    Building from source

    npm install --build-from-source
    

    Building from source should automatically install boost, freetype and protozero locally using mason. These dependencies can be installed manually by running ./scripts/install_deps.sh.

    Local testing

    Run tests with

    npm test
    

    If you make any changes to the C++ files in the src/ directory, you'll need to recompile the node bindings (fontnik.node) before testing locally:

    make
    

    See the Makefile for additional tasks you can run, such as make coverage.

    Background reading

    Install

    npm i fontnik

    DownloadsWeekly Downloads

    351

    Version

    0.6.0

    License

    none

    Unpacked Size

    66.5 kB

    Total Files

    26

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar