Socket
Socket
Sign inDemoInstall

ttf2eot

Package Overview
Dependencies
1
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.0.0 to 3.1.0

231

index.js

@@ -7,5 +7,4 @@ /*

'use strict';
'use strict'
/**

@@ -15,14 +14,14 @@ * Offsets in EOT file structure. Refer to EOTPrefix in OpenTypeUtilities.cpp

var EOT_OFFSET = {
LENGTH: 0,
FONT_LENGTH: 4,
VERSION: 8,
CHARSET: 26,
MAGIC: 34,
FONT_PANOSE: 16,
ITALIC: 27,
WEIGHT: 28,
UNICODE_RANGE: 36,
LENGTH: 0,
FONT_LENGTH: 4,
VERSION: 8,
CHARSET: 26,
MAGIC: 34,
FONT_PANOSE: 16,
ITALIC: 27,
WEIGHT: 28,
UNICODE_RANGE: 36,
CODEPAGE_RANGE: 52,
CHECKSUM_ADJUSTMENT: 60
};
}

@@ -33,33 +32,33 @@ /**

var SFNT_OFFSET = {
// sfntHeader:
NUMTABLES: 4,
// sfntHeader:
NUMTABLES: 4,
// TableDirectoryEntry
TABLE_TAG: 0,
TABLE_OFFSET: 8,
TABLE_LENGTH: 12,
// TableDirectoryEntry
TABLE_TAG: 0,
TABLE_OFFSET: 8,
TABLE_LENGTH: 12,
// OS2Table
OS2_WEIGHT: 4,
OS2_FONT_PANOSE: 32,
OS2_UNICODE_RANGE: 42,
OS2_FS_SELECTION: 62,
// OS2Table
OS2_WEIGHT: 4,
OS2_FONT_PANOSE: 32,
OS2_UNICODE_RANGE: 42,
OS2_FS_SELECTION: 62,
OS2_CODEPAGE_RANGE: 78,
// headTable
HEAD_CHECKSUM_ADJUSTMENT: 8,
// headTable
HEAD_CHECKSUM_ADJUSTMENT: 8,
// nameTable
NAMETABLE_FORMAT: 0,
NAMETABLE_COUNT: 2,
NAMETABLE_STRING_OFFSET: 4,
// nameTable
NAMETABLE_FORMAT: 0,
NAMETABLE_COUNT: 2,
NAMETABLE_STRING_OFFSET: 4,
// nameRecord
NAME_PLATFORM_ID: 0,
NAME_ENCODING_ID: 2,
NAME_LANGUAGE_ID: 4,
NAME_NAME_ID: 6,
NAME_LENGTH: 8,
NAME_OFFSET: 10
};
// nameRecord
NAME_PLATFORM_ID: 0,
NAME_ENCODING_ID: 2,
NAME_LANGUAGE_ID: 4,
NAME_NAME_ID: 6,
NAME_LENGTH: 8,
NAME_OFFSET: 10
}

@@ -70,8 +69,8 @@ /**

var SIZEOF = {
SFNT_TABLE_ENTRY: 16,
SFNT_HEADER: 12,
SFNT_NAMETABLE: 6,
SFNT_NAMETABLE_ENTRY: 12,
SFNT_TABLE_ENTRY: 16,
SFNT_HEADER: 12,
SFNT_NAMETABLE: 6,
SFNT_NAMETABLE_ENTRY: 12,
EOT_PREFIX: 82
};
}

@@ -82,7 +81,7 @@ /**

var MAGIC = {
EOT_VERSION: 0x00020001,
EOT_MAGIC: 0x504c,
EOT_CHARSET: 1,
LANGUAGE_ENGLISH: 0x0409
};
EOT_VERSION: 0x00020001,
EOT_MAGIC: 0x504c,
EOT_CHARSET: 1,
LANGUAGE_ENGLISH: 0x0409
}

@@ -93,14 +92,14 @@ /**

*/
function strbuf(str) {
var arr = Buffer.alloc(str.length + 4);
function strbuf (str) {
var arr = Buffer.alloc(str.length + 4)
arr.writeUint16LE(str.length, 0);
arr.writeUint16LE(str.length, 0)
for (var i = 0; i < str.length; i += 2) {
arr.writeUint16LE(str.readUint16BE(i), i + 2);
arr.writeUint16LE(str.readUint16BE(i), i + 2)
}
arr.writeUint16LE(0, arr.length - 2);
arr.writeUint16LE(0, arr.length - 2)
return arr;
return arr
}

@@ -114,53 +113,55 @@

//
function ttf2eot(arr) {
arr = Buffer.from(arr.buffer, arr.byteOffset, arr.length);
function ttf2eot (arr) {
arr = Buffer.from(arr.buffer, arr.byteOffset, arr.length)
var out = Buffer.alloc(SIZEOF.EOT_PREFIX, 0);
var i, j;
var out = Buffer.alloc(SIZEOF.EOT_PREFIX, 0)
var i, j
out.writeUint32LE (arr.length, EOT_OFFSET.FONT_LENGTH);
out.writeUint32LE (MAGIC.EOT_VERSION, EOT_OFFSET.VERSION);
out.writeUint8 (MAGIC.EOT_CHARSET, EOT_OFFSET.CHARSET);
out.writeUint16LE (MAGIC.EOT_MAGIC, EOT_OFFSET.MAGIC);
out.writeUint32LE(arr.length, EOT_OFFSET.FONT_LENGTH)
out.writeUint32LE(MAGIC.EOT_VERSION, EOT_OFFSET.VERSION)
out.writeUint8(MAGIC.EOT_CHARSET, EOT_OFFSET.CHARSET)
out.writeUint16LE(MAGIC.EOT_MAGIC, EOT_OFFSET.MAGIC)
var familyName = Buffer.of(0),
subfamilyName = Buffer.of(0),
fullName = Buffer.of(0),
versionString = Buffer.of(0);
var familyName = Buffer.of(0)
var subfamilyName = Buffer.of(0)
var fullName = Buffer.of(0)
var versionString = Buffer.of(0)
var haveOS2 = false,
haveName = false,
haveHead = false;
var haveOS2 = false
var haveName = false
var haveHead = false
var numTables = arr.readUint16BE (SFNT_OFFSET.NUMTABLES);
var numTables = arr.readUint16BE(SFNT_OFFSET.NUMTABLES)
for (i = 0; i < numTables; ++i) {
var data = arr.subarray(SIZEOF.SFNT_HEADER + i * SIZEOF.SFNT_TABLE_ENTRY);
var data = arr.subarray(SIZEOF.SFNT_HEADER + i * SIZEOF.SFNT_TABLE_ENTRY)
var tableEntry = {
tag: String.fromCharCode.apply(null, data.subarray(SFNT_OFFSET.TABLE_TAG, SFNT_OFFSET.TABLE_TAG + 4)),
offset: data.readUint32BE (SFNT_OFFSET.TABLE_OFFSET),
length: data.readUint32BE (SFNT_OFFSET.TABLE_LENGTH)
};
offset: data.readUint32BE(SFNT_OFFSET.TABLE_OFFSET),
length: data.readUint32BE(SFNT_OFFSET.TABLE_LENGTH)
}
var table = arr.subarray(tableEntry.offset, tableEntry.offset + tableEntry.length);
var table = arr.subarray(tableEntry.offset, tableEntry.offset + tableEntry.length)
if (tableEntry.tag === 'OS/2') {
haveOS2 = true;
haveOS2 = true
var OS2Version = table.readUint16BE()
for (j = 0; j < 10; ++j) {
out.writeUint8 (table.readUint8 (SFNT_OFFSET.OS2_FONT_PANOSE + j), EOT_OFFSET.FONT_PANOSE + j);
out.writeUint8(table.readUint8(SFNT_OFFSET.OS2_FONT_PANOSE + j), EOT_OFFSET.FONT_PANOSE + j)
}
/*jshint bitwise:false */
out.writeUint8 (table.readUint16BE (SFNT_OFFSET.OS2_FS_SELECTION) & 0x01, EOT_OFFSET.ITALIC);
out.writeUint32LE (table.readUint16BE (SFNT_OFFSET.OS2_WEIGHT), EOT_OFFSET.WEIGHT);
out.writeUint8(table.readUint16BE(SFNT_OFFSET.OS2_FS_SELECTION) & 0x01, EOT_OFFSET.ITALIC)
out.writeUint32LE(table.readUint16BE(SFNT_OFFSET.OS2_WEIGHT), EOT_OFFSET.WEIGHT)
for (j = 0; j < 4; ++j) {
out.writeUint32LE (table.readUint32BE (SFNT_OFFSET.OS2_UNICODE_RANGE + j * 4),
EOT_OFFSET.UNICODE_RANGE + j * 4);
out.writeUint32LE(table.readUint32BE(SFNT_OFFSET.OS2_UNICODE_RANGE + j * 4),
EOT_OFFSET.UNICODE_RANGE + j * 4)
}
for (j = 0; j < 2; ++j) {
out.writeUint32LE (table.readUint32BE (SFNT_OFFSET.OS2_CODEPAGE_RANGE + j * 4),
EOT_OFFSET.CODEPAGE_RANGE + j * 4);
if (OS2Version >= 1) {
for (j = 0; j < 2; ++j) {
out.writeUint32LE(table.readUint32BE(SFNT_OFFSET.OS2_CODEPAGE_RANGE + j * 4),
EOT_OFFSET.CODEPAGE_RANGE + j * 4)
}
}

@@ -170,25 +171,25 @@

haveHead = true;
out.writeUint32LE (table.readUint32BE (SFNT_OFFSET.HEAD_CHECKSUM_ADJUSTMENT), EOT_OFFSET.CHECKSUM_ADJUSTMENT);
haveHead = true
out.writeUint32LE(table.readUint32BE(SFNT_OFFSET.HEAD_CHECKSUM_ADJUSTMENT), EOT_OFFSET.CHECKSUM_ADJUSTMENT)
} else if (tableEntry.tag === 'name') {
haveName = true;
haveName = true
var nameTable = {
format: table.readUint16BE (SFNT_OFFSET.NAMETABLE_FORMAT),
count: table.readUint16BE (SFNT_OFFSET.NAMETABLE_COUNT),
stringOffset: table.readUint16BE (SFNT_OFFSET.NAMETABLE_STRING_OFFSET)
};
format: table.readUint16BE(SFNT_OFFSET.NAMETABLE_FORMAT),
count: table.readUint16BE(SFNT_OFFSET.NAMETABLE_COUNT),
stringOffset: table.readUint16BE(SFNT_OFFSET.NAMETABLE_STRING_OFFSET)
}
for (j = 0; j < nameTable.count; ++j) {
var nameRecord = table.subarray(SIZEOF.SFNT_NAMETABLE + j * SIZEOF.SFNT_NAMETABLE_ENTRY);
var nameRecord = table.subarray(SIZEOF.SFNT_NAMETABLE + j * SIZEOF.SFNT_NAMETABLE_ENTRY)
var name = {
platformID: nameRecord.readUint16BE (SFNT_OFFSET.NAME_PLATFORM_ID),
encodingID: nameRecord.readUint16BE (SFNT_OFFSET.NAME_ENCODING_ID),
languageID: nameRecord.readUint16BE (SFNT_OFFSET.NAME_LANGUAGE_ID),
nameID: nameRecord.readUint16BE (SFNT_OFFSET.NAME_NAME_ID),
length: nameRecord.readUint16BE (SFNT_OFFSET.NAME_LENGTH),
offset: nameRecord.readUint16BE (SFNT_OFFSET.NAME_OFFSET)
};
platformID: nameRecord.readUint16BE(SFNT_OFFSET.NAME_PLATFORM_ID),
encodingID: nameRecord.readUint16BE(SFNT_OFFSET.NAME_ENCODING_ID),
languageID: nameRecord.readUint16BE(SFNT_OFFSET.NAME_LANGUAGE_ID),
nameID: nameRecord.readUint16BE(SFNT_OFFSET.NAME_NAME_ID),
length: nameRecord.readUint16BE(SFNT_OFFSET.NAME_LENGTH),
offset: nameRecord.readUint16BE(SFNT_OFFSET.NAME_OFFSET)
}

@@ -198,17 +199,17 @@ if (name.platformID === 3 && name.encodingID === 1 && name.languageID === MAGIC.LANGUAGE_ENGLISH) {

nameTable.stringOffset + name.offset,
nameTable.stringOffset + name.offset + name.length));
nameTable.stringOffset + name.offset + name.length))
switch (name.nameID) {
case 1:
familyName = s;
break;
familyName = s
break
case 2:
subfamilyName = s;
break;
subfamilyName = s
break
case 4:
fullName = s;
break;
fullName = s
break
case 5:
versionString = s;
break;
versionString = s
break
}

@@ -218,7 +219,7 @@ }

}
if (haveOS2 && haveName && haveHead) { break; }
if (haveOS2 && haveName && haveHead) { break }
}
if (!(haveOS2 && haveName && haveHead)) {
throw new Error ('Required section not found');
throw new Error('Required section not found')
}

