fonttools-linux
Version:
Native bindings to `fonttools` to decompile and compile fonts.
69 lines (45 loc) • 1.93 kB
Markdown
# `node-fonttools`
> Native bindings to [`fonttools`][1] to decompile and compile fonts.
## How It Works
[`fonttools`][1] (also known as TTX) is a library for manipulating fonts,
written in Python. It supports TrueType, OpenType, AFM and to an extent Type 1,
and some Mac-specific formats. Using [Addons][2] it's possible to bridge Python
to Node, natively, using C++ and Python's [Python/C API][3]—which is
exactly what `node-fontools` does.
## Current Status
So far, the only functions that have been bridged are the abilities to decompile
fonts to XML and compile XML to font binary.
### Requirements
Python 2.7 is the only supported version at the moment.
## How To Use
```js
import fonttools from 'fonttools';
import { readFileSync } from 'fs';
// Get the `decompile` and `compile` methods
const { decompile, compile } = fonttools();
// Read a font file as a buffer
const fontBuffer = readFileSync('font.ttf');
// Decompile the font to another buffer
const fontXMLBuffer = decompile(fontBuffer);
// Insert logic here to manipulate font
// Compile font from an XML file as a buffer
const fontBinaryBuffer = compile(fontXMLBuffer);
// Insert logic to save font file buffer here
```
### `fonttools`
A function that takes a path to [`fonttools/Lib`][4] and returns an object with
two methods: `decompile` and `compile`. By default it uses the [included
submodule][5].
#### `decompile`
Takes a font file buffer and returns another buffer with the XML of the
decompiled font.
#### `compile`
Takes an XML file buffer and returns another buffer with the compiled font file
binary.
> More on [Node Buffers][6]
[1]: https://github.com/fonttools/fonttools
[2]: https://nodejs.org/api/addons.html
[3]: https://docs.python.org/2/c-api/
[4]: https://github.com/fonttools/fonttools/tree/master/Lib
[5]: https://github.com/dfrankland/node-fonttools/blob/master/.gitmodules
[6]: https://nodejs.org/api/buffer.html