From c477254200369f00f34b9d394bbd342d3d248ec5 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Sun, 24 Mar 2024 18:49:31 -0400 Subject: [PATCH 1/3] Clean up pipe characters. (#2254) --- changes/29.0.4.md | 2 + .../font-glyphs/src/symbol/math/logicals.ptl | 17 +-- .../src/symbol/punctuation/bar.ptl | 118 ++++++++++-------- 3 files changed, 73 insertions(+), 64 deletions(-) create mode 100644 changes/29.0.4.md diff --git a/changes/29.0.4.md b/changes/29.0.4.md new file mode 100644 index 000000000..bd4c43cd2 --- /dev/null +++ b/changes/29.0.4.md @@ -0,0 +1,2 @@ +* Make `U+2980` respond to `VSAM`. + - `U+2AFC` will no longer respond to `VSAM`. diff --git a/packages/font-glyphs/src/symbol/math/logicals.ptl b/packages/font-glyphs/src/symbol/math/logicals.ptl index 8e93912e2..c9485d380 100644 --- a/packages/font-glyphs/src/symbol/math/logicals.ptl +++ b/packages/font-glyphs/src/symbol/math/logicals.ptl @@ -9,6 +9,7 @@ glyph-block Symbol-Math-Logicals : begin glyph-block-import Common-Derivatives glyph-block-import Symbol-Math-Relation-Common : IdentHalfSpace glyph-block-import Mark-Shared-Metrics : markStroke + glyph-block-import Symbol-Punctuation-Bar : BarShape DoubleBarShape TripleBarShape create-glyph 'negate' 0xAC : glyph-proc include : refer-glyph "minus" @@ -26,13 +27,9 @@ glyph-block Symbol-Math-Logicals : begin create-glyph 'endOfProof' 0x220E : glyph-proc include : Rect top bot SB RightSB - create-glyph 'stile' 0x2223 : glyph-proc - include : VBar.m Middle bot top OperatorStroke + create-glyph 'stile' 0x2223 : BarShape Middle top bot OperatorStroke - create-glyph 'parallel' 0x2225 : glyph-proc - local sw : AdviceStroke 3.5 - include : VBar.m (Middle - Width * 0.175) bot top sw - include : VBar.m (Middle + Width * 0.175) bot top sw + create-glyph 'parallel' 0x2225 : DoubleBarShape Middle top bot OperatorStroke create-glyph 'vdash' 0x22A2 : glyph-proc include : HBar.m SB RightSB SymbolMid OperatorStroke @@ -209,8 +206,6 @@ glyph-block Symbol-Math-Logicals : begin turned 'barRingBelow' 0x2AF0 'barRingAbove' Middle SymbolMid turned 'topRingBelow' 0x2AF1 'botRingAbove' Middle SymbolMid - create-glyph 'interleave' 0x2AF4 : glyph-proc - local sw : AdviceStroke 4.25 - include : VBar.m (Middle - Width * 0.2625) bot top sw - include : VBar.m Middle bot top sw - include : VBar.m (Middle + Width * 0.2625) bot top sw + create-glyph 'interleave' 0x2AF4 : TripleBarShape Middle top bot OperatorStroke + + create-glyph 'bigInterleave' 0x2AFC : TripleBarShape Middle ParenTop ParenBot OperatorStroke diff --git a/packages/font-glyphs/src/symbol/punctuation/bar.ptl b/packages/font-glyphs/src/symbol/punctuation/bar.ptl index 489f5c50a..789272d56 100644 --- a/packages/font-glyphs/src/symbol/punctuation/bar.ptl +++ b/packages/font-glyphs/src/symbol/punctuation/bar.ptl @@ -11,80 +11,92 @@ glyph-block Symbol-Punctuation-Bar : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - define [BarShape x gap] : glyph-proc - set-base-anchor 'above' x ParenTop - set-base-anchor 'below' x ParenBot - include : VBar.m x (ParenBot + gap) (ParenTop - gap) + glyph-block-export BarShape + define [BarShape x top bot fine] : glyph-proc + set-base-anchor 'above' x top + set-base-anchor 'below' x bot + local sw : fallback fine Stroke + include : VBar.m x bot top sw - create-glyph 'bar.upright' : BarShape Middle 0 - create-glyph 'bar.slanted.naturalSlope' : BarShape Middle 0 + create-glyph 'bar.upright' : BarShape Middle ParenTop ParenBot + create-glyph 'bar.slanted.naturalSlope' : BarShape Middle ParenTop ParenBot create-glyph 'bar.slanted.forceUpright' : glyph-proc include : ForceUpright - include : BarShape Middle 0 + include : BarShape Middle ParenTop ParenBot create-glyph 'ligBarInsideBracketLeft' : glyph-proc Joining.set currentGlyph Joining.Classes.Left + local gap : Stroke + [Math.max [AdviceStroke 5] (XH / 12)] include : BarShape [mix SB RightSB DesignParameters.bracketOutside] + [HSwToV HalfStroke] - Stroke + [Math.max [AdviceStroke 5] (XH / 12)] + ParenTop - gap + ParenBot + gap create-glyph 'ligBarInsideBracketRight' : glyph-proc Joining.set currentGlyph Joining.Classes.Right + local gap : Stroke + [Math.max [AdviceStroke 5] (XH / 12)] include : BarShape [mix RightSB SB DesignParameters.bracketOutside] - [HSwToV HalfStroke] - Stroke + [Math.max [AdviceStroke 5] (XH / 12)] + ParenTop - gap + ParenBot + gap - define [DoubleBarShape] : glyph-proc - set-base-anchor 'above' Middle ParenTop - set-base-anchor 'below' Middle ParenBot - local sw : AdviceStroke 3.5 - include : VBar.m (Middle - Width * 0.175) ParenBot ParenTop sw - include : VBar.m (Middle + Width * 0.175) ParenBot ParenTop sw - - create-glyph 'doubleBar.upright' : DoubleBarShape - create-glyph 'doubleBar.slanted.naturalSlope' : DoubleBarShape - create-glyph 'doubleBar.slanted.forceUpright' : glyph-proc - include : ForceUpright - include : DoubleBarShape - - define [TripleBarShape] : glyph-proc - set-base-anchor 'above' Middle ParenTop - set-base-anchor 'below' Middle ParenBot - local sw : AdviceStroke 4.25 - include : VBar.m (Middle - Width * 0.2625) ParenBot ParenTop sw - include : VBar.m Middle ParenBot ParenTop sw - include : VBar.m (Middle + Width * 0.2625) ParenBot ParenTop sw - - create-glyph 'tripleBar.upright' : TripleBarShape - create-glyph 'tripleBar.slanted.naturalSlope' : TripleBarShape - create-glyph 'tripleBar.slanted.forceUpright' : glyph-proc - include : ForceUpright - include : TripleBarShape - - define [BrokenBarShape] : glyph-proc + define [BrokenBarShape x top bot fine] : glyph-proc local breakDist : Math.max Stroke (CAP / 8) - include : VBar.m Middle (SymbolMid + breakDist / 2) ParenTop - include : VBar.m Middle ParenBot (SymbolMid - breakDist / 2) + local yMid : mix top bot 0.5 + local sw : fallback fine Stroke + include : VBar.m x (yMid + breakDist / 2) top sw + include : VBar.m x bot (yMid - breakDist / 2) sw - create-glyph 'brokenBar.upright' : BrokenBarShape - create-glyph 'brokenBar.slanted.naturalSlope' : BrokenBarShape + create-glyph 'brokenBar.upright' : BrokenBarShape Middle ParenTop ParenBot + create-glyph 'brokenBar.slanted.naturalSlope' : BrokenBarShape Middle ParenTop ParenBot create-glyph 'brokenBar.slanted.forceUpright' : glyph-proc include : ForceUpright - include : BrokenBarShape + include : BrokenBarShape Middle ParenTop ParenBot - create-glyph 'palatoalveolarclick' 0x1C2 : glyph-proc - include [refer-glyph 'bar.upright'] AS_BASE - include : HBar.b SB RightSB (SymbolMid + XH * 0.1) OperatorStroke - include : HBar.t SB RightSB (SymbolMid - XH * 0.1) OperatorStroke + glyph-block-export DoubleBarShape + define [DoubleBarShape x top bot fine] : glyph-proc + set-base-anchor 'above' x top + set-base-anchor 'below' x bot + local sw : ([fallback fine Stroke] / Stroke) * [AdviceStroke 3.5] + include : VBar.m (x - Width * 0.175) bot top sw + include : VBar.m (x + Width * 0.175) bot top sw + + create-glyph 'doubleBar.upright' : DoubleBarShape Middle ParenTop ParenBot + create-glyph 'doubleBar.slanted.naturalSlope' : DoubleBarShape Middle ParenTop ParenBot + create-glyph 'doubleBar.slanted.forceUpright' : glyph-proc + include : ForceUpright + include : DoubleBarShape Middle ParenTop ParenBot + + glyph-block-export TripleBarShape + define [TripleBarShape x top bot fine] : glyph-proc + set-base-anchor 'above' x top + set-base-anchor 'below' x bot + local sw : ([fallback fine Stroke] / Stroke) * [AdviceStroke 4.25] + include : VBar.m (x - Width * 0.2625) bot top sw + include : VBar.m x bot top sw + include : VBar.m (x + Width * 0.2625) bot top sw + + create-glyph 'tripleBar.upright' : TripleBarShape Middle ParenTop ParenBot + create-glyph 'tripleBar.slanted.naturalSlope' : TripleBarShape Middle ParenTop ParenBot + create-glyph 'tripleBar.slanted.forceUpright' : glyph-proc + include : ForceUpright + include : TripleBarShape Middle ParenTop ParenBot select-variant 'bar.slanted' orthographic-slanted 'bar' '|' - select-variant 'doubleBar.slanted' (follow -- 'bar.slanted') - orthographic-slanted 'doubleBar' 0x2016 - select-variant 'tripleBar.slanted' (follow -- 'bar.slanted') - orthographic-slanted 'tripleBar' 0x2AFC + select-variant 'brokenBar.slanted' (follow -- 'bar.slanted') orthographic-slanted 'brokenBar' 0xA6 - alias 'dentalclick' 0x1C0 'bar.upright' - alias 'alveolarlateralclick' 0x1C1 'doubleBar.upright' - alias 'retroflexlateralclick' 0x2980 'tripleBar.upright' + + select-variant 'doubleBar.slanted' (follow -- 'bar.slanted') + orthographic-slanted 'doubleBar' 0x2016 + + select-variant 'tripleBar.slanted' (follow -- 'bar.slanted') + orthographic-slanted 'tripleBar' 0x2980 + + create-glyph 'dentalclick' 0x1C0 : BarShape Middle ParenTop ParenBot + create-glyph 'alveolarlateralclick' 0x1C1 : DoubleBarShape Middle ParenTop ParenBot + create-glyph 'palatoalveolarclick' 0x1C2 : glyph-proc + include [refer-glyph 'dentalclick'] AS_BASE + include : HBar.b SB RightSB (SymbolMid + XH * 0.1) OverlayStroke + include : HBar.t SB RightSB (SymbolMid - XH * 0.1) OverlayStroke From ff2a8eb6468e2d0380a2f0f6b8c61d7e784a64e5 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sun, 24 Mar 2024 22:56:02 -0700 Subject: [PATCH 2/3] Fix build break (#2255) --- verdafile.mjs | 101 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 79 insertions(+), 22 deletions(-) diff --git a/verdafile.mjs b/verdafile.mjs index 10e3e20de..3d8569604 100644 --- a/verdafile.mjs +++ b/verdafile.mjs @@ -535,8 +535,8 @@ const BuildNoGcTtf = task.make( const [noGc] = await target.need(BuildNoGcTtfImpl(gr, fn)); return noGc; } else { - const [distUnhinted] = await target.need(DistHintedTTF(gr, fn)); - return distUnhinted; + const [distHinted] = await target.need(DistHintedTTF(gr, fn)); + return distHinted; } }, ); @@ -659,29 +659,33 @@ const CollectPlans = computed(`metadata:collect-plans`, async target => { return await getCollectPlans(target, rawPlans.collectPlans); }); +const SGR_PREFIX_PREFIX = "SGr-"; + // eslint-disable-next-line complexity async function getCollectPlans(target, rawCollectPlans) { const plans = {}; let allCollectableGroups = new Set(); + for (const collectPrefix in rawCollectPlans) { const collect = rawCollectPlans[collectPrefix]; - if (!collect.release) continue; - for (const gr of collect.from) allCollectableGroups.add(gr); - } - const amendedRawCollectPlans = { ...rawCollectPlans }; - 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; + const glyfTtcComposition = {}; // Collect plan for glyf-sharing TTCs + const ttcComposition = {}; // Collect plan for master TTCs + const sGrTtcCompositions = {}; // single-group TTCs + + const shouldProduceSgr = collect.release && collect.from.length > 1; + + if (shouldProduceSgr) { + for (const prefix of collect.from) { + const sgrPrefix = SGR_PREFIX_PREFIX + prefix; + if (allCollectableGroups.has(sgrPrefix)) + throw new Error(`Group ${sgrPrefix} is already in another release plan.`); + allCollectableGroups.add(sgrPrefix); + sGrTtcCompositions[sgrPrefix] = {}; + } } - amendedRawCollectPlans[`SGr-` + gr] = { release: true, isAmended: true, from: [gr] }; - } - for (const collectPrefix in amendedRawCollectPlans) { - const glyfTtcComposition = {}; - const ttcComposition = {}; - const collect = amendedRawCollectPlans[collectPrefix]; if (!collect || !collect.from || !collect.from.length) continue; for (const prefix of collect.from) { @@ -701,12 +705,21 @@ async function getCollectPlans(target, rawCollectPlans) { const ttcFileName = fnStandardTtc(false, collectPrefix, suffixMap, sfi); if (!ttcComposition[ttcFileName]) ttcComposition[ttcFileName] = []; ttcComposition[ttcFileName].push(glyfTtcFileName); + + if (shouldProduceSgr) { + const sgrPrefix = SGR_PREFIX_PREFIX + prefix; + const sgrTtcFileName = fnStandardTtc(false, sgrPrefix, suffixMap, sfi); + if (!sGrTtcCompositions[sgrPrefix][sgrTtcFileName]) + sGrTtcCompositions[sgrPrefix][sgrTtcFileName] = []; + sGrTtcCompositions[sgrPrefix][sgrTtcFileName].push(ttfTargetName); + } } } plans[collectPrefix] = { glyfTtcComposition, ttcComposition, groupDecomposition: [...collect.from], + sGrTtcCompositions, inRelease: !!collect.release, isAmended: !!collect.isAmended, }; @@ -771,6 +784,35 @@ const CollectedTtcFile = file.make( await buildCompositeTtc(out, inputs); }, ); + +const SGrTtcFile = file.make( + (cgr, sgr, f) => `${DIST_TTC}/${sgr}/${f}.ttc`, + async (target, out, cgr, sgr, f) => { + const [cp] = await target.need(CollectPlans, de`${out.dir}`); + const parts = Array.from(new Set(cp[cgr].sGrTtcCompositions[sgr][f])); + const [inputs] = await target.need(parts.map(pt => DistHintedTTF(cgr, pt))); + await buildCompositeTtc(out, inputs); + }, +); +const SGrSuperTtcFile = file.make( + (cgr, sgr) => `${DIST_SUPER_TTC}/${sgr}.ttc`, + async (target, out, cgr, sgr) => { + const [cp] = await target.need(CollectPlans, de`${out.dir}`); + const parts = new Set(); + for (const [f, comp] of Object.entries(cp[cgr].sGrTtcCompositions[sgr])) { + for (const t of comp) parts.add(t); + } + const [inputs] = await target.need(Array.from(parts).map(pt => DistHintedTTF(cgr, pt))); + await buildCompositeTtc(out, inputs); + }, +); +async function buildCompositeTtc(out, inputs) { + const inputPaths = inputs.map(f => f.full); + echo.action(echo.hl.command(`Create TTC`), out.full, echo.hl.operator("<-"), inputPaths); + await absolutelySilently.run(MAKE_TTC, ["-o", out.full], inputPaths); +} + +// TTC for glyph sharing const GlyfTtc = file.make( (cgr, f) => `${GLYF_TTC}/${cgr}/${f}.ttc`, async (target, out, cgr, f) => { @@ -779,13 +821,6 @@ const GlyfTtc = file.make( await buildGlyphSharingTtc(target, parts, out); }, ); - -async function buildCompositeTtc(out, inputs) { - const inputPaths = inputs.map(f => f.full); - echo.action(echo.hl.command(`Create TTC`), out.full, echo.hl.operator("<-"), inputPaths); - await absolutelySilently.run(MAKE_TTC, ["-o", out.full], inputPaths); -} - async function buildGlyphSharingTtc(target, parts, out) { await target.need(de`${out.dir}`); const [ttfInputs] = await target.need(parts.map(part => BuildNoGcTtf(part.dir, part.file))); @@ -815,6 +850,22 @@ const SuperTtcZip = file.make( await CreateGroupArchiveFile(DIST_SUPER_TTC, out, `${cgr}.ttc`); }, ); +const SgrTtcZip = file.make( + (cgr, sgr, version) => `${ARCHIVE_DIR}/PkgTTC-${sgr}-${version}.zip`, + async (target, out, cgr, sgr) => { + const [cPlan] = await target.need(CollectPlans, de`${out.dir}`); + const ttcFiles = Array.from(Object.keys(cPlan[cgr].sGrTtcCompositions[sgr])); + await target.need(ttcFiles.map(pt => SGrTtcFile(cgr, sgr, pt))); + await CreateGroupArchiveFile(`${DIST_TTC}/${sgr}`, out, `*.ttc`); + }, +); +const SgrSuperTtcZip = file.make( + (cgr, sgr, version) => `${ARCHIVE_DIR}/SuperTTC-${sgr}-${version}.zip`, + async (target, out, cgr, sgr) => { + await target.need(de`${out.dir}`, SGrSuperTtcFile(cgr, sgr)); + await CreateGroupArchiveFile(DIST_SUPER_TTC, out, `${sgr}.ttc`); + }, +); // Single-group Archives const GroupTtfZip = file.make( @@ -1147,8 +1198,14 @@ const ReleaseArchivesFor = task.group(`release:archives-for`, async (target, cgr if (!plan || !plan.inRelease) throw new Error(`CollectGroup ${cgr} is not in release.`); let goals = []; + goals.push(TtcZip(cgr, version)); goals.push(SuperTtcZip(cgr, version)); + for (const sgr in plan.sGrTtcCompositions) { + goals.push(SgrTtcZip(cgr, sgr, version)); + goals.push(SgrSuperTtcZip(cgr, sgr, version)); + } + const subGroups = collectPlans[cgr].groupDecomposition; for (const gr of subGroups) { goals.push(GroupTtfZip(gr, version, false)); From a2599b2f9c9b70393b676e5153b1dffe107217fc Mon Sep 17 00:00:00 2001 From: be5invis Date: Mon, 25 Mar 2024 00:57:47 -0700 Subject: [PATCH 3/3] Release 29.0.4 --- CHANGELOG.md | 6 + doc/PACKAGE-LIST.md | 230 ++++++++++----------- doc/cv-influences.md | 2 +- images/button-release.dark.svg | 4 +- images/button-release.light.svg | 4 +- images/cs-block-latin-extended-b.dark.svg | 2 +- images/cs-block-latin-extended-b.light.svg | 2 +- images/cs-block-latin-extended-f.dark.svg | 2 +- images/cs-block-latin-extended-f.light.svg | 2 +- package-lock.json | 80 +++---- package.json | 2 +- packages/font-glyphs/package.json | 12 +- packages/font-kits/package.json | 8 +- packages/font-otl/package.json | 6 +- packages/font/package.json | 16 +- packages/geometry-cache/package.json | 4 +- packages/geometry/package.json | 4 +- packages/glyph/package.json | 4 +- packages/param/package.json | 4 +- packages/util/package.json | 2 +- tools/amend-readme/package.json | 4 +- tools/data-export/package.json | 4 +- tools/generate-samples/package.json | 4 +- tools/misc/package.json | 4 +- verdafile.mjs | 29 ++- 25 files changed, 223 insertions(+), 218 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 031a11005..7efafe587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## Modifications since last major version +### 29.0.4 + +* Make `U+2980` respond to `VSAM`. + - `U+2AFC` will no longer respond to `VSAM`. + + ### 29.0.3 * Fix height of block quadrants (`U+2596`..`U+259F`) (#2240). diff --git a/doc/PACKAGE-LIST.md b/doc/PACKAGE-LIST.md index fdae2f951..ef7604ae7 100644 --- a/doc/PACKAGE-LIST.md +++ b/doc/PACKAGE-LIST.md @@ -1,7 +1,7 @@ -# Package list of Release 29.0.3 +# Package list of Release 29.0.4 ## Prebuilt Packages Iosevka provides a large variety of variants. Prebuilt variants are listed below. For all Monospace variants' packages, it will contain three _spacing variants_. You can either download the package containing all the spacing variants (recommended), or cherry-pick the variant with specific spacing. @@ -22,146 +22,146 @@ Iosevka provides various packaging formats, here is the list of them: - + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - + + - - + +
📦 IosevkaMonospace, DefaultSuper TTCTTC 
📦 IosevkaMonospace, DefaultSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
    ├ IosevkaDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka TermTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka FixedFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SlabMonospace, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
    ├ Iosevka SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka CurlyMonospace, Curly StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
    ├ Iosevka CurlyDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term CurlyTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed CurlyFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka Curly SlabMonospace, Curly Style, Slab-serifSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
    ├ Iosevka Curly SlabDefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term Curly SlabTerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed Curly SlabFixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS01Monospace, Andale Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
    ├ Iosevka SS01DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS01TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS01FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS02Monospace, Anonymous Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
    ├ Iosevka SS02DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS02TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS02FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS03Monospace, Consolas StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
    ├ Iosevka SS03DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS03TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS03FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS04Monospace, Menlo StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
    ├ Iosevka SS04DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS04TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS04FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS05Monospace, Fira Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
    ├ Iosevka SS05DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS05TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS05FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS06Monospace, Liberation Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
    ├ Iosevka SS06DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS06TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS06FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS07Monospace, Monaco StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
    ├ Iosevka SS07DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS07TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS07FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS08Monospace, Pragmata Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
    ├ Iosevka SS08DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS08TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS08FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS09Monospace, Source Code Pro StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
    ├ Iosevka SS09DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS09TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS09FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS10Monospace, Envy Code R StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
    ├ Iosevka SS10DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS10TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS10FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS11Monospace, X Windows Fixed StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
    ├ Iosevka SS11DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS11TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS11FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS12Monospace, Ubuntu Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
    ├ Iosevka SS12DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS12TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS12FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS13Monospace, Lucida StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
    ├ Iosevka SS13DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS13TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS13FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS14Monospace, JetBrains Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
    ├ Iosevka SS14DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS14TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS14FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS15Monospace, IBM Plex Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
    ├ Iosevka SS15DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS15TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS15FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS16Monospace, PT Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
    ├ Iosevka SS16DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS16TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS16FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS17Monospace, Recursive Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
    ├ Iosevka SS17DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS17TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS17FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka SS18Monospace, Input Mono StyleSuper TTCTTC 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka AileQuasi-proportional, Sans-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka AileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 Iosevka EtoileQuasi-proportional, Slab-serif 
  └ Sub-packagesSpacingLigaturesDownloads
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka EtoileDefaultNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
diff --git a/doc/cv-influences.md b/doc/cv-influences.md index 90cadf3c3..499a85f67 100644 --- a/doc/cv-influences.md +++ b/doc/cv-influences.md @@ -912,7 +912,7 @@ - `VSAM`: - | (`U+007C`), ¦ (`U+00A6`), ‖ (`U+2016`), ⫼ (`U+2AFC`) + | (`U+007C`), ¦ (`U+00A6`), ‖ (`U+2016`), ⦀ (`U+2980`) - `VSAN`: diff --git a/images/button-release.dark.svg b/images/button-release.dark.svg index 08ed7afde..dea8f579b 100644 --- a/images/button-release.dark.svg +++ b/images/button-release.dark.svg @@ -10,7 +10,7 @@ - + @@ -22,7 +22,7 @@ - + diff --git a/images/button-release.light.svg b/images/button-release.light.svg index 4f549f083..881fa35a7 100644 --- a/images/button-release.light.svg +++ b/images/button-release.light.svg @@ -10,7 +10,7 @@ - + @@ -22,7 +22,7 @@ - + diff --git a/images/cs-block-latin-extended-b.dark.svg b/images/cs-block-latin-extended-b.dark.svg index 8d6271208..2ae5b244b 100644 --- a/images/cs-block-latin-extended-b.dark.svg +++ b/images/cs-block-latin-extended-b.dark.svg @@ -85,7 +85,7 @@ - + diff --git a/images/cs-block-latin-extended-b.light.svg b/images/cs-block-latin-extended-b.light.svg index aaa657f4a..024ae98b4 100644 --- a/images/cs-block-latin-extended-b.light.svg +++ b/images/cs-block-latin-extended-b.light.svg @@ -85,7 +85,7 @@ - + diff --git a/images/cs-block-latin-extended-f.dark.svg b/images/cs-block-latin-extended-f.dark.svg index dd6928146..d05cf06f9 100644 --- a/images/cs-block-latin-extended-f.dark.svg +++ b/images/cs-block-latin-extended-f.dark.svg @@ -74,7 +74,7 @@ - + diff --git a/images/cs-block-latin-extended-f.light.svg b/images/cs-block-latin-extended-f.light.svg index ffea81049..1198d0cd6 100644 --- a/images/cs-block-latin-extended-f.light.svg +++ b/images/cs-block-latin-extended-f.light.svg @@ -74,7 +74,7 @@ - + diff --git a/package-lock.json b/package-lock.json index 29ff702bd..79cde0026 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@iosevka/monorepo", - "version": "29.0.3", + "version": "29.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@iosevka/monorepo", - "version": "29.0.3", + "version": "29.0.4", "workspaces": [ "packages/*", "tools/*" @@ -4310,16 +4310,16 @@ }, "packages/font": { "name": "@iosevka/font", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "29.0.3", - "@iosevka/font-otl": "29.0.3", - "@iosevka/geometry": "29.0.3", - "@iosevka/geometry-cache": "29.0.3", - "@iosevka/glyph": "29.0.3", - "@iosevka/param": "29.0.3", - "@iosevka/util": "29.0.3", + "@iosevka/font-glyphs": "29.0.4", + "@iosevka/font-otl": "29.0.4", + "@iosevka/geometry": "29.0.4", + "@iosevka/geometry-cache": "29.0.4", + "@iosevka/glyph": "29.0.4", + "@iosevka/param": "29.0.4", + "@iosevka/util": "29.0.4", "harfbuzzjs": "^0.3.4", "ot-builder": "^1.7.3", "semver": "^7.6.0" @@ -4327,100 +4327,100 @@ }, "packages/font-glyphs": { "name": "@iosevka/font-glyphs", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/font-kits": "29.0.3", - "@iosevka/geometry": "29.0.3", - "@iosevka/geometry-cache": "29.0.3", - "@iosevka/glyph": "29.0.3", - "@iosevka/util": "29.0.3", + "@iosevka/font-kits": "29.0.4", + "@iosevka/geometry": "29.0.4", + "@iosevka/geometry-cache": "29.0.4", + "@iosevka/glyph": "29.0.4", + "@iosevka/util": "29.0.4", "typo-geom": "^0.15.1" } }, "packages/font-kits": { "name": "@iosevka/font-kits", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/geometry": "29.0.3", - "@iosevka/glyph": "29.0.3", - "@iosevka/util": "29.0.3" + "@iosevka/geometry": "29.0.4", + "@iosevka/glyph": "29.0.4", + "@iosevka/util": "29.0.4" } }, "packages/font-otl": { "name": "@iosevka/font-otl", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/font-glyphs": "29.0.3", - "@iosevka/glyph": "29.0.3", + "@iosevka/font-glyphs": "29.0.4", + "@iosevka/glyph": "29.0.4", "toposort": "^2.0.2" } }, "packages/geometry": { "name": "@iosevka/geometry", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/util": "29.0.3", + "@iosevka/util": "29.0.4", "spiro": "^3.0.0", "typo-geom": "^0.15.1" } }, "packages/geometry-cache": { "name": "@iosevka/geometry-cache", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/geometry": "29.0.3", + "@iosevka/geometry": "29.0.4", "@msgpack/msgpack": "^2.8.0" } }, "packages/glyph": { "name": "@iosevka/glyph", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/geometry": "29.0.3" + "@iosevka/geometry": "29.0.4" } }, "packages/param": { "name": "@iosevka/param", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/util": "29.0.3" + "@iosevka/util": "29.0.4" } }, "packages/util": { "name": "@iosevka/util", - "version": "29.0.3" + "version": "29.0.4" }, "tools/amend-readme": { "name": "@iosevka/amend-readme", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.0.3", + "@iosevka/param": "29.0.4", "@unicode/unicode-15.1.0": "^1.5.2" } }, "tools/data-export": { "name": "@iosevka/data-export", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.0.3", + "@iosevka/param": "29.0.4", "@unicode/unicode-15.1.0": "^1.5.2", "cldr": "^7.5.0" } }, "tools/generate-samples": { "name": "@iosevka/generate-samples", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/data-export": "29.0.3" + "@iosevka/data-export": "29.0.4" } }, "tools/misc": { "name": "@iosevka/misc", - "version": "29.0.3", + "version": "29.0.4", "dependencies": { - "@iosevka/util": "29.0.3", + "@iosevka/util": "29.0.4", "semver": "^7.6.0", "wawoff2": "^2.0.1" } diff --git a/package.json b/package.json index 84eaf21cf..4c73d8434 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/monorepo", - "version": "29.0.3", + "version": "29.0.4", "workspaces": [ "packages/*", "tools/*" diff --git a/packages/font-glyphs/package.json b/packages/font-glyphs/package.json index 5a81f5971..72731d6f8 100644 --- a/packages/font-glyphs/package.json +++ b/packages/font-glyphs/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-glyphs", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs", @@ -8,11 +8,11 @@ "./unicode-knowledge": "./src/meta/unicode-knowledge.mjs" }, "dependencies": { - "@iosevka/font-kits": "29.0.3", - "@iosevka/geometry": "29.0.3", - "@iosevka/geometry-cache": "29.0.3", - "@iosevka/glyph": "29.0.3", - "@iosevka/util": "29.0.3", + "@iosevka/font-kits": "29.0.4", + "@iosevka/geometry": "29.0.4", + "@iosevka/geometry-cache": "29.0.4", + "@iosevka/glyph": "29.0.4", + "@iosevka/util": "29.0.4", "typo-geom": "^0.15.1" } } diff --git a/packages/font-kits/package.json b/packages/font-kits/package.json index 792c6a9c7..8849f023d 100644 --- a/packages/font-kits/package.json +++ b/packages/font-kits/package.json @@ -1,14 +1,14 @@ { "name": "@iosevka/font-kits", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { "./boole-kit": "./src/boole-kit.mjs", "./spiro-kit": "./src/spiro-kit.mjs" }, "dependencies": { - "@iosevka/geometry": "29.0.3", - "@iosevka/glyph": "29.0.3", - "@iosevka/util": "29.0.3" + "@iosevka/geometry": "29.0.4", + "@iosevka/glyph": "29.0.4", + "@iosevka/util": "29.0.4" } } diff --git a/packages/font-otl/package.json b/packages/font-otl/package.json index bd3ba6734..1913088a1 100644 --- a/packages/font-otl/package.json +++ b/packages/font-otl/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/font-otl", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/font-glyphs": "29.0.3", - "@iosevka/glyph": "29.0.3", + "@iosevka/font-glyphs": "29.0.4", + "@iosevka/glyph": "29.0.4", "toposort": "^2.0.2" } } diff --git a/packages/font/package.json b/packages/font/package.json index 8176a03fe..d8ccf5ce4 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,13 +10,13 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "29.0.3", - "@iosevka/font-otl": "29.0.3", - "@iosevka/geometry": "29.0.3", - "@iosevka/geometry-cache": "29.0.3", - "@iosevka/glyph": "29.0.3", - "@iosevka/param": "29.0.3", - "@iosevka/util": "29.0.3", + "@iosevka/font-glyphs": "29.0.4", + "@iosevka/font-otl": "29.0.4", + "@iosevka/geometry": "29.0.4", + "@iosevka/geometry-cache": "29.0.4", + "@iosevka/glyph": "29.0.4", + "@iosevka/param": "29.0.4", + "@iosevka/util": "29.0.4", "harfbuzzjs": "^0.3.4", "ot-builder": "^1.7.3", "semver": "^7.6.0" diff --git a/packages/geometry-cache/package.json b/packages/geometry-cache/package.json index 41ce60f6b..2af0d6304 100644 --- a/packages/geometry-cache/package.json +++ b/packages/geometry-cache/package.json @@ -1,12 +1,12 @@ { "name": "@iosevka/geometry-cache", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/geometry": "29.0.3", + "@iosevka/geometry": "29.0.4", "@msgpack/msgpack": "^2.8.0" } } diff --git a/packages/geometry/package.json b/packages/geometry/package.json index fcae76397..4094db837 100644 --- a/packages/geometry/package.json +++ b/packages/geometry/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/geometry", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs", @@ -13,7 +13,7 @@ "./spiro-control": "./src/spiro-control.mjs" }, "dependencies": { - "@iosevka/util": "29.0.3", + "@iosevka/util": "29.0.4", "spiro": "^3.0.0", "typo-geom": "^0.15.1" } diff --git a/packages/glyph/package.json b/packages/glyph/package.json index ffb8e9a7e..1a9ee7e6c 100644 --- a/packages/glyph/package.json +++ b/packages/glyph/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/glyph", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/glyph.mjs", @@ -9,6 +9,6 @@ "./relation": "./src/relation.mjs" }, "dependencies": { - "@iosevka/geometry": "29.0.3" + "@iosevka/geometry": "29.0.4" } } diff --git a/packages/param/package.json b/packages/param/package.json index f35dc4705..60f8a180d 100644 --- a/packages/param/package.json +++ b/packages/param/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/param", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs", @@ -9,6 +9,6 @@ "./metric-override": "./src/metric-override.mjs" }, "dependencies": { - "@iosevka/util": "29.0.3" + "@iosevka/util": "29.0.4" } } diff --git a/packages/util/package.json b/packages/util/package.json index a140fcf86..6c79d17f9 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/util", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs", diff --git a/tools/amend-readme/package.json b/tools/amend-readme/package.json index 090b8da39..3710a82ae 100644 --- a/tools/amend-readme/package.json +++ b/tools/amend-readme/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/amend-readme", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.0.3", + "@iosevka/param": "29.0.4", "@unicode/unicode-15.1.0": "^1.5.2" } } diff --git a/tools/data-export/package.json b/tools/data-export/package.json index 36e7565d2..4d300fa0f 100644 --- a/tools/data-export/package.json +++ b/tools/data-export/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/data-export", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,7 +10,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.0.3", + "@iosevka/param": "29.0.4", "@unicode/unicode-15.1.0": "^1.5.2", "cldr": "^7.5.0" } diff --git a/tools/generate-samples/package.json b/tools/generate-samples/package.json index 9fb2747db..50a694533 100644 --- a/tools/generate-samples/package.json +++ b/tools/generate-samples/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/generate-samples", - "version": "29.0.3", + "version": "29.0.4", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/data-export": "29.0.3" + "@iosevka/data-export": "29.0.4" } } diff --git a/tools/misc/package.json b/tools/misc/package.json index 82526b019..f4de0d684 100644 --- a/tools/misc/package.json +++ b/tools/misc/package.json @@ -1,10 +1,10 @@ { "name": "@iosevka/misc", - "version": "29.0.3", + "version": "29.0.4", "private": true, "dependencies": { "semver": "^7.6.0", "wawoff2": "^2.0.1", - "@iosevka/util": "29.0.3" + "@iosevka/util": "29.0.4" } } diff --git a/verdafile.mjs b/verdafile.mjs index 3d8569604..d6b2f23aa 100644 --- a/verdafile.mjs +++ b/verdafile.mjs @@ -672,7 +672,7 @@ async function getCollectPlans(target, rawCollectPlans) { const glyfTtcComposition = {}; // Collect plan for glyf-sharing TTCs const ttcComposition = {}; // Collect plan for master TTCs - const sGrTtcCompositions = {}; // single-group TTCs + const singleGroupTtcInfos = {}; // single-group TTCs const shouldProduceSgr = collect.release && collect.from.length > 1; @@ -682,7 +682,7 @@ async function getCollectPlans(target, rawCollectPlans) { if (allCollectableGroups.has(sgrPrefix)) throw new Error(`Group ${sgrPrefix} is already in another release plan.`); allCollectableGroups.add(sgrPrefix); - sGrTtcCompositions[sgrPrefix] = {}; + singleGroupTtcInfos[sgrPrefix] = { from: prefix, comp: {} }; } } @@ -709,9 +709,9 @@ async function getCollectPlans(target, rawCollectPlans) { if (shouldProduceSgr) { const sgrPrefix = SGR_PREFIX_PREFIX + prefix; const sgrTtcFileName = fnStandardTtc(false, sgrPrefix, suffixMap, sfi); - if (!sGrTtcCompositions[sgrPrefix][sgrTtcFileName]) - sGrTtcCompositions[sgrPrefix][sgrTtcFileName] = []; - sGrTtcCompositions[sgrPrefix][sgrTtcFileName].push(ttfTargetName); + const sgrInfo = singleGroupTtcInfos[sgrPrefix]; + if (!sgrInfo.comp[sgrTtcFileName]) sgrInfo.comp[sgrTtcFileName] = []; + sgrInfo.comp[sgrTtcFileName].push(ttfTargetName); } } } @@ -719,7 +719,7 @@ async function getCollectPlans(target, rawCollectPlans) { glyfTtcComposition, ttcComposition, groupDecomposition: [...collect.from], - sGrTtcCompositions, + singleGroupTtcInfos, inRelease: !!collect.release, isAmended: !!collect.isAmended, }; @@ -789,8 +789,9 @@ const SGrTtcFile = file.make( (cgr, sgr, f) => `${DIST_TTC}/${sgr}/${f}.ttc`, async (target, out, cgr, sgr, f) => { const [cp] = await target.need(CollectPlans, de`${out.dir}`); - const parts = Array.from(new Set(cp[cgr].sGrTtcCompositions[sgr][f])); - const [inputs] = await target.need(parts.map(pt => DistHintedTTF(cgr, pt))); + const sgrInfo = cp[cgr].singleGroupTtcInfos[sgr]; + const parts = Array.from(new Set(sgrInfo.comp[f] || [])); + const [inputs] = await target.need(parts.map(pt => DistHintedTTF(sgrInfo.from, pt))); await buildCompositeTtc(out, inputs); }, ); @@ -798,11 +799,9 @@ const SGrSuperTtcFile = file.make( (cgr, sgr) => `${DIST_SUPER_TTC}/${sgr}.ttc`, async (target, out, cgr, sgr) => { const [cp] = await target.need(CollectPlans, de`${out.dir}`); - const parts = new Set(); - for (const [f, comp] of Object.entries(cp[cgr].sGrTtcCompositions[sgr])) { - for (const t of comp) parts.add(t); - } - const [inputs] = await target.need(Array.from(parts).map(pt => DistHintedTTF(cgr, pt))); + const sgrInfo = cp[cgr].singleGroupTtcInfos[sgr]; + const parts = Array.from(Object.keys(sgrInfo.comp)); + const [inputs] = await target.need(parts.map(pt => SGrTtcFile(cgr, sgr, pt))); await buildCompositeTtc(out, inputs); }, ); @@ -854,7 +853,7 @@ const SgrTtcZip = file.make( (cgr, sgr, version) => `${ARCHIVE_DIR}/PkgTTC-${sgr}-${version}.zip`, async (target, out, cgr, sgr) => { const [cPlan] = await target.need(CollectPlans, de`${out.dir}`); - const ttcFiles = Array.from(Object.keys(cPlan[cgr].sGrTtcCompositions[sgr])); + const ttcFiles = Array.from(Object.keys(cPlan[cgr].singleGroupTtcInfos[sgr].comp)); await target.need(ttcFiles.map(pt => SGrTtcFile(cgr, sgr, pt))); await CreateGroupArchiveFile(`${DIST_TTC}/${sgr}`, out, `*.ttc`); }, @@ -1201,7 +1200,7 @@ const ReleaseArchivesFor = task.group(`release:archives-for`, async (target, cgr goals.push(TtcZip(cgr, version)); goals.push(SuperTtcZip(cgr, version)); - for (const sgr in plan.sGrTtcCompositions) { + for (const sgr in plan.singleGroupTtcInfos) { goals.push(SgrTtcZip(cgr, sgr, version)); goals.push(SgrSuperTtcZip(cgr, sgr, version)); }