Add support for naming override (#2275). (#2278)

This commit is contained in:
Belleve 2024-04-03 17:16:17 -10:00 committed by GitHub
parent f9e23f0172
commit 21d63ff67e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 180 additions and 117 deletions

View file

@ -1,3 +1,4 @@
* Add support for naming override (#2275).
* Fix broken glyphs for serifed variants of LATIN SMALL LETTER S WITH CURL (`U+1DF1E`). * Fix broken glyphs for serifed variants of LATIN SMALL LETTER S WITH CURL (`U+1DF1E`).
* Improve glyph visual for Bulgarian localization form for CYRILLIC CAPITAL LETTER EF (`U+0424`) under slab. * Improve glyph visual for Bulgarian localization form for CYRILLIC CAPITAL LETTER EF (`U+0424`) under slab.
* Make descender serif of CYRILLIC {CAPITAL|SMALL} LETTER KOPPA (`U+0480`..`U+0481`) appear under any serifed variants for `C`/`c`. * Make descender serif of CYRILLIC {CAPITAL|SMALL} LETTER KOPPA (`U+0480`..`U+0481`) appear under any serifed variants for `C`/`c`.

View file

@ -81,7 +81,7 @@ Inside the plan, top-level properties include:
* `webfontFormats`: Optional, Array of String. Controls the formats needed to be exported into the webfont CSS. Valid options are `'ttf'` and `'woff2'`, or including both. * `webfontFormats`: Optional, Array of String. Controls the formats needed to be exported into the webfont CSS. Valid options are `'ttf'` and `'woff2'`, or including both.
* `buildTextureFeature`: Optional, Boolean, whether to build the `TXTR` feature for cross-letter texture adjustments. Defaults to false. * `buildTextureFeature`: Optional, Boolean, whether to build the `TXTR` feature for cross-letter texture adjustments. Defaults to false.
Build plan could have 8 optional subsections: Build plan could have 9 optional subsections:
* `ligations` * `ligations`
* `variants` * `variants`
* `weights` * `weights`
@ -90,6 +90,7 @@ Build plan could have 8 optional subsections:
* `compatibilityLigatures` * `compatibilityLigatures`
* `excludeChars` * `excludeChars`
* `metricOverride` * `metricOverride`
* `namingOverride`
#### Configuring Ligations #### Configuring Ligations
@ -3307,6 +3308,21 @@ will:
* Override the sidebearing value by its value multiplied by `1.0625` then added with `15`. * Override the sidebearing value by its value multiplied by `1.0625` then added with `15`.
* Override the dot size by a interpolation against weight: at thin (`100`) being `50`, at regular (`400`) being `125`, and at heavy (`900`) being `180`. * Override the dot size by a interpolation against weight: at thin (`100`) being `50`, at regular (`400`) being `125`, and at heavy (`900`) being `180`.
#### Naming Override
The properties in the `namingOverride` section could be uase to override menu names of the produced font. The following properties will be applied to the font directly:
- `copyright`: Name ID 0, copyright notice.
- `manufacturer`: Name ID 8, manufacturer name.
- `designer`: Name ID 9, designer name.
- `description`: Name ID 10, description of the typeface.
- `urlVendor`: Name ID 11, URL of font vendor.
- `urlDesigner`: Name ID 12, URL of typeface designer.
- `licence`: Name ID 13, license description.
- `licenceURL`: Name ID 14, license Info URL.
In addition, you can also use the `version` property to override font version. The version number should follow [SemVer](https://semver.org/), like being `1.0.0`.
#### Sample Configuration #### Sample Configuration
A sample configuration could be found at [private-build-plans.sample.toml](https://github.com/be5invis/Iosevka/blob/master/private-build-plans.sample.toml). A sample configuration could be found at [private-build-plans.sample.toml](https://github.com/be5invis/Iosevka/blob/master/private-build-plans.sample.toml).

80
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "@iosevka/monorepo", "name": "@iosevka/monorepo",
"version": "29.0.6", "version": "29.1.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@iosevka/monorepo", "name": "@iosevka/monorepo",
"version": "29.0.6", "version": "29.1.0",
"workspaces": [ "workspaces": [
"packages/*", "packages/*",
"tools/*" "tools/*"
@ -4310,16 +4310,16 @@
}, },
"packages/font": { "packages/font": {
"name": "@iosevka/font", "name": "@iosevka/font",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iarna/toml": "^2.2.5", "@iarna/toml": "^2.2.5",
"@iosevka/font-glyphs": "29.0.6", "@iosevka/font-glyphs": "29.1.0",
"@iosevka/font-otl": "29.0.6", "@iosevka/font-otl": "29.1.0",
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@iosevka/geometry-cache": "29.0.6", "@iosevka/geometry-cache": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"@iosevka/param": "29.0.6", "@iosevka/param": "29.1.0",
"@iosevka/util": "29.0.6", "@iosevka/util": "29.1.0",
"harfbuzzjs": "^0.3.4", "harfbuzzjs": "^0.3.4",
"ot-builder": "^1.7.3", "ot-builder": "^1.7.3",
"semver": "^7.6.0" "semver": "^7.6.0"
@ -4327,100 +4327,100 @@
}, },
"packages/font-glyphs": { "packages/font-glyphs": {
"name": "@iosevka/font-glyphs", "name": "@iosevka/font-glyphs",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/font-kits": "29.0.6", "@iosevka/font-kits": "29.1.0",
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@iosevka/geometry-cache": "29.0.6", "@iosevka/geometry-cache": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"@iosevka/util": "29.0.6", "@iosevka/util": "29.1.0",
"typo-geom": "^0.15.1" "typo-geom": "^0.15.1"
} }
}, },
"packages/font-kits": { "packages/font-kits": {
"name": "@iosevka/font-kits", "name": "@iosevka/font-kits",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"@iosevka/util": "29.0.6" "@iosevka/util": "29.1.0"
} }
}, },
"packages/font-otl": { "packages/font-otl": {
"name": "@iosevka/font-otl", "name": "@iosevka/font-otl",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/font-glyphs": "29.0.6", "@iosevka/font-glyphs": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"toposort": "^2.0.2" "toposort": "^2.0.2"
} }
}, },
"packages/geometry": { "packages/geometry": {
"name": "@iosevka/geometry", "name": "@iosevka/geometry",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/util": "29.0.6", "@iosevka/util": "29.1.0",
"spiro": "^3.0.1", "spiro": "^3.0.1",
"typo-geom": "^0.15.1" "typo-geom": "^0.15.1"
} }
}, },
"packages/geometry-cache": { "packages/geometry-cache": {
"name": "@iosevka/geometry-cache", "name": "@iosevka/geometry-cache",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@msgpack/msgpack": "^2.8.0" "@msgpack/msgpack": "^2.8.0"
} }
}, },
"packages/glyph": { "packages/glyph": {
"name": "@iosevka/glyph", "name": "@iosevka/glyph",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/geometry": "29.0.6" "@iosevka/geometry": "29.1.0"
} }
}, },
"packages/param": { "packages/param": {
"name": "@iosevka/param", "name": "@iosevka/param",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/util": "29.0.6" "@iosevka/util": "29.1.0"
} }
}, },
"packages/util": { "packages/util": {
"name": "@iosevka/util", "name": "@iosevka/util",
"version": "29.0.6" "version": "29.1.0"
}, },
"tools/amend-readme": { "tools/amend-readme": {
"name": "@iosevka/amend-readme", "name": "@iosevka/amend-readme",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iarna/toml": "^2.2.5", "@iarna/toml": "^2.2.5",
"@iosevka/param": "29.0.6", "@iosevka/param": "29.1.0",
"@unicode/unicode-15.1.0": "^1.5.2" "@unicode/unicode-15.1.0": "^1.5.2"
} }
}, },
"tools/data-export": { "tools/data-export": {
"name": "@iosevka/data-export", "name": "@iosevka/data-export",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iarna/toml": "^2.2.5", "@iarna/toml": "^2.2.5",
"@iosevka/param": "29.0.6", "@iosevka/param": "29.1.0",
"@unicode/unicode-15.1.0": "^1.5.2", "@unicode/unicode-15.1.0": "^1.5.2",
"cldr": "^7.5.0" "cldr": "^7.5.0"
} }
}, },
"tools/generate-samples": { "tools/generate-samples": {
"name": "@iosevka/generate-samples", "name": "@iosevka/generate-samples",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/data-export": "29.0.6" "@iosevka/data-export": "29.1.0"
} }
}, },
"tools/misc": { "tools/misc": {
"name": "@iosevka/misc", "name": "@iosevka/misc",
"version": "29.0.6", "version": "29.1.0",
"dependencies": { "dependencies": {
"@iosevka/util": "29.0.6", "@iosevka/util": "29.1.0",
"semver": "^7.6.0", "semver": "^7.6.0",
"wawoff2": "^2.0.1" "wawoff2": "^2.0.1"
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/monorepo", "name": "@iosevka/monorepo",
"version": "29.0.6", "version": "29.1.0",
"workspaces": [ "workspaces": [
"packages/*", "packages/*",
"tools/*" "tools/*"

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/font-glyphs", "name": "@iosevka/font-glyphs",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs", ".": "./src/index.mjs",
@ -8,11 +8,11 @@
"./unicode-knowledge": "./src/meta/unicode-knowledge.mjs" "./unicode-knowledge": "./src/meta/unicode-knowledge.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/font-kits": "29.0.6", "@iosevka/font-kits": "29.1.0",
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@iosevka/geometry-cache": "29.0.6", "@iosevka/geometry-cache": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"@iosevka/util": "29.0.6", "@iosevka/util": "29.1.0",
"typo-geom": "^0.15.1" "typo-geom": "^0.15.1"
} }
} }

View file

@ -1,14 +1,14 @@
{ {
"name": "@iosevka/font-kits", "name": "@iosevka/font-kits",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
"./boole-kit": "./src/boole-kit.mjs", "./boole-kit": "./src/boole-kit.mjs",
"./spiro-kit": "./src/spiro-kit.mjs" "./spiro-kit": "./src/spiro-kit.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"@iosevka/util": "29.0.6" "@iosevka/util": "29.1.0"
} }
} }

