diff --git a/README.md b/README.md
index ab6db7a20..f65a800de 100644
--- a/README.md
+++ b/README.md
@@ -485,6 +485,8 @@ Subsection `variants` is used to configure character variants in the font. Prope
+ `percent = 'rings'`, `cv54 = 2`: Percent `%` with rings and broken bar; Per-mille `‰` and basis point `‱` with rings (default).
+ `percent = 'rings-connected'`, `cv54 = 3`: Percent `%`, Per-mille `‰` and basis point `‱` using rings and continuous bar.
- Styles for `|`:
+ + `bar = 'natural-slope'`, `cv55 = 1`: Bar punctuations (`|`) has a natural slope under italics and oblique (default).
+ + `bar = 'force-upright'`, `cv55 = 2`: Bar punctuations (`|`) is forced upright under italics and oblique.
- Styles for `<=`, `>=`:
+ `lig-ltgteq = 'flat'`, `cv56 = 1`: The lower bar of `<=` and `>=` ligation is flat.
+ `lig-ltgteq = 'slanted'`, `cv56 = 2`: The lower bar of `<=` and `>=` ligation is slanted.
diff --git a/params/variants.toml b/params/variants.toml
index 583520e49..4f351a056 100644
--- a/params/variants.toml
+++ b/params/variants.toml
@@ -1569,15 +1569,13 @@ sampler = '|'
tag = 'cv55'
[prime.bar.variants.natural-slope]
-tag = "VXCY"
-sampler = '|'
+rank = 1
description = 'Bar punctuations (`|`) has a natural slope under italics and oblique'
selectorUpright.bar = "naturalSlope"
selectorItalic.bar = "naturalSlope"
[prime.bar.variants.force-upright]
-tag = "VXCZ"
-sampler = '|'
+rank = 2
description = 'Bar punctuations (`|`) is forced upright under italics and oblique'
selectorUpright.bar = "naturalSlope"
selectorItalic.bar = "forceUpright"
diff --git a/snapshot-src/templates/partial/ligation.ejs b/snapshot-src/templates/partial/ligation.ejs
index e39809c53..7b556ac85 100644
--- a/snapshot-src/templates/partial/ligation.ejs
+++ b/snapshot-src/templates/partial/ligation.ejs
@@ -4,9 +4,9 @@
<%_ for(const group of ligation.sets) { _%>
<%_ const tagSet = new Set(group.ligSets); _%>
- <%_ const featureSettings = group.tag === 'calt' ? `style="font-feature-settings:'${group.tag}' ${group.switch||'on'}"` : `style="font-feature-settings: 'calt' off, '${group.tag}' ${group.switch||'on'}"` _%>
+ <%_ const featureSettings = group.tag === 'calt' ? `style="font-feature-settings:'${group.tag}' ${group.rank}"` : `style="font-feature-settings: 'calt' off, '${group.tag}' ${group.rank}"` _%>
- <%= group.tagName || group.tag %><%= group.switch ? ' ' + group.switch : ''%> |
+ <%= group.tagName || group.tag %><%= group.rank === 1 ? '' : group.rank === 0 ? ' off' : ' ' + rank %> |
<%= group.desc %> |
diff --git a/utility/amend-readme/index.js b/utility/amend-readme/index.js
index b5dc6a05d..918cad43d 100644
--- a/utility/amend-readme/index.js
+++ b/utility/amend-readme/index.js
@@ -52,13 +52,13 @@ async function processCv() {
const defaults = figureOutDefaults(variantsData, gr);
for (const config of gr.variants) {
if (!config.rank) continue;
- let selectorText = `\`${gr.key} = '${config.selector}'\``;
+ let selectorText = `\`${gr.key} = '${config.key}'\``;
if (gr.tag && config.rank) {
selectorText += `, \`${gr.tag} = ${config.rank}\``;
}
md.log(
` + ${selectorText}: ` +
- `${config.description}${formatDefaults(config.selector, defaults)}.`
+ `${config.description}${formatDefaults(config.key, defaults)}.`
);
}
}
@@ -120,32 +120,32 @@ function figureOutDefaults(variantsData, gr) {
desc: "Sans Upright",
mask: 1,
result: null,
- selector: [...variantsData.defaults.sansUpright.composition]
+ keys: [...variantsData.defaults.sansUpright.composition]
},
{
desc: "Sans Italic",
mask: 2,
result: null,
- selector: [...variantsData.defaults.sansItalic.composition]
+ keys: [...variantsData.defaults.sansItalic.composition]
},
{
desc: "Slab Upright",
mask: 4,
result: null,
- selector: [...variantsData.defaults.slabUpright.composition]
+ keys: [...variantsData.defaults.slabUpright.composition]
},
{
desc: "Slab Italic",
mask: 8,
result: null,
- selector: [...variantsData.defaults.slabItalic.composition]
+ keys: [...variantsData.defaults.slabItalic.composition]
}
];
for (const variant of gr.variants) {
for (const dc of defaultConfigs)
- for (const selector of dc.selector)
- if (variant.fullSelector === selector) dc.result = variant.selector;
+ for (const selector of dc.keys)
+ if (variant.fullKey === selector) dc.result = variant.key;
}
return defaultConfigs;
}
diff --git a/utility/export-data/ligation-data.js b/utility/export-data/ligation-data.js
index 4c79f2bd2..77601d1b7 100644
--- a/utility/export-data/ligation-data.js
+++ b/utility/export-data/ligation-data.js
@@ -245,7 +245,7 @@ module.exports = async function getLigationData() {
function buildLigationSet(ligData, getKey) {
const ligationSets = new Map([
- ["*off", { tag: "calt", switch: "off", desc: "Ligation Off", brief: "Off", ligSets: [] }]
+ ["*off", { tag: "calt", rank: 0, desc: "Ligation Off", brief: "Off", ligSets: [] }]
]);
for (const sel in ligData.composite) {
const comp = ligData.composite[sel];
@@ -259,6 +259,7 @@ function buildLigationSet(ligData, getKey) {
}
item = {
tag: comp.tag,
+ rank: 1,
ligSets: [...ligSets],
tagName: comp.tag,
desc: comp.desc,
diff --git a/utility/export-data/variants-data.js b/utility/export-data/variants-data.js
index 3e7bf8941..b2918b4b8 100644
--- a/utility/export-data/variants-data.js
+++ b/utility/export-data/variants-data.js
@@ -45,8 +45,8 @@ function getCvData(parsed) {
}
for (const variant of prime.variants.values()) {
gr.variants.push({
- selector: variant.key,
- fullSelector: getSelectorKey(prime, variant),
+ key: variant.key,
+ fullKey: getSelectorKey(prime, variant),
rank: variant.rank,
description: variant.description
});