diff --git a/build-plans.toml b/build-plans.toml index 115244963..992417df0 100644 --- a/build-plans.toml +++ b/build-plans.toml @@ -756,7 +756,7 @@ at = "fourfold" percent = "rings-continuous-slash" micro-sign = "toothed-serifless" -[buildPlans.IosevkaAile.widths.normal] +[buildPlans.IosevkaAile.widths.Normal] shape = 600 menu = 5 css = "normal" @@ -797,7 +797,7 @@ w = "straight-flat-top-motion-serifed" long-s = "flat-hook-tailed" eszet = "longs-s-lig-tailed-serifless" -[buildPlans.IosevkaEtoile.widths.normal] +[buildPlans.IosevkaEtoile.widths.Normal] shape = 600 menu = 5 css = "normal" diff --git a/changes/28.0.0-alpha.1.md b/changes/28.0.0-alpha.1.md index 15ee7853b..7dadfc4b3 100644 --- a/changes/28.0.0-alpha.1.md +++ b/changes/28.0.0-alpha.1.md @@ -1,6 +1,7 @@ * \[**BREAKING**\] The filenames and package filenames are changed. - They will now use PascalCase instead of kebab-case. - To package manager maintainers: Please upgrade your script to make it capable to download and install the fonts under new names, and properly uninstall the fonts under old names. + * \[**BREAKING**\] The "SGr" TTC packages for Iosevka Aile and Etoile will no longer be generated, as they are duplicates to the non-SGr TTC packages. * \[**BREAKING**\] Reorder of glyph variants: - Influenced characters: `M`, `R`, `f`, `t`, `x`, Long S (`ſ`), Lower Chi (`χ`), Cyrillic Lower Em (`м`), Cyrillic Ya (`Я`, `я`), `5`. * \[**BREAKING**\] Tags for variant features for Cyrillic lowercase Er and U are changed to `cv76` and `cv78`. diff --git a/utility/generate-release-note/package-list.mjs b/utility/generate-release-note/package-list.mjs index 86b97bff2..950affe6e 100644 --- a/utility/generate-release-note/package-list.mjs +++ b/utility/generate-release-note/package-list.mjs @@ -36,17 +36,26 @@ async function GeneratePackageList(argv, out) { const familyName = buildName("\u00a0", ...prime.family.split(" ")); const sTtcName = buildName("-", "SuperTTC", groupID, argv.version); const ttcName = buildName("-", "PkgTTC", groupID, argv.version); - const sTtcLink = `${DownloadLinkPrefix}/${sTtcName}.zip`; - const ttcLink = `${DownloadLinkPrefix}/${ttcName}.zip`; const proportionPrefix = gr.quasiProportional ? "Quasi-proportional" : "Monospace"; const desc = `${proportionPrefix}, ${prime.desc}`; const img = ImgX(`${imagePrefix}/${groupID}`); + + let ttcCells = [` `]; + const hasSpacings = Object.entries(gr.subGroups).length > 1; + if (hasSpacings) { + const sTtcLink = `${DownloadLinkPrefix}/${sTtcName}.zip`; + const ttcLink = `${DownloadLinkPrefix}/${ttcName}.zip`; + ttcCells = [ + `Super\u00A0TTC`, + `TTC`, + ` ` + ]; + } + out.log( ``, `📦 ${familyName} — ${desc}`, - `Super\u00A0TTC`, - `TTC`, - ` `, + ...ttcCells, `` ); out.log( @@ -69,13 +78,15 @@ async function GeneratePackageList(argv, out) { return `${label}`; }; const leader = "    " + (subGroupID === lastSubGroupID ? "└" : "├"); + const superTtcPrefix = hasSpacings ? "SuperTTC-SGr" : "SuperTTC"; + const ttcPrefix = hasSpacings ? "PkgTTC-SGr" : "PkgTTC"; out.log( ``, `${leader} ${noBreak(subGr.family)}`, `${spacingDesc}`, `${flag(ligation)}`, - `${createLink("Super\u00A0TTC", "SuperTTC-SGr")}`, - `${createLink("TTC", "PkgTTC-SGr")}`, + `${createLink("Super\u00A0TTC", superTtcPrefix)}`, + `${createLink("TTC", ttcPrefix)}`, `${createLink("TTF", "PkgTTF")} ` + `(${createLink("Unhinted", "PkgTTF-Unhinted")})`, `${createLink("WebFont", "PkgWebFont")} ` + diff --git a/verdafile.mjs b/verdafile.mjs index c969d76f3..5adac8101 100644 --- a/verdafile.mjs +++ b/verdafile.mjs @@ -643,6 +643,7 @@ const CollectPlans = computed(`metadata:collect-plans`, async target => { return await getCollectPlans(target, rawPlans.collectPlans); }); +// eslint-disable-next-line complexity async function getCollectPlans(target, rawCollectPlans) { const plans = {}; @@ -654,7 +655,10 @@ async function getCollectPlans(target, rawCollectPlans) { } const amendedRawCollectPlans = { ...rawCollectPlans }; - for (const gr of allCollectableGroups) { + out: for (const gr of allCollectableGroups) { + for (const [k, cp] of Object.entries(rawCollectPlans)) { + if (cp.from.length === 1 && cp.from[0] === gr) continue out; + } amendedRawCollectPlans[`SGr-` + gr] = { release: true, isAmended: true, from: [gr] }; }