Git Product home page Git Product logo

node-font2svg's Introduction

font2svg

Dependency Status devDependency Status

Create a SVG subset font from a font file

var fs = require('fs');
var font2svg = require('font2svg');

var buf = fs.readFileSync('path/to/font.otf');

font2svg(buf, {include: ['A', 'B', 'C', '0', '1', '2']}, function(err, result) {
  if (err) {
    throw err;
  }

  result.toString(); //=> '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<svg>\n  <font ... '
});

Requirements

Before installing this module, you should install tx (a part of Adobe Font Development Kit for OpenType):

The FDK requires:

Mac OSX 10.4.x or later, or Windows XP or later

After installation, run tx -v command to check if tx has been installed successfully.

Installation

NPM version

Use npm.

npm install font2svg

API

var font2svg = require('font2svg');

font2svg(buffer[, options], callback)

buffer

Type: Buffer of a font file

Supported font formats depend on tx:

Conversion of font data represented in the following formats is supported: PFA, PFB, LWFN-POST, FFIL-sfnt, OTF, TTF, TTC, and AppleSingle/Double-sfnt. sfnt-formatted fonts with header versions of the following kinds are supported: 1.0, true, ttcf, typ1, CID, and OTTO. Note that OCF is not supported by tx.

options

In addition to the following, all options for child_process.exec except for encoding are available.

Note that maxBuffer option is 300000000 by default, unlike the original value (200*1024).

options.include

Type: String or Array of String
Default: []

The characters to be included in the SVG font subset.

options.fontFaceAttr

Type: Object
Default: {}

Set the attributes of font-face element.

font2svg(fontBuffer, {
  fontFaceAttr: {
    'font-weight': 'bold',
    'underline-position': '-100'
  }
}, function(err, result) {
  result.toString(); //=> ... <font-face ... font-weight="bold" underline-position="-100"> ...
});

Every key of the object must be a valid attribute name of font-face element.

// It throws an error because `font-weeight` is not a valid name of `font-face` element.
font2svg(fontBuffer, {'font-weeight': 'bold'}, callback);

options.encoding

Type: String
Default: null

Set encoding of the result (Buffer by default).

callback(error, svgData)

error: Error
svgData: Buffer or String (accoding to options.encoding)

var buf = fs.readFileSync('path/to/font.ttf');

font2svg(buf, {
  include: ['Hello, world.'],
  encoding: 'utf-8'
}, function(err, result) {
  result; //=> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<svg>\n  <font ... '
});

CLI

You can use this module as a CLI tool by installing it globally.

npm install -g font2svg

Usage

Usage1: font2svg <src path> <dest path> --include <string>
Usage2: font2svg <src path>  --include <string> > <dest path>
Usage3: cat <src path> | font2svg <dest path> --include <string>
Usage4: cat <src path> | font2svg --include <string> > <dest path>

Options:
--include, -in, -i -g <string>  Specify the characters to be included
--(attribute name)    <string>  Set attribute of font-face element
                                Example: --font-weight bold --units-per-em 980

--help,         -h              Print usage information
--version,      -v              Print version

Examples

font2svg src-font.otf dest-font.svg --include "foobar" --font-weight bold 
cat src-font.ttf | font2svg --include "bazqux" > dest-font.svg 

License

Copyright (c) 2014 Shinnosuke Watanabe

Licensed under the MIT License.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.