@capsizecss/unpack
Advanced tools
Comparing version 0.0.0-add-language-support-20231121023926 to 0.0.0-add-language-support-v2-20231129052138
@@ -5,3 +5,2 @@ 'use strict'; | ||
var sortKeys = require('sort-keys'); | ||
require('cross-fetch/polyfill'); | ||
@@ -13,3 +12,2 @@ var blobToBuffer = require('blob-to-buffer'); | ||
var sortKeys__default = /*#__PURE__*/_interopDefault(sortKeys); | ||
var blobToBuffer__default = /*#__PURE__*/_interopDefault(blobToBuffer); | ||
@@ -447,2 +445,3 @@ var fontkit__default = /*#__PURE__*/_interopDefault(fontkit); | ||
const supportedLanguages = Object.keys(weightings); | ||
const weightingForCharacter = (character, lang) => { | ||
@@ -469,10 +468,3 @@ if (!Object.keys(weightings[lang]).includes(character)) { | ||
}; | ||
const avgWidthByLang = font => { | ||
const xWidthAvgByLang = {}; | ||
Object.keys(weightings).forEach(lang => { | ||
xWidthAvgByLang[lang] = avgWidthForLang(font, lang); | ||
}); | ||
return xWidthAvgByLang; | ||
}; | ||
const unpackMetricsFromFont = font => { | ||
const unpackMetricsFromFont = (font, options) => { | ||
const { | ||
@@ -495,23 +487,44 @@ capHeight, | ||
xHeight, | ||
xWidthAvg: avgWidthForLang(font, 'en'), | ||
xWidthAvgByLang: sortKeys__default["default"](avgWidthByLang(font)) | ||
xWidthAvg: avgWidthForLang(font, options.language) | ||
}; | ||
}; | ||
const fromFile = path => fontkit__default["default"].open(path).then(unpackMetricsFromFont); | ||
const fromBlob = async blob => new Promise((resolve, reject) => { | ||
blobToBuffer__default["default"](blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit__default["default"].create(buffer))); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
const resolveOptions = options => { | ||
let language = 'en'; | ||
if (!options) { | ||
return { | ||
language | ||
}; | ||
} else if (options.language && supportedLanguages.includes(options.language)) { | ||
language = options.language; | ||
} else { | ||
throw new Error("Unsupported language \u201C".concat(options.language, "\u201D. Supported languages are: ").concat(supportedLanguages.join(', '))); | ||
} | ||
return { | ||
language | ||
}; | ||
}; | ||
const fromFile = (path, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return fontkit__default["default"].open(path).then(font => unpackMetricsFromFont(font, resolvedOptions)); | ||
}; | ||
const fromBlob = async (blob, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return new Promise((resolve, reject) => { | ||
blobToBuffer__default["default"](blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit__default["default"].create(buffer), resolvedOptions)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}); | ||
}); | ||
}); | ||
const fromUrl = async url => { | ||
}; | ||
const fromUrl = async (url, options) => { | ||
const response = await fetch(url); | ||
const resolvedOptions = resolveOptions(options); | ||
const blob = await response.blob(); | ||
return fromBlob(blob); | ||
return fromBlob(blob, resolvedOptions); | ||
}; | ||
@@ -522,1 +535,2 @@ | ||
exports.fromUrl = fromUrl; | ||
exports.supportedLanguages = supportedLanguages; |
@@ -1,2 +0,1 @@ | ||
import sortKeys from 'sort-keys'; | ||
import 'cross-fetch/polyfill'; | ||
@@ -435,2 +434,3 @@ import blobToBuffer from 'blob-to-buffer'; | ||
const supportedLanguages = Object.keys(weightings); | ||
const weightingForCharacter = (character, lang) => { | ||
@@ -457,10 +457,3 @@ if (!Object.keys(weightings[lang]).includes(character)) { | ||
}; | ||
const avgWidthByLang = font => { | ||
const xWidthAvgByLang = {}; | ||
Object.keys(weightings).forEach(lang => { | ||
xWidthAvgByLang[lang] = avgWidthForLang(font, lang); | ||
}); | ||
return xWidthAvgByLang; | ||
}; | ||
const unpackMetricsFromFont = font => { | ||
const unpackMetricsFromFont = (font, options) => { | ||
const { | ||
@@ -483,25 +476,46 @@ capHeight, | ||
xHeight, | ||
xWidthAvg: avgWidthForLang(font, 'en'), | ||
xWidthAvgByLang: sortKeys(avgWidthByLang(font)) | ||
xWidthAvg: avgWidthForLang(font, options.language) | ||
}; | ||
}; | ||
const fromFile = path => fontkit.open(path).then(unpackMetricsFromFont); | ||
const fromBlob = async blob => new Promise((resolve, reject) => { | ||
blobToBuffer(blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit.create(buffer))); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
const resolveOptions = options => { | ||
let language = 'en'; | ||
if (!options) { | ||
return { | ||
language | ||
}; | ||
} else if (options.language && supportedLanguages.includes(options.language)) { | ||
language = options.language; | ||
} else { | ||
throw new Error("Unsupported language \u201C".concat(options.language, "\u201D. Supported languages are: ").concat(supportedLanguages.join(', '))); | ||
} | ||
return { | ||
language | ||
}; | ||
}; | ||
const fromFile = (path, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return fontkit.open(path).then(font => unpackMetricsFromFont(font, resolvedOptions)); | ||
}; | ||
const fromBlob = async (blob, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return new Promise((resolve, reject) => { | ||
blobToBuffer(blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit.create(buffer), resolvedOptions)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}); | ||
}); | ||
}); | ||
const fromUrl = async url => { | ||
}; | ||
const fromUrl = async (url, options) => { | ||
const response = await fetch(url); | ||
const resolvedOptions = resolveOptions(options); | ||
const blob = await response.blob(); | ||
return fromBlob(blob); | ||
return fromBlob(blob, resolvedOptions); | ||
}; | ||
export { fromBlob, fromFile, fromUrl }; | ||
export { fromBlob, fromFile, fromUrl, supportedLanguages }; |
@@ -5,3 +5,2 @@ 'use strict'; | ||
var sortKeys = require('sort-keys'); | ||
require('cross-fetch/polyfill'); | ||
@@ -13,3 +12,2 @@ var blobToBuffer = require('blob-to-buffer'); | ||
var sortKeys__default = /*#__PURE__*/_interopDefault(sortKeys); | ||
var blobToBuffer__default = /*#__PURE__*/_interopDefault(blobToBuffer); | ||
@@ -447,2 +445,3 @@ var fontkit__default = /*#__PURE__*/_interopDefault(fontkit); | ||
const supportedLanguages = Object.keys(weightings); | ||
const weightingForCharacter = (character, lang) => { | ||
@@ -469,10 +468,3 @@ if (!Object.keys(weightings[lang]).includes(character)) { | ||
}; | ||
const avgWidthByLang = font => { | ||
const xWidthAvgByLang = {}; | ||
Object.keys(weightings).forEach(lang => { | ||
xWidthAvgByLang[lang] = avgWidthForLang(font, lang); | ||
}); | ||
return xWidthAvgByLang; | ||
}; | ||
const unpackMetricsFromFont = font => { | ||
const unpackMetricsFromFont = (font, options) => { | ||
const { | ||
@@ -495,27 +487,48 @@ capHeight, | ||
xHeight, | ||
xWidthAvg: avgWidthForLang(font, 'en'), | ||
xWidthAvgByLang: sortKeys__default["default"](avgWidthByLang(font)) | ||
xWidthAvg: avgWidthForLang(font, options.language) | ||
}; | ||
}; | ||
const fromFile = path => fontkit__default["default"].open(path).then(unpackMetricsFromFont); | ||
const fromBlob = async blob => new Promise((resolve, reject) => { | ||
blobToBuffer__default["default"](blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit__default["default"].create(buffer))); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
const resolveOptions = options => { | ||
let language = 'en'; | ||
if (!options) { | ||
return { | ||
language | ||
}; | ||
} else if (options.language && supportedLanguages.includes(options.language)) { | ||
language = options.language; | ||
} else { | ||
throw new Error("Unsupported language \u201C".concat(options.language, "\u201D. Supported languages are: ").concat(supportedLanguages.join(', '))); | ||
} | ||
return { | ||
language | ||
}; | ||
}; | ||
const fromFile = (path, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return fontkit__default["default"].open(path).then(font => unpackMetricsFromFont(font, resolvedOptions)); | ||
}; | ||
const fromBlob = async (blob, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return new Promise((resolve, reject) => { | ||
blobToBuffer__default["default"](blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit__default["default"].create(buffer), resolvedOptions)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}); | ||
}); | ||
}); | ||
const fromUrl = async url => { | ||
}; | ||
const fromUrl = async (url, options) => { | ||
const response = await fetch(url); | ||
const resolvedOptions = resolveOptions(options); | ||
if (typeof window === 'undefined') { | ||
const data = await response.arrayBuffer(); | ||
return unpackMetricsFromFont(fontkit__default["default"].create(Buffer.from(data))); | ||
return unpackMetricsFromFont(fontkit__default["default"].create(Buffer.from(data)), resolvedOptions); | ||
} | ||
const blob = await response.blob(); | ||
return fromBlob(blob); | ||
return fromBlob(blob, resolvedOptions); | ||
}; | ||
@@ -526,1 +539,2 @@ | ||
exports.fromUrl = fromUrl; | ||
exports.supportedLanguages = supportedLanguages; |
@@ -5,3 +5,2 @@ 'use strict'; | ||
var sortKeys = require('sort-keys'); | ||
require('cross-fetch/polyfill'); | ||
@@ -13,3 +12,2 @@ var blobToBuffer = require('blob-to-buffer'); | ||
var sortKeys__default = /*#__PURE__*/_interopDefault(sortKeys); | ||
var blobToBuffer__default = /*#__PURE__*/_interopDefault(blobToBuffer); | ||
@@ -447,2 +445,3 @@ var fontkit__default = /*#__PURE__*/_interopDefault(fontkit); | ||
const supportedLanguages = Object.keys(weightings); | ||
const weightingForCharacter = (character, lang) => { | ||
@@ -469,10 +468,3 @@ if (!Object.keys(weightings[lang]).includes(character)) { | ||
}; | ||
const avgWidthByLang = font => { | ||
const xWidthAvgByLang = {}; | ||
Object.keys(weightings).forEach(lang => { | ||
xWidthAvgByLang[lang] = avgWidthForLang(font, lang); | ||
}); | ||
return xWidthAvgByLang; | ||
}; | ||
const unpackMetricsFromFont = font => { | ||
const unpackMetricsFromFont = (font, options) => { | ||
const { | ||
@@ -495,27 +487,48 @@ capHeight, | ||
xHeight, | ||
xWidthAvg: avgWidthForLang(font, 'en'), | ||
xWidthAvgByLang: sortKeys__default["default"](avgWidthByLang(font)) | ||
xWidthAvg: avgWidthForLang(font, options.language) | ||
}; | ||
}; | ||
const fromFile = path => fontkit__default["default"].open(path).then(unpackMetricsFromFont); | ||
const fromBlob = async blob => new Promise((resolve, reject) => { | ||
blobToBuffer__default["default"](blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit__default["default"].create(buffer))); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
const resolveOptions = options => { | ||
let language = 'en'; | ||
if (!options) { | ||
return { | ||
language | ||
}; | ||
} else if (options.language && supportedLanguages.includes(options.language)) { | ||
language = options.language; | ||
} else { | ||
throw new Error("Unsupported language \u201C".concat(options.language, "\u201D. Supported languages are: ").concat(supportedLanguages.join(', '))); | ||
} | ||
return { | ||
language | ||
}; | ||
}; | ||
const fromFile = (path, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return fontkit__default["default"].open(path).then(font => unpackMetricsFromFont(font, resolvedOptions)); | ||
}; | ||
const fromBlob = async (blob, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return new Promise((resolve, reject) => { | ||
blobToBuffer__default["default"](blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit__default["default"].create(buffer), resolvedOptions)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}); | ||
}); | ||
}); | ||
const fromUrl = async url => { | ||
}; | ||
const fromUrl = async (url, options) => { | ||
const response = await fetch(url); | ||
const resolvedOptions = resolveOptions(options); | ||
if (typeof window === 'undefined') { | ||
const data = await response.arrayBuffer(); | ||
return unpackMetricsFromFont(fontkit__default["default"].create(Buffer.from(data))); | ||
return unpackMetricsFromFont(fontkit__default["default"].create(Buffer.from(data)), resolvedOptions); | ||
} | ||
const blob = await response.blob(); | ||
return fromBlob(blob); | ||
return fromBlob(blob, resolvedOptions); | ||
}; | ||
@@ -526,1 +539,2 @@ | ||
exports.fromUrl = fromUrl; | ||
exports.supportedLanguages = supportedLanguages; |
@@ -1,2 +0,1 @@ | ||
import sortKeys from 'sort-keys'; | ||
import 'cross-fetch/polyfill'; | ||
@@ -435,2 +434,3 @@ import blobToBuffer from 'blob-to-buffer'; | ||
const supportedLanguages = Object.keys(weightings); | ||
const weightingForCharacter = (character, lang) => { | ||
@@ -457,10 +457,3 @@ if (!Object.keys(weightings[lang]).includes(character)) { | ||
}; | ||
const avgWidthByLang = font => { | ||
const xWidthAvgByLang = {}; | ||
Object.keys(weightings).forEach(lang => { | ||
xWidthAvgByLang[lang] = avgWidthForLang(font, lang); | ||
}); | ||
return xWidthAvgByLang; | ||
}; | ||
const unpackMetricsFromFont = font => { | ||
const unpackMetricsFromFont = (font, options) => { | ||
const { | ||
@@ -483,29 +476,50 @@ capHeight, | ||
xHeight, | ||
xWidthAvg: avgWidthForLang(font, 'en'), | ||
xWidthAvgByLang: sortKeys(avgWidthByLang(font)) | ||
xWidthAvg: avgWidthForLang(font, options.language) | ||
}; | ||
}; | ||
const fromFile = path => fontkit.open(path).then(unpackMetricsFromFont); | ||
const fromBlob = async blob => new Promise((resolve, reject) => { | ||
blobToBuffer(blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit.create(buffer))); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
const resolveOptions = options => { | ||
let language = 'en'; | ||
if (!options) { | ||
return { | ||
language | ||
}; | ||
} else if (options.language && supportedLanguages.includes(options.language)) { | ||
language = options.language; | ||
} else { | ||
throw new Error("Unsupported language \u201C".concat(options.language, "\u201D. Supported languages are: ").concat(supportedLanguages.join(', '))); | ||
} | ||
return { | ||
language | ||
}; | ||
}; | ||
const fromFile = (path, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return fontkit.open(path).then(font => unpackMetricsFromFont(font, resolvedOptions)); | ||
}; | ||
const fromBlob = async (blob, options) => { | ||
const resolvedOptions = resolveOptions(options); | ||
return new Promise((resolve, reject) => { | ||
blobToBuffer(blob, (err, buffer) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
try { | ||
resolve(unpackMetricsFromFont(fontkit.create(buffer), resolvedOptions)); | ||
} catch (e) { | ||
reject(e); | ||
} | ||
}); | ||
}); | ||
}); | ||
const fromUrl = async url => { | ||
}; | ||
const fromUrl = async (url, options) => { | ||
const response = await fetch(url); | ||
const resolvedOptions = resolveOptions(options); | ||
if (typeof window === 'undefined') { | ||
const data = await response.arrayBuffer(); | ||
return unpackMetricsFromFont(fontkit.create(Buffer.from(data))); | ||
return unpackMetricsFromFont(fontkit.create(Buffer.from(data)), resolvedOptions); | ||
} | ||
const blob = await response.blob(); | ||
return fromBlob(blob); | ||
return fromBlob(blob, resolvedOptions); | ||
}; | ||
export { fromBlob, fromFile, fromUrl }; | ||
export { fromBlob, fromFile, fromUrl, supportedLanguages }; |
import 'cross-fetch/polyfill'; | ||
import { Font as FontKitFont } from 'fontkit'; | ||
declare const unpackMetricsFromFont: (font: FontKitFont) => { | ||
import weightings from './weightings.json'; | ||
declare type SupportedLanguage = keyof typeof weightings; | ||
export declare const supportedLanguages: ("de" | "en" | "es" | "fr" | "id" | "it" | "th")[]; | ||
interface Options { | ||
language?: SupportedLanguage; | ||
} | ||
declare const unpackMetricsFromFont: (font: FontKitFont, options: Required<Options>) => { | ||
familyName: string; | ||
@@ -12,8 +18,7 @@ capHeight: number; | ||
xWidthAvg: number; | ||
xWidthAvgByLang: Record<"de" | "en" | "es" | "fr" | "id" | "it" | "th", number>; | ||
}; | ||
export declare type Font = ReturnType<typeof unpackMetricsFromFont>; | ||
export declare const fromFile: (path: string) => Promise<Font>; | ||
export declare const fromBlob: (blob: Blob) => Promise<Font>; | ||
export declare const fromUrl: (url: string) => Promise<Font>; | ||
export declare const fromFile: (path: string, options?: Options) => Promise<Font>; | ||
export declare const fromBlob: (blob: Blob, options?: Options) => Promise<Font>; | ||
export declare const fromUrl: (url: string, options?: Options) => Promise<Font>; | ||
export {}; |
{ | ||
"name": "@capsizecss/unpack", | ||
"version": "0.0.0-add-language-support-20231121023926", | ||
"version": "0.0.0-add-language-support-v2-20231129052138", | ||
"description": "Unpack capsize font metrics from fonts", | ||
@@ -5,0 +5,0 @@ "main": "dist/capsizecss-unpack.cjs.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
52253
2641