View file

@ -1,13 +1,13 @@
{ {
"name": "@iosevka/font-otl", "name": "@iosevka/font-otl",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs" ".": "./src/index.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/font-glyphs": "29.0.6", "@iosevka/font-glyphs": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"toposort": "^2.0.2" "toposort": "^2.0.2"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/font", "name": "@iosevka/font",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs", ".": "./src/index.mjs",
@ -10,13 +10,13 @@
}, },
"dependencies": { "dependencies": {
"@iarna/toml": "^2.2.5", "@iarna/toml": "^2.2.5",
"@iosevka/font-glyphs": "29.0.6", "@iosevka/font-glyphs": "29.1.0",
"@iosevka/font-otl": "29.0.6", "@iosevka/font-otl": "29.1.0",
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@iosevka/geometry-cache": "29.0.6", "@iosevka/geometry-cache": "29.1.0",
"@iosevka/glyph": "29.0.6", "@iosevka/glyph": "29.1.0",
"@iosevka/param": "29.0.6", "@iosevka/param": "29.1.0",
"@iosevka/util": "29.0.6", "@iosevka/util": "29.1.0",
"harfbuzzjs": "^0.3.4", "harfbuzzjs": "^0.3.4",
"ot-builder": "^1.7.3", "ot-builder": "^1.7.3",
"semver": "^7.6.0" "semver": "^7.6.0"

View file

@ -70,10 +70,7 @@ async function getParametersT(argv) {
if (argv.excludedCharRanges) para.excludedCharRanges = argv.excludedCharRanges; if (argv.excludedCharRanges) para.excludedCharRanges = argv.excludedCharRanges;
if (argv.compatibilityLigatures) para.compatibilityLigatures = argv.compatibilityLigatures; if (argv.compatibilityLigatures) para.compatibilityLigatures = argv.compatibilityLigatures;
if (argv.metricOverride) applyMetricOverride(para, argv.metricOverride, argv); if (argv.metricOverride) applyMetricOverride(para, argv.metricOverride, argv);
para.naming = { para.naming = { ...para.naming, ...createNamingDictFromArgv(argv) };
miscNames: para.naming,
...createNamingDictFromArgv(argv),
};
return para; return para;
} }
function paraT(argv) { function paraT(argv) {

View file

@ -3,8 +3,12 @@ import semver from "semver";
export function createNamingDictFromArgv(argv) { export function createNamingDictFromArgv(argv) {
return { return {
// Strings
family: argv.menu.family, family: argv.menu.family,
version: argv.menu.version, version: argv.menu.version,
...argv.namingOverride,
// Generated from argv property
weight: argv.menu.weight - 0, weight: argv.menu.weight - 0,
width: argv.menu.width - 0, width: argv.menu.width - 0,
slope: argv.menu.slope, slope: argv.menu.slope,
@ -12,6 +16,14 @@ export function createNamingDictFromArgv(argv) {
} }
export function assignFontNames(font, naming, isQuasiProportional) { export function assignFontNames(font, naming, isQuasiProportional) {
setMainNames(font, naming);
setMiscStyleProps(font, isQuasiProportional);
setInformaticNames(font, naming);
setVersion(font, naming);
applyMiscProps(font);
}
function setMainNames(font, naming) {
// Preferred names // Preferred names
const family = naming.family.trim(); const family = naming.family.trim();
const style = getStyle(naming.weight, naming.width, naming.slope); const style = getStyle(naming.weight, naming.width, naming.slope);
@ -21,7 +33,7 @@ export function assignFontNames(font, naming, isQuasiProportional) {
nameFont(font, Ot.Name.NameID.WwsFamily, family); nameFont(font, Ot.Name.NameID.WwsFamily, family);
nameFont(font, Ot.Name.NameID.WwsSubfamily, style); nameFont(font, Ot.Name.NameID.WwsSubfamily, style);
// Compat banes // Compat names
const compat = getStyleLinkedStyles(naming.weight, naming.width, naming.slope); const compat = getStyleLinkedStyles(naming.weight, naming.width, naming.slope);
let compatFamily = family; let compatFamily = family;
if (compat.familySuffix !== "Regular") compatFamily = family + " " + compat.familySuffix; if (compat.familySuffix !== "Regular") compatFamily = family + " " + compat.familySuffix;
@ -65,7 +77,9 @@ export function assignFontNames(font, naming, isQuasiProportional) {
[Ot.Head.MacStyle.Condensed, naming.width < 5], [Ot.Head.MacStyle.Condensed, naming.width < 5],
[Ot.Head.MacStyle.Extended, naming.width > 5] [Ot.Head.MacStyle.Extended, naming.width > 5]
); );
}
function setMiscStyleProps(font, isQuasiProportional) {
// Panose // Panose
font.os2.panose.bFamilyType = 2; font.os2.panose.bFamilyType = 2;
font.os2.panose.bContrast = 3; font.os2.panose.bContrast = 3;
@ -79,25 +93,57 @@ export function assignFontNames(font, naming, isQuasiProportional) {
font.os2.panose.bProportion = 0; font.os2.panose.bProportion = 0;
font.post.isFixedPitch = false; font.post.isFixedPitch = false;
} }
// Licensing
if (naming.miscNames) {
nameFont(font, Ot.Name.NameID.Copyright, ancNameEntry(naming.miscNames.copyright));
nameFont(font, Ot.Name.NameID.Manufacturer, ancNameEntry(naming.miscNames.manufacturer));
nameFont(font, Ot.Name.NameID.Designer, ancNameEntry(naming.miscNames.designer));
nameFont(font, Ot.Name.NameID.Description, ancNameEntry(naming.miscNames.description));
nameFont(font, Ot.Name.NameID.LicenseDescription, ancNameEntry(naming.miscNames.licence));
} }
// Version function setInformaticNames(font, naming) {
nameFont(font, Ot.Name.NameID.VersionString, `Version ${naming.version}`); if (naming.copyright) {
const majorVersion = semver.major(naming.version); nameFont(font, Ot.Name.NameID.Copyright, ancNameEntry(naming.copyright));
const minorVersion = semver.minor(naming.version); }
const patchVersion = semver.patch(naming.version); if (naming.manufacturer) {
if (minorVersion > 99 || patchVersion > 99) throw new RangeError("Version number overflow"); nameFont(font, Ot.Name.NameID.Manufacturer, ancNameEntry(naming.manufacturer));
font.head.fontRevision = majorVersion + (minorVersion * 10 + patchVersion) / 1000; }
if (naming.designer) {
nameFont(font, Ot.Name.NameID.Designer, ancNameEntry(naming.designer));
}
if (naming.description) {
nameFont(font, Ot.Name.NameID.Description, ancNameEntry(naming.description));
}
if (naming.urlVendor) {
nameFont(font, Ot.Name.NameID.UrlVendor, ancNameEntry(naming.urlVendor));
}
if (naming.urlDesigner) {
nameFont(font, Ot.Name.NameID.UrlDesigner, ancNameEntry(naming.urlDesigner));
}
if (naming.licence) {
nameFont(font, Ot.Name.NameID.LicenseDescription, ancNameEntry(naming.licence));
}
if (naming.license) {
nameFont(font, Ot.Name.NameID.LicenseDescription, ancNameEntry(naming.license));
}
if (naming.licenceURL) {
nameFont(font, Ot.Name.NameID.LicenseInfoUrl, ancNameEntry(naming.licenceURL));
}
if (naming.licenseURL) {
nameFont(font, Ot.Name.NameID.LicenseInfoUrl, ancNameEntry(naming.licenseURL));
}
}
// Misc function setVersion(font, naming) {
if (naming.version) {
// Trim the "Version " prefix if it exists
const versionString = naming.version.trim().replace(/^Version\s+/i, "");
const ver = semver.parse(versionString);
if (!ver) throw new Error(`Version string ${naming.version} does not follow semver format`);
if (ver.minor > 99 || ver.patch > 99) throw new RangeError("Version number overflow");
// Set Name entry
nameFont(font, Ot.Name.NameID.VersionString, `Version ${versionString}`);
// Set Font Revision
font.head.fontRevision = ver.major + (ver.minor * 100 + ver.patch) / 10000;
}
}
function applyMiscProps(font) {
font.os2.ulCodePageRange1 = 0x2000011f; font.os2.ulCodePageRange1 = 0x2000011f;
font.os2.ulCodePageRange2 = 0xc4000000; font.os2.ulCodePageRange2 = 0xc4000000;
font.head.flags = accumulateFlags( font.head.flags = accumulateFlags(

View file

@ -1,12 +1,12 @@
{ {
"name": "@iosevka/geometry-cache", "name": "@iosevka/geometry-cache",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs" ".": "./src/index.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/geometry": "29.0.6", "@iosevka/geometry": "29.1.0",
"@msgpack/msgpack": "^2.8.0" "@msgpack/msgpack": "^2.8.0"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/geometry", "name": "@iosevka/geometry",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs", ".": "./src/index.mjs",
@ -13,7 +13,7 @@
"./spiro-control": "./src/spiro-control.mjs" "./spiro-control": "./src/spiro-control.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/util": "29.0.6", "@iosevka/util": "29.1.0",
"spiro": "^3.0.1", "spiro": "^3.0.1",
"typo-geom": "^0.15.1" "typo-geom": "^0.15.1"
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/glyph", "name": "@iosevka/glyph",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/glyph.mjs", ".": "./src/glyph.mjs",
@ -9,6 +9,6 @@
"./relation": "./src/relation.mjs" "./relation": "./src/relation.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/geometry": "29.0.6" "@iosevka/geometry": "29.1.0"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/param", "name": "@iosevka/param",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs", ".": "./src/index.mjs",
@ -9,6 +9,6 @@
"./metric-override": "./src/metric-override.mjs" "./metric-override": "./src/metric-override.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/util": "29.0.6" "@iosevka/util": "29.1.0"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/util", "name": "@iosevka/util",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs", ".": "./src/index.mjs",

View file

@ -4,10 +4,11 @@
[iosevka] [iosevka]
naming.copyright = 'Copyright 2015-{{currentYear}}, Renzhi Li (aka. Belleve Invis, belleve@typeof.net).' naming.copyright = 'Copyright 2015-{{currentYear}}, Renzhi Li (aka. Belleve Invis, belleve@typeof.net).'
naming.licence = '''This font software is licenced under the SIL Open Font Licence, Version 1.1. This licence is available with a FAQ at: http://scripts.sil.org/OFL. This font software is distributed on an 'AS IS' basis, without warranties or conditions of any kind, either express or implied. See the SIL Open Font licence for the specific language, permissions and limitations governing your use of this font software.'''
naming.manufacturer = 'Belleve Invis' naming.manufacturer = 'Belleve Invis'
naming.designer = 'Belleve Invis' naming.designer = 'Belleve Invis'
naming.description = 'Spatial efficient monospace font family for programming. Built from code. http://be5invis.github.io/Iosevka' naming.description = 'Spatial efficient monospace font family for programming. Built from code. http://be5invis.github.io/Iosevka'
naming.licence = '''This font software is licenced under the SIL Open Font Licence, Version 1.1. This licence is available with a FAQ at: http://scripts.sil.org/OFL. This font software is distributed on an 'AS IS' basis, without warranties or conditions of any kind, either express or implied. See the SIL Open Font licence for the specific language, permissions and limitations governing your use of this font software.'''
naming.licenceURL = 'https://openfontlicense.org/'
leading = 1250 # Default line height times 1000. leading = 1250 # Default line height times 1000.
descenderPad = 0 # Additional line height, added to descender. descenderPad = 0 # Additional line height, added to descender.

View file

@ -1,13 +1,13 @@
{ {
"name": "@iosevka/amend-readme", "name": "@iosevka/amend-readme",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs" ".": "./src/index.mjs"
}, },
"dependencies": { "dependencies": {
"@iarna/toml": "^2.2.5", "@iarna/toml": "^2.2.5",
"@iosevka/param": "29.0.6", "@iosevka/param": "29.1.0",
"@unicode/unicode-15.1.0": "^1.5.2" "@unicode/unicode-15.1.0": "^1.5.2"
} }
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@iosevka/data-export", "name": "@iosevka/data-export",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs", ".": "./src/index.mjs",
@ -10,7 +10,7 @@
}, },
"dependencies": { "dependencies": {
"@iarna/toml": "^2.2.5", "@iarna/toml": "^2.2.5",
"@iosevka/param": "29.0.6", "@iosevka/param": "29.1.0",
"@unicode/unicode-15.1.0": "^1.5.2", "@unicode/unicode-15.1.0": "^1.5.2",
"cldr": "^7.5.0" "cldr": "^7.5.0"
} }

View file

@ -1,11 +1,11 @@
{ {
"name": "@iosevka/generate-samples", "name": "@iosevka/generate-samples",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"exports": { "exports": {
".": "./src/index.mjs" ".": "./src/index.mjs"
}, },
"dependencies": { "dependencies": {
"@iosevka/data-export": "29.0.6" "@iosevka/data-export": "29.1.0"
} }
} }

View file

@ -1,10 +1,10 @@
{ {
"name": "@iosevka/misc", "name": "@iosevka/misc",
"version": "29.0.6", "version": "29.1.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"semver": "^7.6.0", "semver": "^7.6.0",
"wawoff2": "^2.0.1", "wawoff2": "^2.0.1",
"@iosevka/util": "29.0.6" "@iosevka/util": "29.1.0"
} }
} }

View file

@ -302,6 +302,8 @@ const FontInfoOf = computed.group("metadata:font-info-of", async (target, fileNa
slope: sfi.shapeSlope, slope: sfi.shapeSlope,
slopeAngle: sfi.shapeSlopeAngle, slopeAngle: sfi.shapeSlopeAngle,
}, },
// Naming
namingOverride: bp.namingOverride || null,
// Menu // Menu
menu: { menu: {
family: bp.family, family: bp.family,