Add raised cap-height cent sign (¢
) variants to VSAM
(#2044).
This commit is contained in:
parent
6f59a5250c
commit
c7440bb5a2
6 changed files with 103 additions and 50 deletions
|
@ -2,4 +2,5 @@
|
||||||
* Fix `ss02`, `ss04`, `ss06`, `ss13`, `ss17`'s application on `i` and `j` (#2033).
|
* Fix `ss02`, `ss04`, `ss06`, `ss13`, `ss17`'s application on `i` and `j` (#2033).
|
||||||
* Add tailed lower lambda (#2036).
|
* Add tailed lower lambda (#2036).
|
||||||
* Add `arrow-lr` ligation group for C-like's spaceship operators (#2041).
|
* 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.
|
* Fix `cv02`, `cv04`, `cv05`, `cv06`, `cv11`, `cv12`, `cv15`, `cv17`, `cv18`, `cv25`, `cv28`, `cv43`, `cv70`, `cv71`, `cv81`, and `cv82` for `ss17` under slab.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
$$include '../../../meta/macros.ptl'
|
$$include '../../../meta/macros.ptl'
|
||||||
|
|
||||||
import [mix linreg clamp fallback] from"../../../support/utils.mjs"
|
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
|
glyph-module
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ glyph-block Letter-Latin-C : begin
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors ExtendBelowBaseAnchors
|
glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors ExtendBelowBaseAnchors
|
||||||
glyph-block-import Mark-Shared-Metrics : markStroke
|
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 : SerifFrame CurlyTail DToothlessRise
|
||||||
glyph-block-import Letter-Shared-Shapes : SerifedArcStart SerifedArcEnd InwardSlabArcStart
|
glyph-block-import Letter-Shared-Shapes : SerifedArcStart SerifedArcEnd InwardSlabArcStart
|
||||||
glyph-block-import Letter-Shared-Shapes : ArcStartSerif ArcEndSerif
|
glyph-block-import Letter-Shared-Shapes : ArcStartSerif ArcEndSerif
|
||||||
|
@ -180,12 +181,27 @@ glyph-block Letter-Latin-C : begin
|
||||||
|
|
||||||
create-glyph "c.\(suffix)" : glyph-proc
|
create-glyph "c.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.e
|
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
|
set-base-anchor 'cvDecompose' 0 0
|
||||||
local lf : CLetterForm [DivFrame 1] sty styBot XH 0
|
local lf : CLetterForm [DivFrame 1] sty styBot XH 0
|
||||||
ada -- SmallArchDepthA
|
ada -- SmallArchDepthA
|
||||||
adb -- SmallArchDepthB
|
adb -- SmallArchDepthB
|
||||||
include : lf.full
|
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
|
create-glyph "revSmallC.\(suffix)" : glyph-proc
|
||||||
include : MarkSet.e
|
include : MarkSet.e
|
||||||
local lf : CLetterForm [DivFrame 1] sty styBot XH 0
|
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/sansSerif' 'c' MathSansSerif
|
||||||
link-reduced-variant 'c/turnDescBase' 'c'
|
link-reduced-variant 'c/turnDescBase' 'c'
|
||||||
select-variant 'revSmallC' 0x2184 (follow -- '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 'cyrl/es' 0x441 'c'
|
||||||
alias 'grek/lunateSmallSigma' 0x3F2 'c.serifless'
|
alias 'grek/lunateSmallSigma' 0x3F2 'c.serifless'
|
||||||
select-variant 'turncSideways' 0x1D12 (follow -- 'c')
|
select-variant 'turncSideways' 0x1D12 (follow -- 'c')
|
||||||
|
@ -333,43 +351,54 @@ glyph-block Letter-Latin-C : begin
|
||||||
LetterBarOverlay.l SB (CAP * 0.6)
|
LetterBarOverlay.l SB (CAP * 0.6)
|
||||||
derive-composites 'currency/euroSign' 0x20AC 'C' 'currency/euroSign/overlay'
|
derive-composites 'currency/euroSign' 0x20AC 'C' 'currency/euroSign/overlay'
|
||||||
|
|
||||||
create-glyph 'currency/centSignBar.open' : glyph-proc
|
define CentBarConfig : object
|
||||||
set-width 0
|
open { (Descender / 2) (XH - Descender / 2) 0 "std" }
|
||||||
set-mark-anchor 'cvDecompose' 0 0
|
through { (Descender / 2) (XH - Descender / 2) 1 "std" }
|
||||||
include : dispiro
|
interrupted { (Descender / 2) (XH - Descender / 2) 2 "std" }
|
||||||
widths.center [AdviceStroke 3]
|
openCap { 0 CAP 0 "cap" }
|
||||||
flat Middle (XH - HalfStroke)
|
throughCap { 0 CAP 1 "cap" }
|
||||||
curl Middle (XH - Descender / 2) [heading Upward]
|
interruptedCap { 0 CAP 2 "cap" }
|
||||||
include : dispiro
|
|
||||||
widths.center [AdviceStroke 3]
|
|
||||||
flat Middle (Descender / 2) [heading Upward]
|
|
||||||
curl Middle HalfStroke
|
|
||||||
|
|
||||||
create-glyph 'currency/centSignBar.through' : glyph-proc
|
foreach { suffix { bot top fillType selector } } [Object.entries CentBarConfig] : do
|
||||||
include [refer-glyph 'currency/centSignBar.open'] AS_BASE ALSO_METRICS
|
create-glyph "cent/bar.\(suffix)" : glyph-proc
|
||||||
|
define w : AdviceStroke 3
|
||||||
|
define fine : AdviceStroke [StrokeWidthBlend 3 5.5]
|
||||||
|
|
||||||
define fine : AdviceStroke [StrokeWidthBlend 3 5]
|
local yMid : mix bot top 0.5
|
||||||
include : VBar.m Middle (XH - HalfStroke) (0 + HalfStroke) fine
|
local fillBottom : yMid - XH / 2
|
||||||
|
local fillTop : yMid + XH / 2
|
||||||
|
|
||||||
create-glyph 'currency/centSignBar.barInterrupted' : glyph-proc
|
# Draw the outside subbars
|
||||||
include [refer-glyph 'currency/centSignBar.open'] AS_BASE ALSO_METRICS
|
include : dispiro
|
||||||
|
flat Middle fillTop [widths.center w]
|
||||||
|
curl Middle top [heading Upward]
|
||||||
|
include : dispiro
|
||||||
|
flat Middle fillBottom [widths.center w]
|
||||||
|
curl Middle bot [heading Downward]
|
||||||
|
|
||||||
define cofine : AdviceStroke 4
|
include : match fillType
|
||||||
define fine : AdviceStroke [StrokeWidthBlend 3 5]
|
[Just 1] : VBar.m Middle fillBottom fillTop fine
|
||||||
define gap : Math.max (XH / 8) [AdviceStroke2 6 6 XH]
|
[Just 2] : begin
|
||||||
include : dispiro
|
define cofine : AdviceStroke 4
|
||||||
flat Middle (XH - HalfStroke) [widths.center.heading cofine Downward]
|
define gap : Math.max (XH / 8) [AdviceStroke2 6 6 XH]
|
||||||
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
|
__ : no-shape
|
||||||
include [refer-glyph 'c'] AS_BASE ALSO_METRICS
|
|
||||||
include [refer-glyph 'currency/centSignBar']
|
DependentSelector.set currentGlyph selector
|
||||||
CvDecompose.set currentGlyph { 'c' 'currency/centSignBar' }
|
|
||||||
|
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' 0x186 'C' Middle (CAP / 2)
|
||||||
turned 'turnc' 0x254 'c' Middle (XH / 2)
|
turned 'turnc' 0x254 'c' Middle (XH / 2)
|
||||||
|
|
|
@ -248,7 +248,7 @@ glyph-block Letter-Latin-S : begin
|
||||||
include : SAutoSlabStart doTS XH sw Hook
|
include : SAutoSlabStart doTS XH sw Hook
|
||||||
include : SAutoSlabEnd doBS 0 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 top : CAP * 0.95
|
||||||
define bot : CAP * 0.05
|
define bot : CAP * 0.05
|
||||||
local sw : AdviceStroke2 2 3 (top - bot)
|
local sw : AdviceStroke2 2 3 (top - bot)
|
||||||
|
@ -258,7 +258,7 @@ glyph-block Letter-Latin-S : begin
|
||||||
include : SAutoSlabStart doTS top sw Hook
|
include : SAutoSlabStart doTS top sw Hook
|
||||||
include : SAutoSlabEnd doBS bot 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 top : CAP * 0.88
|
||||||
define bot : CAP * 0.12
|
define bot : CAP * 0.12
|
||||||
local sw : AdviceStroke2 2 3 (top - bot)
|
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' 0xA644 'revS'
|
||||||
alias 'cyrl/dzeRev' 0xA645 'revs'
|
alias 'cyrl/dzeRev' 0xA645 'revs'
|
||||||
|
|
||||||
select-variant 'DollarKernelStd' (follow -- 'S')
|
select-variant 'S/dollarKernelStd' (follow -- 'S')
|
||||||
select-variant 'DollarKernelCap' (follow -- 'S')
|
select-variant 'S/dollarKernelCap' (follow -- 'S')
|
||||||
|
|
||||||
select-variant 'SSwash' 0x2C7E
|
select-variant 'SSwash' 0x2C7E
|
||||||
select-variant 'sSwash' 0x23F
|
select-variant 'sSwash' 0x23F
|
||||||
|
@ -500,5 +500,5 @@ glyph-block Letter-Latin-S : begin
|
||||||
select-variant 'dollar/bar' (follow -- 'dollar')
|
select-variant 'dollar/bar' (follow -- 'dollar')
|
||||||
|
|
||||||
CreateDependentComposite 'dollar' '$' "dollar/bar" : object
|
CreateDependentComposite 'dollar' '$' "dollar/bar" : object
|
||||||
'std' 'DollarKernelStd'
|
'std' 'S/dollarKernelStd'
|
||||||
'cap' 'DollarKernelCap'
|
'cap' 'S/dollarKernelCap'
|
||||||
|
|
|
@ -6667,17 +6667,17 @@ selector.dollar = "interrupted"
|
||||||
|
|
||||||
[prime.dollar.variants.open-cap]
|
[prime.dollar.variants.open-cap]
|
||||||
rank = 4
|
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"
|
selector.dollar = "openCap"
|
||||||
|
|
||||||
[prime.dollar.variants.through-cap]
|
[prime.dollar.variants.through-cap]
|
||||||
rank = 5
|
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"
|
selector.dollar = "throughCap"
|
||||||
|
|
||||||
[prime.dollar.variants.interrupted-cap]
|
[prime.dollar.variants.interrupted-cap]
|
||||||
rank = 6
|
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"
|
selector.dollar = "interruptedCap"
|
||||||
|
|
||||||
|
|
||||||
|
@ -6826,7 +6826,22 @@ selector.cent = "through"
|
||||||
[prime.cent.variants.bar-interrupted]
|
[prime.cent.variants.bar-interrupted]
|
||||||
rank = 3
|
rank = 3
|
||||||
description = "Cent sign (`¢`) with vertical bar breaks at center"
|
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"
|
nine = "closed-contour"
|
||||||
asterisk = "hex-low"
|
asterisk = "hex-low"
|
||||||
brace = "straight"
|
brace = "straight"
|
||||||
|
cent = "through-cap"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
at = "fourfold"
|
at = "fourfold"
|
||||||
percent = "rings-continuous-slash"
|
percent = "rings-continuous-slash"
|
||||||
|
@ -7546,6 +7562,7 @@ nine = "closed-contour"
|
||||||
asterisk = "hex-mid"
|
asterisk = "hex-mid"
|
||||||
underscore = "low"
|
underscore = "low"
|
||||||
brace = "straight"
|
brace = "straight"
|
||||||
|
cent = "through-cap"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
number-sign = "slanted"
|
number-sign = "slanted"
|
||||||
at = "fourfold"
|
at = "fourfold"
|
||||||
|
@ -7813,7 +7830,7 @@ brace = "straight"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
number-sign = "slanted"
|
number-sign = "slanted"
|
||||||
at = "fourfold"
|
at = "fourfold"
|
||||||
cent = "open"
|
cent = "open-cap"
|
||||||
percent = "rings-continuous-slash"
|
percent = "rings-continuous-slash"
|
||||||
bar = "force-upright"
|
bar = "force-upright"
|
||||||
pilcrow = "low"
|
pilcrow = "low"
|
||||||
|
@ -7891,6 +7908,7 @@ seven = "curly-serifless"
|
||||||
nine = "closed-contour"
|
nine = "closed-contour"
|
||||||
asterisk = "hex-mid"
|
asterisk = "hex-mid"
|
||||||
paren = "large-contour"
|
paren = "large-contour"
|
||||||
|
cent = "through-cap"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
number-sign = "slanted"
|
number-sign = "slanted"
|
||||||
at = "fourfold"
|
at = "fourfold"
|
||||||
|
@ -8107,6 +8125,7 @@ asterisk = "penta-low"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
number-sign = "slanted"
|
number-sign = "slanted"
|
||||||
dollar = "open"
|
dollar = "open"
|
||||||
|
cent = "through-cap"
|
||||||
bar = "force-upright"
|
bar = "force-upright"
|
||||||
pilcrow = "low"
|
pilcrow = "low"
|
||||||
micro-sign = "tailed-serifless"
|
micro-sign = "tailed-serifless"
|
||||||
|
@ -8237,6 +8256,7 @@ tilde = "high"
|
||||||
asterisk = "hex-high"
|
asterisk = "hex-high"
|
||||||
caret = "high"
|
caret = "high"
|
||||||
brace = "straight"
|
brace = "straight"
|
||||||
|
cent = "through-cap"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
percent = "rings-continuous-slash"
|
percent = "rings-continuous-slash"
|
||||||
|
|
||||||
|
@ -8399,6 +8419,7 @@ nine = "closed-contour"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
number-sign = "slanted"
|
number-sign = "slanted"
|
||||||
percent = "rings-continuous-slash"
|
percent = "rings-continuous-slash"
|
||||||
|
cent = "through-cap"
|
||||||
pilcrow = "low"
|
pilcrow = "low"
|
||||||
micro-sign = "toothed-serifless"
|
micro-sign = "toothed-serifless"
|
||||||
punctuation-dot = "square"
|
punctuation-dot = "square"
|
||||||
|
@ -8776,7 +8797,7 @@ number-sign = "slanted"
|
||||||
ampersand = "upper-open"
|
ampersand = "upper-open"
|
||||||
at = "fourfold"
|
at = "fourfold"
|
||||||
dollar = "interrupted"
|
dollar = "interrupted"
|
||||||
cent = "bar-interrupted"
|
cent = "bar-interrupted-cap"
|
||||||
pilcrow = "low"
|
pilcrow = "low"
|
||||||
partial-derivative = "straight-bar"
|
partial-derivative = "straight-bar"
|
||||||
micro-sign = "tailed-serifless"
|
micro-sign = "tailed-serifless"
|
||||||
|
@ -8890,6 +8911,7 @@ eight = "two-circles"
|
||||||
nine = "closed-contour"
|
nine = "closed-contour"
|
||||||
asterisk = "hex-mid"
|
asterisk = "hex-mid"
|
||||||
underscore = "low"
|
underscore = "low"
|
||||||
|
cent = "through-cap"
|
||||||
guillemet = "straight"
|
guillemet = "straight"
|
||||||
number-sign = "slanted"
|
number-sign = "slanted"
|
||||||
percent = "rings-continuous-slash"
|
percent = "rings-continuous-slash"
|
||||||
|
|
|
@ -69,7 +69,10 @@ export async function gatherCoverageData(covUpright, covItalic, covOblique) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let featureSeries = [];
|
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 };
|
return { unicodeCoverage, featureSeries };
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,11 +33,9 @@ async function main(argv) {
|
||||||
nonMergeSets: ligationData.nonMergeSets
|
nonMergeSets: ligationData.nonMergeSets
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ spaces: 2 }
|
null,
|
||||||
|
2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
await fs.promises.writeFile(
|
await fs.promises.writeFile(argv.exportPathCov, JSON.stringify({ version, ...cl }, null, 2));
|
||||||
argv.exportPathCov,
|
|
||||||
JSON.stringify({ version, ...cl }, { spaces: 2 })
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue