diff --git a/README.zh_CN.md b/README.zh_CN.md index 816cf1131..04de344ea 100644 --- a/README.zh_CN.md +++ b/README.zh_CN.md @@ -2,78 +2,62 @@ # Sarasa Gothic (更纱黑体 / 更紗黑體) -Sarasa Gothic 是一款免费的开源字体,基于 Iosevka 和 Source Han Sans (思源黑体) 字型设计,适合在包含中日韩等多种亚洲语言之间混排的场景使用,主要用于操作系统页面和编程字体。 +Sarasa Gothic 是一款免费的开源字体,基于 [Iosevka](https://github.com/be5invis/Iosevka) 和 [Source Han Sans](https://github.com/adobe-fonts/source-han-sans) 字型设计,适合在包含中日韩等多种亚洲语言之间混排的场景使用,主要用于操作系统页面和编程字体。 ## 安装说明 -在更新字体之前请务必完全移除已安装的旧版字体。许多软件或操作系统的缓存系统对于大型字体并不友好。 +强烈建议在更新此字体前,完全卸载已安装的旧版字体。许多操作系统或软件的字体缓存系统在处理大型TTC字体时可能会遇到问题。 ## 国内镜像下载站点 - 清华大学镜像源: https://mirrors.tuna.tsinghua.edu.cn/github-release/be5invis/Sarasa-Gothic - 南京大学镜像源: https://mirror.nju.edu.cn/github-release/be5invis/Sarasa-Gothic -## 下载说明 - -对于一般用户,可以下载 `sarasa-gothic-ttf` 的字体包,下载后解压,安装文件名中带有 `SC` 标注的字体文件,这表示中国大陆的字符集。如果希望用在代码编辑器中替换默认编程字体,可以选择 `sarasa-mono-sc-regular.ttf` 文件,并指定编辑器字体为 `等距更纱黑体 SC`。 - -## 字体类型 +## 如何下载 -Sarasa Gothic 提供了多种字重和字型的组合,以满足不同的场景和需求。 +进入[最新发布版本](https://github.com/be5invis/Sarasa-Gothic/releases)页面,根据需要下载对应系列的字体包,下载后解压并安装。 -### 字重(Weight) -- Extralight:特细。 -- Light:较细。 -- Regular:标准字重。 -- Semibold:半粗。 -- Bold:粗体。 - -### 斜体(Italic) -- Extralightitalic 特细的斜体。 -- Lightitalic 较细的斜体。 -- Italic 标准斜体。 -- Semibolditalic 半粗的斜体。 -- Bold Italic 加粗的斜体。 +## 下载说明 -### 衬线(Serif) +Sarasa Gothic 提供了多种字形风格、字重的组合,以满足不同的场景和需求。对于仅需安装作为编程字体的用户,推荐选择 "Mono SC"。下载后,在 IDE 设置字体为 `等距更纱黑体 SC`。 -在原有的字形基础上增加了 Slab Serif 特征,使其更具有辨识度。 +### 字型(Variant) -### 字型(Variant) +**更纱黑体** +西文字符基于 [Inter](https://github.com/rsms/inter) 字型设计。 + - Gothic: 标准字型,全宽引号。 + - UI: 专为UI界面设计的字型,半宽引号。 + +**等距更纱黑体** +西文字符基于 [Iosevka](https://github.com/be5invis/Iosevka) 字型设计。 +- Mono: 等宽字型,全宽破折号。 +- Term: 等宽字型,半宽破折号。 +- Fixed: 等宽字型,半宽破折号,无连字。 -对于字形,请看下方更详细的介绍。 +**Slab**: 粗衬线体。在原字形基础上增加了 Slab serif 的特征,使其更具有辨识度。 -- Gothic:标准字型。 -- Mono:等宽字型。 -- Term:更紧凑的等宽字型。 -- Fixed:固定宽度字型。 -- UI:专为UI界面设计的字型。 +**连字** (Ligature) 遇到特定连续的字符时会进行组合,优化阅读体验。在编程语言中,连字特性也能让数学运算符号更容易的阅读,如输入 `!=` 时,会显示为 `≠` -## 字型讲解 +### 地区语言(Variant) -### 风格样式 +根据特定语言和地区主要使用的字形来选择字体。 -针对拉丁文(Latin)、希腊文(Greek)和西里尔文(Cyrillic)的字符集: +- `SC`: 简体中文 +- `TC`: 台湾繁体中文 +- `HC`: 香港繁体中文 +- `CL`: 传统旧字形 +- `J`: 日文 +- `K`: 韩文 -基于 [Inter](https://github.com/rsms/inter) 字型设计: - - **Gothic** —— 全宽引号 (`“”`) - - **UI** —— 缩进引号 (`“”`) +### 其他说明 -基于 [Iosevka](https://github.com/be5invis/Iosevka) 字型设计: -- **Mono** —— 全宽破折号 (`——`) -- **Term** —— 半宽破折号 (`——`) -- **Fixed** —— 半宽破折号,无连字 (`——`) +**Unhinted**: 没有进行微调字形的版本,也就是使用 Iosevka 和 Source Han Sans 原版的字形。 文件大小比其他版本更小,但可能在某些字的结构上,显示没那么清晰,特别是小字号效果更为不佳。仅需要在极端的环境中,需要更小的字体文件,且不在意字体的显示清晰效果时选择。一般用户建议不选。 -### 书写字形 +**TTF**: 如果不知道怎么选,选 TTF 肯定没错。但 TTF 通常体积较大。旧系统用户可选。 -根据特定语言和地区主要使用的字形来选择字体。更多请参考[思源黑体](https://github.com/adobe-fonts/source-han-sans) 的说明。 +**TTC**: 相当于一个字体压缩包,在里面塞了很多个 TTF 的字体文件,可以包含多个 TrueType 字体的文件格式。好处就是,让文件更小。 -- `CL`:古典字形 -- `SC`:中国大陆(简体中文) -- `TC`:台湾(繁体中文) -- `HC`:香港(繁体中文) -- `J`:日文 -- `K`:韩文 +**SuperTTC**: 是 TTC 的升级版,有更高效的打包方式,可以往里面塞更多的可变字体。进一步节省空间。 ## 从源文件创建字体 @@ -84,7 +68,7 @@ Sarasa Gothic 提供了多种字重和字型的组合,以满足不同的场景 ### 创建所有字体 -将项目下载到本地,进入项目文件夹安装程序包。 +将项目下载到本地,从终端进入项目文件夹运行。 ```bash npm install @@ -102,4 +86,4 @@ npm run build ttf npm run build ttc ``` -请注意,打包 TTC 将需要占用*非常高*的内存,因为包含了大量的子家族字符集的组合。 +请注意,打包 TTC 时将会占用 *非常高* 的内存,因为包含了大量的子家族字符集的组合。 diff --git a/config.json b/config.json index 874e9ff9c..713708073 100644 --- a/config.json +++ b/config.json @@ -119,14 +119,7 @@ "latinGroups": { "Inter": { "isCff": false, - "bakeFeatures": [ - { "tag": "ss03" }, - { "tag": "tnum", "range": ["0", "9"] }, - { "tag": "cv03", "range": ["0", "9"] }, - { "tag": "cv04", "range": ["0", "9"] }, - { "tag": "cv02", "range": ["0", "9"] }, - { "tag": "cv10" } - ], + "bakeFeatures": [{ "tag": "ss03" }, { "tag": "cv10" }], "dropFeatures": [ "cv01", "cv02", diff --git a/make/helpers/bake-feature.mjs b/make/helpers/bake-feature.mjs index ef58d7329..423f2634b 100644 --- a/make/helpers/bake-feature.mjs +++ b/make/helpers/bake-feature.mjs @@ -1,9 +1,9 @@ import { GlyphFinder } from "./glyph-finder.mjs"; -export function bakeFeature(tag, font, filter) { +export function bakeFeature(tag, font, filter, scriptTag, languageTag) { const find = new GlyphFinder(font); for (const [c, g] of font.cmap.unicode.entries()) { if (!filter(c)) continue; - font.cmap.unicode.set(c, find.subst(tag, g)); + font.cmap.unicode.set(c, find.subst(tag, g, scriptTag, languageTag)); } } diff --git a/make/helpers/geometry.mjs b/make/helpers/geometry.mjs index 041276692..f9a537f6c 100644 --- a/make/helpers/geometry.mjs +++ b/make/helpers/geometry.mjs @@ -33,7 +33,10 @@ export function alterContours(glyph, fn) { if (!glyph.geometry) return; const contours = Ot.GeometryUtil.apply(Ot.GeometryUtil.Flattener, glyph.geometry); for (const c of contours) { - for (const z of c) [z.x, z.y] = fn(z.x, z.y); + for (let i = 0; i < c.length; i++) { + const [x, y] = fn(c[i].x, c[i].y); + c[i] = Ot.Glyph.Point.create(x, y, c[i].kind); + } } glyph.geometry = new Ot.Glyph.ContourSet(contours); } @@ -50,6 +53,10 @@ export function getAdvanceWidth(glyph) { if (glyph.horizontal) return glyph.horizontal.end; else return 0; } +export function getAdvanceHeight(glyph) { + if (glyph.vertical) return glyph.vertical.start - glyph.vertical.end; + else return 0; +} export function setAdvanceWidth(glyph, w) { glyph.horizontal = { start: 0, end: w }; diff --git a/make/helpers/glyph-finder.mjs b/make/helpers/glyph-finder.mjs index a021f3383..c200fd0ac 100644 --- a/make/helpers/glyph-finder.mjs +++ b/make/helpers/glyph-finder.mjs @@ -11,11 +11,20 @@ export class GlyphFinder { return this.font.cmap.unicode.get(u); } } - subst(tag, g) { + subst(tag, g, scriptTag, languageTag) { if (!this.font.gsub) return g; + let features = this.font.gsub.features; let candidateLookups = []; - for (const feature of this.font.gsub.features) { + if (scriptTag) { + const script = this.font.gsub.scripts.get(scriptTag); + const language = languageTag + ? script.languages.get(languageTag) + : script.defaultLanguage; + features = language.features; + } + + for (const feature of features) { if (feature.tag === tag) { for (const lookup of feature.lookups) candidateLookups.push(lookup); } diff --git a/make/helpers/unicode-kind.mjs b/make/helpers/unicode-kind.mjs index 27869328a..455dd7c2d 100644 --- a/make/helpers/unicode-kind.mjs +++ b/make/helpers/unicode-kind.mjs @@ -9,7 +9,7 @@ export const isIdeograph = function (c) { (c >= 0x20000 && c <= 0x3ffff) // SIP, TIP ); }; -export const isWestern = c => c < 0x2000 || (c >= 0x2070 && c <= 0x218f); +export const isWestern = c => (c < 0x2000 && c != 0xb7) || (c >= 0x2070 && c <= 0x218f); export const isKorean = c => (c >= 0x1100 && c <= 0x11ff) || (c >= 0xac00 && c <= 0xd7af) || diff --git a/make/non-kanji/build.mjs b/make/non-kanji/build.mjs index f23a2f3a6..0e7595daa 100644 --- a/make/non-kanji/build.mjs +++ b/make/non-kanji/build.mjs @@ -5,7 +5,7 @@ import { dropCharacters, dropFeature, dropHints } from "../helpers/drop.mjs"; import { readFont, writeFont } from "../helpers/font-io.mjs"; import { isIdeograph, isKorean } from "../helpers/unicode-kind.mjs"; -export default (async function pass(argv) { +export default async function pass(argv) { const font = await readFont(argv.main); dropHints(font); @@ -16,4 +16,4 @@ export default (async function pass(argv) { unifySameFeatures(font.gpos); CliProc.gcFont(font, Ot.ListGlyphStoreFactory); await writeFont(argv.o, font); -}); +} diff --git a/make/punct/as.mjs b/make/punct/as.mjs index 1031930aa..f5bbbfa61 100644 --- a/make/punct/as.mjs +++ b/make/punct/as.mjs @@ -4,6 +4,8 @@ import { dropCharacters, dropFeature, dropHints } from "../helpers/drop.mjs"; import { readFont, writeFont } from "../helpers/font-io.mjs"; import { isFEMisc, isLongDash, isWS, isWestern } from "../helpers/unicode-kind.mjs"; +import { bakeLocalization } from "./bake-locl.mjs"; +import { buildContinuousEmDash } from "./build-continuous-em-dash.mjs"; import { transferMonoGeometry } from "./lgc-helpers.mjs"; import { sanitizeSymbols, toPWID } from "./sanitize-symbols.mjs"; @@ -17,15 +19,16 @@ async function pass(argv) { main, c => isWestern(c - 0) || isLongDash(c - 0, argv.term) || isWS(c - 0) || isFEMisc(c - 0) ); - if (argv.pwid) toPWID(main); + if (argv.pwid) toPWID(main, argv); + bakeLocalization(main, argv); if (argv.mono) transferMonoGeometry(main, lgc); - if (!argv.pwid) sanitizeSymbols(main, argv.goth, !argv.pwid && !argv.term); + sanitizeSymbols(main, argv); + + dropFeature(main.gsub, ["locl", "ccmp", "aalt", "pwid", "fwid", "hwid", "twid", "qwid"]); + if (argv.mono) dropFeature(main.gpos, ["kern", "vkrn", "halt", "palt", "vpal"]); + + buildContinuousEmDash(main); - dropFeature(main.gsub, ["ccmp", "aalt", "pwid", "fwid", "hwid", "twid", "qwid"]); - if (argv.mono) { - dropFeature(main.gsub, ["locl"]); - dropFeature(main.gpos, ["kern", "vkrn", "halt", "palt", "vpal"]); - } aliasFeatMap(main, "vert", 0x2014, 0x2015); CliProc.gcFont(main, Ot.ListGlyphStoreFactory); await writeFont(argv.o, main); diff --git a/make/punct/bake-locl.mjs b/make/punct/bake-locl.mjs new file mode 100644 index 000000000..a3dad7660 --- /dev/null +++ b/make/punct/bake-locl.mjs @@ -0,0 +1,26 @@ +import { bakeFeature } from "../helpers/bake-feature.mjs"; + +export function bakeLocalization(font, flags) { + if (flags.mono || flags.term || flags.pwid) return; + + let langTag = "JAN "; + switch (flags.region) { + case "J": + langTag = "JAN "; + break; + case "K": + langTag = "KOR "; + break; + case "SC": + langTag = "ZHS "; + break; + case "TC": + langTag = "ZHT "; + break; + case "HC": + langTag = "ZHH "; + break; + } + + bakeFeature("locl", font, c => c != 0x2010, "hani", langTag); +} diff --git a/make/punct/build-continuous-em-dash.mjs b/make/punct/build-continuous-em-dash.mjs new file mode 100644 index 000000000..d9ddd7d9b --- /dev/null +++ b/make/punct/build-continuous-em-dash.mjs @@ -0,0 +1,93 @@ +import { Ot } from "ot-builder"; + +import { + alterContours, + copyGeometryData, + getAdvanceHeight, + getAdvanceWidth +} from "../helpers/geometry.mjs"; +import { GlyphFinder } from "../helpers/glyph-finder.mjs"; + +export function buildContinuousEmDash(font) { + const finder = new GlyphFinder(font); + const emDash = finder.unicode(0x2014); + const bound = Ot.GeometryUtil.apply(Ot.GeometryUtil.GetBound, emDash.geometry); + + // If the em-dash is already continuous, we are already done, and simply return + if (bound.xMin <= 0) return; + + const emDashV = finder.subst("vert", emDash); + const boundV = Ot.GeometryUtil.apply(Ot.GeometryUtil.GetBound, emDashV.geometry); + + // Create new glyphs, add them into font's glyph list + const emDashCont = buildHGlyph(emDash, bound); + const emDashVCont = buildVGlyph(emDashV, boundV); + font.glyphs = Ot.ListGlyphStoreFactory.createStoreFromList([ + ...font.glyphs.decideOrder(), + ...[emDashCont, emDashVCont] + ]); + + // Build CALT and VERT + buildCalt(font, emDash, emDashCont); + buildVert(font, "vert", emDash, emDashCont, emDashVCont); + buildVert(font, "vrt2", emDash, emDashCont, emDashVCont); +} + +function buildHGlyph(emDash, bound) { + const g1 = new Ot.Glyph(); + const adw = getAdvanceWidth(emDash); + copyGeometryData(g1, emDash); + alterContours(g1, (x, y) => [ + x <= (bound.xMin + bound.xMax) / 2 ? bound.xMax - 1.05 * adw : x, + y + ]); + return g1; +} +function buildVGlyph(emDashV, boundV) { + const g1 = new Ot.Glyph(); + const adh = getAdvanceHeight(emDashV); + copyGeometryData(g1, emDashV); + alterContours(g1, (x, y) => [ + x, + y >= (boundV.yMin + boundV.yMax) / 2 ? boundV.yMin + 1.05 * adh : y + ]); + return g1; +} + +function buildCalt(font, emDash, emDashCont) { + const substSingle = new Ot.Gsub.Single(); + substSingle.mapping.set(emDash, emDashCont); + font.gsub.lookups.push(substSingle); + + const substCalt = new Ot.Gsub.Chaining(); + substCalt.rules.push({ + match: [new Set([emDash, emDashCont]), new Set([emDash])], + inputBegins: 1, + inputEnds: 2, + applications: [ + { + at: 0, + apply: substSingle + } + ] + }); + font.gsub.lookups.unshift(substCalt); + + const calt = { tag: "calt", lookups: [substCalt] }; + font.gsub.features.unshift(calt); + for (const [scriptTag, script] of font.gsub.scripts) { + if (script.defaultLanguage) script.defaultLanguage.features.unshift(calt); + for (const [langTag, lang] of script.languages) lang.features.unshift(calt); + } +} + +function buildVert(font, tag, emDash, emDashCont, emDashVCont) { + for (const feature of font.gsub.features) { + if (feature.tag !== tag) continue; + for (const lookup of feature.lookups) { + if (lookup.type === Ot.Gsub.LookupType.Single && lookup.mapping.has(emDash)) { + lookup.mapping.set(emDashCont, emDashVCont); + } + } + } +} diff --git a/make/punct/fe-misc.mjs b/make/punct/fe-misc.mjs index 29b02cc81..0347de8fa 100644 --- a/make/punct/fe-misc.mjs +++ b/make/punct/fe-misc.mjs @@ -14,7 +14,7 @@ async function pass(argv) { dropCharacters(font, c => !isFEMisc(c)); if (argv.mono) dropFeature(font.gpos, ["kern", "palt", "vkrn", "vpal"]); - if (!argv.pwid) sanitizeSymbols(font, argv.goth, !argv.pwid && !argv.term); + sanitizeSymbols(font, argv); CliProc.gcFont(font, Ot.ListGlyphStoreFactory); await writeFont(argv.o, font); } diff --git a/make/punct/lgc-helpers.mjs b/make/punct/lgc-helpers.mjs index 0aa2bfbe4..95384a382 100644 --- a/make/punct/lgc-helpers.mjs +++ b/make/punct/lgc-helpers.mjs @@ -3,7 +3,10 @@ import { GlyphFinder } from "../helpers/glyph-finder.mjs"; export function transferMonoGeometry(main, lgc) { const find = new GlyphFinder(main); - for (let u = 0x2000; u < 0x20a0; u++) { + let uSet = new Set([0xb7]); + for (let u = 0x2000; u < 0x20a0; u++) uSet.add(u); + + for (const u of uSet) { const gSrc = lgc.cmap.unicode.get(u); const gDst = main.cmap.unicode.get(u); if (gSrc && gDst) copyGeometryData(gDst, gSrc); diff --git a/make/punct/sanitize-symbols.mjs b/make/punct/sanitize-symbols.mjs index 4886ced0a..6298e682a 100644 --- a/make/punct/sanitize-symbols.mjs +++ b/make/punct/sanitize-symbols.mjs @@ -9,14 +9,15 @@ import { } from "../helpers/geometry.mjs"; import { GlyphFinder } from "../helpers/glyph-finder.mjs"; -const sanitizers = {}; +export const Sanitizers = {}; +// Adjust glyph metrics by CENTERING function CenterTo(widthF) { - return function (font, glyph, isGothic, isType) { + return function (font, glyph, flags) { const em = font.head.unitsPerEm; const adw = getAdvanceWidth(glyph); - const targetW = widthF(adw, em, isGothic, isType); + const targetW = widthF(adw, em, flags); const shift = (targetW - adw) / 2; shiftContours(glyph, shift); @@ -26,20 +27,52 @@ function CenterTo(widthF) { }; } -sanitizers.auto = CenterTo((adw, em) => Math.min(em, Math.ceil(adw / (em / 2)) * (em / 2))); -sanitizers.half = CenterTo((adw, em) => em / 2); -sanitizers.full = CenterTo((adw, em) => em); -sanitizers.ellipsis = CenterTo((adw, em, isGothic, isType) => - isGothic ? em : isType ? adw : em / 2 -); +Sanitizers.ident = CenterTo(adw => adw); +Sanitizers.toMono = CenterTo((adw, em) => Math.min(em, Math.ceil(adw / (em / 2)) * (em / 2))); +Sanitizers.half = CenterTo((adw, em) => em / 2); +Sanitizers.full = CenterTo((adw, em) => em); +Sanitizers.ellipsis = CenterTo((adw, em, flags) => { + if (flags.term) return 0.5 * em; + if (flags.goth || flags.mono) return em; + else return adw; +}); +Sanitizers.interpunct = CenterTo((adw, em, flags) => { + if (flags.mono || flags.pwid || flags.term) return em / 2; + else return em; +}); + +// Adjust glyph metrics by STRETCHING +function StretchTo(widthF) { + return function (font, glyph, flags) { + const em = font.head.unitsPerEm; + const adw = getAdvanceWidth(glyph); + + const targetW = widthF(adw, em, flags); + + alterContours(glyph, (x, y) => [x * 2 < adw ? x : x + targetW - adw, y]); + setAdvanceWidth(glyph, targetW); + + return glyph; + }; +} +Sanitizers.stretchAuto = StretchTo((adw, em, flags) => (flags.pwid || flags.term ? 0.5 : 1) * em); +Sanitizers.stretchHalf = StretchTo((adw, em) => 0.5 * em); +Sanitizers.stretchDual = StretchTo((adw, em) => 2 * em); +Sanitizers.stretchTri = StretchTo((adw, em) => 3 * em); -sanitizers.halfLeft = function (font, glyph, isGothic, isType) { +// Left and right quotes +Sanitizers.quoteRight = function (font, glyph, flags) { const em = font.head.unitsPerEm; const finder = new GlyphFinder(font); - copyGeometryData(glyph, sanitizers.half(font, flatCloneGlyph(finder.subst("pwid", glyph)))); + if (flags.pwid) { + copyGeometryData( + glyph, + Sanitizers.half(font, flatCloneGlyph(finder.subst("pwid", glyph)), flags) + ); + } - if (isGothic) { + if (flags.goth) { setAdvanceWidth(glyph, em); } else { setAdvanceWidth(glyph, 0.5 * em); @@ -47,14 +80,19 @@ sanitizers.halfLeft = function (font, glyph, isGothic, isType) { return glyph; }; -sanitizers.halfRight = function (font, glyph, isGothic, isType) { +Sanitizers.quoteLeft = function (font, glyph, flags) { const em = font.head.unitsPerEm; const finder = new GlyphFinder(font); - copyGeometryData(glyph, sanitizers.half(font, flatCloneGlyph(finder.subst("pwid", glyph)))); + if (flags.pwid) { + copyGeometryData( + glyph, + Sanitizers.half(font, flatCloneGlyph(finder.subst("pwid", glyph)), flags) + ); + } - if (isGothic) { - shiftContours(glyph, 0.5 * em); + if (flags.goth) { + shiftContours(glyph, em - getAdvanceWidth(glyph)); setAdvanceWidth(glyph, em); } else { setAdvanceWidth(glyph, 0.5 * em); @@ -64,18 +102,16 @@ sanitizers.halfRight = function (font, glyph, isGothic, isType) { }; function HalfCompN(n, forceFullWidth, forceHalfWidth) { - return function (font, glyph, isGothic, isType) { + return function (font, glyph, flags) { const em = font.head.unitsPerEm; const finder = new GlyphFinder(font); copyGeometryData(glyph, finder.subst("fwid", glyph)); const adw = getAdvanceWidth(glyph); - const targetW = Math.min( - em * n, - Math.ceil(adw / em) * - (em * (forceHalfWidth ? 0.5 : isGothic || isType || forceFullWidth ? 1 : 0.5)) - ); + const widthScalar = + !forceFullWidth && (forceHalfWidth || flags.pwid || flags.term) ? 0.5 : 1; + const targetW = Math.min(em * n, Math.ceil(adw / em) * (em * widthScalar)); alterContours(glyph, (x, y) => [(x * targetW) / adw, y]); setAdvanceWidth(glyph, targetW); @@ -84,26 +120,22 @@ function HalfCompN(n, forceFullWidth, forceHalfWidth) { }; } -sanitizers.halfComp = HalfCompN(1); -sanitizers.halfCompH = HalfCompN(1, false, true); -sanitizers.halfComp2 = HalfCompN(2); -sanitizers.halfComp3 = HalfCompN(3); - -const sanitizerTypes = { - "“": "halfRight", - "‘": "halfRight", - "’": "halfLeft", - "”": "halfLeft", - "\u2010": "halfCompH", - "\u2011": "halfCompH", - "\u2012": "halfCompH", - "\u2013": "halfCompH", - "\u2014": "halfComp", - "\u2015": "halfComp", +const sanitizerTypesModular = { + "\u00b7": "interpunct", + "“": "quoteLeft", + "‘": "quoteLeft", + "’": "quoteRight", + "”": "quoteRight", + "\u2010": "stretchHalf", + "\u2011": "stretchHalf", + "\u2012": "stretchHalf", + "\u2013": "stretchHalf", + "\u2014": "stretchAuto", + "\u2015": "stretchAuto", "\u2025": "ellipsis", "\u2026": "ellipsis", - "\u2e3a": "halfComp2", - "\u2e3b": "halfComp3", + "\u2e3a": "stretchDual", + "\u2e3b": "stretchTri", "\u31b4": "half", "\u31b5": "half", "\u31b6": "half", @@ -111,18 +143,52 @@ const sanitizerTypes = { "\u31bb": "half" }; -export function sanitizeSymbols(font, isGothic, isType) { +const sanitizerTypesPwid = { + "\u00b7": "interpunct", + "“": "ident", + "‘": "ident", + "’": "ident", + "”": "ident", + "\u2010": "half", + "\u2025": "ellipsis", + "\u2026": "ellipsis", + "\u2e3a": "stretchDual", + "\u2e3b": "stretchTri", + "\u31b4": "half", + "\u31b5": "half", + "\u31b6": "half", + "\u31b7": "half", + "\u31bb": "half" +}; + +export function sanitizeSymbols(font, flags) { + const st = flags.pwid ? sanitizerTypesPwid : sanitizerTypesModular; + const backupSanType = flags.mono ? "toMono" : null; let san = new Map(); + for (const [c, g] of font.cmap.unicode.entries()) { - const stt = sanitizerTypes[String.fromCodePoint(c)]; - if (stt) san.set(g, stt); + const stt = st[String.fromCodePoint(c)]; + if (stt) { + san.set(g, stt); + } else if (backupSanType) { + san.set(g, backupSanType); + } } for (const g of font.glyphs.decideOrder()) { - let sanitizer = sanitizers[san.has(g) ? san.get(g) : "auto"]; - sanitizer(font, g, isGothic, isType); + const st = san.get(g); + if (!st) continue; + const sanitizer = Sanitizers[st]; + sanitizer(font, g, flags); + } +} +export function sanitizeSymbolsBy(font, filter, san, flags) { + for (const [c, g] of font.cmap.unicode.entries()) { + if (!filter(c)) continue; + san(font, g, flags); } } -export function toPWID(font) { - bakeFeature("pwid", font, c => sanitizerTypes[String.fromCodePoint(c)]); +export function toPWID(font, flags) { + const st = flags.pwid ? sanitizerTypesPwid : sanitizerTypesModular; + bakeFeature("pwid", font, c => st[String.fromCodePoint(c)]); } diff --git a/make/punct/ws.mjs b/make/punct/ws.mjs index dbe2c000c..f28fe1880 100644 --- a/make/punct/ws.mjs +++ b/make/punct/ws.mjs @@ -14,13 +14,12 @@ async function pass(argv) { dropHints(main); dropCharacters(main, c => isWestern(c) || isLongDash(c, argv.term) || !isWS(c) || isFEMisc(c)); - if (argv.pwid) toPWID(main); + if (argv.pwid) toPWID(main, argv); if (argv.mono) transferMonoGeometry(main, lgc); - if (!argv.pwid) sanitizeSymbols(main, argv.goth, !argv.pwid && !argv.term); + sanitizeSymbols(main, argv); - dropFeature(main.gsub, ["ccmp", "aalt", "pwid", "fwid", "hwid", "twid", "qwid"]); + dropFeature(main.gsub, ["locl", "ccmp", "aalt", "pwid", "fwid", "hwid", "twid", "qwid"]); if (argv.mono) { - dropFeature(main.gsub, ["locl"]); dropFeature(main.gpos, ["kern", "vkrn", "palt", "vpal"]); } diff --git a/package-lock.json b/package-lock.json index f643a6b05..4d402ad3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sarasa-gothic", - "version": "1.0.7", + "version": "1.0.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sarasa-gothic", - "version": "1.0.7", + "version": "1.0.8", "hasInstallScript": true, "dependencies": { "@chlorophytum/cli": "^0.41.21", diff --git a/package.json b/package.json index 9797718c7..0608f40c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sarasa-gothic", - "version": "1.0.7", + "version": "1.0.8", "main": "./run", "scripts": { "build": "verda -f verdafile.mjs", diff --git a/sources/IosevkaN/IosevkaN-Bold.ttf b/sources/IosevkaN/IosevkaN-Bold.ttf index ddf30cca1..a33151b04 100644 Binary files a/sources/IosevkaN/IosevkaN-Bold.ttf and b/sources/IosevkaN/IosevkaN-Bold.ttf differ diff --git a/sources/IosevkaN/IosevkaN-BoldItalic.ttf b/sources/IosevkaN/IosevkaN-BoldItalic.ttf index 58a6ea8b2..2abadb9fa 100644 Binary files a/sources/IosevkaN/IosevkaN-BoldItalic.ttf and b/sources/IosevkaN/IosevkaN-BoldItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-BoldOblique.ttf b/sources/IosevkaN/IosevkaN-BoldOblique.ttf index baecc59ab..6bc4dd566 100644 Binary files a/sources/IosevkaN/IosevkaN-BoldOblique.ttf and b/sources/IosevkaN/IosevkaN-BoldOblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ExtraBold.ttf b/sources/IosevkaN/IosevkaN-ExtraBold.ttf index 75a38cbc2..7e7a26603 100644 Binary files a/sources/IosevkaN/IosevkaN-ExtraBold.ttf and b/sources/IosevkaN/IosevkaN-ExtraBold.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ExtraBoldItalic.ttf b/sources/IosevkaN/IosevkaN-ExtraBoldItalic.ttf index 1476e0195..3d0971737 100644 Binary files a/sources/IosevkaN/IosevkaN-ExtraBoldItalic.ttf and b/sources/IosevkaN/IosevkaN-ExtraBoldItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ExtraBoldOblique.ttf b/sources/IosevkaN/IosevkaN-ExtraBoldOblique.ttf index b41aaf9c0..39077f1f4 100644 Binary files a/sources/IosevkaN/IosevkaN-ExtraBoldOblique.ttf and b/sources/IosevkaN/IosevkaN-ExtraBoldOblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ExtraLight.ttf b/sources/IosevkaN/IosevkaN-ExtraLight.ttf index ca7f26f69..ce44705b3 100644 Binary files a/sources/IosevkaN/IosevkaN-ExtraLight.ttf and b/sources/IosevkaN/IosevkaN-ExtraLight.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ExtraLightItalic.ttf b/sources/IosevkaN/IosevkaN-ExtraLightItalic.ttf index e083754d1..44f56adbf 100644 Binary files a/sources/IosevkaN/IosevkaN-ExtraLightItalic.ttf and b/sources/IosevkaN/IosevkaN-ExtraLightItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ExtraLightOblique.ttf b/sources/IosevkaN/IosevkaN-ExtraLightOblique.ttf index e133fd40a..42073da0f 100644 Binary files a/sources/IosevkaN/IosevkaN-ExtraLightOblique.ttf and b/sources/IosevkaN/IosevkaN-ExtraLightOblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-Heavy.ttf b/sources/IosevkaN/IosevkaN-Heavy.ttf index dc44aa089..88a1068f8 100644 Binary files a/sources/IosevkaN/IosevkaN-Heavy.ttf and b/sources/IosevkaN/IosevkaN-Heavy.ttf differ diff --git a/sources/IosevkaN/IosevkaN-HeavyItalic.ttf b/sources/IosevkaN/IosevkaN-HeavyItalic.ttf index c2b19f952..1ccd6a866 100644 Binary files a/sources/IosevkaN/IosevkaN-HeavyItalic.ttf and b/sources/IosevkaN/IosevkaN-HeavyItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-HeavyOblique.ttf b/sources/IosevkaN/IosevkaN-HeavyOblique.ttf index f879ed51c..f27431969 100644 Binary files a/sources/IosevkaN/IosevkaN-HeavyOblique.ttf and b/sources/IosevkaN/IosevkaN-HeavyOblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-Italic.ttf b/sources/IosevkaN/IosevkaN-Italic.ttf index 908cf603a..78872be7c 100644 Binary files a/sources/IosevkaN/IosevkaN-Italic.ttf and b/sources/IosevkaN/IosevkaN-Italic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-Light.ttf b/sources/IosevkaN/IosevkaN-Light.ttf index 0251268b6..352e109b1 100644 Binary files a/sources/IosevkaN/IosevkaN-Light.ttf and b/sources/IosevkaN/IosevkaN-Light.ttf differ diff --git a/sources/IosevkaN/IosevkaN-LightItalic.ttf b/sources/IosevkaN/IosevkaN-LightItalic.ttf index 2da0dba59..204f92322 100644 Binary files a/sources/IosevkaN/IosevkaN-LightItalic.ttf and b/sources/IosevkaN/IosevkaN-LightItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-LightOblique.ttf b/sources/IosevkaN/IosevkaN-LightOblique.ttf index b6d5f68b3..0cad568f3 100644 Binary files a/sources/IosevkaN/IosevkaN-LightOblique.ttf and b/sources/IosevkaN/IosevkaN-LightOblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-Medium.ttf b/sources/IosevkaN/IosevkaN-Medium.ttf index 61c3fd6e4..2ce8ad9ac 100644 Binary files a/sources/IosevkaN/IosevkaN-Medium.ttf and b/sources/IosevkaN/IosevkaN-Medium.ttf differ diff --git a/sources/IosevkaN/IosevkaN-MediumItalic.ttf b/sources/IosevkaN/IosevkaN-MediumItalic.ttf index 12e2264af..9a32e61b3 100644 Binary files a/sources/IosevkaN/IosevkaN-MediumItalic.ttf and b/sources/IosevkaN/IosevkaN-MediumItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-MediumOblique.ttf b/sources/IosevkaN/IosevkaN-MediumOblique.ttf index 588c3f017..8b4731001 100644 Binary files a/sources/IosevkaN/IosevkaN-MediumOblique.ttf and b/sources/IosevkaN/IosevkaN-MediumOblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-Oblique.ttf b/sources/IosevkaN/IosevkaN-Oblique.ttf index 9cb959158..b5e48b016 100644 Binary files a/sources/IosevkaN/IosevkaN-Oblique.ttf and b/sources/IosevkaN/IosevkaN-Oblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-Regular.ttf b/sources/IosevkaN/IosevkaN-Regular.ttf index f8cb583a6..3b4446c17 100644 Binary files a/sources/IosevkaN/IosevkaN-Regular.ttf and b/sources/IosevkaN/IosevkaN-Regular.ttf differ diff --git a/sources/IosevkaN/IosevkaN-SemiBold.ttf b/sources/IosevkaN/IosevkaN-SemiBold.ttf index 2c6873912..5a19a9def 100644 Binary files a/sources/IosevkaN/IosevkaN-SemiBold.ttf and b/sources/IosevkaN/IosevkaN-SemiBold.ttf differ diff --git a/sources/IosevkaN/IosevkaN-SemiBoldItalic.ttf b/sources/IosevkaN/IosevkaN-SemiBoldItalic.ttf index 7ea1fa589..f47eeccd8 100644 Binary files a/sources/IosevkaN/IosevkaN-SemiBoldItalic.ttf and b/sources/IosevkaN/IosevkaN-SemiBoldItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-SemiBoldOblique.ttf b/sources/IosevkaN/IosevkaN-SemiBoldOblique.ttf index d87b592b1..c27d6bfe1 100644 Binary files a/sources/IosevkaN/IosevkaN-SemiBoldOblique.ttf and b/sources/IosevkaN/IosevkaN-SemiBoldOblique.ttf differ diff --git a/sources/IosevkaN/IosevkaN-Thin.ttf b/sources/IosevkaN/IosevkaN-Thin.ttf index 7588db47d..93e1eba08 100644 Binary files a/sources/IosevkaN/IosevkaN-Thin.ttf and b/sources/IosevkaN/IosevkaN-Thin.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ThinItalic.ttf b/sources/IosevkaN/IosevkaN-ThinItalic.ttf index 41360f615..3488201a6 100644 Binary files a/sources/IosevkaN/IosevkaN-ThinItalic.ttf and b/sources/IosevkaN/IosevkaN-ThinItalic.ttf differ diff --git a/sources/IosevkaN/IosevkaN-ThinOblique.ttf b/sources/IosevkaN/IosevkaN-ThinOblique.ttf index f74cd0466..56d720eae 100644 Binary files a/sources/IosevkaN/IosevkaN-ThinOblique.ttf and b/sources/IosevkaN/IosevkaN-ThinOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Bold.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Bold.ttf index 3b15710c2..f9b99a4a2 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Bold.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Bold.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-BoldItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-BoldItalic.ttf index 81378b719..19330d92b 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-BoldItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-BoldItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-BoldOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-BoldOblique.ttf index b574bb5f4..75e46edff 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-BoldOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-BoldOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ExtraBold.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ExtraBold.ttf index 5b59572ed..bd0544a2b 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ExtraBold.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ExtraBold.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldItalic.ttf index 4dabefac9..b866b585a 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldOblique.ttf index 4351d0bf7..8a79635ed 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ExtraBoldOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ExtraLight.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ExtraLight.ttf index c45655896..82ac01b6a 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ExtraLight.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ExtraLight.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightItalic.ttf index 803b1d583..f83cca092 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightOblique.ttf index f8165dcf8..910b7d8e8 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ExtraLightOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Heavy.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Heavy.ttf index e7587e956..87d6994fa 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Heavy.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Heavy.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-HeavyItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-HeavyItalic.ttf index 87c63820d..7c76250e7 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-HeavyItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-HeavyItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-HeavyOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-HeavyOblique.ttf index ae15149ef..95e10ae82 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-HeavyOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-HeavyOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Italic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Italic.ttf index f3b10a650..f245f2514 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Italic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Italic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Light.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Light.ttf index 25750baaf..8ec7e97fd 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Light.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Light.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-LightItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-LightItalic.ttf index da38ddcf2..c9b4f334e 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-LightItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-LightItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-LightOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-LightOblique.ttf index 106e73204..403a2760b 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-LightOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-LightOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Medium.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Medium.ttf index d5863ac65..37e6470e6 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Medium.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Medium.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-MediumItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-MediumItalic.ttf index 44907ed32..98f92f26c 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-MediumItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-MediumItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-MediumOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-MediumOblique.ttf index f8cae19fe..d490f0943 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-MediumOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-MediumOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Oblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Oblique.ttf index b8cecc4a4..69a71fcec 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Oblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Oblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Regular.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Regular.ttf index dfe1ade39..34489c2eb 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Regular.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Regular.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-SemiBold.ttf b/sources/IosevkaNFixed/IosevkaNFixed-SemiBold.ttf index 57e5b437d..ad378838b 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-SemiBold.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-SemiBold.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldItalic.ttf index 665805a1c..28e89a6ed 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldOblique.ttf index 083784760..406a44611 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-SemiBoldOblique.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-Thin.ttf b/sources/IosevkaNFixed/IosevkaNFixed-Thin.ttf index 490766750..97ddebf46 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-Thin.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-Thin.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ThinItalic.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ThinItalic.ttf index c3220b2af..d46f94a59 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ThinItalic.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ThinItalic.ttf differ diff --git a/sources/IosevkaNFixed/IosevkaNFixed-ThinOblique.ttf b/sources/IosevkaNFixed/IosevkaNFixed-ThinOblique.ttf index 2294386c7..02d56ae96 100644 Binary files a/sources/IosevkaNFixed/IosevkaNFixed-ThinOblique.ttf and b/sources/IosevkaNFixed/IosevkaNFixed-ThinOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Bold.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Bold.ttf index 555e25dfa..a976cd4e8 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Bold.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Bold.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldItalic.ttf index 590b7cc48..dd1c84b78 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldOblique.ttf index 4c85bdffa..4b82720f0 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-BoldOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBold.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBold.ttf index 05ebe3695..489c94d1f 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBold.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBold.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldItalic.ttf index 766ecedc1..9e3d4883b 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldOblique.ttf index 6032ecca7..c64daf1ff 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraBoldOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLight.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLight.ttf index 7c034bd08..ff0672fbe 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLight.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLight.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightItalic.ttf index 8bf8ae88e..805297744 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightOblique.ttf index a5491f263..01647ed9e 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ExtraLightOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Heavy.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Heavy.ttf index c073c4d0c..8123187a0 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Heavy.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Heavy.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyItalic.ttf index d1770a9bb..f7175c53a 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyOblique.ttf index 6f24ecdba..e8a39951e 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-HeavyOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Italic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Italic.ttf index fad3f9211..c173fe0ac 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Italic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Italic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Light.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Light.ttf index d1976bb20..4410da20a 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Light.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Light.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightItalic.ttf index 7f7a3ec4c..c9e31b118 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightOblique.ttf index cdae81598..b25887a3f 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-LightOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Medium.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Medium.ttf index 6f708b64f..11390ed0c 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Medium.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Medium.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumItalic.ttf index 1f109a169..5bd51ff29 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumOblique.ttf index 430d4761e..ddae2dd27 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-MediumOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Oblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Oblique.ttf index dcd3b5847..29b1e4505 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Oblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Oblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Regular.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Regular.ttf index 40d50a15d..2ab4ccdef 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Regular.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Regular.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBold.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBold.ttf index 7731ec965..401cd4399 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBold.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBold.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldItalic.ttf index 06419e175..6658b8e08 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldOblique.ttf index 0ebbdf083..11d2ccc4d 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-SemiBoldOblique.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Thin.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Thin.ttf index a42a6fff1..46e51e814 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Thin.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-Thin.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinItalic.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinItalic.ttf index 50fe55320..8c49cba8d 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinItalic.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinItalic.ttf differ diff --git a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinOblique.ttf b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinOblique.ttf index 974095c8e..d8972ecae 100644 Binary files a/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinOblique.ttf and b/sources/IosevkaNFixedSlab/IosevkaNFixedSlab-ThinOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Bold.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Bold.ttf index d0bece46c..f72e333dc 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Bold.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Bold.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-BoldItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-BoldItalic.ttf index 412572232..f694c913a 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-BoldItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-BoldItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-BoldOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-BoldOblique.ttf index 7869aa8b2..421e8c19c 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-BoldOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-BoldOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ExtraBold.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ExtraBold.ttf index 35a49c62c..eacc1f7c0 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ExtraBold.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ExtraBold.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldItalic.ttf index 6bba4f217..5293acced 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldOblique.ttf index c2f0de0ff..17fa6e322 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ExtraBoldOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ExtraLight.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ExtraLight.ttf index 4c0acc16e..0d753d2a5 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ExtraLight.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ExtraLight.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightItalic.ttf index 0455c7f3b..6e5fe9756 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightOblique.ttf index 054230e60..903272395 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ExtraLightOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Heavy.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Heavy.ttf index 136984c1d..b153b6922 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Heavy.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Heavy.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-HeavyItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-HeavyItalic.ttf index 9306db8ba..f534f73f1 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-HeavyItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-HeavyItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-HeavyOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-HeavyOblique.ttf index 4db343975..00ebfb498 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-HeavyOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-HeavyOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Italic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Italic.ttf index 61e851b96..423889c58 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Italic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Italic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Light.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Light.ttf index 3715f19c0..af1c4a237 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Light.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Light.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-LightItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-LightItalic.ttf index ce2ac973d..540fe3080 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-LightItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-LightItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-LightOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-LightOblique.ttf index d1630290f..4192e9b16 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-LightOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-LightOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Medium.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Medium.ttf index 43cbb664e..6873aef36 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Medium.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Medium.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-MediumItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-MediumItalic.ttf index 62067af11..922340554 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-MediumItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-MediumItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-MediumOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-MediumOblique.ttf index f2487b8f5..31df2398e 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-MediumOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-MediumOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Oblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Oblique.ttf index 6af941944..fb2132961 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Oblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Oblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Regular.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Regular.ttf index 62aea7353..0d9e7e4f3 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Regular.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Regular.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-SemiBold.ttf b/sources/IosevkaNSlab/IosevkaNSlab-SemiBold.ttf index dfd630a78..2f727c851 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-SemiBold.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-SemiBold.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldItalic.ttf index 490f0c182..6b228ddce 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldOblique.ttf index a3abe928e..7e4030706 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-SemiBoldOblique.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-Thin.ttf b/sources/IosevkaNSlab/IosevkaNSlab-Thin.ttf index 6566aa6e0..c3a907ed9 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-Thin.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-Thin.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ThinItalic.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ThinItalic.ttf index 5b652d997..789697bad 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ThinItalic.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ThinItalic.ttf differ diff --git a/sources/IosevkaNSlab/IosevkaNSlab-ThinOblique.ttf b/sources/IosevkaNSlab/IosevkaNSlab-ThinOblique.ttf index 09aea16a7..01fa89744 100644 Binary files a/sources/IosevkaNSlab/IosevkaNSlab-ThinOblique.ttf and b/sources/IosevkaNSlab/IosevkaNSlab-ThinOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Bold.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Bold.ttf index dac3d02e2..830cb1349 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Bold.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Bold.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-BoldItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-BoldItalic.ttf index ff74b74c8..e3ac475db 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-BoldItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-BoldItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-BoldOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-BoldOblique.ttf index 559fa1548..5c4804c8a 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-BoldOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-BoldOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ExtraBold.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ExtraBold.ttf index 0013564f7..c3279d923 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ExtraBold.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ExtraBold.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldItalic.ttf index 787e86f3d..21c88a2f1 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldOblique.ttf index c224a6206..515ed7329 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ExtraBoldOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ExtraLight.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ExtraLight.ttf index 371009821..f7eb008de 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ExtraLight.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ExtraLight.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightItalic.ttf index 4fb5f98eb..0da19f804 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightOblique.ttf index 9e6ef02d3..5cb92bae3 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ExtraLightOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Heavy.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Heavy.ttf index 77790690a..097e7330f 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Heavy.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Heavy.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-HeavyItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-HeavyItalic.ttf index 80f9334d8..446fec77d 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-HeavyItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-HeavyItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-HeavyOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-HeavyOblique.ttf index 8619f2b17..238103797 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-HeavyOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-HeavyOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Italic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Italic.ttf index ebf22c1ef..c3f778676 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Italic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Italic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Light.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Light.ttf index f3332be07..b894f6fca 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Light.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Light.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-LightItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-LightItalic.ttf index 6d5ce327c..29ac47536 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-LightItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-LightItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-LightOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-LightOblique.ttf index d2d15105e..7719b4a6b 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-LightOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-LightOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Medium.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Medium.ttf index 0153fad08..39d60a0e7 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Medium.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Medium.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-MediumItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-MediumItalic.ttf index 294a791c6..e47aa8c0d 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-MediumItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-MediumItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-MediumOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-MediumOblique.ttf index 8c952edd5..a57ed9ba0 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-MediumOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-MediumOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Oblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Oblique.ttf index 02456ddf5..363082c47 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Oblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Oblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Regular.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Regular.ttf index bf0709112..dd1d20734 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Regular.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Regular.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-SemiBold.ttf b/sources/IosevkaNTerm/IosevkaNTerm-SemiBold.ttf index f52a12172..8756227ac 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-SemiBold.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-SemiBold.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldItalic.ttf index 58068a266..68333db98 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldOblique.ttf index 5064ec90f..acd4603af 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-SemiBoldOblique.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-Thin.ttf b/sources/IosevkaNTerm/IosevkaNTerm-Thin.ttf index 333cb7218..c4a61f57d 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-Thin.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-Thin.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ThinItalic.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ThinItalic.ttf index 6db24335a..7864cdddd 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ThinItalic.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ThinItalic.ttf differ diff --git a/sources/IosevkaNTerm/IosevkaNTerm-ThinOblique.ttf b/sources/IosevkaNTerm/IosevkaNTerm-ThinOblique.ttf index 6788e1ef2..9f47ba40b 100644 Binary files a/sources/IosevkaNTerm/IosevkaNTerm-ThinOblique.ttf and b/sources/IosevkaNTerm/IosevkaNTerm-ThinOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Bold.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Bold.ttf index f01cdeb7a..05e256029 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Bold.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Bold.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldItalic.ttf index 57504dbb5..9deea0564 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldOblique.ttf index 53135d443..601549125 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-BoldOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBold.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBold.ttf index 70abcb466..59df56a4f 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBold.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBold.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldItalic.ttf index a262dc5ed..8e74be467 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldOblique.ttf index c814f45cb..cd1000999 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraBoldOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLight.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLight.ttf index 56688a633..183aaa634 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLight.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLight.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightItalic.ttf index e1894f919..11de07e2c 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightOblique.ttf index 66a6d0135..357cf06b0 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ExtraLightOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Heavy.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Heavy.ttf index 6d0c09019..7f903d778 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Heavy.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Heavy.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyItalic.ttf index 59244169b..74949e510 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyOblique.ttf index 38a7fce10..b847b7c30 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-HeavyOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Italic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Italic.ttf index e36621461..8334b5040 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Italic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Italic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Light.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Light.ttf index 39613cd58..968bd8104 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Light.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Light.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightItalic.ttf index fcd17dac7..05695aa78 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightOblique.ttf index 3edd0013c..cc6d05572 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-LightOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Medium.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Medium.ttf index d55dc8980..3d08bd0a7 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Medium.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Medium.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumItalic.ttf index 2cfc39115..50a5f6931 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumOblique.ttf index 1ee8df7fb..310d3b20b 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-MediumOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Oblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Oblique.ttf index 195da9baf..fffc65a4e 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Oblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Oblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Regular.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Regular.ttf index ec50eca87..44fb62713 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Regular.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Regular.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBold.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBold.ttf index 258ff3d0e..96aef5b0a 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBold.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBold.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldItalic.ttf index 1dbf45a67..2370d30ee 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldOblique.ttf index 5d3282245..04b71e434 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-SemiBoldOblique.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Thin.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Thin.ttf index c6fa73cfb..e2c3321ad 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-Thin.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-Thin.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinItalic.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinItalic.ttf index cb5d86431..cfff3d130 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinItalic.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinItalic.ttf differ diff --git a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinOblique.ttf b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinOblique.ttf index 88818e72f..80bd01d3e 100644 Binary files a/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinOblique.ttf and b/sources/IosevkaNTermSlab/IosevkaNTermSlab-ThinOblique.ttf differ diff --git a/tools/generate-release-notes.mjs b/tools/generate-release-notes.mjs index 6d628783b..2312714b4 100644 --- a/tools/generate-release-notes.mjs +++ b/tools/generate-release-notes.mjs @@ -32,7 +32,7 @@ async function main() { ) .write( `| TTF |`, - downloadItem(DOWNLOAD, "", "TTC", version, "7z"), + downloadItem(DOWNLOAD, "", "TTF", version, "7z"), `| (File too large for GitHub release artifact) |` ); @@ -52,10 +52,12 @@ async function main() { out.write(""); out.writeP(`### Single Family & Language TTF Package`); + out.writeP(`
`); out.write(generateTableHeader(config)); for (const subfamily of config.subfamilyOrder) { out.write(generateTableRow(config, subfamily, version)); } + out.writeP(`
`); out.end(); } @@ -105,7 +107,7 @@ class Out { const DOWNLOAD = `📦 Download`; function downloadItem(label, prefix, format, version, zip) { const normalLink = pkgLink(version, `Sarasa${prefix}-${format}-${version}`, zip); - const unhintedLink = pkgLink(version, `Sarasa${prefix}-${format}-${version}-Unhinted`, zip); + const unhintedLink = pkgLink(version, `Sarasa${prefix}-${format}-Unhinted-${version}`, zip); return `[${label}](${normalLink}) ([Unhinted](${unhintedLink}))`; } function pkgLink(version, baseName, format) { diff --git a/verdafile.mjs b/verdafile.mjs index 0bf8d035f..07684b5de 100644 --- a/verdafile.mjs +++ b/verdafile.mjs @@ -286,6 +286,9 @@ async function BuildPunct(blockName, t, out, family, region, style) { LatinSource(latinFamily, style) ); await RunFontBuildTask(`make/punct/${blockName}.mjs`, { + family, + region, + style, main: $1.full, lgc: $2.full, o: out.full,