@@ -233,11 +234,11 @@

fullName,
Buffer.from([ 0, 0 ]),
Buffer.from([0, 0]),
arr
]);
])
eot.writeUint32LE (eot.length, EOT_OFFSET.LENGTH); // Calculate overall length
eot.writeUint32LE(eot.length, EOT_OFFSET.LENGTH) // Calculate overall length
return new Uint8Array(eot.buffer, eot.byteOffset, eot.length);
return new Uint8Array(eot.buffer, eot.byteOffset, eot.length)
}
module.exports = ttf2eot;
module.exports = ttf2eot
{
"name": "ttf2eot",
"version": "3.0.0",
"version": "3.1.0",
"description": "Convert TTF font to EOT",

@@ -22,4 +22,4 @@ "keywords": [

"scripts": {
"lint": "./node_modules/.bin/eslint .",
"test": "npm run lint && ./node_modules/.bin/mocha"
"lint": "standardx . -v",
"test": "npm run lint && mocha"
},

@@ -30,5 +30,5 @@ "dependencies": {

"devDependencies": {
"eslint": "^2.3.0",
"mocha": "^2.4.5"
"mocha": "^9.2.0",
"standardx": "^7.0.0"
}
}

@@ -8,16 +8,15 @@ #!/usr/bin/env node

'use strict';
'use strict'
var fs = require('fs');
var ArgumentParser = require('argparse').ArgumentParser;
var fs = require('fs')
var ArgumentParser = require('argparse').ArgumentParser
var ttf2eot = require('./index.js');
var ttf2eot = require('./index.js')
var parser = new ArgumentParser ({
var parser = new ArgumentParser({
add_help: true,
description: 'TTF to EOT font converter'
});
})
parser.add_argument (
parser.add_argument(
'infile',

@@ -28,5 +27,5 @@ {

}
);
)
parser.add_argument (
parser.add_argument(
'outfile',

@@ -37,5 +36,5 @@ {

}
);
)
parser.add_argument (
parser.add_argument(
'-v', '--version',

@@ -47,28 +46,27 @@ {

}
);
)
/* eslint-disable no-console */
var args = parser.parse_args();
var args = parser.parse_args()
var input;
var input
try {
if (args.infile) {
input = fs.readFileSync(args.infile);
input = fs.readFileSync(args.infile)
} else {
input = fs.readFileSync(process.stdin.fd);
input = fs.readFileSync(process.stdin.fd)
}
} catch (e) {
console.error("Can't open input file (%s)", args.infile || 'stdin');
process.exit(1);
console.error("Can't open input file (%s)", args.infile || 'stdin')
process.exit(1)
}
var eot = ttf2eot(input);
var eot = ttf2eot(input)
if (args.outfile) {
fs.writeFileSync(args.outfile, eot);
fs.writeFileSync(args.outfile, eot)
} else {
process.stdout.write(eot);
process.stdout.write(eot)
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc