ttfmeta

Node.js module and a library that extract metadata from ttf font file or buffer.
9,854 1
Install
npm install ttfmeta
Latest Version:1.1.2
Vue:3
Older releases:2
License:MIT
Last Updated:Dec 26, 2023
Links: GitHub  ·  npm
Maintainer: khensolomon

ttfmeta

A Node.js module and a library that extracted metadata from ttf font file or buffer. It is forked from trevordixon/ttfinfo and improve, add test. Check live Demo using Vue is available...

workflows-badge travis-badge npm-badge webpack-badge test-mocha

Feature

  • has TypeScript declarations
  • support both ESM and CommonJS including browser
  • Reading from file (or) buffer
  • Demo

Usage

Node.JS

Oops: ttfmeta export ES module from CommonJS built version.

export * from "./index.js";

import * as e from "./index.js";
export default e;

npm i ttfmeta can be require or import from your Node.JS application. However ttfmeta is assuming that one day npm might force us to seperate ES module and CommonJS. Therefore, it is a good practice to start coding Node.JS application using ES module.

// ES6
import ttfMeta from 'ttfmeta';
import {ttfInfo,promise} from 'ttfmeta';

// CommonJS
const ttfMeta = require('ttfmeta');
const {ttfInfo,promise} = require('ttfmeta');

Browser

Include the file ttfmeta@latest/min.js in your web application. It is available on UNPKG and jsDelivr.

Now let's assume that you have picked the jsDelivr one...

<script src="https://cdn.jsdelivr.net/npm/ttfmeta@latest/min.js"></script>

<input type="file" name="files[]" multiple />
<script>
  // window.ttfMeta;
  var file = 'blob or arrayBuffer';

  var reader = new FileReader();
  reader.onload = function(evt) {
    var arrayBuffer =  evt.target.result;
    var data = new DataView(arrayBuffer, 0, arrayBuffer.byteLength);
    window.ttfMeta.promise(data).then(
      e => console.log(e)
    ).catch(
      e=>console.log('error',e)
    )
  }
  reader.readAsArrayBuffer(file);
</script>

API

You may assure that the APIs are not going to change without a good reason for end user. So any exported methods and classes name will stays the same as the last updates.

Promise

the ttfMeta.promise(), promise()

ttfMeta.promise('file.ttf').then(
  result => console.log(result)
).catch(
  err => console.log('error',err)
);

// or
promise('file.ttf (or) buffer').then(
  result => console.log(result)
).catch(
  err => console.log('error',err)
);

ttfInfo

the ttfMeta.ttfInfo(), ttfInfo()

ttfMeta.ttfInfo('file.ttf', (err, result) => {
  if (err) {
    console.log('error', err)
  } else {
    console.log('result', result)
  }
});

// or
ttfInfo('file.ttf (or) buffer', (err, result) => ...);

Result

This result promise an object with meta and tables regardless.

{
  meta: {
    property: [
      { name: 'font-family', text: String },
      { name: 'font-subfamily', text: String },
      { name: 'unique-identifier', text: String },
      { name: 'full-name', text: String },
      { name: 'version', text: String },
      { name: 'postscript-name', text: String },
      { name: 'company', text: String },
      { name: 'author', text: String }
    ],
    description: [
      { name: 'title', text: String },
      { name: 'paragraph', text: String },
      ...
    ],
    license: [
      { name: 'title', text: String },
      { name: 'paragraph', text: String },
      ...
    ],
    reference: [
      { name: 'url', text: 'http://...' },
      ...
    ]
  },
  tables: {
    name: {
      '0': String,
      '1': String,
      '2': String,
      '3': String,
      '4': String,
      '5': String,
      '6': String,
      '7': String,
      '8': String,
      '9': String,
      ...
      '18': String
    },
    post: {
      format: Number,
      italicAngle: Number,
      underlinePosition: Number,
      underlineThickness: Number,
      isFixedPitch: Number,
      minMemType42: Number,
      maxMemType42: Number,
      minMemType1: Number,
      maxMemType1: Number
    },
    os2: { version: Number, weightClass: Number }
  }
}

License

shield-license

Related Packages

fontagon

Easy web icon font generator

41,530 23
vaxue

Promise based AJAX client for web browsers,especially optimized for Vue.js

1,770 0
unplugin-font-to-buffer

Import font files as Buffer.

1,355
vfonts

Integreted fonts for easy usage.

454,290
vue-gettext-extract

Generates gettext pot files for standard Vue projects

4,851 2

Version History

Version Released Vue License
1.1.2 ^3.3.4 MIT
1.1.1 ^3.3.4 MIT
1.1.0 ^3.2.47 MIT
1.0.9 ^3.2.45 MIT
1.0.8 ^3.2.45 MIT