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