Add raised cap-height cent sign (¢) variants to VSAM (#2044).

This commit is contained in:
be5invis 2023-10-13 20:25:02 -07:00
parent 6f59a5250c
commit c7440bb5a2
6 changed files with 103 additions and 50 deletions

View file

@ -2,4 +2,5 @@
* Fix `ss02`, `ss04`, `ss06`, `ss13`, `ss17`'s application on `i` and `j` (#2033).
* Add tailed lower lambda (#2036).
* Add `arrow-lr` ligation group for C-like's spaceship operators (#2041).
* Add raised cap-height cent sign (`¢`) variants to `VSAM` (#2044).
* Fix `cv02`, `cv04`, `cv05`, `cv06`, `cv11`, `cv12`, `cv15`, `cv17`, `cv18`, `cv25`, `cv28`, `cv43`, `cv70`, `cv71`, `cv81`, and `cv82` for `ss17` under slab.

View file

@ -1,7 +1,7 @@
$$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from"../../../support/utils.mjs"
import [Dotless CvDecompose MathSansSerif] from"../../../support/gr.mjs"
import [DependentSelector CvDecompose MathSansSerif] from"../../../support/gr.mjs"
glyph-module
@ -10,6 +10,7 @@ glyph-block Letter-Latin-C : begin
glyph-block-import Common-Derivatives
glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors ExtendBelowBaseAnchors
glyph-block-import Mark-Shared-Metrics : markStroke
glyph-block-import Letter-Shared : CreateDependentComposite
glyph-block-import Letter-Shared-Shapes : SerifFrame CurlyTail DToothlessRise
glyph-block-import Letter-Shared-Shapes : SerifedArcStart SerifedArcEnd InwardSlabArcStart
glyph-block-import Letter-Shared-Shapes : ArcStartSerif ArcEndSerif
@ -180,12 +181,27 @@ glyph-block Letter-Latin-C : begin
create-glyph "c.\(suffix)" : glyph-proc
include : MarkSet.e
local lf : CLetterForm [DivFrame 1] sty styBot XH 0
ada -- SmallArchDepthA
adb -- SmallArchDepthB
include : lf.full
create-glyph "c/centKernelStd.\(suffix)" : glyph-proc
set-base-anchor 'cvDecompose' 0 0
local lf : CLetterForm [DivFrame 1] sty styBot XH 0
ada -- SmallArchDepthA
adb -- SmallArchDepthB
include : lf.full
create-glyph "c/centKernelCap.\(suffix)" : glyph-proc
set-base-anchor 'cvDecompose' 0 0
local t : CAP / 2 + XH / 2
local b : CAP / 2 - XH / 2
local lf : CLetterForm [DivFrame 1] sty styBot t b
ada -- SmallArchDepthA
adb -- SmallArchDepthB
include : lf.full
create-glyph "revSmallC.\(suffix)" : glyph-proc
include : MarkSet.e
local lf : CLetterForm [DivFrame 1] sty styBot XH 0
@ -294,6 +310,8 @@ glyph-block Letter-Latin-C : begin
link-reduced-variant 'c/sansSerif' 'c' MathSansSerif
link-reduced-variant 'c/turnDescBase' 'c'
select-variant 'revSmallC' 0x2184 (follow -- 'c')
select-variant 'c/centKernelStd' (follow -- 'c')
select-variant 'c/centKernelCap' (follow -- 'c')
alias 'cyrl/es' 0x441 'c'
alias 'grek/lunateSmallSigma' 0x3F2 'c.serifless'
select-variant 'turncSideways' 0x1D12 (follow -- 'c')
@ -333,43 +351,54 @@ glyph-block Letter-Latin-C : begin
LetterBarOverlay.l SB (CAP * 0.6)
derive-composites 'currency/euroSign' 0x20AC 'C' 'currency/euroSign/overlay'
create-glyph 'currency/centSignBar.open' : glyph-proc
set-width 0
set-mark-anchor 'cvDecompose' 0 0
define CentBarConfig : object
open { (Descender / 2) (XH - Descender / 2) 0 "std" }
through { (Descender / 2) (XH - Descender / 2) 1 "std" }
interrupted { (Descender / 2) (XH - Descender / 2) 2 "std" }
openCap { 0 CAP 0 "cap" }
throughCap { 0 CAP 1 "cap" }
interruptedCap { 0 CAP 2 "cap" }
foreach { suffix { bot top fillType selector } } [Object.entries CentBarConfig] : do
create-glyph "cent/bar.\(suffix)" : glyph-proc
define w : AdviceStroke 3
define fine : AdviceStroke [StrokeWidthBlend 3 5.5]
local yMid : mix bot top 0.5
local fillBottom : yMid - XH / 2
local fillTop : yMid + XH / 2
# Draw the outside subbars
include : dispiro
widths.center [AdviceStroke 3]
flat Middle (XH - HalfStroke)
curl Middle (XH - Descender / 2) [heading Upward]
flat Middle fillTop [widths.center w]
curl Middle top [heading Upward]
include : dispiro
widths.center [AdviceStroke 3]
flat Middle (Descender / 2) [heading Upward]
curl Middle HalfStroke
create-glyph 'currency/centSignBar.through' : glyph-proc
include [refer-glyph 'currency/centSignBar.open'] AS_BASE ALSO_METRICS
define fine : AdviceStroke [StrokeWidthBlend 3 5]
include : VBar.m Middle (XH - HalfStroke) (0 + HalfStroke) fine
create-glyph 'currency/centSignBar.barInterrupted' : glyph-proc
include [refer-glyph 'currency/centSignBar.open'] AS_BASE ALSO_METRICS
flat Middle fillBottom [widths.center w]
curl Middle bot [heading Downward]
include : match fillType
[Just 1] : VBar.m Middle fillBottom fillTop fine
[Just 2] : begin
define cofine : AdviceStroke 4
define fine : AdviceStroke [StrokeWidthBlend 3 5]
define gap : Math.max (XH / 8) [AdviceStroke2 6 6 XH]
include : dispiro
flat Middle (XH - HalfStroke) [widths.center.heading cofine Downward]
curl Middle (XH / 2 + gap / 2) [widths.center.heading fine Downward]
include : dispiro
flat Middle (HalfStroke) [widths.center.heading cofine Upward]
curl Middle (XH / 2 - gap / 2) [widths.center.heading fine Upward]
select-variant 'currency/centSignBar' (follow -- 'cent')
union
dispiro
flat Middle fillTop [widths.center.heading cofine Downward]
curl Middle (yMid + gap / 2) [widths.center.heading fine Downward]
dispiro
flat Middle fillBottom [widths.center.heading cofine Upward]
curl Middle (yMid - gap / 2) [widths.center.heading fine Upward]
create-glyph 'currency/centSign' 0xA2 : glyph-proc
include [refer-glyph 'c'] AS_BASE ALSO_METRICS
include [refer-glyph 'currency/centSignBar']
CvDecompose.set currentGlyph { 'c' 'currency/centSignBar' }
__ : no-shape
DependentSelector.set currentGlyph selector
select-variant 'cent/bar' (follow -- 'cent')
CreateDependentComposite 'cent/centSign' 0xA2 "cent/bar" : object
'std' 'c/centKernelStd'
'cap' 'c/centKernelCap'
turned 'turnC' 0x186 'C' Middle (CAP / 2)
turned 'turnc' 0x254 'c' Middle (XH / 2)

View file

@ -248,7 +248,7 @@ glyph-block Letter-Latin-S : begin
include : SAutoSlabStart doTS XH sw Hook
include : SAutoSlabEnd doBS 0 sw Hook
create-glyph "DollarKernelStd.\(suffix)" : glyph-proc
create-glyph "S/dollarKernelStd.\(suffix)" : glyph-proc
define top : CAP * 0.95
define bot : CAP * 0.05
local sw : AdviceStroke2 2 3 (top - bot)
@ -258,7 +258,7 @@ glyph-block Letter-Latin-S : begin
include : SAutoSlabStart doTS top sw Hook
include : SAutoSlabEnd doBS bot sw Hook
create-glyph "DollarKernelCap.\(suffix)" : glyph-proc
create-glyph "S/dollarKernelCap.\(suffix)" : glyph-proc
define top : CAP * 0.88
define bot : CAP * 0.12
local sw : AdviceStroke2 2 3 (top - bot)
@ -350,8 +350,8 @@ glyph-block Letter-Latin-S : begin
alias 'cyrl/DzeRev' 0xA644 'revS'
alias 'cyrl/dzeRev' 0xA645 'revs'
select-variant 'DollarKernelStd' (follow -- 'S')
select-variant 'DollarKernelCap' (follow -- 'S')
select-variant 'S/dollarKernelStd' (follow -- 'S')
select-variant 'S/dollarKernelCap' (follow -- 'S')
select-variant 'SSwash' 0x2C7E
select-variant 'sSwash' 0x23F
@ -500,5 +500,5 @@ glyph-block Letter-Latin-S : begin
select-variant 'dollar/bar' (follow -- 'dollar')
CreateDependentComposite 'dollar' '$' "dollar/bar" : object
'std' 'DollarKernelStd'
'cap' 'DollarKernelCap'
'std' 'S/dollarKernelStd'
'cap' 'S/dollarKernelCap'

View file

@ -6667,17 +6667,17 @@ selector.dollar = "interrupted"
[prime.dollar.variants.open-cap]
rank = 4
description = "Dollar symbol with open contour, not exceeding baseline and ascender"
description = "Dollar symbol with open contour, sized not exceeding baseline and ascender"
selector.dollar = "openCap"
[prime.dollar.variants.through-cap]
rank = 5
description = "Dollar symbol with strike-through vertical bar, not exceeding baseline and ascender"
description = "Dollar symbol with strike-through vertical bar, sized not exceeding baseline and ascender"
selector.dollar = "throughCap"
[prime.dollar.variants.interrupted-cap]
rank = 6
description = "Dollar symbol with interrupted strike-through vertical bar, not exceeding baseline and ascender"
description = "Dollar symbol with interrupted strike-through vertical bar, sized not exceeding baseline and ascender"
selector.dollar = "interruptedCap"
@ -6826,7 +6826,22 @@ selector.cent = "through"
[prime.cent.variants.bar-interrupted]
rank = 3
description = "Cent sign (`¢`) with vertical bar breaks at center"
selector.cent = "barInterrupted"
selector.cent = "interrupted"
[prime.cent.variants.open-cap]
rank = 4
description = "Cent sign (`¢`) with open contour, sized not exceeding baseline and ascender"
selector.cent = "openCap"
[prime.cent.variants.through-cap]
rank = 5
description = "Cent sign (`¢`) with vertical bar all through the `c` part, sized not exceeding baseline and ascender"
selector.cent = "throughCap"
[prime.cent.variants.bar-interrupted-cap]
rank = 6
description = "Cent sign (`¢`) with vertical bar breaks at center, sized not exceeding baseline and ascender"
selector.cent = "interruptedCap"
@ -7473,6 +7488,7 @@ eight = "two-circles"
nine = "closed-contour"
asterisk = "hex-low"
brace = "straight"
cent = "through-cap"
guillemet = "straight"
at = "fourfold"
percent = "rings-continuous-slash"
@ -7546,6 +7562,7 @@ nine = "closed-contour"
asterisk = "hex-mid"
underscore = "low"
brace = "straight"
cent = "through-cap"
guillemet = "straight"
number-sign = "slanted"
at = "fourfold"
@ -7813,7 +7830,7 @@ brace = "straight"
guillemet = "straight"
number-sign = "slanted"
at = "fourfold"
cent = "open"
cent = "open-cap"
percent = "rings-continuous-slash"
bar = "force-upright"
pilcrow = "low"
@ -7891,6 +7908,7 @@ seven = "curly-serifless"
nine = "closed-contour"
asterisk = "hex-mid"
paren = "large-contour"
cent = "through-cap"
guillemet = "straight"
number-sign = "slanted"
at = "fourfold"
@ -8107,6 +8125,7 @@ asterisk = "penta-low"
guillemet = "straight"
number-sign = "slanted"
dollar = "open"
cent = "through-cap"
bar = "force-upright"
pilcrow = "low"
micro-sign = "tailed-serifless"
@ -8237,6 +8256,7 @@ tilde = "high"
asterisk = "hex-high"
caret = "high"
brace = "straight"
cent = "through-cap"
guillemet = "straight"
percent = "rings-continuous-slash"
@ -8399,6 +8419,7 @@ nine = "closed-contour"
guillemet = "straight"
number-sign = "slanted"
percent = "rings-continuous-slash"
cent = "through-cap"
pilcrow = "low"
micro-sign = "toothed-serifless"
punctuation-dot = "square"
@ -8776,7 +8797,7 @@ number-sign = "slanted"
ampersand = "upper-open"
at = "fourfold"
dollar = "interrupted"
cent = "bar-interrupted"
cent = "bar-interrupted-cap"
pilcrow = "low"
partial-derivative = "straight-bar"
micro-sign = "tailed-serifless"
@ -8890,6 +8911,7 @@ eight = "two-circles"
nine = "closed-contour"
asterisk = "hex-mid"
underscore = "low"
cent = "through-cap"
guillemet = "straight"
number-sign = "slanted"
percent = "rings-continuous-slash"

View file

@ -69,7 +69,10 @@ export async function gatherCoverageData(covUpright, covItalic, covOblique) {
}
let featureSeries = [];
for (const [id, x] of featureSeriesStore.values()) featureSeries[id] = x;
for (const [id, x] of featureSeriesStore.values()) {
for (let gr of x.groups) gr.sort((a, b) => a.css.localeCompare(b.css));
featureSeries[id] = x;
}
return { unicodeCoverage, featureSeries };
}

View file

@ -33,11 +33,9 @@ async function main(argv) {
nonMergeSets: ligationData.nonMergeSets
}
},
{ spaces: 2 }
null,
2
)
);
await fs.promises.writeFile(
argv.exportPathCov,
JSON.stringify({ version, ...cl }, { spaces: 2 })
);
await fs.promises.writeFile(argv.exportPathCov, JSON.stringify({ version, ...cl }, null, 2));
}