From e866ee9e437325fec28417a3dfa30f7ff2c5c84a Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Sun, 7 Apr 2024 17:16:05 -0400 Subject: [PATCH 1/9] Make attachment serifs of 3 `K` chars automatic. (#2281) --- changes/29.1.1.md | 2 + packages/font-glyphs/src/letter/latin/k.ptl | 91 ++++++++++----------- params/variants.toml | 31 ++++--- 3 files changed, 64 insertions(+), 60 deletions(-) create mode 100644 changes/29.1.1.md diff --git a/changes/29.1.1.md b/changes/29.1.1.md new file mode 100644 index 0000000000..856063f6e3 --- /dev/null +++ b/changes/29.1.1.md @@ -0,0 +1,2 @@ +* Make presence of descender serif automatic for GREEK CAPITAL KAI SYMBOL (`U+03CF`). +* Make presence of top-left serif automatic for CYRILLIC {CAPITAL|SMALL} LETTER BASHKIR KA (`U+04A0`..`U+04A1`). diff --git a/packages/font-glyphs/src/letter/latin/k.ptl b/packages/font-glyphs/src/letter/latin/k.ptl index df141e7163..37a557eaab 100644 --- a/packages/font-glyphs/src/letter/latin/k.ptl +++ b/packages/font-glyphs/src/letter/latin/k.ptl @@ -340,20 +340,18 @@ glyph-block Letter-Latin-K : begin curly KLegs.Curly symmetricTouching [KLegs.Symmetric 0] symmetricConnected [KLegs.Symmetric : AdviceStroke 6] - symmetricConnectedKH [KLegs.Symmetric [AdviceStroke 6] Descender] + symmetricConnectedKH [KLegs.Symmetric [AdviceStroke 6] Descender] symmetricConnectedVB [KLegs.Symmetric CyrlVbGap] - object # serifs - serifless { 0 0 0 0 } - topLeftSerifed { 2 0 0 0 } - bottomRightSerifed { 0 0 1 0 } - bottomRightSerifed2 { 0 0 0 1 } - topLeftAndBottomRightSerifed { 2 0 1 0 } - topLeftAndBottomRightSerifed2 { 2 0 0 1 } - serifed { 1 1 3 0 } - serifedKH { 1 1 2 0 } - serifed2 { 1 1 2 1 } - serifedKra { 2 1 3 0 } - serifedKappa { 2 0 3 0 } + function [body] : object # serifs + serifless { 0 0 0 } + topLeftSerifed { 2 0 0 } + bottomRightSerifed { 0 0 1 } + topLeftAndBottomRightSerifed { 2 0 1 } + serifedKra { 2 1 3 } + serifedKappa { 2 0 3 } + serifed : match body + [Just 'symmetricConnectedKH'] { 1 1 2 } + __ { 1 1 3 } define [UpperKLTSerif top sw xBarLeft slabType] : match slabType 2 : HSerif.lt xBarLeft top SideJut @@ -371,31 +369,26 @@ glyph-block Letter-Latin-K : begin top / 2 + [CyrlVbLength top] / 2 Math.min [AdviceStroke 5] (CyrlVbGap * 0.5) - # Attachment glyphs used for Greek Kai Symbol - define [GrekKaiAttachmentshape fSerif] : begin + # Attachment glyph used for Greek Kai Symbol + create-glyph 'UpperKaiSymbolAttachment' : glyph-proc + set-width 0 + set-mark-anchor 'trailing' 0 0 define shapeDepth : 0.8 * Descender - 0.25 * Stroke - return : PointingTo 0 0 shapeDepth shapeDepth : function [mag] : glyph-proc - define kSw : mix 1 HVContrast ([Math.sqrt 2] / 2) - include : dispiro + define kSw : mix 1 HVContrast Math.SQRT1_2 + include : PointingTo 0 0 shapeDepth shapeDepth : function [mag] : union + dispiro widths.lhs (Stroke * kSw) flat 0 0 curl mag 0 - if fSerif : include : dispiro - widths.center (Stroke / kSw) - flat 0 (Stroke * kSw + SideJut) - curl 0 (0 - SideJut) - - create-glyph 'UpperKaiSymbolAttachment/sans' : glyph-proc - set-width 0 - set-mark-anchor 'trailing' 0 0 - include : GrekKaiAttachmentshape false - create-glyph 'UpperKaiSymbolAttachment/serifed' : glyph-proc - set-width 0 - set-mark-anchor 'trailing' 0 0 - include : GrekKaiAttachmentshape true + if SLAB + dispiro + widths.center (Stroke / kSw) + flat 0 (Stroke * kSw + SideJut) + curl 0 (0 - SideJut) + no-shape # Main building - foreach { suffix { LegsImpl {slabLT slabLB slabLegs slabKS} } } [pairs-of UpperKConfig] : do + foreach { suffix { LegsImpl {slabLT slabLB slabLegs} } } [pairs-of UpperKConfig] : do local straightBar : LegsImpl !== KLegs.Curly local xBarLeft : SB + [KBalance slabLT straightBar] @@ -429,10 +422,9 @@ glyph-block Letter-Latin-K : begin create-glyph "grek/KaiSymbol.\(suffix)" : glyph-proc include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS + eject-contour 'serifRB' include : ExtendBelowBaseAnchors Descender - include : refer-glyph : match slabKS - 0 'UpperKaiSymbolAttachment/sans' - 1 'UpperKaiSymbolAttachment/serifed' + include [refer-glyph "UpperKaiSymbolAttachment"] create-glyph "smcpK.\(suffix)" : glyph-proc include : MarkSet.e @@ -457,25 +449,26 @@ glyph-block Letter-Latin-K : begin if slabLB : include : UpperKLBSerif CAP Stroke xBarLeft slabLB define [BashkirKaShape df top] : glyph-proc - local left : if slabLT ([mix SB RightSB 0.35] - [HSwToV : 0.5 * df.mvs]) [mix SB RightSB 0.2] - local leftNB : left - [KBalance slabLT straightBar] - local xTopBarLeftEnd : mix 0 SB [if slabLT 0.25 0.375] + local left : if SLAB ([mix SB RightSB 0.35] - [HSwToV : 0.5 * df.mvs]) [mix SB RightSB 0.2] + local leftNB : left - [KBalance SLAB straightBar] + local xTopBarLeftEnd : mix 0 SB [if SLAB 0.25 0.375] local sw : AdviceStroke 3 include : HBar.t xTopBarLeftEnd (Stroke * 0.1 + left) top include : VBar.l left 0 top sw - include : LegsImpl false leftNB RightSB sw top slabLT slabLegs - if slabLT : include : VSerif.dl xTopBarLeftEnd top VJut - Math.min (VJutStroke * df.mvs / Stroke) (0.625 * (left - xTopBarLeftEnd)) - if slabLB : begin - include : HSerif.mb (left + [HSwToV : 0.5 * sw]) 0 Jut - - create-glyph "cyrl/BashkirUpperKa.\(suffix)" : glyph-proc + include : LegsImpl false leftNB RightSB sw top SLAB slabLegs + if SLAB : begin + include : VSerif.dl xTopBarLeftEnd top VJut + Math.min (VJutStroke * df.mvs / Stroke) (0.625 * (left - xTopBarLeftEnd)) + if slabLT : include : UpperKLTSerif top sw left slabLT + if slabLB : include : UpperKLBSerif top sw left slabLB + + create-glyph "cyrl/KaBashkir.\(suffix)" : glyph-proc define df : include : DivFrame 1 include : df.markSet.capital include : BashkirKaShape df CAP - create-glyph "cyrl/BashkirKa.\(suffix)" : glyph-proc + create-glyph "cyrl/kaBashkir.\(suffix)" : glyph-proc define df : include : DivFrame 1 include : df.markSet.e include : BashkirKaShape df XH @@ -592,10 +585,10 @@ glyph-block Letter-Latin-K : begin select-variant 'turnk' 0x29E (follow -- 'k') - select-variant 'cyrl/BashkirUpperKa' 0x4A0 (follow -- 'cyrl/Ka') - select-variant 'cyrl/BashkirKa' 0x4A1 (follow -- 'cyrl/ka') + select-variant 'cyrl/KaBashkir' 0x4A0 + select-variant 'cyrl/kaBashkir' 0x4A1 - select-variant 'grek/KaiSymbol' 0x3CF + select-variant 'grek/KaiSymbol' 0x3CF (follow -- 'KDescender') derive-multi-part-glyphs 'kDot' null {'k' 'dotAbove'} : lambda [srcs gr] : glyph-proc local { base mark } srcs diff --git a/params/variants.toml b/params/variants.toml index 94cd8cd49e..b1cfe3bb9d 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -566,7 +566,6 @@ rank = 1 descriptionAffix = "straight shape" selectorAffix.K = "straight" selectorAffix."K/sansSerif" = "straight" -selectorAffix."grek/KaiSymbol" = "straight" selectorAffix.KDescender = "straight" [prime.capital-k.variants-buildup.stages.body.curly] @@ -574,7 +573,6 @@ rank = 2 descriptionAffix = "curly shape" selectorAffix.K = "curly" selectorAffix."K/sansSerif" = "curly" -selectorAffix."grek/KaiSymbol" = "curly" selectorAffix.KDescender = "curly" [prime.capital-k.variants-buildup.stages.body.symmetric-touching] @@ -582,7 +580,6 @@ rank = 3 descriptionAffix = "symmetric legs touching the vertical bar" selectorAffix.K = "symmetricTouching" selectorAffix."K/sansSerif" = "symmetricTouching" -selectorAffix."grek/KaiSymbol" = "symmetricTouching" selectorAffix.KDescender = "symmetricTouching" [prime.capital-k.variants-buildup.stages.body.symmetric-connected] @@ -590,7 +587,6 @@ rank = 4 descriptionAffix = "symmetric legs connected to the vertical bar" selectorAffix.K = "symmetricConnected" selectorAffix."K/sansSerif" = "symmetricConnected" -selectorAffix."grek/KaiSymbol" = "symmetricConnected" selectorAffix.KDescender = "symmetricConnected" [prime.capital-k.variants-buildup.stages.serifs.serifless] @@ -599,7 +595,6 @@ descriptionAffix = "serifs" descriptionJoiner = "without" selectorAffix.K = "serifless" selectorAffix."K/sansSerif" = "serifless" -selectorAffix."grek/KaiSymbol" = "serifless" selectorAffix.KDescender = "serifless" [prime.capital-k.variants-buildup.stages.serifs.top-left-serifed] @@ -607,7 +602,6 @@ rank = 2 descriptionAffix = "serifs at top left" selectorAffix.K = "topLeftSerifed" selectorAffix."K/sansSerif" = "serifless" -selectorAffix."grek/KaiSymbol" = "topLeftSerifed" selectorAffix.KDescender = "topLeftSerifed" [prime.capital-k.variants-buildup.stages.serifs.bottom-right-serifed] @@ -615,7 +609,6 @@ rank = 3 descriptionAffix = "serifs at bottom right" selectorAffix.K = "bottomRightSerifed" selectorAffix."K/sansSerif" = "serifless" -selectorAffix."grek/KaiSymbol" = "bottomRightSerifed2" selectorAffix.KDescender = "serifless" [prime.capital-k.variants-buildup.stages.serifs.top-left-and-bottom-right-serifed] @@ -623,7 +616,6 @@ rank = 4 descriptionAffix = "serifs at top left and bottom right" selectorAffix.K = "topLeftAndBottomRightSerifed" selectorAffix."K/sansSerif" = "serifless" -selectorAffix."grek/KaiSymbol" = "topLeftAndBottomRightSerifed2" selectorAffix.KDescender = "topLeftSerifed" [prime.capital-k.variants-buildup.stages.serifs.serifed] @@ -631,7 +623,6 @@ rank = 5 descriptionAffix = "serifs" selectorAffix.K = "serifed" selectorAffix."K/sansSerif" = "serifless" -selectorAffix."grek/KaiSymbol" = "serifed2" selectorAffix.KDescender = "serifed" @@ -5374,6 +5365,7 @@ selectorAffix."cyrl/Ka" = "straight" selectorAffix."cyrl/KaDescender" = "straight" selectorAffix."cyrl/KaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/KaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/KaBashkir" = "straight" [prime.cyrl-capital-ka.variants-buildup.stages.body.curly] rank = 2 @@ -5382,6 +5374,7 @@ selectorAffix."cyrl/Ka" = "curly" selectorAffix."cyrl/KaDescender" = "curly" selectorAffix."cyrl/KaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/KaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/KaBashkir" = "curly" [prime.cyrl-capital-ka.variants-buildup.stages.body.symmetric-touching] rank = 3 @@ -5390,6 +5383,7 @@ selectorAffix."cyrl/Ka" = "symmetricTouching" selectorAffix."cyrl/KaDescender" = "symmetricTouching" selectorAffix."cyrl/KaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/KaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/KaBashkir" = "symmetricTouching" [prime.cyrl-capital-ka.variants-buildup.stages.body.symmetric-connected] rank = 4 @@ -5398,6 +5392,7 @@ selectorAffix."cyrl/Ka" = "symmetricConnected" selectorAffix."cyrl/KaDescender" = "symmetricConnected" selectorAffix."cyrl/KaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/KaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/KaBashkir" = "symmetricConnected" [prime.cyrl-capital-ka.variants-buildup.stages.serifs.serifless] rank = 1 @@ -5407,6 +5402,7 @@ selectorAffix."cyrl/Ka" = "serifless" selectorAffix."cyrl/KaDescender" = "serifless" selectorAffix."cyrl/KaVBar" = "serifless" selectorAffix."cyrl/KaHook" = "serifless" +selectorAffix."cyrl/KaBashkir" = "serifless" [prime.cyrl-capital-ka.variants-buildup.stages.serifs.top-left-serifed] rank = 2 @@ -5415,6 +5411,7 @@ selectorAffix."cyrl/Ka" = "topLeftSerifed" selectorAffix."cyrl/KaDescender" = "topLeftSerifed" selectorAffix."cyrl/KaVBar" = "topLeftSerifed" selectorAffix."cyrl/KaHook" = "topLeftSerifed" +selectorAffix."cyrl/KaBashkir" = "serifless" [prime.cyrl-capital-ka.variants-buildup.stages.serifs.bottom-right-serifed] rank = 3 @@ -5423,6 +5420,7 @@ selectorAffix."cyrl/Ka" = "bottomRightSerifed" selectorAffix."cyrl/KaDescender" = "serifless" selectorAffix."cyrl/KaVBar" = "bottomRightSerifed" selectorAffix."cyrl/KaHook" = "serifless" +selectorAffix."cyrl/KaBashkir" = "bottomRightSerifed" [prime.cyrl-capital-ka.variants-buildup.stages.serifs.top-left-and-bottom-right-serifed] rank = 4 @@ -5431,6 +5429,7 @@ selectorAffix."cyrl/Ka" = "topLeftAndBottomRightSerifed" selectorAffix."cyrl/KaDescender" = "topLeftSerifed" selectorAffix."cyrl/KaVBar" = "topLeftAndBottomRightSerifed" selectorAffix."cyrl/KaHook" = "topLeftSerifed" +selectorAffix."cyrl/KaBashkir" = "bottomRightSerifed" [prime.cyrl-capital-ka.variants-buildup.stages.serifs.serifed] rank = 5 @@ -5438,7 +5437,8 @@ descriptionAffix = "serifs" selectorAffix."cyrl/Ka" = "serifed" selectorAffix."cyrl/KaDescender" = "serifed" selectorAffix."cyrl/KaVBar" = "serifed" -selectorAffix."cyrl/KaHook" = "serifedKH" +selectorAffix."cyrl/KaHook" = "serifed" +selectorAffix."cyrl/KaBashkir" = "serifed" @@ -5461,6 +5461,7 @@ selectorAffix."cyrl/ka" = "straight" selectorAffix."cyrl/kaDescender" = "straight" selectorAffix."cyrl/kaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/kaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/kaBashkir" = "straight" [prime.cyrl-ka.variants-buildup.stages.body.curly] rank = 2 @@ -5469,6 +5470,7 @@ selectorAffix."cyrl/ka" = "curly" selectorAffix."cyrl/kaDescender" = "curly" selectorAffix."cyrl/kaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/kaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/kaBashkir" = "curly" [prime.cyrl-ka.variants-buildup.stages.body.symmetric-touching] rank = 3 @@ -5477,6 +5479,7 @@ selectorAffix."cyrl/ka" = "symmetricTouching" selectorAffix."cyrl/kaDescender" = "symmetricTouching" selectorAffix."cyrl/kaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/kaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/kaBashkir" = "symmetricTouching" [prime.cyrl-ka.variants-buildup.stages.body.symmetric-connected] rank = 4 @@ -5485,6 +5488,7 @@ selectorAffix."cyrl/ka" = "symmetricConnected" selectorAffix."cyrl/kaDescender" = "symmetricConnected" selectorAffix."cyrl/kaVBar" = "symmetricConnectedVB" selectorAffix."cyrl/kaHook" = "symmetricConnectedKH" +selectorAffix."cyrl/kaBashkir" = "symmetricConnected" [prime.cyrl-ka.variants-buildup.stages.serifs.serifless] rank = 1 @@ -5494,6 +5498,7 @@ selectorAffix."cyrl/ka" = "serifless" selectorAffix."cyrl/kaDescender" = "serifless" selectorAffix."cyrl/kaVBar" = "serifless" selectorAffix."cyrl/kaHook" = "serifless" +selectorAffix."cyrl/kaBashkir" = "serifless" [prime.cyrl-ka.variants-buildup.stages.serifs.top-left-serifed] rank = 2 @@ -5502,6 +5507,7 @@ selectorAffix."cyrl/ka" = "topLeftSerifed" selectorAffix."cyrl/kaDescender" = "topLeftSerifed" selectorAffix."cyrl/kaVBar" = "topLeftSerifed" selectorAffix."cyrl/kaHook" = "topLeftSerifed" +selectorAffix."cyrl/kaBashkir" = "serifless" [prime.cyrl-ka.variants-buildup.stages.serifs.bottom-right-serifed] rank = 3 @@ -5510,6 +5516,7 @@ selectorAffix."cyrl/ka" = "bottomRightSerifed" selectorAffix."cyrl/kaDescender" = "serifless" selectorAffix."cyrl/kaVBar" = "bottomRightSerifed" selectorAffix."cyrl/kaHook" = "serifless" +selectorAffix."cyrl/kaBashkir" = "bottomRightSerifed" [prime.cyrl-ka.variants-buildup.stages.serifs.top-left-and-bottom-right-serifed] rank = 4 @@ -5518,6 +5525,7 @@ selectorAffix."cyrl/ka" = "topLeftAndBottomRightSerifed" selectorAffix."cyrl/kaDescender" = "topLeftSerifed" selectorAffix."cyrl/kaVBar" = "topLeftAndBottomRightSerifed" selectorAffix."cyrl/kaHook" = "topLeftSerifed" +selectorAffix."cyrl/kaBashkir" = "bottomRightSerifed" [prime.cyrl-ka.variants-buildup.stages.serifs.serifed] rank = 5 @@ -5525,7 +5533,8 @@ descriptionAffix = "serifs" selectorAffix."cyrl/ka" = "serifed" selectorAffix."cyrl/kaDescender" = "serifed" selectorAffix."cyrl/kaVBar" = "serifed" -selectorAffix."cyrl/kaHook" = "serifedKH" +selectorAffix."cyrl/kaHook" = "serifed" +selectorAffix."cyrl/kaBashkir" = "serifed" From af8f360e0eb7766d702856cb4bbd212564d8f63f Mon Sep 17 00:00:00 2001 From: Belleve Date: Sun, 7 Apr 2024 13:09:16 -1000 Subject: [PATCH 2/9] PR: add bump ver check (#2282) * Add bump-version check into the PR validation workflow * Check condition for PR * Setup step and job outputs for conditionals * Fixup * Limit fetch depth * Fix typo * Use a different checkout pattern * Bump version * Fixup conditional for the build stage * Still allow the build stage even if the bump_version_check stage did found changes, as commits by github actions bot won't triggger actions --------- Co-authored-by: GitHub Actions --- .github/workflows/pr-build-validation.yml | 53 ++++++++++++- changes/archives/28.x/28.0.4.md | 12 +-- changes/archives/5.x/5.0.6.md | 6 +- doc/BackersArchive.md | 72 ++++++++--------- docker/README.md | 96 +++++++++++------------ 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 +- 20 files changed, 224 insertions(+), 173 deletions(-) diff --git a/.github/workflows/pr-build-validation.yml b/.github/workflows/pr-build-validation.yml index 593ad5509f..91bdbbc013 100644 --- a/.github/workflows/pr-build-validation.yml +++ b/.github/workflows/pr-build-validation.yml @@ -3,10 +3,61 @@ name: PR Font Build Validation on: [pull_request] jobs: + bump_version_check: + name: Bump version check + if: github.repository == 'be5invis/Iosevka' && github.base_ref == 'dev' + runs-on: ubuntu-latest + + outputs: + changed: ${{ steps.check_changes.outputs.changed }} + + steps: + - name: Checkout PR + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Bump version + run: | + npm install + npm run bump-ver + + - id: check_changes + name: Check changes + run: | + git config core.autocrlf false + if git diff --quiet; then + echo "changed=0" >> "$GITHUB_OUTPUT" + else + echo "changed=1" >> "$GITHUB_OUTPUT" + fi + + - name: Commit to PR + if: steps.check_changes.outputs.changed == '1' + run: | + git config --local user.email "actions@github.com" + git config --local user.name "GitHub Actions" + git add --all + git commit -m "Bump version" + git push + + - name: Add PR comment + uses: mshick/add-pr-comment@v2 + if : steps.check_changes.outputs.changed == '1' + with: + message: | + Your pull request changes the version number. + A commit has been made to bump the version number. + build: name: Build ${{ matrix.fontName }} font + needs: bump_version_check if: github.repository == 'be5invis/Iosevka' - runs-on: ubuntu-latest strategy: diff --git a/changes/archives/28.x/28.0.4.md b/changes/archives/28.x/28.0.4.md index 277cf92711..fbf676ac5e 100644 --- a/changes/archives/28.x/28.0.4.md +++ b/changes/archives/28.x/28.0.4.md @@ -1,6 +1,6 @@ -* Fix leaning marks of turned capital F/L (#2137). -* Fix overlay bar placement of Z with Hook and Z with Swash Tail (#2141). -* Fix attachment of descender parts of Cyrillic Lower Ha/X under `x` = `cursive` (#2142). -* Make the Eng part in LATIN SMALL LETTER FENG DIGRAPH always connected to the f part (#2143). -* Fix top bar shape in CYRILLIC CAPITAL LETTER DJE (#2145). -* Fix leaning marks placement for reversed k/F/P (#2150). +* Fix leaning marks of turned capital F/L (#2137). +* Fix overlay bar placement of Z with Hook and Z with Swash Tail (#2141). +* Fix attachment of descender parts of Cyrillic Lower Ha/X under `x` = `cursive` (#2142). +* Make the Eng part in LATIN SMALL LETTER FENG DIGRAPH always connected to the f part (#2143). +* Fix top bar shape in CYRILLIC CAPITAL LETTER DJE (#2145). +* Fix leaning marks placement for reversed k/F/P (#2150). diff --git a/changes/archives/5.x/5.0.6.md b/changes/archives/5.x/5.0.6.md index 40acb4f538..a3cfb352d9 100644 --- a/changes/archives/5.x/5.0.6.md +++ b/changes/archives/5.x/5.0.6.md @@ -1,4 +1,4 @@ - * Fix incorrect serif shape for motion-serifed `m` under semi-proportional subfamilies. - * Add cursive variant for `x` and `z` (#852). - * Slab will now use more cursive variants for `k`, `x` and `z`. + * Fix incorrect serif shape for motion-serifed `m` under semi-proportional subfamilies. + * Add cursive variant for `x` and `z` (#852). + * Slab will now use more cursive variants for `k`, `x` and `z`. * `ss15` and `ss17` are updated to use latest cursive variants (#852). \ No newline at end of file diff --git a/doc/BackersArchive.md b/doc/BackersArchive.md index 5fdd817816..48f7af2be8 100644 --- a/doc/BackersArchive.md +++ b/doc/BackersArchive.md @@ -1,36 +1,36 @@ -# Backers Archive - -This is an archive of former backers that sponsored Iosevka’s development during 0.x–2.x period. Iosevka will continue evolving, and thank you for your support. - -## Generous Backers - -- Cheng-Wei Chien -- Tianyu Ge -- (Anonymous User 4362976) -- Delton Ding -- Codi Matters -- Vasily Shmelev - -## Backers - -- Danny O'Brien -- Yanjia Huang -- Leon Breedt -- Alexander Payne -- Marek Kubica -- Yoshito Komatsu -- Dylan Sinnott -- robertgzr -- Pavlos Vinieratos -- Matthew Piziak -- Winnie Quinn -- Clemens -- Pascal -- Kevin Sidarous -- Beni Cherniavsky-Paskin -- Bartłomiej T. Listwon -- Will Binns-Smith -- Jeff S -- Jeri Mason -- Michael L. Ward -- Freetasy +# Backers Archive + +This is an archive of former backers that sponsored Iosevka’s development during 0.x–2.x period. Iosevka will continue evolving, and thank you for your support. + +## Generous Backers + +- Cheng-Wei Chien +- Tianyu Ge +- (Anonymous User 4362976) +- Delton Ding +- Codi Matters +- Vasily Shmelev + +## Backers + +- Danny O'Brien +- Yanjia Huang +- Leon Breedt +- Alexander Payne +- Marek Kubica +- Yoshito Komatsu +- Dylan Sinnott +- robertgzr +- Pavlos Vinieratos +- Matthew Piziak +- Winnie Quinn +- Clemens +- Pascal +- Kevin Sidarous +- Beni Cherniavsky-Paskin +- Bartłomiej T. Listwon +- Will Binns-Smith +- Jeff S +- Jeri Mason +- Michael L. Ward +- Freetasy diff --git a/docker/README.md b/docker/README.md index d7b99c67bd..cce7580645 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,48 +1,48 @@ -## Make docker image -``` -git clone --depth=1 https://github.com/be5invis/Iosevka.git $HOME/mkdkimg -cd $HOME/mkdkimg/docker -docker build -t=fontcc . -docker images | grep fontcc # Confirm that the docker image is generated successfully -fontcc latest c847d5e08886 About a minute ago 491MB -cd ../.. -rm -rf mkdkimg/ -``` -Note: Make docker image need execute only one time. - -## Usage -`docker run -it --rm -v $PWD:/work fontcc ` -Please refer to the `` parameters to [Customized Build](../../dev/doc/custom-build.md#customized-build) -### Optional parameters (put them before `fontcc`): -1. `-e "VERSION_TAG="` - -`` can be the following values -- `main` git main branch -- `dev` git dev branch -- `v28.0.5` git [release version tags](../../../tags) - -When this variable is omitted, the tag of the latest release will be selected - -2. `-e "NPM_REG="` - -change `npm install` download repository to mirror site. - -eg. change npm repos to huawei mirror - `docker run -it --rm -v $PWD:/work -e "NPM_REG=https://mirrors.huaweicloud.com/repository/npm" fontcc contents::Iosevka` - -## Example -### Partially Build dev branch -``` -mkdir -p $HOME/build_fonts -cd $HOME/build_fonts -docker run -it --rm -v $PWD:/work -e "VERSION_TAG=dev" fontcc contents::IosevkaSS06 ttf::IosevkaSS12 webfont::IosevkaSS15 -ls -lR dist/ -``` -### Customized Build -``` -cd $HOME/mycustomfonts -cat myfont1.toml myfont2.toml myfont3.toml > private-build-plans.toml -docker run -it --rm -v $PWD:/work fontcc ttf::myfont1 ttf::myfont2 contents::myfont3 -ls -lR dist/ -``` -Note: You need prepare myfont1.toml myfont2.toml myfont3.toml youself, The [Customizer](https://be5invis.github.io/Iosevka/customizer) can help you easily generate font configuration file `.toml`. +## Make docker image +``` +git clone --depth=1 https://github.com/be5invis/Iosevka.git $HOME/mkdkimg +cd $HOME/mkdkimg/docker +docker build -t=fontcc . +docker images | grep fontcc # Confirm that the docker image is generated successfully +fontcc latest c847d5e08886 About a minute ago 491MB +cd ../.. +rm -rf mkdkimg/ +``` +Note: Make docker image need execute only one time. + +## Usage +`docker run -it --rm -v $PWD:/work fontcc ` +Please refer to the `` parameters to [Customized Build](../../dev/doc/custom-build.md#customized-build) +### Optional parameters (put them before `fontcc`): +1. `-e "VERSION_TAG="` + +`` can be the following values +- `main` git main branch +- `dev` git dev branch +- `v28.0.5` git [release version tags](../../../tags) + +When this variable is omitted, the tag of the latest release will be selected + +2. `-e "NPM_REG="` + +change `npm install` download repository to mirror site. + +eg. change npm repos to huawei mirror + `docker run -it --rm -v $PWD:/work -e "NPM_REG=https://mirrors.huaweicloud.com/repository/npm" fontcc contents::Iosevka` + +## Example +### Partially Build dev branch +``` +mkdir -p $HOME/build_fonts +cd $HOME/build_fonts +docker run -it --rm -v $PWD:/work -e "VERSION_TAG=dev" fontcc contents::IosevkaSS06 ttf::IosevkaSS12 webfont::IosevkaSS15 +ls -lR dist/ +``` +### Customized Build +``` +cd $HOME/mycustomfonts +cat myfont1.toml myfont2.toml myfont3.toml > private-build-plans.toml +docker run -it --rm -v $PWD:/work fontcc ttf::myfont1 ttf::myfont2 contents::myfont3 +ls -lR dist/ +``` +Note: You need prepare myfont1.toml myfont2.toml myfont3.toml youself, The [Customizer](https://be5invis.github.io/Iosevka/customizer) can help you easily generate font configuration file `.toml`. diff --git a/package-lock.json b/package-lock.json index 972a2033b4..01a6428463 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@iosevka/monorepo", - "version": "29.1.0", + "version": "29.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@iosevka/monorepo", - "version": "29.1.0", + "version": "29.1.1", "workspaces": [ "packages/*", "tools/*" @@ -4310,16 +4310,16 @@ }, "packages/font": { "name": "@iosevka/font", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "29.1.0", - "@iosevka/font-otl": "29.1.0", - "@iosevka/geometry": "29.1.0", - "@iosevka/geometry-cache": "29.1.0", - "@iosevka/glyph": "29.1.0", - "@iosevka/param": "29.1.0", - "@iosevka/util": "29.1.0", + "@iosevka/font-glyphs": "29.1.1", + "@iosevka/font-otl": "29.1.1", + "@iosevka/geometry": "29.1.1", + "@iosevka/geometry-cache": "29.1.1", + "@iosevka/glyph": "29.1.1", + "@iosevka/param": "29.1.1", + "@iosevka/util": "29.1.1", "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.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/font-kits": "29.1.0", - "@iosevka/geometry": "29.1.0", - "@iosevka/geometry-cache": "29.1.0", - "@iosevka/glyph": "29.1.0", - "@iosevka/util": "29.1.0", + "@iosevka/font-kits": "29.1.1", + "@iosevka/geometry": "29.1.1", + "@iosevka/geometry-cache": "29.1.1", + "@iosevka/glyph": "29.1.1", + "@iosevka/util": "29.1.1", "typo-geom": "^0.15.1" } }, "packages/font-kits": { "name": "@iosevka/font-kits", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/geometry": "29.1.0", - "@iosevka/glyph": "29.1.0", - "@iosevka/util": "29.1.0" + "@iosevka/geometry": "29.1.1", + "@iosevka/glyph": "29.1.1", + "@iosevka/util": "29.1.1" } }, "packages/font-otl": { "name": "@iosevka/font-otl", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/font-glyphs": "29.1.0", - "@iosevka/glyph": "29.1.0", + "@iosevka/font-glyphs": "29.1.1", + "@iosevka/glyph": "29.1.1", "toposort": "^2.0.2" } }, "packages/geometry": { "name": "@iosevka/geometry", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/util": "29.1.0", + "@iosevka/util": "29.1.1", "spiro": "^3.0.1", "typo-geom": "^0.15.1" } }, "packages/geometry-cache": { "name": "@iosevka/geometry-cache", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/geometry": "29.1.0", + "@iosevka/geometry": "29.1.1", "@msgpack/msgpack": "^2.8.0" } }, "packages/glyph": { "name": "@iosevka/glyph", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/geometry": "29.1.0" + "@iosevka/geometry": "29.1.1" } }, "packages/param": { "name": "@iosevka/param", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/util": "29.1.0" + "@iosevka/util": "29.1.1" } }, "packages/util": { "name": "@iosevka/util", - "version": "29.1.0" + "version": "29.1.1" }, "tools/amend-readme": { "name": "@iosevka/amend-readme", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.0", + "@iosevka/param": "29.1.1", "@unicode/unicode-15.1.0": "^1.5.2" } }, "tools/data-export": { "name": "@iosevka/data-export", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.0", + "@iosevka/param": "29.1.1", "@unicode/unicode-15.1.0": "^1.5.2", "cldr": "^7.5.0" } }, "tools/generate-samples": { "name": "@iosevka/generate-samples", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/data-export": "29.1.0" + "@iosevka/data-export": "29.1.1" } }, "tools/misc": { "name": "@iosevka/misc", - "version": "29.1.0", + "version": "29.1.1", "dependencies": { - "@iosevka/util": "29.1.0", + "@iosevka/util": "29.1.1", "semver": "^7.6.0", "wawoff2": "^2.0.1" } diff --git a/package.json b/package.json index b491ec386e..e1f0fffa9c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/monorepo", - "version": "29.1.0", + "version": "29.1.1", "workspaces": [ "packages/*", "tools/*" diff --git a/packages/font-glyphs/package.json b/packages/font-glyphs/package.json index 16e99a4fc6..40620a791f 100644 --- a/packages/font-glyphs/package.json +++ b/packages/font-glyphs/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-glyphs", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -8,11 +8,11 @@ "./unicode-knowledge": "./src/meta/unicode-knowledge.mjs" }, "dependencies": { - "@iosevka/font-kits": "29.1.0", - "@iosevka/geometry": "29.1.0", - "@iosevka/geometry-cache": "29.1.0", - "@iosevka/glyph": "29.1.0", - "@iosevka/util": "29.1.0", + "@iosevka/font-kits": "29.1.1", + "@iosevka/geometry": "29.1.1", + "@iosevka/geometry-cache": "29.1.1", + "@iosevka/glyph": "29.1.1", + "@iosevka/util": "29.1.1", "typo-geom": "^0.15.1" } } diff --git a/packages/font-kits/package.json b/packages/font-kits/package.json index e59493398c..7d14764c25 100644 --- a/packages/font-kits/package.json +++ b/packages/font-kits/package.json @@ -1,14 +1,14 @@ { "name": "@iosevka/font-kits", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { "./boole-kit": "./src/boole-kit.mjs", "./spiro-kit": "./src/spiro-kit.mjs" }, "dependencies": { - "@iosevka/geometry": "29.1.0", - "@iosevka/glyph": "29.1.0", - "@iosevka/util": "29.1.0" + "@iosevka/geometry": "29.1.1", + "@iosevka/glyph": "29.1.1", + "@iosevka/util": "29.1.1" } } diff --git a/packages/font-otl/package.json b/packages/font-otl/package.json index 4238800fbd..405d1c111f 100644 --- a/packages/font-otl/package.json +++ b/packages/font-otl/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/font-otl", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/font-glyphs": "29.1.0", - "@iosevka/glyph": "29.1.0", + "@iosevka/font-glyphs": "29.1.1", + "@iosevka/glyph": "29.1.1", "toposort": "^2.0.2" } } diff --git a/packages/font/package.json b/packages/font/package.json index dd601b596d..9f5d33ce93 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,13 +10,13 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "29.1.0", - "@iosevka/font-otl": "29.1.0", - "@iosevka/geometry": "29.1.0", - "@iosevka/geometry-cache": "29.1.0", - "@iosevka/glyph": "29.1.0", - "@iosevka/param": "29.1.0", - "@iosevka/util": "29.1.0", + "@iosevka/font-glyphs": "29.1.1", + "@iosevka/font-otl": "29.1.1", + "@iosevka/geometry": "29.1.1", + "@iosevka/geometry-cache": "29.1.1", + "@iosevka/glyph": "29.1.1", + "@iosevka/param": "29.1.1", + "@iosevka/util": "29.1.1", "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 e75f110de0..884b4d9a1e 100644 --- a/packages/geometry-cache/package.json +++ b/packages/geometry-cache/package.json @@ -1,12 +1,12 @@ { "name": "@iosevka/geometry-cache", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/geometry": "29.1.0", + "@iosevka/geometry": "29.1.1", "@msgpack/msgpack": "^2.8.0" } } diff --git a/packages/geometry/package.json b/packages/geometry/package.json index a098e95403..de5ae3d985 100644 --- a/packages/geometry/package.json +++ b/packages/geometry/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/geometry", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -13,7 +13,7 @@ "./spiro-control": "./src/spiro-control.mjs" }, "dependencies": { - "@iosevka/util": "29.1.0", + "@iosevka/util": "29.1.1", "spiro": "^3.0.1", "typo-geom": "^0.15.1" } diff --git a/packages/glyph/package.json b/packages/glyph/package.json index d2456ab033..530e9cb7bb 100644 --- a/packages/glyph/package.json +++ b/packages/glyph/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/glyph", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/glyph.mjs", @@ -9,6 +9,6 @@ "./relation": "./src/relation.mjs" }, "dependencies": { - "@iosevka/geometry": "29.1.0" + "@iosevka/geometry": "29.1.1" } } diff --git a/packages/param/package.json b/packages/param/package.json index f1df547f13..c5c9fcde3f 100644 --- a/packages/param/package.json +++ b/packages/param/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/param", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -9,6 +9,6 @@ "./metric-override": "./src/metric-override.mjs" }, "dependencies": { - "@iosevka/util": "29.1.0" + "@iosevka/util": "29.1.1" } } diff --git a/packages/util/package.json b/packages/util/package.json index 3f5bb90f1a..358da69110 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/util", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs", diff --git a/tools/amend-readme/package.json b/tools/amend-readme/package.json index 04b738498b..628103a54c 100644 --- a/tools/amend-readme/package.json +++ b/tools/amend-readme/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/amend-readme", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.0", + "@iosevka/param": "29.1.1", "@unicode/unicode-15.1.0": "^1.5.2" } } diff --git a/tools/data-export/package.json b/tools/data-export/package.json index df3ecd1c28..fcb2154d14 100644 --- a/tools/data-export/package.json +++ b/tools/data-export/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/data-export", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,7 +10,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.0", + "@iosevka/param": "29.1.1", "@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 07cd279041..acb8a6cb31 100644 --- a/tools/generate-samples/package.json +++ b/tools/generate-samples/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/generate-samples", - "version": "29.1.0", + "version": "29.1.1", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/data-export": "29.1.0" + "@iosevka/data-export": "29.1.1" } } diff --git a/tools/misc/package.json b/tools/misc/package.json index a6f06aa0a4..c9ebad8cc7 100644 --- a/tools/misc/package.json +++ b/tools/misc/package.json @@ -1,10 +1,10 @@ { "name": "@iosevka/misc", - "version": "29.1.0", + "version": "29.1.1", "private": true, "dependencies": { "semver": "^7.6.0", "wawoff2": "^2.0.1", - "@iosevka/util": "29.1.0" + "@iosevka/util": "29.1.1" } } From 93b345067192f67079d5304dc02f0cacf35beccf Mon Sep 17 00:00:00 2001 From: Belleve Date: Mon, 8 Apr 2024 16:05:52 -1000 Subject: [PATCH 3/9] Separate the bump version check and use a different event (#2284) * Separate the bump version check and use a different event * Fix typo * Fix * Add more events * Typo --- .github/workflows/pr-build-validation.yml | 52 --------------------- .github/workflows/pr-bump-version.yml | 55 +++++++++++++++++++++++ 2 files changed, 55 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/pr-bump-version.yml diff --git a/.github/workflows/pr-build-validation.yml b/.github/workflows/pr-build-validation.yml index 91bdbbc013..5474c726da 100644 --- a/.github/workflows/pr-build-validation.yml +++ b/.github/workflows/pr-build-validation.yml @@ -3,60 +3,8 @@ name: PR Font Build Validation on: [pull_request] jobs: - bump_version_check: - name: Bump version check - if: github.repository == 'be5invis/Iosevka' && github.base_ref == 'dev' - runs-on: ubuntu-latest - - outputs: - changed: ${{ steps.check_changes.outputs.changed }} - - steps: - - name: Checkout PR - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.ref }} - - - name: Use Node.js - uses: actions/setup-node@v4 - with: - node-version: lts/* - - - name: Bump version - run: | - npm install - npm run bump-ver - - - id: check_changes - name: Check changes - run: | - git config core.autocrlf false - if git diff --quiet; then - echo "changed=0" >> "$GITHUB_OUTPUT" - else - echo "changed=1" >> "$GITHUB_OUTPUT" - fi - - - name: Commit to PR - if: steps.check_changes.outputs.changed == '1' - run: | - git config --local user.email "actions@github.com" - git config --local user.name "GitHub Actions" - git add --all - git commit -m "Bump version" - git push - - - name: Add PR comment - uses: mshick/add-pr-comment@v2 - if : steps.check_changes.outputs.changed == '1' - with: - message: | - Your pull request changes the version number. - A commit has been made to bump the version number. - build: name: Build ${{ matrix.fontName }} font - needs: bump_version_check if: github.repository == 'be5invis/Iosevka' runs-on: ubuntu-latest diff --git a/.github/workflows/pr-bump-version.yml b/.github/workflows/pr-bump-version.yml new file mode 100644 index 0000000000..be6775dd94 --- /dev/null +++ b/.github/workflows/pr-bump-version.yml @@ -0,0 +1,55 @@ +name: PR Bump Version + +on: + pull_request_target: + branches: [dev] + +jobs: + bump_version_check: + name: Bump version check + if: github.repository == 'be5invis/Iosevka' && github.base_ref == 'dev' + runs-on: ubuntu-latest + + outputs: + changed: ${{ steps.check_changes.outputs.changed }} + + steps: + - name: Checkout PR + uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: lts/* + + - name: Bump version + run: | + npm install + npm run bump-ver + + - id: check_changes + name: Check changes + run: | + git config core.autocrlf false + if git diff --quiet; then + echo "changed=0" >> "$GITHUB_OUTPUT" + else + echo "changed=1" >> "$GITHUB_OUTPUT" + fi + + - name: Commit to PR + if: steps.check_changes.outputs.changed == '1' + run: | + git config --local user.email "actions@github.com" + git config --local user.name "GitHub Actions" + git add --all + git commit -m "Bump version" + git push + + - name: Add PR comment + uses: mshick/add-pr-comment@v2 + if : steps.check_changes.outputs.changed == '1' + with: + message: | + Your pull request changes the version number. + A commit has been made to bump the version number. From 4b004bc10279ecdb6668c2a7e303c3f40e62c93e Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Mon, 8 Apr 2024 23:01:02 -0400 Subject: [PATCH 4/9] =?UTF-8?q?Make=20four=20`=CE=93`/`H`-derived=20charac?= =?UTF-8?q?ters=20respond=20to=20cv=20(#2283)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Belleve --- changes/29.1.1.md | 3 + .../src/letter/greek/upper-gamma.ptl | 27 ++++---- .../font-glyphs/src/letter/latin/upper-h.ptl | 69 +++++++++++-------- params/variants.toml | 40 ++++++++--- 4 files changed, 92 insertions(+), 47 deletions(-) diff --git a/changes/29.1.1.md b/changes/29.1.1.md index 856063f6e3..dadad24199 100644 --- a/changes/29.1.1.md +++ b/changes/29.1.1.md @@ -1,2 +1,5 @@ * Make presence of descender serif automatic for GREEK CAPITAL KAI SYMBOL (`U+03CF`). * Make presence of top-left serif automatic for CYRILLIC {CAPITAL|SMALL} LETTER BASHKIR KA (`U+04A0`..`U+04A1`). +* Make GREEK SMALL LETTER DIGAMMA (`U+03DD`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). +* Make GREEK SMALL LETTER HETA (`U+0371`) respond to top-left serif variants of `H` (`cv08`). +* Make CYRILLIC {CAPITAL|SMALL} LIGATURE EN GHE (`U+04A4`..`U+04A5`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). diff --git a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl index 282698f4d1..0059ca5634 100644 --- a/packages/font-glyphs/src/letter/greek/upper-gamma.ptl +++ b/packages/font-glyphs/src/letter/greek/upper-gamma.ptl @@ -38,10 +38,10 @@ glyph-block Letter-Greek-Upper-Gamma: begin include : tagged 'serifRT' : VSerif.dr (RightSB - OX) top VJut define GammaConfig : object - serifless { SLAB-NONE SLAB } - topRightSerifed { SLAB-TR true } - bottomSerifed { SLAB-BOTTOM SLAB } - serifed { SLAB-ALL true } + serifless { SLAB-NONE false } + topRightSerifed { SLAB-TR true } + bottomSerifed { SLAB-BOTTOM false } + serifed { SLAB-ALL true } foreach { suffix { slabType doSM } } [Object.entries GammaConfig] : do create-glyph "grek/Gamma.\(suffix)" : glyph-proc @@ -139,16 +139,19 @@ glyph-block Letter-Greek-Upper-Gamma: begin select-variant 'grek/smcpGamma' 0x1D26 (shapeFrom -- 'cyrl/ghe.upright') (follow -- 'grek/Gamma') select-variant 'cyrl/ge' 0x491 select-variant 'cyrl/gheMidHook' 0x495 (follow -- 'cyrl/ghe.upright') - - select-variant 'grek/Digamma' 0x3DC (follow -- 'grek/Gamma') - - create-glyph 'grek/digamma' 0x3DD : glyph-proc + + create-glyph "grek/digamma.serifless" : glyph-proc include : MarkSet.p include : GammaShape XH Descender SLAB-NONE - local yBar : mix 0 XH DesignParameters.upperEBarPos - include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink SLAB]) yBar - if SLAB : include : tagged 'serifRM' - VSerif.dr (RightSB - [xMidBarShrink SLAB]) (yBar + HalfStroke) [mix Stroke VJut 0.5] + include : HBar.m GammaBarLeft (RightSB - [xMidBarShrink SLAB]) [mix 0 XH DesignParameters.upperEBarPos] + + create-glyph "grek/digamma.topRightSerifed" : glyph-proc + include [refer-glyph "grek/digamma.serifless"] AS_BASE ALSO_METRICS + include : tagged 'serifRM' + VSerif.dr (RightSB - [xMidBarShrink SLAB]) ([mix 0 XH DesignParameters.upperEBarPos] + HalfStroke) [mix Stroke VJut 0.5] + + select-variant 'grek/Digamma' 0x3DC + select-variant 'grek/digamma' 0x3DD define [GhaynOverlayBar top] : LetterBarOverlay.l GammaBarLeft (top * (1 - OverlayPos)) diff --git a/packages/font-glyphs/src/letter/latin/upper-h.ptl b/packages/font-glyphs/src/letter/latin/upper-h.ptl index 8dbd88ae72..6a40c95a4e 100644 --- a/packages/font-glyphs/src/letter/latin/upper-h.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-h.ptl @@ -1,7 +1,7 @@ $$include '../../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" -import [MathSansSerif] from "@iosevka/glyph/relation" +import [MathSansSerif DependentSelector] from "@iosevka/glyph/relation" glyph-module @@ -13,6 +13,7 @@ glyph-block Letter-Latin-Upper-H : begin glyph-block-import Mark-Below : belowMarkMid glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Shared : SetGrekUpperTonos + glyph-block-import Letter-Shared : CreateSelectorVariants DefineSelectorGlyph glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar glyph-block-import Letter-Shared-Shapes : LeftHook MidHook EngHook UpwardHookShape glyph-block-import Letter-Shared-Shapes : CyrDescender CyrTailDescender PalatalHook @@ -65,7 +66,9 @@ glyph-block Letter-Latin-Upper-H : begin include : HBar.t (xRightBar + O) xTopRight top include : HSerifs slabType top 0 df.leftSB xRightBar sw - if vSlab : include : VSerif.dr xTopRight top VJut (df.mvs / HVContrast) + if vSlab + then : include : VSerif.dr xTopRight top VJut (df.mvs / HVContrast) + else : eject-contour 'serifRT' define [HwairShape df top yend slabType] : glyph-proc include : VBar.l df.leftSB 0 top df.mvs @@ -91,19 +94,22 @@ glyph-block Letter-Latin-Upper-H : begin Math.min OverlayStroke (0.625 * (yt - yb)) define HConfig : object - serifless { HShape HTurned SLAB-NONE false } - tailedSerifless { TailedHShape HTurned SLAB-NONE false } - topLeftSerifed { HShape HTurned SLAB-TOP-LEFT false } - tailedTopLeftSerifed { TailedHShape HTurned SLAB-TOP-LEFT SLAB } - topLeftBottomRightSerifed { HShape HTurned SLAB-TOP-LEFT-BOTTOM-RIGHT true } - serifed { HShape HTurned SLAB-ALL true } - tailedSerifed { TailedHShape HTurned SLAB-TAILED-CYRILLIC true } - serifedExceptBottomRight { HShape HTurned SLAB-TAILED-CYRILLIC true } - serifedBGR { HShape HTurned SLAB-ALL-BGR true } - tailedSerifedBGR { TailedHShape HTurned SLAB-TAILED-CYRILLIC-BGR true } - serifedSmallHeta { HShape HTurned [if SLAB SLAB-TOP-LEFT SLAB-NONE] false } - - foreach { suffix { Body TurnedBody slabType enGheVSlab } } [Object.entries HConfig] : do + serifless { HShape HTurned SLAB-NONE } + tailedSerifless { TailedHShape HTurned SLAB-NONE } + topLeftSerifed { HShape HTurned SLAB-TOP-LEFT } + tailedTopLeftSerifed { TailedHShape HTurned SLAB-TOP-LEFT } + topLeftBottomRightSerifed { HShape HTurned SLAB-TOP-LEFT-BOTTOM-RIGHT } + serifed { HShape HTurned SLAB-ALL } + tailedSerifed { TailedHShape HTurned SLAB-TAILED-CYRILLIC } + serifedExceptBottomRight { HShape HTurned SLAB-TAILED-CYRILLIC } + serifedBGR { HShape HTurned SLAB-ALL-BGR } + tailedSerifedBGR { TailedHShape HTurned SLAB-TAILED-CYRILLIC-BGR } + + define EnGheGheConfig : object + serifless false + topRightSerifed true + + foreach { suffix { Body TurnedBody slabType } } [Object.entries HConfig] : do create-glyph "H.\(suffix)" : glyph-proc include : MarkSet.capital include : Body SB RightSB CAP @@ -165,15 +171,24 @@ glyph-block Letter-Latin-Upper-H : begin eject-contour 'serifLT' eject-contour 'serifLB' - create-glyph "cyrl/EnGhe.\(suffix)" : glyph-proc - local df : include : DivFrame para.diversityM 3 - include : df.markSet.capital - include : EnGheShape Body df CAP slabType enGheVSlab + define enGheDf : DivFrame para.diversityM 3 - create-glyph "cyrl/enghe.\(suffix)" : glyph-proc - local df : include : DivFrame para.diversityM 3 - include : df.markSet.e - include : EnGheShape Body df XH slabType enGheVSlab + DefineSelectorGlyph "cyrl/EnGhe" suffix [enGheDf.markSet.capital] + DefineSelectorGlyph "cyrl/enghe" suffix [enGheDf.markSet.e] + + foreach { suffixGhe enGheVSlab } [Object.entries EnGheGheConfig] : do + create-glyph "cyrl/EnGhe.\(suffix).\(suffixGhe)" : glyph-proc + set-width 0 + set-mark-anchor 'cvDecompose' 0 0 + include : EnGheShape Body enGheDf CAP slabType enGheVSlab + + create-glyph "cyrl/enghe.\(suffix).\(suffixGhe)" : glyph-proc + set-width 0 + set-mark-anchor 'cvDecompose' 0 0 + include : EnGheShape Body enGheDf XH slabType enGheVSlab + + select-variant "cyrl/EnGhe.\(suffix)" (follow -- 'cyrl/EnGhe/GhePart') + select-variant "cyrl/enghe.\(suffix)" (follow -- 'cyrl/enghe/ghePart') create-glyph "Hwair.\(suffix)" : glyph-proc local df : include : DivFrame para.diversityM 3 @@ -232,7 +247,7 @@ glyph-block Letter-Latin-Upper-H : begin alias 'cyrl/En/descenderBase' null 'H/descenderBase' select-variant 'leftHalfH' 0x2C75 select-variant 'rightHalfH' 0xA7F5 - alias 'grek/Heta' 0x370 'leftHalfH' + select-variant 'grek/Heta' 0x370 (shapeFrom -- 'leftHalfH') select-variant 'smcpH' 0x29C (follow -- 'H') select-variant 'leftHalfSmcpH' 0x2C76 (follow -- 'leftHalfH') @@ -240,7 +255,7 @@ glyph-block Letter-Latin-Upper-H : begin select-variant 'cyrl/en' 0x43D (shapeFrom -- 'smcpH') select-variant 'cyrl/en/descenderBase' (shapeFrom -- 'smcpH') select-variant 'cyrl/en.BGR' (shapeFrom -- 'smcpH') - alias 'grek/heta' 0x371 'leftHalfSmcpH.serifedSmallHeta' + select-variant 'grek/heta' 0x371 (shapeFrom -- 'leftHalfSmcpH') derive-composites 'HDescender' 0x2C67 'H/descenderBase' [CyrDescender.rSideJut RightSB 0] @@ -250,8 +265,8 @@ glyph-block Letter-Latin-Upper-H : begin derive-composites 'cyrl/EnTail' 0x4C9 'cyrl/En/descenderBase' [CyrTailDescender.rSideJut RightSB 0] derive-composites 'cyrl/enTail' 0x4CA 'cyrl/en/descenderBase' [CyrTailDescender.rSideJut RightSB 0] - select-variant 'cyrl/EnGhe' 0x4A4 (follow -- 'H') - select-variant 'cyrl/enghe' 0x4A5 (follow -- 'cyrl/en') + CreateSelectorVariants 'cyrl/EnGhe' 0x4A4 [Object.keys HConfig] (follow -- 'H') + CreateSelectorVariants 'cyrl/enghe' 0x4A5 [Object.keys HConfig] (follow -- 'cyrl/en') select-variant 'Hwair' 0x1F6 select-variant 'HHookLeft' 0xA7AA diff --git a/params/variants.toml b/params/variants.toml index b1cfe3bb9d..b890f4d9a5 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -393,10 +393,12 @@ tagKind = "letter" rank = 1 description = "H without serifs" selector.H = "serifless" +selector."H/sansSerif" = "serifless" selector."H/descenderBase" = "serifless" selector.leftHalfH = "serifless" selector.rightHalfH = "serifless" -selector."H/sansSerif" = "serifless" +selector."grek/Heta" = "serifless" +selector."grek/heta" = "serifless" selector.Hwair = "serifless" selector.HHookLeft = "serifless" selector."cyrl/Nje/leftHalf" = "serifless" @@ -406,10 +408,12 @@ selector."cyrl/Nje/leftHalf/reduced" = "serifless" rank = 2 description = "H with serif only at top left" selector.H = "topLeftSerifed" +selector."H/sansSerif" = "serifless" selector."H/descenderBase" = "topLeftSerifed" selector.leftHalfH = "topLeftSerifed" selector.rightHalfH = "serifless" -selector."H/sansSerif" = "serifless" +selector."grek/Heta" = "topLeftSerifed" +selector."grek/heta" = "topLeftSerifed" selector.Hwair = "topLeftSerifed" selector.HHookLeft = "serifless" selector."cyrl/Nje/leftHalf" = "topLeftSerifed" @@ -419,10 +423,12 @@ selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed" rank = 3 description = "H with serif only at top left and bottom right" selector.H = "topLeftBottomRightSerifed" +selector."H/sansSerif" = "serifless" selector."H/descenderBase" = "topLeftSerifed" selector.leftHalfH = "topLeftSerifed" selector.rightHalfH = "topLeftBottomRightSerifed" -selector."H/sansSerif" = "serifless" +selector."grek/Heta" = "topLeftSerifed" +selector."grek/heta" = "topLeftSerifed" selector.Hwair = "topLeftSerifed" selector.HHookLeft = "topLeftBottomRightSerifed" selector."cyrl/Nje/leftHalf" = "topLeftSerifed" @@ -432,10 +438,12 @@ selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed" rank = 4 description = "H with serifs" selector.H = "serifed" +selector."H/sansSerif" = "serifless" selector."H/descenderBase" = "serifed" selector.leftHalfH = "serifed" selector.rightHalfH = "serifed" -selector."H/sansSerif" = "serifless" +selector."grek/Heta" = "serifed" +selector."grek/heta" = "topLeftSerifed" selector.Hwair = "serifedExceptBottomRight" selector.HHookLeft = "serifed" selector."cyrl/Nje/leftHalf" = "serifed" @@ -4710,40 +4718,56 @@ rank = 1 description = "Standard capital Gamma (`Γ`) without serifs" selector."grek/Gamma" = "serifless" selector."grek/Gamma/sansSerif" = "serifless" +selector."grek/Digamma" = "serifless" +selector."grek/digamma" = "serifless" selector."cyrl/Ghe" = "serifless" -selector."cyrl/Ge" = "serifless" selector."cyrl/ghe.upright" = "serifless" +selector."cyrl/Ge" = "serifless" selector."cyrl/ge" = "serifless" +selector."cyrl/EnGhe/GhePart" = "serifless" +selector."cyrl/enghe/ghePart" = "serifless" [prime.capital-gamma.variants.top-right-serifed] rank = 2 description = "Standard capital Gamma (`Γ`) with serifs at top right" selector."grek/Gamma" = "topRightSerifed" selector."grek/Gamma/sansSerif" = "serifless" +selector."grek/Digamma" = "topRightSerifed" +selector."grek/digamma" = "topRightSerifed" selector."cyrl/Ghe" = "topRightSerifed" -selector."cyrl/Ge" = "serifless" selector."cyrl/ghe.upright" = "topRightSerifed" +selector."cyrl/Ge" = "serifless" selector."cyrl/ge" = "serifless" +selector."cyrl/EnGhe/GhePart" = "topRightSerifed" +selector."cyrl/enghe/ghePart" = "topRightSerifed" [prime.capital-gamma.variants.bottom-serifed] rank = 3 description = "Standard capital Gamma (`Γ`) with bottom serif" selector."grek/Gamma" = "bottomSerifed" selector."grek/Gamma/sansSerif" = "serifless" +selector."grek/Digamma" = "bottomSerifed" +selector."grek/digamma" = "serifless" selector."cyrl/Ghe" = "bottomSerifed" -selector."cyrl/Ge" = "bottomSerifed" selector."cyrl/ghe.upright" = "serifless" +selector."cyrl/Ge" = "bottomSerifed" selector."cyrl/ge" = "serifless" +selector."cyrl/EnGhe/GhePart" = "serifless" +selector."cyrl/enghe/ghePart" = "serifless" [prime.capital-gamma.variants.serifed] rank = 4 description = "Standard capital Gamma (`Γ`) with motion serifs at top and bottom" selector."grek/Gamma" = "serifed" selector."grek/Gamma/sansSerif" = "serifless" +selector."grek/Digamma" = "serifed" +selector."grek/digamma" = "topRightSerifed" selector."cyrl/Ghe" = "serifed" -selector."cyrl/Ge" = "serifed" selector."cyrl/ghe.upright" = "serifed" +selector."cyrl/Ge" = "serifed" selector."cyrl/ge" = "serifed" +selector."cyrl/EnGhe/GhePart" = "topRightSerifed" +selector."cyrl/enghe/ghePart" = "topRightSerifed" From 6645ef34f15d01c071e068ffd56774eee6b3c829 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:21:44 -0400 Subject: [PATCH 5/9] Harmonize glyphs/variants of three non-slavic Cyrillic letters. (#2285) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Make `cyrl/{Ue|ue}` follow `cv77`/`cv78`. * Adjust glyphs of `cyrl/{Dhe|dhe|The|the}`. * Harmonize `C`/`c`/`Э`/`э`-derived characters. * revert * revert * correction --- changes/29.1.1.md | 2 ++ packages/font-glyphs/src/common/shapes.ptl | 10 +++--- .../src/letter/greek/lower-epsilon.ptl | 4 +-- packages/font-glyphs/src/letter/latin/c.ptl | 2 -- .../font-glyphs/src/letter/latin/lower-e.ptl | 33 ++++++++++--------- .../font-glyphs/src/letter/latin/upper-y.ptl | 8 +---- .../src/meta/unicode-knowledge.ptl | 2 ++ params/variants.toml | 25 ++++++++++---- 8 files changed, 49 insertions(+), 37 deletions(-) diff --git a/changes/29.1.1.md b/changes/29.1.1.md index dadad24199..ecca78da10 100644 --- a/changes/29.1.1.md +++ b/changes/29.1.1.md @@ -3,3 +3,5 @@ * Make GREEK SMALL LETTER DIGAMMA (`U+03DD`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). * Make GREEK SMALL LETTER HETA (`U+0371`) respond to top-left serif variants of `H` (`cv08`). * Make CYRILLIC {CAPITAL|SMALL} LIGATURE EN GHE (`U+04A4`..`U+04A5`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). +* Make CYRILLIC {CAPITAL|SMALL} LETTER STRAIGHT U (`U+04AE`..`U+04B1`) follow variants of Cyrillic Capital/Small U (`cv77`..`cv78`). +* Make the terminal of {LATIN|CYRILLIC} {CAPITAL|SMALL} LETTER SCHWA (`U+018F`, `U+0259`, `U+04D8`..`U+04D9`) a full hook under italics to match CYRILLIC {CAPITAL|SMALL} LETTER E (`U+042D`, `U+044D`). diff --git a/packages/font-glyphs/src/common/shapes.ptl b/packages/font-glyphs/src/common/shapes.ptl index 7f5b37d9b6..1150891ca4 100644 --- a/packages/font-glyphs/src/common/shapes.ptl +++ b/packages/font-glyphs/src/common/shapes.ptl @@ -430,12 +430,12 @@ glyph-block CommonShapes : begin define nHookSegments 12 define [HookShape toStraight toFinish isStart args] : begin - local [object y tight sw swItalicAdj noAdjTerminalY turnSlope isTail] args + local [object y tight sw swItalicAdj noAdjTerminalY turnSlope isTail suppressSwash] args local atBottom : toStraight.y > y local ltr : if isStart (toFinish.x < toStraight.x) (toFinish.x > toStraight.x) local dtu : if isStart (y > toFinish.y) (y < toFinish.y) - local doSwash : !tight && !isStart && atBottom && (para.isItalic || isTail) && [if (para.slopeAngle >= 0) ltr [not ltr]] + local doSwash : !suppressSwash && !tight && !isStart && atBottom && (para.isItalic || isTail) && [if (para.slopeAngle >= 0) ltr [not ltr]] local superness : if tight DesignParameters.tightHookSuperness DesignParameters.superness # Adjust terminal's position if necessary @@ -528,8 +528,9 @@ glyph-block CommonShapes : begin local-parameter : noAdjTerminalY -- false local-parameter : turnSlope -- nothing local-parameter : isTail -- false + local-parameter : suppressSwash -- false return : Interpolator hookStartBlender - object y tight sw swItalicAdj noAdjTerminalY turnSlope isTail + object y tight sw swItalicAdj noAdjTerminalY turnSlope isTail suppressSwash glyph-block-export hookend define flex-params [hookend] : begin @@ -540,8 +541,9 @@ glyph-block CommonShapes : begin local-parameter : noAdjTerminalY -- false local-parameter : turnSlope -- nothing local-parameter : isTail -- false + local-parameter : suppressSwash -- false return : Interpolator hookEndBlender - object y tight sw swItalicAdj noAdjTerminalY turnSlope isTail + object y tight sw swItalicAdj noAdjTerminalY turnSlope isTail suppressSwash glyph-block-export Ungizmo define [Ungizmo] : glyph-proc diff --git a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl index 02214902c8..5857eca9f6 100644 --- a/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl +++ b/packages/font-glyphs/src/letter/greek/lower-epsilon.ptl @@ -490,8 +490,8 @@ glyph-block Letter-Greek-Lower-Epsilon : begin select-variant 'cyrl/DzjeKomi' 0x506 (follow -- 'cyrl/Ksi') select-variant 'cyrl/dzjeKomi' 0x507 (follow -- 'cyrl/ksi') - derive-composites 'cyrl/ZeCedilla' 0x498 'cyrl/Ze' 'cedillaExtShapeBelowOArc' - derive-composites 'cyrl/zeCedilla' 0x499 'cyrl/ze' 'cedillaExtShapeBelowSOArc' + derive-composites 'cyrl/Dhe' 0x498 'cyrl/Ze' 'cedillaExtShapeBelowOArc' + derive-composites 'cyrl/dhe' 0x499 'cyrl/ze' 'cedillaExtShapeBelowSOArc' select-variant 'latn/epsilon/descBase' (shapeFrom -- 'latn/epsilon') select-variant 'latn/epsilonRev/descBase' (shapeFrom -- 'cyrl/ze') (follow -- 'latn/epsilon/descBase') diff --git a/packages/font-glyphs/src/letter/latin/c.ptl b/packages/font-glyphs/src/letter/latin/c.ptl index a1e3bdbad5..ccde6fccb9 100644 --- a/packages/font-glyphs/src/letter/latin/c.ptl +++ b/packages/font-glyphs/src/letter/latin/c.ptl @@ -414,7 +414,5 @@ glyph-block Letter-Latin-C : begin derive-composites 'CCedilla' 0xC7 'C' 'cedillaExtShapeBelowOArc' derive-composites 'cCedilla' 0xE7 'c' 'cedillaExtShapeBelowOArc' - derive-composites 'CCedillaAcute' 0x1E08 'C' 'cedillaExtShapeBelowOArc' 'acuteAbove' - derive-composites 'cCedillaAcute' 0x1E09 'c' 'cedillaExtShapeBelowOArc' 'acuteAbove' derive-composites 'cyrl/The' 0x4AA 'cyrl/Es' 'cedillaExtShapeBelowOArc' derive-composites 'cyrl/the' 0x4AB 'cyrl/es' 'cedillaExtShapeBelowOArc' diff --git a/packages/font-glyphs/src/letter/latin/lower-e.ptl b/packages/font-glyphs/src/letter/latin/lower-e.ptl index d762a1bc0f..f81afa589f 100644 --- a/packages/font-glyphs/src/letter/latin/lower-e.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-e.ptl @@ -25,7 +25,7 @@ glyph-block Letter-Latin-Lower-E : begin define SLAB-CLASSICAL 1 define SLAB-INWARD 2 - define [SmallESerifedTerminalShape df top stroke tailSlab] : match tailSlab + define [SmallESerifedTerminalShape df top stroke tailSlab schwaTail] : match tailSlab [Just SLAB-CLASSICAL] : begin SerifedArcEnd.LtrLhs df.rightSB df.middle 0 stroke [HookHeight top stroke] [Just SLAB-INWARD] : list @@ -33,16 +33,16 @@ glyph-block Letter-Latin-Lower-E : begin g4 (df.middle + CorrectionOMidX * stroke) O g4 df.rightSB (DToothlessRise) __ : list - hookend O (sw -- stroke) + hookend O (sw -- stroke) (suppressSwash -- schwaTail) g4 [xTerminalR df] [HookHeight top stroke] - define [SmallETerminalSerif df top stroke tailSlab] : match tailSlab + define [SmallETerminalSerif df top stroke tailSlab schwaTail] : match tailSlab [Just SLAB-CLASSICAL] : ArcEndSerif.R df.rightSB 0 stroke [HookHeight top stroke] [Just SLAB-INWARD] : ArcEndSerif.InwardR df.rightSB 0 stroke [HookHeight top stroke] __ : no-shape glyph-block-export SmallEShape - define [SmallEShape] : with-params [df top stroke barpos [bbd 0] tailSlab] : glyph-proc + define [SmallEShape] : with-params [df top stroke barpos [bbd 0] tailSlab schwaTail] : glyph-proc local barbottom : top * [fallback barpos DesignParameters.eBarPos] - (stroke / 2) include : HBar.b (df.leftSB + (stroke / 2) + OX + bbd) (df.rightSB - (stroke / 2) - OX) barbottom stroke @@ -55,9 +55,9 @@ glyph-block Letter-Latin-Lower-E : begin archv flat (df.leftSB + OX) (top - [df.archDepthA SmallArchDepth]) curl (df.leftSB + OX) (0 + [df.archDepthB SmallArchDepth]) - SmallESerifedTerminalShape df top stroke tailSlab + SmallESerifedTerminalShape df top stroke tailSlab schwaTail - include : SmallETerminalSerif df top stroke tailSlab + include : SmallETerminalSerif df top stroke tailSlab schwaTail return path.rhsKnots.[path.rhsKnots.length - 1] @@ -81,7 +81,7 @@ glyph-block Letter-Latin-Lower-E : begin g4 (df.width - [xTerminalR df]) [HookHeight top stroke] glyph-block-export SmallERoundedShape - define [SmallERoundedShape] : with-params [df top stroke barpos tailSlab] : glyph-proc + define [SmallERoundedShape] : with-params [df top stroke barpos tailSlab schwaTail] : glyph-proc local barbottom : top * [fallback barpos : if para.isItalic 0.500 0.475] - (stroke / 2) local pBarRight : 0.475 - TanSlope * 0.5 @@ -93,7 +93,7 @@ glyph-block Letter-Latin-Lower-E : begin widths.lhs stroke [if para.isItalic g2 flat] xStart (barbottom - pfIt * [StrokeWidthBlend 2 3] * O) if para.isItalic [alsoThru.g2 0.5 0.8] [list] - [if para.isItalic g2 curl] [mix (xStart + [if para.isItalic 0.25 0.0] * [HSwToV stroke]) df.rightSB pBarRight] (barbottom + pfIt * [StrokeWidthBlend 0.25 1] * O) + [if para.isItalic g2 curl] [mix (xStart + pfIt * 0.25 * [HSwToV stroke]) df.rightSB pBarRight] (barbottom + pfIt * [StrokeWidthBlend 0.25 1] * O) if para.isItalic {} [archv] g4 (df.rightSB - OX) [mix barbottom top pArcRight] arcvh @@ -101,9 +101,9 @@ glyph-block Letter-Latin-Lower-E : begin archv flat (df.leftSB + OX) (top - [df.archDepthA SmallArchDepth]) curl (df.leftSB + OX) (0 + [df.archDepthB SmallArchDepth]) - SmallESerifedTerminalShape df top stroke tailSlab + SmallESerifedTerminalShape df top stroke tailSlab schwaTail - include : SmallETerminalSerif df top stroke tailSlab + include : SmallETerminalSerif df top stroke tailSlab schwaTail return path.rhsKnots.[path.rhsKnots.length - 1] @@ -136,21 +136,22 @@ glyph-block Letter-Latin-Lower-E : begin define divSub : (df.width - gap - df.mvs) / Width define dfSub : DivFrame divSub 2 include : Body dfSub top df.mvs (tailSlab -- tailSlab) + define offset : Width * (df.div - divSub) if fDesc : begin include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : difference VBar.m dfSub.middle (-LongJut + 0.5 * Stroke) (df.mvs + O) [AdviceStroke 3.5 df.div] OShapeOutline.NoOvershoot top 0 dfSub.leftSB dfSub.rightSB df.mvs - include : Translate (Width * (df.div - divSub)) 0 + include : Translate offset 0 local hd : FlatHookDepth df local yBar : top * DesignParameters.eBarPos - 0.5 * df.mvs - include : intersection [MaskLeft (dfSub.leftSB + Width * (df.div - divSub))] : dispiro + include : intersection [MaskLeft : dfSub.leftSB + offset] : dispiro flat (df.leftSB - [HSwToV : 0.25 * df.mvs]) (yBar + Hook) [widths.lhs.heading df.mvs Downward] curl (df.leftSB - [HSwToV : 0.25 * df.mvs]) (yBar + [Math.min Hook hd.y] - df.mvs * 0.25) [heading Downward] arcvh - flat [Math.min (df.leftSB + hd.x - [HSwToV : 0.5 * df.mvs]) (dfSub.leftSB + Width * (df.div - divSub))] yBar - curl (dfSub.middle + Width * (df.div - divSub)) yBar + flat [Math.min (df.leftSB + hd.x - [HSwToV : 0.5 * df.mvs]) (dfSub.leftSB + offset)] yBar + curl (dfSub.middle + offset) yBar define SmallEConfig : object flatCrossbar { SmallEShape RevSmallEShape } @@ -239,12 +240,12 @@ glyph-block Letter-Latin-Lower-E : begin create-glyph "Schwa.\(suffix).\(suffixSerif)" : glyph-proc set-width 0 set-mark-anchor 'cvDecompose' 0 0 - include : Body [DivFrame 1] CAP [AdviceStroke2 2 3 CAP] (tailSlab -- styTop) + include : Body [DivFrame 1] CAP [AdviceStroke2 2 3 CAP] (tailSlab -- styTop) (schwaTail -- true) include : FlipAround Middle (CAP / 2) create-glyph "schwa.\(suffix).\(suffixSerif)" : glyph-proc set-width 0 set-mark-anchor 'cvDecompose' 0 0 - include : Body [DivFrame 1] XH [AdviceStroke2 2 3 XH] (tailSlab -- styTop) + include : Body [DivFrame 1] XH [AdviceStroke2 2 3 XH] (tailSlab -- styTop) (schwaTail -- true) include : FlipAround Middle (XH / 2) create-glyph "cyrl/abk/Che.\(suffix).\(suffixSerif)" : glyph-proc diff --git a/packages/font-glyphs/src/letter/latin/upper-y.ptl b/packages/font-glyphs/src/letter/latin/upper-y.ptl index 23ec19383b..7eac6781b8 100644 --- a/packages/font-glyphs/src/letter/latin/upper-y.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-y.ptl @@ -20,7 +20,6 @@ glyph-block Letter-Latin-Upper-Y : begin define SLAB-ALL 1 define SLAB-BASE 2 define SLAB-MOTION 3 - define SLAB-CYRL 4 define [YCrossPos top bot] : mix bot top 0.4 @@ -32,9 +31,6 @@ glyph-block Letter-Latin-Upper-Y : begin include : HSerif.mb Middle bot MidJutSide [Just SLAB-MOTION] : include sf.lt.outer [Just SLAB-BASE] : include : HSerif.mb Middle bot MidJutSide - [Just SLAB-CYRL] : begin - include : if para.isItalic sf.lt.outer [composite-proc sf.lt.full sf.rt.full] - include : HSerif.mb Middle bot MidJutSide define [YShape bodyType slabType top bot] : glyph-proc local cross : YCrossPos top bot @@ -94,8 +90,6 @@ glyph-block Letter-Latin-Upper-Y : begin curlyMotionSerifed { BODY-CURLY SLAB-MOTION } straightSerifed { BODY-STRAIGHT SLAB-ALL } curlySerifed { BODY-CURLY SLAB-ALL } - straightSmallCyrl { BODY-STRAIGHT SLAB-CYRL } - curlySmallCyrl { BODY-CURLY SLAB-CYRL } foreach { suffix { bodyType slabType } } [Object.entries YConfig] : do create-glyph "Y.\(suffix)" : glyph-proc @@ -149,7 +143,7 @@ glyph-block Letter-Latin-Upper-Y : begin link-reduced-variant 'grek/Upsilon/sansSerif' 'grek/Upsilon' MathSansSerif (follow -- 'Y/sansSerif') select-variant 'grek/UpsilonHookTop' 0x3D2 - alias 'cyrl/Ue' 0x4AE 'Y' + select-variant 'cyrl/Ue' 0x4AE (shapeFrom -- 'Y') select-variant 'cyrl/ue' 0x4AF CreateAccentedComposition 'cyrl/UShortKazakh' 0x4B0 'cyrl/Ue' 'barOver' CreateAccentedComposition 'cyrl/uShortKazakh' 0x4B1 'cyrl/ue' 'barOver' diff --git a/packages/font-glyphs/src/meta/unicode-knowledge.ptl b/packages/font-glyphs/src/meta/unicode-knowledge.ptl index 4a01241369..670d37465e 100644 --- a/packages/font-glyphs/src/meta/unicode-knowledge.ptl +++ b/packages/font-glyphs/src/meta/unicode-knowledge.ptl @@ -162,6 +162,8 @@ export : define decompOverrides : object 0x1D7D { 'p' 'hStrike' } 0x1D7F { 'latn/upsilon' 'hStrike' } + 0x1E08 { 'CCedilla' 'acuteAbove' } + 0x1E09 { 'cCedilla' 'acuteAbove' } 0x1E9C { 'longs' 'shortSlashOver' } 0x1EDA { 'OHorn' 'acuteAbove' } 0x1EDB { 'oHorn' 'acuteAbove' } diff --git a/params/variants.toml b/params/variants.toml index b890f4d9a5..591e8492a3 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -1353,7 +1353,6 @@ selectorAffix.Y = "straight" selectorAffix."Y/sansSerif" = "straight" selectorAffix.YLoop = "straightLoop" selectorAffix."grek/UpsilonHookTop" = "straight" -selectorAffix."cyrl/ue" = "straight" [prime.capital-y.variants-buildup.stages.body.curly] rank = 2 @@ -1362,7 +1361,6 @@ selectorAffix.Y = "curly" selectorAffix."Y/sansSerif" = "curly" selectorAffix.YLoop = "curlyLoop" selectorAffix."grek/UpsilonHookTop" = "straight" -selectorAffix."cyrl/ue" = "curly" [prime.capital-y.variants-buildup.stages.serifs.serifless] rank = 1 @@ -1372,7 +1370,6 @@ selectorAffix.Y = "serifless" selectorAffix."Y/sansSerif" = "serifless" selectorAffix.YLoop = "serifless" selectorAffix."grek/UpsilonHookTop" = "serifless" -selectorAffix."cyrl/ue" = "serifless" [prime.capital-y.variants-buildup.stages.serifs.base-serifed] rank = 2 @@ -1381,7 +1378,6 @@ selectorAffix.Y = "baseSerifed" selectorAffix."Y/sansSerif" = "serifless" selectorAffix.YLoop = "serifless" selectorAffix."grek/UpsilonHookTop" = "BaseSerifed" -selectorAffix."cyrl/ue" = "serifless" [prime.capital-y.variants-buildup.stages.serifs.motion-serifed] rank = 3 @@ -1390,7 +1386,6 @@ selectorAffix.Y = "motionSerifed" selectorAffix."Y/sansSerif" = "serifless" selectorAffix.YLoop = "motionSerifed" selectorAffix."grek/UpsilonHookTop" = "serifless" -selectorAffix."cyrl/ue" = "motionSerifed" [prime.capital-y.variants-buildup.stages.serifs.serifed] rank = 4 @@ -1399,7 +1394,6 @@ selectorAffix.Y = "serifed" selectorAffix."Y/sansSerif" = "serifless" selectorAffix.YLoop = "serifed" selectorAffix."grek/UpsilonHookTop" = "BaseSerifed" -selectorAffix."cyrl/ue" = "smallCyrl" @@ -5779,16 +5773,19 @@ next = "hook" rank = 1 descriptionAffix = "straight shape" selectorAffix."cyrl/U" = "straight" +selectorAffix."cyrl/Ue" = "straight" [prime.cyrl-capital-u.variants-buildup.stages.body.curly] rank = 2 descriptionAffix = "curly shape" selectorAffix."cyrl/U" = "curly" +selectorAffix."cyrl/Ue" = "curly" [prime.cyrl-capital-u.variants-buildup.stages.body.cursive] rank = 3 descriptionAffix = "cursive shape" selectorAffix."cyrl/U" = "cursive" +selectorAffix."cyrl/Ue" = "straight" [prime.cyrl-capital-u.variants-buildup.stages.hook."*"] next = "serifs" @@ -5797,34 +5794,40 @@ next = "serifs" rank = 1 keyAffix = "" selectorAffix."cyrl/U" = "" +selectorAffix."cyrl/Ue" = "" [prime.cyrl-capital-u.variants-buildup.stages.hook.turn] rank = 2 disableIf = [{ body = "cursive" }] descriptionAffix = "a tail turns leftward" selectorAffix."cyrl/U" = "turn" +selectorAffix."cyrl/Ue" = "" [prime.cyrl-capital-u.variants-buildup.stages.hook.flat-hook] rank = 3 disableIf = [{ body = "NOT cursive" }] descriptionAffix = "a flat terminal hook" selectorAffix."cyrl/U" = "flatHook" +selectorAffix."cyrl/Ue" = "" [prime.cyrl-capital-u.variants-buildup.stages.serifs.serifless] rank = 1 descriptionAffix = "serifs" descriptionJoiner = "without" selectorAffix."cyrl/U" = "serifless" +selectorAffix."cyrl/Ue" = "serifless" [prime.cyrl-capital-u.variants-buildup.stages.serifs.motion-serifed] rank = 2 descriptionAffix = "motion serifs" selectorAffix."cyrl/U" = "motionSerifed" +selectorAffix."cyrl/Ue" = "motionSerifed" [prime.cyrl-capital-u.variants-buildup.stages.serifs.serifed] rank = 3 descriptionAffix = "serifs" selectorAffix."cyrl/U" = "serifed" +selectorAffix."cyrl/Ue" = "serifed" @@ -5844,16 +5847,19 @@ next = "hook" rank = 1 descriptionAffix = "straight shape" selectorAffix."cyrl/u" = "straight" +selectorAffix."cyrl/ue" = "straight" [prime.cyrl-u.variants-buildup.stages.body.curly] rank = 2 descriptionAffix = "curly shape" selectorAffix."cyrl/u" = "curly" +selectorAffix."cyrl/ue" = "curly" [prime.cyrl-u.variants-buildup.stages.body.cursive] rank = 3 descriptionAffix = "cursive shape" selectorAffix."cyrl/u" = "cursive" +selectorAffix."cyrl/ue" = "straight" [prime.cyrl-u.variants-buildup.stages.hook."*"] next = "serifs" @@ -5862,34 +5868,40 @@ next = "serifs" rank = 1 keyAffix = "" selectorAffix."cyrl/u" = "" +selectorAffix."cyrl/ue" = "" [prime.cyrl-u.variants-buildup.stages.hook.turn] rank = 2 disableIf = [{ body = "cursive" }] descriptionAffix = "a tail turns leftward" selectorAffix."cyrl/u" = "turn" +selectorAffix."cyrl/ue" = "" [prime.cyrl-u.variants-buildup.stages.hook.flat-hook] rank = 3 disableIf = [{ body = "NOT cursive" }] descriptionAffix = "a flat terminal hook" selectorAffix."cyrl/u" = "flatHook" +selectorAffix."cyrl/ue" = "" [prime.cyrl-u.variants-buildup.stages.serifs.serifless] rank = 1 descriptionAffix = "serifs" descriptionJoiner = "without" selectorAffix."cyrl/u" = "serifless" +selectorAffix."cyrl/ue" = "serifless" [prime.cyrl-u.variants-buildup.stages.serifs.motion-serifed] rank = 2 descriptionAffix = "motion serifs" selectorAffix."cyrl/u" = "motionSerifed" +selectorAffix."cyrl/ue" = "motionSerifed" [prime.cyrl-u.variants-buildup.stages.serifs.serifed] rank = 3 descriptionAffix = "serifs" selectorAffix."cyrl/u" = "serifed" +selectorAffix."cyrl/ue" = "serifed" @@ -8182,6 +8194,7 @@ long-s = "flat-hook-descending" eszet = "longs-s-lig-descending-serifless" cyrl-ka = "symmetric-connected-top-left-serifed" cyrl-u = "straight-turn-motion-serifed" +cyrl-ef = "serifless" micro-sign = "tailed-motion-serifed" From 2cdaf91479486c2eac84155bfbcf16e2f48d5f8a Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Thu, 11 Apr 2024 20:05:27 -0400 Subject: [PATCH 6/9] Use more sophisticated `cyrl-ef` variant for QP. (#2286) --- build-plans.toml | 6 ++++-- changes/29.1.1.md | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/build-plans.toml b/build-plans.toml index d93766c26b..5ef7e3c04a 100644 --- a/build-plans.toml +++ b/build-plans.toml @@ -705,7 +705,7 @@ lower-iota = "flat-tailed" lower-lambda = "straight-turn" lower-tau = "short-tailed" cyrl-u = "straight-serifless" -cyrl-ef = "serifless" +cyrl-ef = "split-serifless" cyrl-yeri = "corner" cyrl-yery = "corner" four = "closed-serifless" @@ -738,7 +738,7 @@ lower-iota = "serifed-flat-tailed" lower-lambda = "straight-turn" lower-tau = "short-tailed" cyrl-u = "straight-serifless" -cyrl-ef = "serifless" +cyrl-ef = "split-serifless" cyrl-yeri = "corner" cyrl-yery = "corner" four = "closed-serifless" @@ -775,6 +775,7 @@ long-s = "flat-hook-bottom-serifed" eszet = "longs-s-lig-bottom-serifed" lower-iota = "serifed-flat-tailed" lower-tau = "short-tailed" +cyrl-ef = "split-serifed" four = "closed-serifed" at = "fourfold" percent = "rings-continuous-slash" @@ -786,6 +787,7 @@ l = "serifed-flat-tailed" w = "straight-flat-top-motion-serifed" long-s = "flat-hook-tailed" eszet = "longs-s-lig-tailed-serifless" +cyrl-ef = "split-cursive" [buildPlans.IosevkaEtoile.widths.Normal] shape = 600 diff --git a/changes/29.1.1.md b/changes/29.1.1.md index ecca78da10..f5501f166f 100644 --- a/changes/29.1.1.md +++ b/changes/29.1.1.md @@ -5,3 +5,4 @@ * Make CYRILLIC {CAPITAL|SMALL} LIGATURE EN GHE (`U+04A4`..`U+04A5`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). * Make CYRILLIC {CAPITAL|SMALL} LETTER STRAIGHT U (`U+04AE`..`U+04B1`) follow variants of Cyrillic Capital/Small U (`cv77`..`cv78`). * Make the terminal of {LATIN|CYRILLIC} {CAPITAL|SMALL} LETTER SCHWA (`U+018F`, `U+0259`, `U+04D8`..`U+04D9`) a full hook under italics to match CYRILLIC {CAPITAL|SMALL} LETTER E (`U+042D`, `U+044D`). +* Quasi-proportional will now use `cyrl-ef` = `split-serifless`, `cyrl-ef` = `split-serifed`, and `cyrl-ef` = `split-cursive` for Aile, Etoile upright, and Etoile italic respectively. From a8576bec10242a7b17d3ddcbfd814b62fded3ea9 Mon Sep 17 00:00:00 2001 From: Belleve Date: Thu, 11 Apr 2024 18:32:37 -1000 Subject: [PATCH 7/9] =?UTF-8?q?Drop=20NWID=20glyphs=20for=20ligatures=20in?= =?UTF-8?q?=20quasi-proportionals=20as=20they=20do=20not=20=E2=80=A6=20(#2?= =?UTF-8?q?287)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Drop NWID glyphs for ligatures in quasi-proportionals as they do not make sense for these styles. This change will save around 2MB for each Aile or Etoile font. * Drop the pr-bump-version as it doesn't quite work. And bump version --- .github/workflows/pr-bump-version.yml | 55 --------- changes/{29.1.1.md => 29.2.0.md} | 1 + package-lock.json | 80 ++++++------ package.json | 2 +- packages/font-glyphs/package.json | 12 +- .../font-glyphs/src/auto-build/composite.ptl | 114 +++++++++--------- packages/font-kits/package.json | 8 +- packages/font-otl/package.json | 6 +- packages/font-otl/src/gsub-gr.ptl | 9 +- packages/font-otl/src/index.ptl | 4 +- packages/font/package.json | 16 +-- packages/geometry-cache/package.json | 4 +- packages/geometry/package.json | 4 +- packages/glyph/package.json | 4 +- packages/glyph/src/relation.mjs | 6 +- packages/param/package.json | 4 +- packages/util/package.json | 2 +- tools/amend-readme/package.json | 4 +- tools/data-export/package.json | 4 +- .../coverage-export/gather-coverage-data.mjs | 3 +- tools/data-export/src/supported-languages.mjs | 4 +- tools/generate-samples/package.json | 4 +- tools/misc/package.json | 4 +- 23 files changed, 156 insertions(+), 198 deletions(-) delete mode 100644 .github/workflows/pr-bump-version.yml rename changes/{29.1.1.md => 29.2.0.md} (86%) diff --git a/.github/workflows/pr-bump-version.yml b/.github/workflows/pr-bump-version.yml deleted file mode 100644 index be6775dd94..0000000000 --- a/.github/workflows/pr-bump-version.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: PR Bump Version - -on: - pull_request_target: - branches: [dev] - -jobs: - bump_version_check: - name: Bump version check - if: github.repository == 'be5invis/Iosevka' && github.base_ref == 'dev' - runs-on: ubuntu-latest - - outputs: - changed: ${{ steps.check_changes.outputs.changed }} - - steps: - - name: Checkout PR - uses: actions/checkout@v4 - - - name: Use Node.js - uses: actions/setup-node@v4 - with: - node-version: lts/* - - - name: Bump version - run: | - npm install - npm run bump-ver - - - id: check_changes - name: Check changes - run: | - git config core.autocrlf false - if git diff --quiet; then - echo "changed=0" >> "$GITHUB_OUTPUT" - else - echo "changed=1" >> "$GITHUB_OUTPUT" - fi - - - name: Commit to PR - if: steps.check_changes.outputs.changed == '1' - run: | - git config --local user.email "actions@github.com" - git config --local user.name "GitHub Actions" - git add --all - git commit -m "Bump version" - git push - - - name: Add PR comment - uses: mshick/add-pr-comment@v2 - if : steps.check_changes.outputs.changed == '1' - with: - message: | - Your pull request changes the version number. - A commit has been made to bump the version number. diff --git a/changes/29.1.1.md b/changes/29.2.0.md similarity index 86% rename from changes/29.1.1.md rename to changes/29.2.0.md index f5501f166f..d747c1e0eb 100644 --- a/changes/29.1.1.md +++ b/changes/29.2.0.md @@ -1,3 +1,4 @@ +* Drop NWID glyphs for ligatures in quasi-proportionals as they do not make sense for these styles. This change will save around 2MB for each Aile or Etoile font. * Make presence of descender serif automatic for GREEK CAPITAL KAI SYMBOL (`U+03CF`). * Make presence of top-left serif automatic for CYRILLIC {CAPITAL|SMALL} LETTER BASHKIR KA (`U+04A0`..`U+04A1`). * Make GREEK SMALL LETTER DIGAMMA (`U+03DD`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). diff --git a/package-lock.json b/package-lock.json index 01a6428463..6f82eafbfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@iosevka/monorepo", - "version": "29.1.1", + "version": "29.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@iosevka/monorepo", - "version": "29.1.1", + "version": "29.2.0", "workspaces": [ "packages/*", "tools/*" @@ -4310,16 +4310,16 @@ }, "packages/font": { "name": "@iosevka/font", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "29.1.1", - "@iosevka/font-otl": "29.1.1", - "@iosevka/geometry": "29.1.1", - "@iosevka/geometry-cache": "29.1.1", - "@iosevka/glyph": "29.1.1", - "@iosevka/param": "29.1.1", - "@iosevka/util": "29.1.1", + "@iosevka/font-glyphs": "29.2.0", + "@iosevka/font-otl": "29.2.0", + "@iosevka/geometry": "29.2.0", + "@iosevka/geometry-cache": "29.2.0", + "@iosevka/glyph": "29.2.0", + "@iosevka/param": "29.2.0", + "@iosevka/util": "29.2.0", "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.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/font-kits": "29.1.1", - "@iosevka/geometry": "29.1.1", - "@iosevka/geometry-cache": "29.1.1", - "@iosevka/glyph": "29.1.1", - "@iosevka/util": "29.1.1", + "@iosevka/font-kits": "29.2.0", + "@iosevka/geometry": "29.2.0", + "@iosevka/geometry-cache": "29.2.0", + "@iosevka/glyph": "29.2.0", + "@iosevka/util": "29.2.0", "typo-geom": "^0.15.1" } }, "packages/font-kits": { "name": "@iosevka/font-kits", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/geometry": "29.1.1", - "@iosevka/glyph": "29.1.1", - "@iosevka/util": "29.1.1" + "@iosevka/geometry": "29.2.0", + "@iosevka/glyph": "29.2.0", + "@iosevka/util": "29.2.0" } }, "packages/font-otl": { "name": "@iosevka/font-otl", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/font-glyphs": "29.1.1", - "@iosevka/glyph": "29.1.1", + "@iosevka/font-glyphs": "29.2.0", + "@iosevka/glyph": "29.2.0", "toposort": "^2.0.2" } }, "packages/geometry": { "name": "@iosevka/geometry", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/util": "29.1.1", + "@iosevka/util": "29.2.0", "spiro": "^3.0.1", "typo-geom": "^0.15.1" } }, "packages/geometry-cache": { "name": "@iosevka/geometry-cache", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/geometry": "29.1.1", + "@iosevka/geometry": "29.2.0", "@msgpack/msgpack": "^2.8.0" } }, "packages/glyph": { "name": "@iosevka/glyph", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/geometry": "29.1.1" + "@iosevka/geometry": "29.2.0" } }, "packages/param": { "name": "@iosevka/param", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/util": "29.1.1" + "@iosevka/util": "29.2.0" } }, "packages/util": { "name": "@iosevka/util", - "version": "29.1.1" + "version": "29.2.0" }, "tools/amend-readme": { "name": "@iosevka/amend-readme", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.1", + "@iosevka/param": "29.2.0", "@unicode/unicode-15.1.0": "^1.5.2" } }, "tools/data-export": { "name": "@iosevka/data-export", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.1", + "@iosevka/param": "29.2.0", "@unicode/unicode-15.1.0": "^1.5.2", "cldr": "^7.5.0" } }, "tools/generate-samples": { "name": "@iosevka/generate-samples", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/data-export": "29.1.1" + "@iosevka/data-export": "29.2.0" } }, "tools/misc": { "name": "@iosevka/misc", - "version": "29.1.1", + "version": "29.2.0", "dependencies": { - "@iosevka/util": "29.1.1", + "@iosevka/util": "29.2.0", "semver": "^7.6.0", "wawoff2": "^2.0.1" } diff --git a/package.json b/package.json index e1f0fffa9c..5b840fb694 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/monorepo", - "version": "29.1.1", + "version": "29.2.0", "workspaces": [ "packages/*", "tools/*" diff --git a/packages/font-glyphs/package.json b/packages/font-glyphs/package.json index 40620a791f..0a0ea39dbc 100644 --- a/packages/font-glyphs/package.json +++ b/packages/font-glyphs/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font-glyphs", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -8,11 +8,11 @@ "./unicode-knowledge": "./src/meta/unicode-knowledge.mjs" }, "dependencies": { - "@iosevka/font-kits": "29.1.1", - "@iosevka/geometry": "29.1.1", - "@iosevka/geometry-cache": "29.1.1", - "@iosevka/glyph": "29.1.1", - "@iosevka/util": "29.1.1", + "@iosevka/font-kits": "29.2.0", + "@iosevka/geometry": "29.2.0", + "@iosevka/geometry-cache": "29.2.0", + "@iosevka/glyph": "29.2.0", + "@iosevka/util": "29.2.0", "typo-geom": "^0.15.1" } } diff --git a/packages/font-glyphs/src/auto-build/composite.ptl b/packages/font-glyphs/src/auto-build/composite.ptl index 9e8dfc6fb2..64fe054a40 100644 --- a/packages/font-glyphs/src/auto-build/composite.ptl +++ b/packages/font-glyphs/src/auto-build/composite.ptl @@ -2,7 +2,7 @@ $$include '../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" -import [getGrMesh AnyCvOrCherryPicking CvDecompose Joining hashCv] from "@iosevka/glyph/relation" +import [getGrMesh AnyCvOrCherryPicking CvDecompose Joining hashCv IsCompositeOrLigature] from "@iosevka/glyph/relation" import [hashGeometry] from "@iosevka/geometry" import [Transform] from "@iosevka/geometry/transform" extern Map @@ -1081,11 +1081,12 @@ glyph-block Autobuild-Ligatures : begin glyph-block-import Recursive-Build : Thinner glyph-block-import Autobuild-Enclosure-Shared : CollectJobs CreateDerivedFontFromJobs EnsureComponentGlyphT applyRelations - define [createLigatures prefix fAlwaysCompress _shrink1 _shrinkN wadj1 wadjN kKern demands] : for-width-kinds WideWidth2 + define [createLigatures prefix _shrink1 _shrinkN wadj1 wadjN kKern demands] : for-width-kinds WideWidth2 + local plainLigature : FMosaicWide && para.isQuasiProportional local ww : if FMosaicWide MosaicWidth (MosaicWidth * para.diversityM) local jobs : CollectJobs DECOMPOSABLE NOT-CENTERED ALLOW-PROPORTIONAL prefix MosaicNameSuffix demands - local shrink1 : if (FMosaicWide && !fAlwaysCompress) 1 [clamp 0 1 (_shrink1 * [mix Width ww 0.5] / Width)] - local shrinkN : if (FMosaicWide && !fAlwaysCompress) 1 [clamp 0 1 (_shrinkN * [mix Width ww 0.5] / Width)] + local shrink1 : if plainLigature 1 [clamp 0 1 (_shrink1 * [mix Width ww 0.5] / Width)] + local shrinkN : if plainLigature 1 [clamp 0 1 (_shrinkN * [mix Width ww 0.5] / Width)] local df1 : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Thinner gs shrink1 local dfN : CreateDerivedFontFromJobs jobs {} : lambda [gs] : Thinner gs shrinkN @@ -1117,49 +1118,54 @@ glyph-block Autobuild-Ligatures : begin foreach { i component } [components.entries] : begin set dfgs.(i) : [if i dfN df1].queryByNameEnsured component - if [not : query-glyph gn] : begin - if (FMosaicWide && !fAlwaysCompress) : begin - create-glyph gn [MangleUnicode unicode desiredWidth] : glyph-proc - local decomposition { } - local aw 0 - foreach { i component } [components.entries] : do - local componentG : query-glyph component - include : with-transform [Translate aw 0] : refer-glyph component - set aw : aw + componentG.advanceWidth - decomposition.push component - set-width aw - if decomposable : CvDecompose.set currentGlyph decomposition - : else : begin - local sumChildrenWidth 0 - foreach {i dfg} [dfgs.entries] : begin - set sumChildrenWidth : sumChildrenWidth + dfg.advanceWidth * [if i wadjN wadj1] - - local glyphWidth : if (sumChildrenWidth < ww) MosaicWidth ww - local compressRefWidth : (glyphWidth - SB * 1.25) / (glyphWidth - SB * 2) * glyphWidth - local kern : kKern * glyphWidth - local estKernedUncompressedWidth : sumChildrenWidth - kern * (dfgs.length - 1) - if (dfgs.length > 1) : foreach [cycle : range 0 4] : begin - if (kKern == 0) : begin - set kern : clamp 0 (SB * 7 / 8) ((estKernedUncompressedWidth - compressRefWidth) / (dfgs.length - 1)) - set estKernedUncompressedWidth : sumChildrenWidth - kern * (dfgs.length - 1) - - local compress : clamp 0 1 (compressRefWidth / estKernedUncompressedWidth) - - create-glyph gn [MangleUnicode unicode desiredWidth] : glyph-proc - local decomposition { } - local baseOffset : glyphWidth / 2 - estKernedUncompressedWidth * compress / 2 - foreach { i component } [components.entries] : do - local componentAdvance : compress * (dfgs.(i).advanceWidth * [if i wadjN wadj1] - kern) - local componentRefOffset : dfgs.(i).advanceWidth * ([if i wadjN wadj1] - 1) / 2 - if (i === 0) : begin - local placeholder : LigaturePlaceholderImpl glyphWidth baseOffset - decomposition.push placeholder - include [refer-glyph placeholder] AS_BASE ALSO_METRICS - local part : EnsureComponentGlyphT component - LigaturePartImpl dfN componentRefOffset compress componentAdvance - decomposition.push part - include [refer-glyph part] - if decomposable : CvDecompose.set currentGlyph decomposition + if [query-glyph gn] : return nothing + + if plainLigature : begin + # Glyph built as a pure ligature. This case is always decomposable + create-glyph gn [MangleUnicode unicode desiredWidth] : glyph-proc + local decomposition { } + local aw 0 + foreach { i component } [components.entries] : do + local componentG : query-glyph component + include : with-transform [Translate aw 0] : refer-glyph component + set aw : aw + componentG.advanceWidth + decomposition.push component + set-width aw + CvDecompose.set currentGlyph decomposition + IsCompositeOrLigature.set currentGlyph + : else : begin + # Glyph is not a pure ligature, do it in the hard way + local sumChildrenWidth 0 + foreach {i dfg} [dfgs.entries] : begin + set sumChildrenWidth : sumChildrenWidth + dfg.advanceWidth * [if i wadjN wadj1] + + local glyphWidth : if (sumChildrenWidth < ww) MosaicWidth ww + local compressRefWidth : (glyphWidth - SB * 1.25) / (glyphWidth - SB * 2) * glyphWidth + local kern : kKern * glyphWidth + local estKernedUncompressedWidth : sumChildrenWidth - kern * (dfgs.length - 1) + if (dfgs.length > 1) : foreach [cycle : range 0 4] : begin + if (kKern == 0) : begin + set kern : clamp 0 (SB * 7 / 8) ((estKernedUncompressedWidth - compressRefWidth) / (dfgs.length - 1)) + set estKernedUncompressedWidth : sumChildrenWidth - kern * (dfgs.length - 1) + + local compress : clamp 0 1 (compressRefWidth / estKernedUncompressedWidth) + + create-glyph gn [MangleUnicode unicode desiredWidth] : glyph-proc + local decomposition { } + local baseOffset : glyphWidth / 2 - estKernedUncompressedWidth * compress / 2 + foreach { i component } [components.entries] : do + local componentAdvance : compress * (dfgs.(i).advanceWidth * [if i wadjN wadj1] - kern) + local componentRefOffset : dfgs.(i).advanceWidth * ([if i wadjN wadj1] - 1) / 2 + if (i === 0) : begin + local placeholder : LigaturePlaceholderImpl glyphWidth baseOffset + decomposition.push placeholder + include [refer-glyph placeholder] AS_BASE ALSO_METRICS + local part : EnsureComponentGlyphT component + LigaturePartImpl dfN componentRefOffset compress componentAdvance + decomposition.push part + include [refer-glyph part] + if decomposable : CvDecompose.set currentGlyph decomposition + IsCompositeOrLigature.set currentGlyph foreach job [items-of jobs.nonDecomposable] : LigatureImpl job false foreach job [items-of jobs.decomposableJobs] : LigatureImpl job true @@ -1167,12 +1173,12 @@ glyph-block Autobuild-Ligatures : begin applyRelations jobs.relApplications define ijShrink : clamp 0.6 0.75 : StrokeWidthBlend 0.6 0.75 - createLigatures 'compatLigature1' false ijShrink ijShrink 1 1 [if (para.diversityI < 1) 0 0.2] : list + createLigatures 'compatLigature1' ijShrink ijShrink 1 1 [if (para.diversityI < 1) 0 0.2] : list list 0x132 { 'I' 'J' } list 0x133 { 'i' 'j' } define stdShrink : clamp 0.75 0.9 : StrokeWidthBlend 0.75 0.9 - createLigatures 'compatLigature2' false stdShrink stdShrink 1 1 0 : list + createLigatures 'compatLigature2' stdShrink stdShrink 1 1 0 : list list 0x1C4 { 'D' 'ZCaron' } list 0x1C5 { 'D' 'zCaron' } list 0x1C6 { 'd' 'zCaron' } @@ -1193,7 +1199,7 @@ glyph-block Autobuild-Ligatures : begin list 0x2116 { 'N' 'numeroRightHalf' } list 0x1F190 { 'D' 'J' } WideWidth1 - createLigatures 'romanNumerals1' true 1 1 1 1 0 : list + createLigatures 'romanNumerals1' 1 1 1 1 0 : list list 0x2160 { 'I' } list 0x2164 { 'V' } list 0x2169 { 'X' } @@ -1209,7 +1215,7 @@ glyph-block Autobuild-Ligatures : begin list 0x217E { 'd' } list 0x217F { 'm' } - createLigatures 'romanNumerals2' true stdShrink stdShrink 1 1 0 : list + createLigatures 'romanNumerals2' stdShrink stdShrink 1 1 0 : list list 0x2161 { 'I' 'I' } list 0x2163 { 'I' 'V' } list 0x2165 { 'V' 'I' } @@ -1222,7 +1228,7 @@ glyph-block Autobuild-Ligatures : begin list 0x217A { 'x' 'i' } define romanShrink : clamp 0.625 0.875 : StrokeWidthBlend 0.625 0.875 - createLigatures 'romanNumerals3' true romanShrink romanShrink 1 1 0 : list + createLigatures 'romanNumerals3' romanShrink romanShrink 1 1 0 : list list 0x2162 { 'I' 'I' 'I' } list 0x2166 { 'V' 'I' 'I' } list 0x216B { 'X' 'I' 'I' } @@ -1231,11 +1237,11 @@ glyph-block Autobuild-Ligatures : begin list 0x217B { 'x' 'i' 'i' } define romanShrink4 : clamp 0.5 0.875 : StrokeWidthBlend 0.5 0.875 - createLigatures 'romanNumerals4' true romanShrink4 romanShrink4 1 1 0 : list + createLigatures 'romanNumerals4' romanShrink4 romanShrink4 1 1 0 : list list 0x2167 { 'V' 'I' 'I' 'I' } list 0x2177 { 'v' 'i' 'i' 'i' } - createLigatures 'temperature' false 0.7 0.8 0.75 0.9 0 : list + createLigatures 'temperature' 0.7 0.8 0.75 0.9 0 : list list 0x2103 { 'degree' 'C' } list 0x2109 { 'degree' 'F' } diff --git a/packages/font-kits/package.json b/packages/font-kits/package.json index 7d14764c25..799fb2470d 100644 --- a/packages/font-kits/package.json +++ b/packages/font-kits/package.json @@ -1,14 +1,14 @@ { "name": "@iosevka/font-kits", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { "./boole-kit": "./src/boole-kit.mjs", "./spiro-kit": "./src/spiro-kit.mjs" }, "dependencies": { - "@iosevka/geometry": "29.1.1", - "@iosevka/glyph": "29.1.1", - "@iosevka/util": "29.1.1" + "@iosevka/geometry": "29.2.0", + "@iosevka/glyph": "29.2.0", + "@iosevka/util": "29.2.0" } } diff --git a/packages/font-otl/package.json b/packages/font-otl/package.json index 405d1c111f..1513dfe7d3 100644 --- a/packages/font-otl/package.json +++ b/packages/font-otl/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/font-otl", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/font-glyphs": "29.1.1", - "@iosevka/glyph": "29.1.1", + "@iosevka/font-glyphs": "29.2.0", + "@iosevka/glyph": "29.2.0", "toposort": "^2.0.2" } } diff --git a/packages/font-otl/src/gsub-gr.ptl b/packages/font-otl/src/gsub-gr.ptl index be6fe9b9aa..81e174448c 100644 --- a/packages/font-otl/src/gsub-gr.ptl +++ b/packages/font-otl/src/gsub-gr.ptl @@ -1,16 +1,17 @@ -export : define [createGsubLookupFromGr gsub glyphStore gr] : begin +export : define [createGsubLookupFromGr gsub glyphStore gr ignoreGr] : begin local mapping {.} foreach { gnSrc glyph } [glyphStore.namedEntries] : begin local gnDst : gr.get glyph local glyphDst : glyphStore.queryByName gnDst - if glyphDst : set mapping.(gnSrc) gnDst + local fIgnore : ignoreGr && [ignoreGr.get glyph] + if (!fIgnore && glyphDst) : set mapping.(gnSrc) gnDst return : gsub.createLookup {.type 'gsub_single' .substitutions mapping} -export : define [buildGrFeature gsub glyphStore gr] : begin +export : define [buildGrFeature gsub glyphStore gr ignoreGr] : begin local rec : gsub.beginBlock - local lookup1 : createGsubLookupFromGr gsub glyphStore gr + local lookup1 : createGsubLookupFromGr gsub glyphStore gr ignoreGr if [objectIsNotEmpty lookup1.substitutions] : begin define feature1 : gsub.addCommonFeature : gsub.createFeature gr.otlTag feature1.addLookup lookup1 diff --git a/packages/font-otl/src/index.ptl b/packages/font-otl/src/index.ptl index ce8f6c833e..bb5e89048f 100644 --- a/packages/font-otl/src/index.ptl +++ b/packages/font-otl/src/index.ptl @@ -25,8 +25,8 @@ define [buildGSUB para glyphStore markGlyphs] : begin # NWID / WWID if para.enableNwidWwid : begin - buildGrFeature gsub glyphStore Gr.Nwid - buildGrFeature gsub glyphStore Gr.Wwid + buildGrFeature gsub glyphStore Gr.Nwid [if para.isQuasiProportional Gr.IsCompositeOrLigature null] + buildGrFeature gsub glyphStore Gr.Wwid [if para.isQuasiProportional Gr.IsCompositeOrLigature null] # lnum / onum buildGrFeature gsub glyphStore Gr.Lnum diff --git a/packages/font/package.json b/packages/font/package.json index 9f5d33ce93..8ac97f6351 100644 --- a/packages/font/package.json +++ b/packages/font/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/font", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,13 +10,13 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/font-glyphs": "29.1.1", - "@iosevka/font-otl": "29.1.1", - "@iosevka/geometry": "29.1.1", - "@iosevka/geometry-cache": "29.1.1", - "@iosevka/glyph": "29.1.1", - "@iosevka/param": "29.1.1", - "@iosevka/util": "29.1.1", + "@iosevka/font-glyphs": "29.2.0", + "@iosevka/font-otl": "29.2.0", + "@iosevka/geometry": "29.2.0", + "@iosevka/geometry-cache": "29.2.0", + "@iosevka/glyph": "29.2.0", + "@iosevka/param": "29.2.0", + "@iosevka/util": "29.2.0", "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 884b4d9a1e..be03535eff 100644 --- a/packages/geometry-cache/package.json +++ b/packages/geometry-cache/package.json @@ -1,12 +1,12 @@ { "name": "@iosevka/geometry-cache", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/geometry": "29.1.1", + "@iosevka/geometry": "29.2.0", "@msgpack/msgpack": "^2.8.0" } } diff --git a/packages/geometry/package.json b/packages/geometry/package.json index de5ae3d985..9f6716288b 100644 --- a/packages/geometry/package.json +++ b/packages/geometry/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/geometry", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -13,7 +13,7 @@ "./spiro-control": "./src/spiro-control.mjs" }, "dependencies": { - "@iosevka/util": "29.1.1", + "@iosevka/util": "29.2.0", "spiro": "^3.0.1", "typo-geom": "^0.15.1" } diff --git a/packages/glyph/package.json b/packages/glyph/package.json index 530e9cb7bb..ecad2c3991 100644 --- a/packages/glyph/package.json +++ b/packages/glyph/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/glyph", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/glyph.mjs", @@ -9,6 +9,6 @@ "./relation": "./src/relation.mjs" }, "dependencies": { - "@iosevka/geometry": "29.1.1" + "@iosevka/geometry": "29.2.0" } } diff --git a/packages/glyph/src/relation.mjs b/packages/glyph/src/relation.mjs index 7128269740..3187e31b79 100644 --- a/packages/glyph/src/relation.mjs +++ b/packages/glyph/src/relation.mjs @@ -124,6 +124,7 @@ export const OgonekTrY = BoolProp("OgonekTrY"); export const IsSuperscript = BoolProp("IsSuperscript"); export const IsSubscript = BoolProp("IsSubscript"); export const ScheduleLeaningMark = BoolProp("ScheduleLeaningMark"); +export const IsCompositeOrLigature = BoolProp("IsCompositeOrLigature"); export const Joining = { get(glyph) { @@ -353,7 +354,10 @@ export function createGrDisplaySheet(glyphStore, gn) { sortFeatureDisplaySheet(typographicFeatures); sortFeatureDisplaySheet(charVariantFeatures); - return [typographicFeatures, charVariantFeatures]; + + let charProps = {}; + if (IsCompositeOrLigature.get(glyph)) charProps.isCompositeOrLigature = true; + return [typographicFeatures, charVariantFeatures, charProps]; } function sortFeatureDisplaySheet(sheet) { diff --git a/packages/param/package.json b/packages/param/package.json index c5c9fcde3f..72568b7708 100644 --- a/packages/param/package.json +++ b/packages/param/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/param", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -9,6 +9,6 @@ "./metric-override": "./src/metric-override.mjs" }, "dependencies": { - "@iosevka/util": "29.1.1" + "@iosevka/util": "29.2.0" } } diff --git a/packages/util/package.json b/packages/util/package.json index 358da69110..9e55781e4a 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/util", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs", diff --git a/tools/amend-readme/package.json b/tools/amend-readme/package.json index 628103a54c..a32421bb51 100644 --- a/tools/amend-readme/package.json +++ b/tools/amend-readme/package.json @@ -1,13 +1,13 @@ { "name": "@iosevka/amend-readme", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.1", + "@iosevka/param": "29.2.0", "@unicode/unicode-15.1.0": "^1.5.2" } } diff --git a/tools/data-export/package.json b/tools/data-export/package.json index fcb2154d14..e254a298f1 100644 --- a/tools/data-export/package.json +++ b/tools/data-export/package.json @@ -1,6 +1,6 @@ { "name": "@iosevka/data-export", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs", @@ -10,7 +10,7 @@ }, "dependencies": { "@iarna/toml": "^2.2.5", - "@iosevka/param": "29.1.1", + "@iosevka/param": "29.2.0", "@unicode/unicode-15.1.0": "^1.5.2", "cldr": "^7.5.0" } diff --git a/tools/data-export/src/coverage-export/gather-coverage-data.mjs b/tools/data-export/src/coverage-export/gather-coverage-data.mjs index 3c569be0b7..a1cac10cdc 100644 --- a/tools/data-export/src/coverage-export/gather-coverage-data.mjs +++ b/tools/data-export/src/coverage-export/gather-coverage-data.mjs @@ -35,7 +35,7 @@ export async function gatherCoverageData(covUpright, covItalic, covOblique) { const cdItalic = covItalic.get(lch); const cdOblique = covOblique.get(lch); if (cdUpright && cdItalic && cdOblique) { - const [glyphName, typoFs, uprightFs] = cdUpright; + const [glyphName, typoFs, uprightFs, charProps] = cdUpright; const [, , italicFs] = cdItalic; const [, , obliqueFs] = cdOblique; @@ -45,6 +45,7 @@ export async function gatherCoverageData(covUpright, covItalic, covOblique) { charName, inFont: true, glyphName: glyphName, + ...charProps, ...putFeatSeries(featureSeriesStore, "typographicFeatureSets", typoFs), ...putFeatSeries(featureSeriesStore, "cvFeatureSetsUpright", uprightFs), ...putFeatSeries(featureSeriesStore, "cvFeatureSetsItalic", italicFs), diff --git a/tools/data-export/src/supported-languages.mjs b/tools/data-export/src/supported-languages.mjs index 1de328bba7..f8a71e1678 100644 --- a/tools/data-export/src/supported-languages.mjs +++ b/tools/data-export/src/supported-languages.mjs @@ -81,8 +81,8 @@ function getSupportedLangs(supportLocaleSet) { function getRawCoverage(charMap) { const rawCoverage = new Map(); - for (const [gn, codes, tv, cv] of charMap) - for (const u of codes) rawCoverage.set(u, [gn, tv, cv]); + for (const [gn, codes, tv, cv, cp] of charMap) + for (const u of codes) rawCoverage.set(u, [gn, tv, cv, cp]); return rawCoverage; } diff --git a/tools/generate-samples/package.json b/tools/generate-samples/package.json index acb8a6cb31..a191010cb2 100644 --- a/tools/generate-samples/package.json +++ b/tools/generate-samples/package.json @@ -1,11 +1,11 @@ { "name": "@iosevka/generate-samples", - "version": "29.1.1", + "version": "29.2.0", "private": true, "exports": { ".": "./src/index.mjs" }, "dependencies": { - "@iosevka/data-export": "29.1.1" + "@iosevka/data-export": "29.2.0" } } diff --git a/tools/misc/package.json b/tools/misc/package.json index c9ebad8cc7..9e6f143669 100644 --- a/tools/misc/package.json +++ b/tools/misc/package.json @@ -1,10 +1,10 @@ { "name": "@iosevka/misc", - "version": "29.1.1", + "version": "29.2.0", "private": true, "dependencies": { "semver": "^7.6.0", "wawoff2": "^2.0.1", - "@iosevka/util": "29.1.1" + "@iosevka/util": "29.2.0" } } From 166b5e4380380b70ec7dbad64ce94629979c1964 Mon Sep 17 00:00:00 2001 From: John McWilliams <37010132+jmcwilliams403@users.noreply.github.com> Date: Fri, 12 Apr 2024 17:38:12 -0400 Subject: [PATCH 8/9] Add Danish, Slovak, and Swedish language samples. (#2288) --- tools/generate-samples/src/templates/languages.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/generate-samples/src/templates/languages.mjs b/tools/generate-samples/src/templates/languages.mjs index 058de37516..4b4b36129a 100644 --- a/tools/generate-samples/src/templates/languages.mjs +++ b/tools/generate-samples/src/templates/languages.mjs @@ -10,6 +10,7 @@ const languages = [ { lang: 'Catalan', sample: '«Dóna amor que seràs feliç!». Això, iŀlús company geniüt, ja és un lluït rètol blavís d’onze kWh.' }, { lang: 'Croatian', sample: 'Gojazni đačić s biciklom drži hmelj i finu vatu u džepu nošnje.' }, { lang: 'Czech', sample: 'Nechť již hříšné saxofony ďáblů rozezvučí síň úděsnými tóny waltzu, tanga a quickstepu.' }, + { lang: 'Danish', sample: 'Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon.' }, { lang: 'Dutch', sample: 'Pa’s wijze lynx bezag vroom het fikse aquaduct.' }, { lang: 'Esperanto', sample: 'Eble ĉiu kvazaŭ-deca fuŝĥoraĵo ĝojigos homtipon.' }, { lang: 'Finnish', sample: 'Charles Darwin jammaili Åken hevixylofonilla Qatarin yöpub Zeligissä.' }, @@ -31,7 +32,9 @@ const languages = [ { lang: 'Romanian', sample: 'Înjurând pițigăiat, zoofobul comandă vexat whisky și tequila.' }, { lang: 'Russian', sample: 'Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.' }, { lang: 'Serbian', sample: 'Ајшо, лепото и чежњо, за љубав срца мога дођи у Хаџиће на кафу.', localeId: 'sr' }, + { lang: 'Slovak', sample: 'Kŕdeľ šťastných ďatľov učí pri ústí Váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso.' }, { lang: 'Spanish', sample: 'Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.' }, + { lang: 'Swedish', sample: 'Yxmördaren Julia Blomqvist på fäktning i Schweiz.' }, { lang: 'Turkish', sample: 'Pijamalı hasta yağız şoföre çabucak güvendi.' }, { lang: 'Ukrainian', sample: 'Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!' }, { lang: 'Vietnamese', sample: 'Do bạch kim rất quý nên sẽ dùng để lắp vô xương.', localeId :'vi' }, From 26b01eea4be5fc6198f382b96e051cc653b44b86 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sat, 13 Apr 2024 06:20:12 -0700 Subject: [PATCH 9/9] Release 29.2.0 --- CHANGELOG.md | 13 + doc/PACKAGE-LIST.md | 274 ++-- doc/cv-influences.md | 20 +- images/button-release.dark.svg | 9 +- images/button-release.light.svg | 9 +- images/cs-block-greek-and-coptic.dark.svg | 2 +- images/cs-block-greek-and-coptic.light.svg | 2 +- images/languages.dark.svg | 1198 ++++++++++------- images/languages.light.svg | 1198 ++++++++++------- images/package-sample-IosevkaAile.dark.svg | 2 +- images/package-sample-IosevkaAile.light.svg | 2 +- images/package-sample-IosevkaEtoile.dark.svg | 2 +- images/package-sample-IosevkaEtoile.light.svg | 2 +- 13 files changed, 1614 insertions(+), 1119 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8197364fd4..db7b29faeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ ## Modifications since last major version +### 29.2.0 + +* Drop NWID glyphs for ligatures in quasi-proportionals as they do not make sense for these styles. This change will save around 2MB for each Aile or Etoile font. +* Make presence of descender serif automatic for GREEK CAPITAL KAI SYMBOL (`U+03CF`). +* Make presence of top-left serif automatic for CYRILLIC {CAPITAL|SMALL} LETTER BASHKIR KA (`U+04A0`..`U+04A1`). +* Make GREEK SMALL LETTER DIGAMMA (`U+03DD`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). +* Make GREEK SMALL LETTER HETA (`U+0371`) respond to top-left serif variants of `H` (`cv08`). +* Make CYRILLIC {CAPITAL|SMALL} LIGATURE EN GHE (`U+04A4`..`U+04A5`) respond to top-right serif variants of Greek Capital Gamma (`cv56`). +* Make CYRILLIC {CAPITAL|SMALL} LETTER STRAIGHT U (`U+04AE`..`U+04B1`) follow variants of Cyrillic Capital/Small U (`cv77`..`cv78`). +* Make the terminal of {LATIN|CYRILLIC} {CAPITAL|SMALL} LETTER SCHWA (`U+018F`, `U+0259`, `U+04D8`..`U+04D9`) a full hook under italics to match CYRILLIC {CAPITAL|SMALL} LETTER E (`U+042D`, `U+044D`). +* Quasi-proportional will now use `cyrl-ef` = `split-serifless`, `cyrl-ef` = `split-serifed`, and `cyrl-ef` = `split-cursive` for Aile, Etoile upright, and Etoile italic respectively. + + ### 29.1.0 * Add support for naming override (#2275). diff --git a/doc/PACKAGE-LIST.md b/doc/PACKAGE-LIST.md index 8920f011cf..7b2e4b925f 100644 --- a/doc/PACKAGE-LIST.md +++ b/doc/PACKAGE-LIST.md @@ -1,7 +1,7 @@ -# Package list of Release 29.1.0 +# Package list of Release 29.2.0 ## 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 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ Iosevka SS18DefaultYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    ├ Iosevka Term SS18TerminalYesSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
    └ Iosevka Fixed SS18FixedNoSuper TTCTTCTTF (Unhinted)WebFont (Unhinted)
📦 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ 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 
  └ Sub-packagesSpacingLigaturesDownloads
    ├ 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 0b0bc970ad..2b4e746175 100644 --- a/doc/cv-influences.md +++ b/doc/cv-influences.md @@ -33,7 +33,7 @@ - `cv08`: - H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), Ή (`U+0389`), Η (`U+0397`), Њ (`U+040A`), Н (`U+041D`), Ң (`U+04A2`), Ҥ (`U+04A4`), Ӈ (`U+04C7`), Ӊ (`U+04C9`), Ԋ (`U+050A`), Ԣ (`U+0522`), Ԩ (`U+0528`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`) + H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), ͱ (`U+0371`), Ή (`U+0389`), Η (`U+0397`), Њ (`U+040A`), Н (`U+041D`), Ң (`U+04A2`), Ҥ (`U+04A4`), Ӈ (`U+04C7`), Ӊ (`U+04C9`), Ԋ (`U+050A`), Ԣ (`U+0522`), Ԩ (`U+0528`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`) - `cv09`: @@ -97,7 +97,7 @@ - `cv24`: - Y (`U+0059`), ¥ (`U+00A5`), Ý (`U+00DD`), Ŷ (`U+0176`), Ÿ (`U+0178`), Ƴ (`U+01B3`), Ȳ (`U+0232`), Ɏ (`U+024E`), ʏ (`U+028F`), Ύ (`U+038E`), Υ (`U+03A5`), Ϋ (`U+03AB`), ϒ (`U+03D2`), ϓ (`U+03D3`), ϔ (`U+03D4`), Ү (`U+04AE`), ү (`U+04AF`), Ұ (`U+04B0`), ұ (`U+04B1`), Ẏ (`U+1E8E`), Ỳ (`U+1EF2`), Ỵ (`U+1EF4`), Ỷ (`U+1EF6`), Ỹ (`U+1EF8`), Ỿ (`U+1EFE`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), Ῠ (`U+1FE8`), Ῡ (`U+1FE9`), Ὺ (`U+1FEA`), Ύ (`U+1FEB`), ⅄ (`U+2144`), ␖ (`U+2416`), Ⓨ (`U+24CE`), 𐞲 (`U+107B2`), 𜳮 (`U+1CCEE`), 𝐘 (`U+1D418`), 𝑌 (`U+1D44C`), 𝒀 (`U+1D480`), 𝖸 (`U+1D5B8`), 𝗬 (`U+1D5EC`), 𝘠 (`U+1D620`), 𝙔 (`U+1D654`), 𝚈 (`U+1D688`), 𝚼 (`U+1D6BC`), 𝛶 (`U+1D6F6`), 𝜰 (`U+1D730`), 𝝪 (`U+1D76A`), 𝞤 (`U+1D7A4`), 𞁏 (`U+1E04F`), 𞁭 (`U+1E06D`), 🄨 (`U+1F128`), 🅈 (`U+1F148`), 🅨 (`U+1F168`), 🆈 (`U+1F188`) + Y (`U+0059`), ¥ (`U+00A5`), Ý (`U+00DD`), Ŷ (`U+0176`), Ÿ (`U+0178`), Ƴ (`U+01B3`), Ȳ (`U+0232`), Ɏ (`U+024E`), ʏ (`U+028F`), Ύ (`U+038E`), Υ (`U+03A5`), Ϋ (`U+03AB`), ϒ (`U+03D2`), ϓ (`U+03D3`), ϔ (`U+03D4`), Ẏ (`U+1E8E`), Ỳ (`U+1EF2`), Ỵ (`U+1EF4`), Ỷ (`U+1EF6`), Ỹ (`U+1EF8`), Ỿ (`U+1EFE`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), Ῠ (`U+1FE8`), Ῡ (`U+1FE9`), Ὺ (`U+1FEA`), Ύ (`U+1FEB`), ⅄ (`U+2144`), ␖ (`U+2416`), Ⓨ (`U+24CE`), 𐞲 (`U+107B2`), 𜳮 (`U+1CCEE`), 𝐘 (`U+1D418`), 𝑌 (`U+1D44C`), 𝒀 (`U+1D480`), 𝖸 (`U+1D5B8`), 𝗬 (`U+1D5EC`), 𝘠 (`U+1D620`), 𝙔 (`U+1D654`), 𝚈 (`U+1D688`), 𝚼 (`U+1D6BC`), 𝛶 (`U+1D6F6`), 𝜰 (`U+1D730`), 𝝪 (`U+1D76A`), 𝞤 (`U+1D7A4`), 🄨 (`U+1F128`), 🅈 (`U+1F148`), 🅨 (`U+1F168`), 🆈 (`U+1F188`) - `cv25`: @@ -225,7 +225,7 @@ - `cv56`: - Γ (`U+0393`), Ϝ (`U+03DC`), Ѓ (`U+0403`), Г (`U+0413`), г (`U+0433`), ѓ (`U+0453`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), ғ (`U+0493`), Ҕ (`U+0494`), ҕ (`U+0495`), Ӷ (`U+04F6`), ӷ (`U+04F7`), Ӻ (`U+04FA`), ӻ (`U+04FB`), ᴦ (`U+1D26`), ⷢ (`U+2DE2`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𞀳 (`U+1E033`), 𞁔 (`U+1E054`), 𞁧 (`U+1E067`) + Γ (`U+0393`), Ϝ (`U+03DC`), ϝ (`U+03DD`), Ѓ (`U+0403`), Г (`U+0413`), г (`U+0433`), ѓ (`U+0453`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), ғ (`U+0493`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), ӷ (`U+04F7`), Ӻ (`U+04FA`), ӻ (`U+04FB`), ᴦ (`U+1D26`), ⷢ (`U+2DE2`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𝟋 (`U+1D7CB`), 𞀳 (`U+1E033`), 𞁔 (`U+1E054`), 𞁧 (`U+1E067`) - `cv57`: @@ -309,11 +309,11 @@ - `cv77`: - Ў (`U+040E`), У (`U+0423`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`) + Ў (`U+040E`), У (`U+0423`), Ү (`U+04AE`), Ұ (`U+04B0`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`) - `cv78`: - у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁟 (`U+1E05F`) + у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ү (`U+04AF`), ұ (`U+04B1`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁏 (`U+1E04F`), 𞁟 (`U+1E05F`), 𞁭 (`U+1E06D`) - `cv79`: @@ -496,7 +496,7 @@ - `cv08`: - H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), Ή (`U+0389`), Η (`U+0397`), Њ (`U+040A`), Н (`U+041D`), Ң (`U+04A2`), Ҥ (`U+04A4`), Ӈ (`U+04C7`), Ӊ (`U+04C9`), Ԋ (`U+050A`), Ԣ (`U+0522`), Ԩ (`U+0528`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`) + H (`U+0048`), Ĥ (`U+0124`), Ħ (`U+0126`), Ƕ (`U+01F6`), Ȟ (`U+021E`), ʜ (`U+029C`), Ͱ (`U+0370`), ͱ (`U+0371`), Ή (`U+0389`), Η (`U+0397`), Њ (`U+040A`), Н (`U+041D`), Ң (`U+04A2`), Ҥ (`U+04A4`), Ӈ (`U+04C7`), Ӊ (`U+04C9`), Ԋ (`U+050A`), Ԣ (`U+0522`), Ԩ (`U+0528`), ᴴ (`U+1D34`), Ḣ (`U+1E22`), Ḥ (`U+1E24`), Ḧ (`U+1E26`), Ḩ (`U+1E28`), Ḫ (`U+1E2A`), Ἠ (`U+1F28`), Ἡ (`U+1F29`), Ἢ (`U+1F2A`), Ἣ (`U+1F2B`), Ἤ (`U+1F2C`), Ἥ (`U+1F2D`), Ἦ (`U+1F2E`), Ἧ (`U+1F2F`), ᾘ (`U+1F98`), ᾙ (`U+1F99`), ᾚ (`U+1F9A`), ᾛ (`U+1F9B`), ᾜ (`U+1F9C`), ᾝ (`U+1F9D`), ᾞ (`U+1F9E`), ᾟ (`U+1F9F`), Ὴ (`U+1FCA`), Ή (`U+1FCB`), ῌ (`U+1FCC`), ␁ (`U+2401`), ␉ (`U+2409`), Ⓗ (`U+24BD`), Ⱨ (`U+2C67`), Ⱶ (`U+2C75`), ⱶ (`U+2C76`), Ꜧ (`U+A726`), Ɥ (`U+A78D`), Ɦ (`U+A7AA`), Ꟶ (`U+A7F5`), ꟶ (`U+A7F6`), ꟸ (`U+A7F8`), 𐞖 (`U+10796`), 𜳝 (`U+1CCDD`), 𝐇 (`U+1D407`), 𝐻 (`U+1D43B`), 𝑯 (`U+1D46F`), 𝖧 (`U+1D5A7`), 𝗛 (`U+1D5DB`), 𝘏 (`U+1D60F`), 𝙃 (`U+1D643`), 𝙷 (`U+1D677`), 𝚮 (`U+1D6AE`), 𝛨 (`U+1D6E8`), 𝜢 (`U+1D722`), 𝝜 (`U+1D75C`), 𝞖 (`U+1D796`), 🄗 (`U+1F117`), 🄷 (`U+1F137`), 🅊 (`U+1F14A`), 🅗 (`U+1F157`), 🅷 (`U+1F177`), 🆦 (`U+1F1A6`), 🆧 (`U+1F1A7`), 🆨 (`U+1F1A8`), 🆪 (`U+1F1AA`), 🆫 (`U+1F1AB`) - `cv09`: @@ -560,7 +560,7 @@ - `cv24`: - Y (`U+0059`), ¥ (`U+00A5`), Ý (`U+00DD`), Ŷ (`U+0176`), Ÿ (`U+0178`), Ƴ (`U+01B3`), Ȳ (`U+0232`), Ɏ (`U+024E`), ʏ (`U+028F`), Ύ (`U+038E`), Υ (`U+03A5`), Ϋ (`U+03AB`), ϒ (`U+03D2`), ϓ (`U+03D3`), ϔ (`U+03D4`), Ү (`U+04AE`), ү (`U+04AF`), Ұ (`U+04B0`), ұ (`U+04B1`), Ẏ (`U+1E8E`), Ỳ (`U+1EF2`), Ỵ (`U+1EF4`), Ỷ (`U+1EF6`), Ỹ (`U+1EF8`), Ỿ (`U+1EFE`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), Ῠ (`U+1FE8`), Ῡ (`U+1FE9`), Ὺ (`U+1FEA`), Ύ (`U+1FEB`), ⅄ (`U+2144`), ␖ (`U+2416`), Ⓨ (`U+24CE`), 𐞲 (`U+107B2`), 𜳮 (`U+1CCEE`), 𝐘 (`U+1D418`), 𝑌 (`U+1D44C`), 𝒀 (`U+1D480`), 𝖸 (`U+1D5B8`), 𝗬 (`U+1D5EC`), 𝘠 (`U+1D620`), 𝙔 (`U+1D654`), 𝚈 (`U+1D688`), 𝚼 (`U+1D6BC`), 𝛶 (`U+1D6F6`), 𝜰 (`U+1D730`), 𝝪 (`U+1D76A`), 𝞤 (`U+1D7A4`), 𞁏 (`U+1E04F`), 𞁭 (`U+1E06D`), 🄨 (`U+1F128`), 🅈 (`U+1F148`), 🅨 (`U+1F168`), 🆈 (`U+1F188`) + Y (`U+0059`), ¥ (`U+00A5`), Ý (`U+00DD`), Ŷ (`U+0176`), Ÿ (`U+0178`), Ƴ (`U+01B3`), Ȳ (`U+0232`), Ɏ (`U+024E`), ʏ (`U+028F`), Ύ (`U+038E`), Υ (`U+03A5`), Ϋ (`U+03AB`), ϒ (`U+03D2`), ϓ (`U+03D3`), ϔ (`U+03D4`), Ẏ (`U+1E8E`), Ỳ (`U+1EF2`), Ỵ (`U+1EF4`), Ỷ (`U+1EF6`), Ỹ (`U+1EF8`), Ỿ (`U+1EFE`), Ὑ (`U+1F59`), Ὓ (`U+1F5B`), Ὕ (`U+1F5D`), Ὗ (`U+1F5F`), Ῠ (`U+1FE8`), Ῡ (`U+1FE9`), Ὺ (`U+1FEA`), Ύ (`U+1FEB`), ⅄ (`U+2144`), ␖ (`U+2416`), Ⓨ (`U+24CE`), 𐞲 (`U+107B2`), 𜳮 (`U+1CCEE`), 𝐘 (`U+1D418`), 𝑌 (`U+1D44C`), 𝒀 (`U+1D480`), 𝖸 (`U+1D5B8`), 𝗬 (`U+1D5EC`), 𝘠 (`U+1D620`), 𝙔 (`U+1D654`), 𝚈 (`U+1D688`), 𝚼 (`U+1D6BC`), 𝛶 (`U+1D6F6`), 𝜰 (`U+1D730`), 𝝪 (`U+1D76A`), 𝞤 (`U+1D7A4`), 🄨 (`U+1F128`), 🅈 (`U+1F148`), 🅨 (`U+1F168`), 🆈 (`U+1F188`) - `cv25`: @@ -688,7 +688,7 @@ - `cv56`: - Γ (`U+0393`), Ϝ (`U+03DC`), Ѓ (`U+0403`), Г (`U+0413`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), Ҕ (`U+0494`), ҕ (`U+0495`), Ӷ (`U+04F6`), Ӻ (`U+04FA`), ᴦ (`U+1D26`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𞁧 (`U+1E067`) + Γ (`U+0393`), Ϝ (`U+03DC`), ϝ (`U+03DD`), Ѓ (`U+0403`), Г (`U+0413`), Ґ (`U+0490`), ґ (`U+0491`), Ғ (`U+0492`), Ҕ (`U+0494`), ҕ (`U+0495`), Ҥ (`U+04A4`), ҥ (`U+04A5`), Ӷ (`U+04F6`), Ӻ (`U+04FA`), ᴦ (`U+1D26`), 𝚪 (`U+1D6AA`), 𝛤 (`U+1D6E4`), 𝜞 (`U+1D71E`), 𝝘 (`U+1D758`), 𝞒 (`U+1D792`), 𝟊 (`U+1D7CA`), 𝟋 (`U+1D7CB`), 𞁧 (`U+1E067`) - `cv57`: @@ -772,11 +772,11 @@ - `cv77`: - Ў (`U+040E`), У (`U+0423`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`) + Ў (`U+040E`), У (`U+0423`), Ү (`U+04AE`), Ұ (`U+04B0`), Ӯ (`U+04EE`), Ӱ (`U+04F0`), Ӳ (`U+04F2`) - `cv78`: - у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁟 (`U+1E05F`) + у (`U+0443`), ў (`U+045E`), Ѹ (`U+0478`), ѹ (`U+0479`), ү (`U+04AF`), ұ (`U+04B1`), ӯ (`U+04EF`), ӱ (`U+04F1`), ӳ (`U+04F3`), ꙷ (`U+A677`), 𞁁 (`U+1E041`), 𞁏 (`U+1E04F`), 𞁟 (`U+1E05F`), 𞁭 (`U+1E06D`) - `cv79`: diff --git a/images/button-release.dark.svg b/images/button-release.dark.svg index b35c798a4a..4b5238eaba 100644 --- a/images/button-release.dark.svg +++ b/images/button-release.dark.svg @@ -9,8 +9,7 @@ - - + @@ -22,13 +21,13 @@ - + - + - + \ No newline at end of file diff --git a/images/button-release.light.svg b/images/button-release.light.svg index 1f883e0a84..0f99be2d3c 100644 --- a/images/button-release.light.svg +++ b/images/button-release.light.svg @@ -9,8 +9,7 @@ - - + @@ -22,13 +21,13 @@ - + - + - + \ No newline at end of file diff --git a/images/cs-block-greek-and-coptic.dark.svg b/images/cs-block-greek-and-coptic.dark.svg index 011c98d95d..3695285288 100644 --- a/images/cs-block-greek-and-coptic.dark.svg +++ b/images/cs-block-greek-and-coptic.dark.svg @@ -106,7 +106,7 @@ - + diff --git a/images/cs-block-greek-and-coptic.light.svg b/images/cs-block-greek-and-coptic.light.svg index fc3020733e..1b2e4cf310 100644 --- a/images/cs-block-greek-and-coptic.light.svg +++ b/images/cs-block-greek-and-coptic.light.svg @@ -106,7 +106,7 @@ - + diff --git a/images/languages.dark.svg b/images/languages.dark.svg index 942cb77952..5fa05a842e 100644 --- a/images/languages.dark.svg +++ b/images/languages.dark.svg @@ -1,5 +1,5 @@ - + @@ -148,125 +148,125 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -287,33 +287,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -923,7 +927,99 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -932,13 +1028,13 @@ - - + + - + @@ -975,10 +1071,10 @@ - + - + @@ -988,12 +1084,12 @@ - - + + - + @@ -1002,21 +1098,21 @@ - + - - + + - + - + @@ -1035,8 +1131,8 @@ - - + + @@ -1046,8 +1142,8 @@ - - + + @@ -1068,7 +1164,7 @@ - + @@ -1087,7 +1183,7 @@ - + @@ -1107,13 +1203,13 @@ - + - - + + @@ -1122,8 +1218,8 @@ - - + + @@ -1139,7 +1235,7 @@ - + @@ -1179,18 +1275,18 @@ - - + + - + - - + + @@ -1209,7 +1305,7 @@ - + @@ -1229,7 +1325,7 @@ - + @@ -1247,74 +1343,74 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + @@ -1322,85 +1418,85 @@ - + - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - - + + + - - + + @@ -1412,8 +1508,8 @@ - - + + @@ -1425,7 +1521,7 @@ - + @@ -1461,14 +1557,14 @@ - + - + @@ -1480,22 +1576,22 @@ - + - + - - - + + + @@ -1512,7 +1608,7 @@ - + @@ -1521,8 +1617,8 @@ - - + + @@ -1539,7 +1635,7 @@ - + @@ -1548,26 +1644,26 @@ - - + + - + - + - + - + - + @@ -1576,7 +1672,7 @@ - + @@ -1589,52 +1685,52 @@ - + - - + + - + - - + + - + - - + + - - + + - + - + - + @@ -1648,7 +1744,7 @@ - + @@ -1659,28 +1755,28 @@ - + - - + + - + - - + + - - + + @@ -1689,14 +1785,14 @@ - - + + - + @@ -1712,19 +1808,19 @@ - + - + - + - + @@ -1732,8 +1828,8 @@ - - + + @@ -1746,8 +1842,8 @@ - - + + @@ -1790,31 +1886,31 @@ - + - + - + - + - + - - + + - + @@ -1823,29 +1919,29 @@ - + - + - + - + - - + + @@ -1856,27 +1952,27 @@ - + - + - + - + - + - + @@ -1884,8 +1980,8 @@ - - + + @@ -1895,8 +1991,8 @@ - - + + @@ -1910,15 +2006,15 @@ - + - + - + @@ -1937,9 +2033,9 @@ - + - + @@ -1947,7 +2043,7 @@ - + @@ -1957,11 +2053,11 @@ - - + + - + @@ -1970,8 +2066,8 @@ - - + + @@ -1981,12 +2077,12 @@ - + - + @@ -2008,7 +2104,7 @@ - + @@ -2017,7 +2113,7 @@ - + @@ -2031,7 +2127,7 @@ - + @@ -2041,23 +2137,23 @@ - - + + - + - + - + @@ -2078,7 +2174,7 @@ - + @@ -2092,7 +2188,7 @@ - + @@ -2104,7 +2200,7 @@ - + @@ -2166,16 +2262,16 @@ - + - + - + @@ -2184,7 +2280,7 @@ - + @@ -2242,7 +2338,7 @@ - + @@ -2253,9 +2349,9 @@ - + - + @@ -2267,13 +2363,13 @@ - + - + - + @@ -2286,7 +2382,7 @@ - + @@ -2333,7 +2429,7 @@ - + @@ -2344,7 +2440,7 @@ - + @@ -2356,18 +2452,18 @@ - + - + - + - + @@ -2381,13 +2477,13 @@ - + - - - + + + @@ -2399,9 +2495,97 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2410,7 +2594,7 @@ - + @@ -2445,7 +2629,7 @@ - + @@ -2483,7 +2667,7 @@ - + @@ -2496,19 +2680,77 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + @@ -2550,9 +2792,9 @@ - - - + + + @@ -2563,10 +2805,10 @@ - - + + - + @@ -2578,8 +2820,8 @@ - - + + @@ -2588,7 +2830,7 @@ - + @@ -2601,7 +2843,7 @@ - + @@ -2612,25 +2854,25 @@ - - + + - + - + - + @@ -2638,56 +2880,56 @@ - - + + - + - + - + - + - - + + - - + + - - + + - - - + + + - - + + - + @@ -2709,7 +2951,7 @@ - + @@ -2719,7 +2961,7 @@ - + @@ -2734,8 +2976,8 @@ - - + + @@ -2743,8 +2985,8 @@ - - + + @@ -2773,14 +3015,14 @@ - + - - + + diff --git a/images/languages.light.svg b/images/languages.light.svg index 5686ac0541..edb06153df 100644 --- a/images/languages.light.svg +++ b/images/languages.light.svg @@ -1,5 +1,5 @@ - + @@ -148,125 +148,125 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -287,33 +287,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -923,7 +927,99 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -932,13 +1028,13 @@ - - + + - + @@ -975,10 +1071,10 @@ - + - + @@ -988,12 +1084,12 @@ - - + + - + @@ -1002,21 +1098,21 @@ - + - - + + - + - + @@ -1035,8 +1131,8 @@ - - + + @@ -1046,8 +1142,8 @@ - - + + @@ -1068,7 +1164,7 @@ - + @@ -1087,7 +1183,7 @@ - + @@ -1107,13 +1203,13 @@ - + - - + + @@ -1122,8 +1218,8 @@ - - + + @@ -1139,7 +1235,7 @@ - + @@ -1179,18 +1275,18 @@ - - + + - + - - + + @@ -1209,7 +1305,7 @@ - + @@ -1229,7 +1325,7 @@ - + @@ -1247,74 +1343,74 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + @@ -1322,85 +1418,85 @@ - + - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - - + + + - - + + @@ -1412,8 +1508,8 @@ - - + + @@ -1425,7 +1521,7 @@ - + @@ -1461,14 +1557,14 @@ - + - + @@ -1480,22 +1576,22 @@ - + - + - - - + + + @@ -1512,7 +1608,7 @@ - + @@ -1521,8 +1617,8 @@ - - + + @@ -1539,7 +1635,7 @@ - + @@ -1548,26 +1644,26 @@ - - + + - + - + - + - + - + @@ -1576,7 +1672,7 @@ - + @@ -1589,52 +1685,52 @@ - + - - + + - + - - + + - + - - + + - - + + - + - + - + @@ -1648,7 +1744,7 @@ - + @@ -1659,28 +1755,28 @@ - + - - + + - + - - + + - - + + @@ -1689,14 +1785,14 @@ - - + + - + @@ -1712,19 +1808,19 @@ - + - + - + - + @@ -1732,8 +1828,8 @@ - - + + @@ -1746,8 +1842,8 @@ - - + + @@ -1790,31 +1886,31 @@ - + - + - + - + - + - - + + - + @@ -1823,29 +1919,29 @@ - + - + - + - + - - + + @@ -1856,27 +1952,27 @@ - + - + - + - + - + - + @@ -1884,8 +1980,8 @@ - - + + @@ -1895,8 +1991,8 @@ - - + + @@ -1910,15 +2006,15 @@ - + - + - + @@ -1937,9 +2033,9 @@ - + - + @@ -1947,7 +2043,7 @@ - + @@ -1957,11 +2053,11 @@ - - + + - + @@ -1970,8 +2066,8 @@ - - + + @@ -1981,12 +2077,12 @@ - + - + @@ -2008,7 +2104,7 @@ - + @@ -2017,7 +2113,7 @@ - + @@ -2031,7 +2127,7 @@ - + @@ -2041,23 +2137,23 @@ - - + + - + - + - + @@ -2078,7 +2174,7 @@ - + @@ -2092,7 +2188,7 @@ - + @@ -2104,7 +2200,7 @@ - + @@ -2166,16 +2262,16 @@ - + - + - + @@ -2184,7 +2280,7 @@ - + @@ -2242,7 +2338,7 @@ - + @@ -2253,9 +2349,9 @@ - + - + @@ -2267,13 +2363,13 @@ - + - + - + @@ -2286,7 +2382,7 @@ - + @@ -2333,7 +2429,7 @@ - + @@ -2344,7 +2440,7 @@ - + @@ -2356,18 +2452,18 @@ - + - + - + - + @@ -2381,13 +2477,13 @@ - + - - - + + + @@ -2399,9 +2495,97 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2410,7 +2594,7 @@ - + @@ -2445,7 +2629,7 @@ - + @@ -2483,7 +2667,7 @@ - + @@ -2496,19 +2680,77 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + @@ -2550,9 +2792,9 @@ - - - + + + @@ -2563,10 +2805,10 @@ - - + + - + @@ -2578,8 +2820,8 @@ - - + + @@ -2588,7 +2830,7 @@ - + @@ -2601,7 +2843,7 @@ - + @@ -2612,25 +2854,25 @@ - - + + - + - + - + @@ -2638,56 +2880,56 @@ - - + + - + - + - + - + - - + + - - + + - - + + - - - + + + - - + + - + @@ -2709,7 +2951,7 @@ - + @@ -2719,7 +2961,7 @@ - + @@ -2734,8 +2976,8 @@ - - + + @@ -2743,8 +2985,8 @@ - - + + @@ -2773,14 +3015,14 @@ - + - - + + diff --git a/images/package-sample-IosevkaAile.dark.svg b/images/package-sample-IosevkaAile.dark.svg index 4a76067461..9044c5bfa3 100644 --- a/images/package-sample-IosevkaAile.dark.svg +++ b/images/package-sample-IosevkaAile.dark.svg @@ -135,7 +135,7 @@ - + diff --git a/images/package-sample-IosevkaAile.light.svg b/images/package-sample-IosevkaAile.light.svg index 4c464499fd..55569abffc 100644 --- a/images/package-sample-IosevkaAile.light.svg +++ b/images/package-sample-IosevkaAile.light.svg @@ -135,7 +135,7 @@ - + diff --git a/images/package-sample-IosevkaEtoile.dark.svg b/images/package-sample-IosevkaEtoile.dark.svg index ff9d8ae28c..43b3539218 100644 --- a/images/package-sample-IosevkaEtoile.dark.svg +++ b/images/package-sample-IosevkaEtoile.dark.svg @@ -136,7 +136,7 @@ - + diff --git a/images/package-sample-IosevkaEtoile.light.svg b/images/package-sample-IosevkaEtoile.light.svg index 5f4443fb62..e7afddd55f 100644 --- a/images/package-sample-IosevkaEtoile.light.svg +++ b/images/package-sample-IosevkaEtoile.light.svg @@ -136,7 +136,7 @@ - +