Drop NWID glyphs for ligatures in quasi-proportionals as they do not … (#2287)

* 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
This commit is contained in:
Belleve 2024-04-11 18:32:37 -10:00 committed by GitHub
parent 2cdaf91479
commit a8576bec10
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
23 changed files with 153 additions and 195 deletions

View file

@ -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.

View file

@ -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`).

80
package-lock.json generated
View file

@ -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"
}

View file

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

View file

@ -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"
}
}

View file

@ -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]
if [query-glyph gn] : return nothing
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)
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 compress : clamp 0 1 (compressRefWidth / estKernedUncompressedWidth)
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)
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
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' }

View file

@ -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"
}
}

View file

@ -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"
}
}

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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"
}
}

View file

@ -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"
}

View file

@ -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"
}
}

View file

@ -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) {

View file

@ -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"
}
}

View file

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

View file

@ -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"
}
}

View file

@ -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"
}

View file

@ -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),

View file

@ -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;
}

View file

@ -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"
}
}

View file

@ -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"
}
}