Cleanup code for orthographic italics. Now variant selector could influence the upright and italic counterpart individually -- though currently they aren't.

This commit is contained in:
be5invis 2020-11-10 20:52:55 -08:00
parent 69b3c2aca9
commit 040c1ff08c
11 changed files with 161 additions and 292 deletions

View file

@ -12,6 +12,9 @@ glyph-block Autobuild-Transformed-Shared : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-export wrapName
define [wrapName groupID baseName] "\(groupID){\(baseName)}"
define [suggestName _name] : begin
local name _name
if [query-glyph name] : begin
@ -28,20 +31,21 @@ glyph-block Autobuild-Transformed-Shared : begin
return amended
glyph-block-export extendRelatedGlyphs
define [extendRelatedGlyphs records suffix] : begin
define [extendRelatedGlyphs groupID records] : begin
local relatedRecords {}
local relSets {}
local targetNameMap {.}
foreach [record : items-of records] : begin
local srcName record.1
suggestMappedName targetNameMap srcName (srcName + '+' + suffix)
local dstName : srcName + '+' + suffix
local dstName : wrapName groupID srcName
suggestMappedName targetNameMap srcName dstName
local tree : getGrTree srcName {DotlessOrNot AnyCv} query-glyph
foreach [{gr origSrcName relSrcName} : items-of tree] : if [query-glyph relSrcName] : begin
local origDstName : suggestMappedName targetNameMap origSrcName (origSrcName + '+' + suffix)
local relDstName : suggestMappedName targetNameMap relSrcName (relSrcName + '+' + suffix)
local origDstName : suggestMappedName targetNameMap origSrcName [wrapName groupID origSrcName]
local relDstName : suggestMappedName targetNameMap relSrcName [wrapName groupID relSrcName]
local relatedRecord : record.slice 0
set relatedRecord.0 null
@ -69,7 +73,7 @@ glyph-block Autobuild-Transformed : begin
glyph-block-import Autobuild-Transformed-Shared : extendRelatedGlyphs link-relations
define [createSuperscripts _records] : begin
local {records relSets targetNameMap} : extendRelatedGlyphs _records 'sup'
local {records relSets targetNameMap} : extendRelatedGlyphs 'sup' _records
local pendingGlyphs : records.map : [record] => record.1
local miniatureFont : Miniature
glyphs -- pendingGlyphs
@ -93,7 +97,7 @@ glyph-block Autobuild-Transformed : begin
link-relations relSets
define [createSubscripts _records] : begin
local {records relSets targetNameMap} : extendRelatedGlyphs _records 'sub'
local {records relSets targetNameMap} : extendRelatedGlyphs 'sub' _records
local pendingGlyphs : records.map : [record] => record.1
local miniatureFont : Miniature
glyphs -- pendingGlyphs
@ -115,7 +119,7 @@ glyph-block Autobuild-Transformed : begin
link-relations relSets
define [createSMCPs _records] : begin
local {records relSets targetNameMap} : extendRelatedGlyphs _records 'smcp'
local {records relSets targetNameMap} : extendRelatedGlyphs 'smcp' _records
local pendingGlyphs : records.map : [record] => record.1
local forkedParams : Object.create para
set forkedParams.cap0 para.cap
@ -133,7 +137,7 @@ glyph-block Autobuild-Transformed : begin
link-relations relSets
define [createMedievalCombs defaultLow defaultHigh _records] : begin
local { records relSets targetNameMap } : extendRelatedGlyphs _records 'medievalAbove'
local { records relSets targetNameMap } : extendRelatedGlyphs 'medievalAbove' _records
local pendingGlyphs : records.map : [record] => record.1
local miniatureFont : Miniature
glyphs -- pendingGlyphs
@ -166,7 +170,7 @@ glyph-block Autobuild-Transformed : begin
link-relations relSets
define [createMedievalBelowCombs _records] : begin
local { records relSets targetNameMap } : extendRelatedGlyphs _records 'medievalBelow'
local { records relSets targetNameMap } : extendRelatedGlyphs 'medievalBelow' _records
local pendingGlyphs : records.map : [record] => record.1
local miniatureFont : Miniature
glyphs -- pendingGlyphs
@ -189,22 +193,6 @@ glyph-block Autobuild-Transformed : begin
link-relations relSets
define [createObliqueBlackboardBold _records] : begin
local { records relSets targetNameMap } : extendRelatedGlyphs _records 'obliqueBlackBoard'
local pendingGlyphs : records.map : [record] => record.1
local miniatureFont : Miniature
glyphs -- pendingGlyphs
slopeAngle -- para.derivedSlopeAngle
crowd -- 2
scale -- 1
mono -- true
sbscale -- 1
foreach {unicode glyphid} [items-of records] : if [not : query-glyph targetNameMap.(glyphid)]
create-glyph targetNameMap.(glyphid) unicode : glyph-proc
include [miniatureFont.queryByName glyphid] AS_BASE ALSO_METRICS
link-relations relSets
if [not recursive] : createSuperscripts : list
list 0x2070 'zero.lnum'
list 0x00B9 'one.lnum'
@ -482,21 +470,14 @@ glyph-block Autobuild-Transformed : begin
list 0x1AC0 'turnw'
list 0x1DCA 'r'
if [not recursive] : createObliqueBlackboardBold : list
list 0x2145 'mathbb/D'
list 0x2146 'mathbb/d'
list 0x2147 'mathbb/e'
list 0x2148 'mathbb/i'
list 0x2149 'mathbb/j'
glyph-block Autobuild-Transformed-Mathematical : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Recursive-Build : Fork Miniature
glyph-block-import Autobuild-Transformed-Shared : extendRelatedGlyphs link-relations
glyph-block-import Autobuild-Transformed-Shared : extendRelatedGlyphs link-relations wrapName
define [createMathDerivedSeriesImpl groupName tfm _records] : begin
local { records relSets targetNameMap } : extendRelatedGlyphs _records groupName
local { records relSets targetNameMap } : extendRelatedGlyphs groupName _records
local pendingGlyphs : records.map : [record] => record.1
local forked : Fork pendingGlyphs [para.reinit tfm]
foreach {unicode glyphid} [items-of records] : if [not : query-glyph targetNameMap.(glyphid)]
@ -525,6 +506,7 @@ glyph-block Autobuild-Transformed-Mathematical : begin
define LowerLatin : Array.from 'abcdefghijklmnopqrstuvwxyz'
define UpperGreek : Array.from 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡϴΣΤΥΦΧΨΩ∇'
define LowerGreek : Array.from 'αβγδεζηθικλμνξοπρςστυφχψω∂ϵϑϰϕϱϖ' # Some are missing though
define ObliqueBlackboardBolds : Array.from '𝔻𝕕𝕖𝕚𝕛'
define [CreateMathDerivatives groupName tfm base letters overrides] : begin
if recursive : return nothing
@ -545,10 +527,10 @@ glyph-block Autobuild-Transformed-Mathematical : begin
foreach j [range 0 letters.length] : begin
local letter letters.(j)
local source : glyphStore.queryNameOfUnicode : letter.codePointAt 0
if (source && altGroupName) : set source "\(source)+\(altGroupName)"
if (source && altGroupName) : set source : wrapName altGroupName source
local uDst : base + j
if [overrideMap.has letter] : set uDst [overrideMap.get letter]
if source : alias "\(source)+\(groupName)" uDst source
if source : alias [wrapName groupName source] uDst source
define [CreateMathAliasable cond groupName altGroupName tfm base letters overrides] : begin
if cond
@ -568,6 +550,7 @@ glyph-block Autobuild-Transformed-Mathematical : begin
CreateMathDerivatives 'mathit' tfItalic 0x1D6E2 UpperGreek
CreateMathDerivatives 'mathit' tfItalic 0x1D6FC LowerGreek
# Math Bold Italic
CreateMathDerivatives 'mathbi' tfBoldItalic 0x1D468 UpperLatin
CreateMathDerivatives 'mathbi' tfBoldItalic 0x1D482 LowerLatin
@ -599,6 +582,9 @@ glyph-block Autobuild-Transformed-Mathematical : begin
CreateMathAliasable doTypewriter 'mathtt' null tfTypeWriter 0x1D68A LowerLatin
CreateMathAliasable doTypewriter 'mathtt' null tfTypeWriter 0x1D7F6 Digits
# Italic blackboard bold
CreateMathDerivatives 'mathit' tfItalic 0x2145 ObliqueBlackboardBolds
glyph-block Autobuild-Rhotic : begin
glyph-block-import Marks : markFine
glyph-block-import CommonShapes

View file

@ -12,34 +12,29 @@ glyph-module
glyph-block Common-Derivatives : begin
glyph-block-import CommonShapes : FlipAround
define [ApplyCv g follow para name transform] : begin
define [ApplyCv g follow para name] : begin
foreach { kPrime prime } para.variants.primes : foreach h [prime.variants.values] : begin
local suffix : h.resolveFor para follow
if (suffix && transform && transform.(suffix)) : set suffix transform.(suffix)
if suffix : begin
local dstName : [fallback name follow] + '.' + suffix
local dst : glyphStore.queryByName dstName
if dst : g.dependsOn dst
if (h.tag && h.rank) : [Cv h.tag h.rank].set g dstName
define [select-variant] : params [name unicode [to-name name] transform [follow name]] : begin
if [not : glyph-is-needed name] : return nothing
define [select-variant] : params [name unicode [shapeFrom name] [follow name]] : begin
if [not : glyph-is-needed shapeFrom] : return nothing
local variant para.variantSelector.(follow)
if [not variant] : begin
throw : new Error "Variant for \(name) is not assigned."
if [not variant] : throw : new Error "Variant for \(name) is not assigned."
if (transform && transform.(variant)) : set variant transform.(variant)
create-glyph name unicode : glyph-proc
include [refer-glyph (shapeFrom + '.' + variant)] AS_BASE ALSO_METRICS
ApplyCv currentGlyph follow para shapeFrom
set this.autoRefPriority [query-glyph (shapeFrom + '.' + variant)].autoRefPriority
create-glyph [fallback to-name name] unicode : glyph-proc
include [refer-glyph (name + '.' + variant)] AS_BASE ALSO_METRICS
ApplyCv currentGlyph follow para name transform
set this.autoRefPriority [query-glyph (name + '.' + variant)].autoRefPriority
define [italic-variant name unicode] : begin
create-glyph name unicode : composite-proc : if para.isItalic
refer-glyph (name + '.italic')
refer-glyph (name + '.upright')
define [orthographic-italic name unicode] : if para.isItalic
alias name unicode (name + '.italic')
alias name unicode (name + '.upright')
define [glyph-is-needed name] : [not pickHash] || pickHash.(name)
@ -108,7 +103,7 @@ glyph-block Common-Derivatives : begin
if [not newid] : throw : new Error "Target ID not specified"
return : VCombine newid unicode id id spacing
glyph-block-export select-variant italic-variant refer-glyph query-glyph with-related-glyphs
glyph-block-export select-variant orthographic-italic refer-glyph query-glyph with-related-glyphs
glyph-block-export alias turned HDual HCombine VDual VCombine glyph-is-needed
glyph-block Recursive-Build : begin

View file

@ -162,17 +162,9 @@ glyph-block Letter-Cyrillic-I : begin
include : MarkSet.e
include : CyrIShape XH
alias 'cyrl/i.italicToothed' null 'u.toothed'
alias 'cyrl/i.italicMotionSerifed' null 'u.motionSerifed'
alias 'cyrl/i.italicMotionSerifedTailed' null 'u.motionSerifedTailed'
alias 'cyrl/i.italicTailed' null 'u.tailed'
select-variant 'cyrl/i' 0x438
alias 'cyrl/i.BGR.toothed' null 'u.toothed'
alias 'cyrl/i.BGR.motionSerifed' null 'u.motionSerifed'
alias 'cyrl/i.BGR.motionSerifedTailed' null 'u.motionSerifedTailed'
alias 'cyrl/i.BGR.tailed' null 'u.tailed'
select-variant 'cyrl/i.BGR'
select-variant 'cyrl/i.italic' (shapeFrom -- 'u')
alias 'cyrl/i.BGR' null 'cyrl/i.italic'
orthographic-italic 'cyrl/i' 0x438
with-related-glyphs 'cyrl/i.BGR' 'cyrl/ibreve.BGR' null : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
@ -204,20 +196,19 @@ glyph-block Letter-Cyrillic-Tse : begin
include : MarkSet.e
include : CyrTseShape XH
create-glyph 'cyrl/tse.italicToothed' : glyph-proc
create-glyph 'cyrl/tse.italic.toothed' : glyph-proc
include [refer-glyph "u.toothed"] AS_BASE
eject-contour 'serifRB'
include : CyrDescender RightSB (shift -- 0.05)
create-aliased-glyph 'cyrl/tse.BGR.toothed'
create-glyph 'cyrl/tse.italicMotionSerifed' : glyph-proc
create-glyph 'cyrl/tse.italic.motionSerifed' : glyph-proc
include [refer-glyph "u.motionSerifed"] AS_BASE
eject-contour 'serifRB'
include : CyrDescender RightSB (shift -- 0.05)
create-aliased-glyph 'cyrl/tse.BGR.motionSerifed'
select-variant 'cyrl/tse' 0x446
select-variant 'cyrl/tse.BGR'
select-variant 'cyrl/tse.italic'
alias 'cyrl/tse.BGR' null 'cyrl/tse.italic'
orthographic-italic 'cyrl/tse' 0x446
glyph-block Letter-Cyrillic-Dzhe : begin
glyph-block-import CommonShapes
@ -241,23 +232,24 @@ glyph-block Letter-Cyrillic-Dzhe : begin
include : MarkSet.p
include : CyrDzheShape XH
create-glyph 'cyrl/dzhe.italicToothed' : glyph-proc
create-glyph 'cyrl/dzhe.italic.toothed' : glyph-proc
include [refer-glyph 'u.toothed'] AS_BASE ALSO_METRICS
include [refer-glyph 'descenderBarBelow']
create-glyph 'cyrl/dzhe.italicTailed' : glyph-proc
create-glyph 'cyrl/dzhe.italic.tailed' : glyph-proc
include [refer-glyph 'u.tailed'] AS_BASE ALSO_METRICS
include [refer-glyph 'descenderBarBelow']
create-glyph 'cyrl/dzhe.italicMotionSerifed' : glyph-proc
create-glyph 'cyrl/dzhe.italic.motionSerifed' : glyph-proc
include [refer-glyph 'u.motionSerifed'] AS_BASE ALSO_METRICS
include [refer-glyph 'descenderBarBelow']
create-glyph 'cyrl/dzhe.italicMotionSerifedTailed' : glyph-proc
create-glyph 'cyrl/dzhe.italic.motionSerifedTailed' : glyph-proc
include [refer-glyph 'u.motionSerifedTailed'] AS_BASE ALSO_METRICS
include [refer-glyph 'descenderBarBelow']
select-variant 'cyrl/dzhe' 0x45F
select-variant 'cyrl/dzhe.italic'
orthographic-italic 'cyrl/dzhe' 0x45F
glyph-block Letter-Cyrillic-De : begin
@ -311,7 +303,7 @@ glyph-block Letter-Cyrillic-De : begin
quadcontrols 0 0.8
g4 (SB + Stroke * 1.1) CAP
italic-variant 'cyrl/de' 0x434
orthographic-italic 'cyrl/de' 0x434
alias 'cyrl/de.BGR' null 'g.singleStorey'
@ -592,8 +584,8 @@ glyph-block Letter-Cyrillic-Sha : begin
include : df.markSet.e
include : CyrShaShape XH df
turned 'cyrl/sha.italicToothed' null 'm.normal' [DivFrame para.diversityM 3].middle (XH / 2)
create-glyph 'cyrl/sha.italicTailed' : glyph-proc
turned 'cyrl/sha.italic.toothed' null 'm.normal' [DivFrame para.diversityM 3].middle (XH / 2)
create-glyph 'cyrl/sha.italic.tailed' : glyph-proc
local df : DivFrame para.diversityM 3
include [refer-glyph 'm.normal'] AS_BASE
eject-contour 'barL'
@ -601,8 +593,8 @@ glyph-block Letter-Cyrillic-Sha : begin
include : FlipAround df.middle (XH / 2)
include : RightwardTailedBar df.rightSB 0 XH (sw -- df.mvs)
turned 'cyrl/sha.italicMotionSerifed' null 'm.motionSerifed' [DivFrame para.diversityM 3].middle (XH / 2)
create-glyph 'cyrl/sha.italicMotionSerifedTailed' : glyph-proc
turned 'cyrl/sha.italic.motionSerifed' null 'm.motionSerifed' [DivFrame para.diversityM 3].middle (XH / 2)
create-glyph 'cyrl/sha.italic.motionSerifedTailed' : glyph-proc
local df : DivFrame para.diversityM 3
include [refer-glyph 'm.motionSerifed'] AS_BASE
eject-contour 'barL'
@ -610,13 +602,9 @@ glyph-block Letter-Cyrillic-Sha : begin
include : FlipAround df.middle (XH / 2)
include : RightwardTailedBar df.rightSB 0 XH (sw -- df.mvs)
select-variant 'cyrl/sha' 0x448
alias 'cyrl/sha.BGR.toothed' null 'cyrl/sha.italicToothed'
alias 'cyrl/sha.BGR.tailed' null 'cyrl/sha.italicTailed'
alias 'cyrl/sha.BGR.motionSerifed' null 'cyrl/sha.italicMotionSerifed'
alias 'cyrl/sha.BGR.motionSerifedTailed' null 'cyrl/sha.italicMotionSerifedTailed'
select-variant 'cyrl/sha.BGR'
select-variant 'cyrl/sha.italic'
alias 'cyrl/sha.BGR' null 'cyrl/sha.italic'
orthographic-italic 'cyrl/sha' 0x448
define [CyrShchaShape top df] : glyph-proc
include : CyrShaShape top df
@ -638,19 +626,19 @@ glyph-block Letter-Cyrillic-Sha : begin
create-glyph 'cyrl/shcha.italic' : glyph-proc
local df : DivFrame para.diversityM 3
set-width df.width
include [refer-glyph 'cyrl/sha.italicToothed'] AS_BASE
include [refer-glyph 'cyrl/sha.italic.toothed'] AS_BASE
include : CyrDescender df.rightSB (shift -- 0.05)
italic-variant 'cyrl/shcha' 0x449
orthographic-italic 'cyrl/shcha' 0x449
alias 'cyrl/shcha.BGR' null 'cyrl/shcha.italic'
create-glyph 'cyrl/te.SRB' : glyph-proc
local df : DivFrame para.diversityM 3
set-width df.width
include [refer-glyph 'cyrl/sha.italicToothed'] AS_BASE
include [refer-glyph 'cyrl/sha.italic.toothed'] AS_BASE
include : refer-glyph "macronAbove"
select-variant 'cyrl/te' 0x442
orthographic-italic 'cyrl/te' 0x442
glyph-block Letter-Cyrillic-Che : begin
glyph-block-import CommonShapes

View file

@ -92,7 +92,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin
include [refer-glyph 'dotlessi'] AS_BASE
include : refer-glyph "macronAbove"
italic-variant 'cyrl/ghe' 0x433
orthographic-italic 'cyrl/ghe' 0x433
define [CyrGeShape top] : glyph-proc
include : GammaShape top
@ -119,8 +119,8 @@ glyph-block Letter-Greek-Upper-Gamma: begin
include [refer-glyph 'cyrl/ghe.italic'] AS_BASE
include : FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75
italic-variant 'cyrl/ge' 0x491
italic-variant 'cyrl/ghayn' 0x493
orthographic-italic 'cyrl/ge' 0x491
orthographic-italic 'cyrl/ghayn' 0x493
create-glyph 'cyrl/GheDescender' 0x4F6 : composite-proc
refer-glyph 'cyrl/Ghe'
@ -132,7 +132,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin
CyrDescender (GammaBarLeft + Stroke * HVContrast) (sideJut -- MidJutCenter - HalfStroke * HVContrast)
MarkSet.p
italic-variant 'cyrl/gheDescender' 0x4F7
orthographic-italic 'cyrl/gheDescender' 0x4F7
glyph-block Letter-Greek-Lower-Gamma : begin
@ -511,12 +511,12 @@ glyph-block Letter-Greek-Pi : begin
include : MarkSet.e
include : PiShape [DivFrame 1] XH 0 (shrinkRate -- 0.05) (endShrink -- 0.05)
create-glyph 'cyrl/pe.SRB': glyph-proc
include [refer-glyph 'u'] AS_BASE
with-related-glyphs 'u' 'cyrl/pe.SRB' null : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE
include : refer-glyph "macronAbove"
alias 'cyrl/Pe' 0x41F 'grek/Pi'
select-variant 'cyrl/pe' 0x43f
orthographic-italic 'cyrl/pe' 0x43f
create-glyph 'grek/pi' 0x3C0 : glyph-proc
include : MarkSet.e

View file

@ -2580,7 +2580,7 @@ glyph-block Letter-Latin-Upper-B : begin
include : MarkSet.e
include : BShape XH
italic-variant 'cyrl/ve' 0x432
orthographic-italic 'cyrl/ve' 0x432
alias 'smcpB' 0x299 'cyrl/ve.upright'
alias 'closeturnepsilon' 0x25E 'cyrl/ve.italic'
@ -4554,14 +4554,7 @@ glyph-block Letter-Latin-Lower-N : begin
set-base-anchor 'trailing' (RightSB - markHalfStroke) 0
select-variant 'n' 'n'
alias 'cyrl/pe.italicStraight' null 'n.straight'
alias 'cyrl/pe.italicTailed' null 'n.tailed'
alias 'cyrl/pe.italicMotionSerifedStraight' null 'n.motionSerifedStraight'
alias 'cyrl/pe.italicMotionSerifedTailed' null 'n.motionSerifedTailed'
alias 'cyrl/pe.italicEarlessCornerStraight' null 'n.earlessCornerStraight'
alias 'cyrl/pe.italicEarlessCornerTailed' null 'n.earlessCornerTailed'
alias 'cyrl/pe.italicEarlessRoundedStraight' null 'n.earlessRoundedStraight'
alias 'cyrl/pe.italicEarlessRoundedTailed' null 'n.earlessRoundedTailed'
select-variant 'cyrl/pe.italic' (shapeFrom -- 'n')
alias 'cyrl/pe.BGR' null 'n'
with-related-glyphs 'n' 'nApostrophe' 0x149 : lambda [src srl] : glyph-proc
@ -5310,18 +5303,13 @@ glyph-block Letter-Latin-Lower-M : begin
select-variant 'm' 'm'
alias 'cyrl/te.italicNormal' null 'm.normal'
alias 'cyrl/te.italicTailed' null 'm.tailed'
alias 'cyrl/te.italicMotionSerifed' null 'm.motionSerifed'
select-variant 'cyrl/te.italic' (shapeFrom -- 'm')
alias 'cyrl/te.BGR' null 'cyrl/te.italic'
create-glyph 'cyrl/tedescender.italic' : composite-proc [MarkSet.e]
refer-glyph 'm.normal'
CyrDescender (Width * para.diversityM - SB)
alias 'cyrl/te.BGR.normal' null 'm.normal'
alias 'cyrl/te.BGR.tailed' null 'm.tailed'
alias 'cyrl/te.BGR.motionSerifed' null 'm.motionSerifed'
select-variant 'cyrl/te.BGR'
create-glyph 'mltail' 0x271 : glyph-proc
local df : dfM
include : df.markSet.p
@ -5813,8 +5801,8 @@ glyph-block Letter-Latin-Lower-F : begin
alias 'esh' 0x283 'longs.italic'
italic-variant 'longs' 0x17F
italic-variant 'longsbar' 0x1E9D
orthographic-italic 'longs' 0x17F
orthographic-italic 'longsbar' 0x1E9D
create-glyph 'eshcurlytail' 0x286 : glyph-proc
include : MarkSet.if
@ -6034,7 +6022,7 @@ glyph-block Letter-Latin-Lower-F : begin
include : HBarTop hbarleft [mix SB barr 0.65] fbar
if SLAB : include : tagged 'serifRB' : RightwardBottomSerif barr 0 SideJut
italic-variant 'f_l' 0xFB02
orthographic-italic 'f_l' 0xFB02
glyph-block Letter-Latin-Upper-E : begin
@ -6226,7 +6214,7 @@ glyph-block Letter-Latin-Upper-T : begin
include : MarkSet.p
include : CyrDescender (Middle + HalfStroke * HVContrast) (sideJut -- MidJutCenter - HalfStroke * HVContrast)
italic-variant 'cyrl/tedescender' 0x4AD
orthographic-italic 'cyrl/tedescender' 0x4AD
create-glyph 'grek/tau' 0x3C4 : glyph-proc
include : MarkSet.e

View file

@ -779,7 +779,7 @@ glyph-block Symbol-Math-Relation : begin
create-glyph 'equalParallel' 0x22D5 : composite-proc
refer-glyph 'equal'
refer-glyph 'parallel.naturalSlope'
refer-glyph 'parallel.upright'
create-glyph 'oneDotApproxEq' 0x2250 : glyph-proc
include : refer-glyph 'equal'

View file

@ -444,8 +444,9 @@ glyph-block Symbol-Punctuation-Bar : begin
set-base-anchor 'below' Middle ParenBot
include : VBar Middle ParenBot ParenTop
create-glyph 'bar.naturalSlope' : BarShape
create-glyph 'bar.forceUpright' : glyph-proc
create-glyph 'bar.upright' : BarShape
create-glyph 'bar.italic.naturalSlope' : BarShape
create-glyph 'bar.italic.forceUpright' : glyph-proc
include : ForceUpright
include : BarShape
@ -456,8 +457,9 @@ glyph-block Symbol-Punctuation-Bar : begin
include : VBar (Middle - Width * 0.175) ParenBot ParenTop sw
include : VBar (Middle + Width * 0.175) ParenBot ParenTop sw
create-glyph 'parallel.naturalSlope' : DoubleBarShape
create-glyph 'parallel.forceUpright' : glyph-proc
create-glyph 'parallel.upright' : DoubleBarShape
create-glyph 'parallel.italic.naturalSlope' : DoubleBarShape
create-glyph 'parallel.italic.forceUpright' : glyph-proc
include : ForceUpright
include : DoubleBarShape
@ -466,22 +468,26 @@ glyph-block Symbol-Punctuation-Bar : begin
include : VBar Middle (SymbolMid + breakDist / 2) ParenTop
include : VBar Middle ParenBot (SymbolMid - breakDist / 2)
create-glyph 'brokenBar.naturalSlope' : BrokenBarShape
create-glyph 'brokenBar.forceUpright' : glyph-proc
create-glyph 'brokenBar.upright' : BrokenBarShape
create-glyph 'brokenBar.italic.naturalSlope' : BrokenBarShape
create-glyph 'brokenBar.italic.forceUpright' : glyph-proc
include : ForceUpright
include : BrokenBarShape
create-glyph 'palatoalveolarclick' 0x1C2 : glyph-proc
include [refer-glyph 'bar.naturalSlope'] AS_BASE
include [refer-glyph 'bar.upright'] AS_BASE
include : HBarBottom SB RightSB (SymbolMid + XH * 0.1) OperatorStroke
include : HBarTop SB RightSB (SymbolMid - XH * 0.1) OperatorStroke
select-variant 'bar' '|'
select-variant 'parallel' 0x2225 (follow -- 'bar')
select-variant 'brokenBar' 0xA6 (follow -- 'bar')
alias 'dentalclick' 0x1C0 'bar.naturalSlope'
select-variant 'bar.italic'
orthographic-italic 'bar' '|'
select-variant 'parallel.italic' (follow -- 'bar.italic')
orthographic-italic 'parallel' 0x2225
select-variant 'brokenBar.italic' (follow -- 'bar.italic')
orthographic-italic 'brokenBar' 0xA6
alias 'dentalclick' 0x1C0 'bar.upright'
alias 'doubleBar' 0x2016 'parallel'
alias 'alveolarlateralclick' 0x1C1 'parallel.naturalSlope'
alias 'alveolarlateralclick' 0x1C1 'parallel.upright'
glyph-block Symbol-Punctuation-Ampersand : begin
@ -899,9 +905,7 @@ glyph-block Symbol-Punctuation-Asterisk : begin
Italify
select-variant 'asterisk' '*'
select-variant 'asterisk' nothing
to-name -- 'asterisk.dfltlow'
transform -- { .high 'low' .hexhigh 'hexlow' .turnPentaHigh 'turnPentaLow' }
select-variant 'asterisk/lowered' (shapeFrom -- 'asterisk')
glyph-block Symbol-Punctuation-Slashes-And-Number-Sign : begin

View file

@ -106,7 +106,7 @@ define-macro glyph-block-import : syntax-rules
`[glyph-block-import @_blockName] : begin
define allExports : object
Common-Derivatives `[select-variant italic-variant refer-glyph query-glyph alias turned
Common-Derivatives `[select-variant orthographic-italic refer-glyph query-glyph alias turned
HDual HCombine VDual VCombine with-related-glyphs glyph-is-needed]
CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt

View file

@ -86,7 +86,7 @@ define [buildLigationsImpl sink para featureName mappedFeature rankedLookups] :
* 'asciiCaret'
* 'asciiTilde'
define [asterisk_center] ({'asterisk'} ~> {'asterisk.dfltlow'})
define [asterisk_center] ({'asterisk'} ~> {'asterisk/lowered'})
define [colon_center] ({'colon' 'colon.mid'} ~> {'colon.mid' 'colon.mid'})
define [caret_center] ({'asciiCaret'} ~> {'asciiCaret.low'})
define [tilde_center] ({'asciiTilde'} ~> {'asciiTilde.low'})
@ -156,9 +156,9 @@ define [buildLigationsImpl sink para featureName mappedFeature rankedLookups] :
CreateLigationLookup : keep-if 'brst' : list
chain-rule # (*
{'parenLeft'} ~> look-around
{'asterisk'} ~> {'asterisk.dfltlow'}
{'asterisk'} ~> {'asterisk/lowered'}
chain-rule # *)
{'asterisk'} ~> {'asterisk.dfltlow'}
{'asterisk'} ~> {'asterisk/lowered'}
{'parenRight'} ~> look-around
do "Bracket-colon"

View file

@ -119,8 +119,6 @@ class PrimeVariant {
this.description = cfg.description;
this.rank = cfg.rank;
this.selector = cfg.selector;
this.selectorUpright = cfg.selectorUpright;
this.selectorItalic = cfg.selectorItalic;
}
resolveFor(para, gn) {
let vs = {};
@ -129,11 +127,6 @@ class PrimeVariant {
}
resolve(para, vs) {
Object.assign(vs, this.selector);
if (para.isItalic) {
Object.assign(vs, this.selectorItalic);
} else {
Object.assign(vs, this.selectorUpright);
}
}
}

View file

@ -581,160 +581,121 @@ tag = 'cv21'
rank = 1
description = '`m` with normal middle leg, touching the baseline'
selector.m = 'normal'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.shortleg]
rank = 2
description = '`m` with shorter middle leg, like Ubuntu Mono'
selector.m = 'shortleg'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.tailed]
rank = 3
description = '`m` with normal middle leg, touching the baseline, and a curly tail'
selector.m = 'tailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicTailed"
selector."cyrl/te.BGR" = "tailed"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.shortleg-tailed]
rank = 4
description = '`m` with shorter middle leg, like Ubuntu Mono, and a curly tail'
selector.m = 'shortlegTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicTailed"
selector."cyrl/te.BGR" = "tailed"
selector."cyrl/te.italic" = "tailed"
[prime.m.variants.earless-corner-double-arch]
rank = 5
description = "Earless (corner top-left) `m` with normal middle leg touching baseline"
selector.m = 'earlessCornerDoubleArch'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-corner-double-arch-shortleg]
rank = 6
description = "Earless (corner top-left) `m` with a shorter middle leg like Ubuntu Mono"
selector.m = 'earlessCornerDoubleArchShortleg'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-corner-double-arch-tailed]
rank = 7
description = "Earless (corner top-left) `m` with normal middle leg touching baseline, and a curly tail"
selector.m = 'earlessCornerDoubleArchTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-corner-double-arch-shortleg-tailed]
rank = 8
description = "Earless (corner top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'earlessCornerDoubleArchShortlegTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-rounded-double-arch]
rank = 9
description = "Earless (rounded top-left) `m` with normal middle leg touching baseline"
selector.m = 'earlessRoundedDoubleArch'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-rounded-double-arch-shortleg]
rank = 10
description = "Earless (rounded top-left) `m` with a shorter middle leg like Ubuntu Mono"
selector.m = 'earlessRoundedDoubleArchShortleg'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-rounded-double-arch-tailed]
rank = 11
description = "Earless (rounded top-left) `m` with normal middle leg touching baseline, and a curly tail"
selector.m = 'earlessRoundedDoubleArchTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-rounded-double-arch-shortleg-tailed]
rank = 12
description = "Earless (rounded top-left) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'earlessRoundedDoubleArchShortlegTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-single-arch]
rank = 13
description = "Earless (single-arch) `m` with normal middle leg touching baseline"
selector.m = 'earlessSingleArch'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-single-arch-shortleg]
rank = 14
description = "Earless (single-arch) `m` with a shorter middle leg like Ubuntu Mono"
selector.m = 'earlessSingleArchShortleg'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-single-arch-tailed]
rank = 15
description = "Earless (single-arch) `m` with normal middle leg touching baseline, and a curly tail"
selector.m = 'earlessSingleArchTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.earless-single-arch-shortleg-tailed]
rank = 16
description = "Earless (single-arch) `m` with a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'earlessSingleArchShortlegTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicNormal"
selector."cyrl/te.BGR" = "normal"
selector."cyrl/te.italic" = "normal"
[prime.m.variants.motion-serifed]
rank = 17
description = "`m` with motion serifs, normal middle leg touching baseline"
selector.m = 'motionSerifed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicMotionSerifed"
selector."cyrl/te.BGR" = "motionSerifed"
selector."cyrl/te.italic" = "motionSerifed"
[prime.m.variants.motion-serifed-shortleg]
rank = 18
description = "`m` with motion serifs, a shorter middle leg like Ubuntu Mono"
selector.m = 'motionSerifedShortleg'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicMotionSerifed"
selector."cyrl/te.BGR" = "motionSerifed"
selector."cyrl/te.italic" = "motionSerifed"
[prime.m.variants.motion-serifed-tailed]
rank = 19
description = "`m` with motion serifs, normal middle leg touching baseline, and a curly tail"
selector.m = 'motionSerifedTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicMotionSerifed"
selector."cyrl/te.BGR" = "motionSerifed"
selector."cyrl/te.italic" = "motionSerifed"
[prime.m.variants.motion-serifed-shortleg-tailed]
rank = 20
description = "`m` with motion serifs, a shorter middle leg like Ubuntu Mono, and a curly tail"
selector.m = 'motionSerifedShortlegTailed'
selectorUpright."cyrl/te" = "upright"
selectorItalic."cyrl/te" = "italicMotionSerifed"
selector."cyrl/te.BGR" = "motionSerifed"
selector."cyrl/te.italic" = "motionSerifed"
@ -747,64 +708,56 @@ rank = 1
description = '`n` with straight ending'
selector.n = 'straight'
selector.eng = 'straight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicStraight"
selector."cyrl/pe.italic" = "straight"
[prime.n.variants.tailed]
rank = 2
description = '`n` with a curly tail'
selector.n = 'tailed'
selector.eng = 'straight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicTailed"
selector."cyrl/pe.italic" = "tailed"
[prime.n.variants.earless-corner-straight]
rank = 3
description = 'Earless (corner top-left) `n` with straight ending'
selector.n = 'earlessCornerStraight'
selector.eng = 'earlessCornerStraight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicEarlessCornerStraight"
selector."cyrl/pe.italic" = "straight"
[prime.n.variants.earless-corner-tailed]
rank = 4
description = 'Earless (corner top-left) `n` with a curly tail'
selector.n = 'earlessCornerTailed'
selector.eng = 'earlessCornerStraight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicEarlessCornerTailed"
selector."cyrl/pe.italic" = "tailed"
[prime.n.variants.earless-rounded-straight]
rank = 5
description = 'Earless (rounded top-left) `n` with straight ending'
selector.n = 'earlessRoundedStraight'
selector.eng = 'earlessRoundedStraight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicEarlessRoundedStraight"
selector."cyrl/pe.italic" = "straight"
[prime.n.variants.earless-rounded-tailed]
rank = 6
description = 'Earless (rounded top-left) `n` with a curly tail'
selector.n = 'earlessRoundedTailed'
selector.eng = 'earlessRoundedStraight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicEarlessRoundedTailed"
selector."cyrl/pe.italic" = "tailed"
[prime.n.variants.motion-serifed-straight]
rank = 7
description = '`n` with motion serifs and straight ending'
selector.n = 'motionSerifedStraight'
selector.eng = 'motionSerifedStraight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicMotionSerifedStraight"
selector."cyrl/pe.italic" = "motionSerifedStraight"
[prime.n.variants.motion-serifed-tailed]
rank = 8
description = '`n` with motion serifs and a curly tail'
selector.n = 'motionSerifedTailed'
selector.eng = 'motionSerifedStraight'
selectorUpright."cyrl/pe" = "upright"
selectorItalic."cyrl/pe" = "italicMotionSerifedTailed"
selector."cyrl/pe.italic" = "motionSerifedTailed"
@ -955,97 +908,55 @@ tag = 'cv27'
rank = 1
description = "Normal `u` with bottom-right tooth"
selector.u = "toothed"
selectorUpright."cyrl/i" = "upright"
selectorItalic."cyrl/i" = "italicToothed"
selectorUpright."cyrl/sha" = "upright"
selectorItalic."cyrl/sha" = "italicToothed"
selectorUpright."cyrl/dzhe" = "upright"
selectorItalic."cyrl/dzhe" = "italicToothed"
selectorUpright."cyrl/tse" = "upright"
selectorItalic."cyrl/tse" = "italicToothed"
selector."cyrl/i.BGR" = "toothed"
selector."cyrl/sha.BGR" = "toothed"
selector."cyrl/tse.BGR" = "toothed"
selector."cyrl/i.italic" = "toothed"
selector."cyrl/sha.italic" = "toothed"
selector."cyrl/dzhe.italic" = "toothed"
selector."cyrl/tse.italic" = "toothed"
[prime.u.variants.toothless-corner]
rank = 2
description = 'Toothless (corner bottom-right) `u`'
selector.u = 'toothlessCorner'
selectorUpright."cyrl/i" = "upright"
selectorItalic."cyrl/i" = "italicToothed"
selectorUpright."cyrl/sha" = "upright"
selectorItalic."cyrl/sha" = "italicToothed"
selectorUpright."cyrl/dzhe" = "upright"
selectorItalic."cyrl/dzhe" = "italicToothed"
selectorUpright."cyrl/tse" = "upright"
selectorItalic."cyrl/tse" = "italicToothed"
selector."cyrl/i.BGR" = "toothed"
selector."cyrl/sha.BGR" = "toothed"
selector."cyrl/tse.BGR" = "toothed"
selector."cyrl/i.italic" = "toothed"
selector."cyrl/sha.italic" = "toothed"
selector."cyrl/dzhe.italic" = "toothed"
selector."cyrl/tse.italic" = "toothed"
[prime.u.variants.toothless-rounded]
rank = 3
description = "Toothless (rounded) `u`, like a smaller uppercase `U`"
selector.u = "toothlessRounded"
selectorUpright."cyrl/i" = "upright"
selectorItalic."cyrl/i" = "italicToothed"
selectorUpright."cyrl/sha" = "upright"
selectorItalic."cyrl/sha" = "italicToothed"
selectorUpright."cyrl/dzhe" = "upright"
selectorItalic."cyrl/dzhe" = "italicToothed"
selectorUpright."cyrl/tse" = "upright"
selectorItalic."cyrl/tse" = "italicToothed"
selector."cyrl/i.BGR" = "toothed"
selector."cyrl/sha.BGR" = "toothed"
selector."cyrl/tse.BGR" = "toothed"
selector."cyrl/i.italic" = "toothed"
selector."cyrl/sha.italic" = "toothed"
selector."cyrl/dzhe.italic" = "toothed"
selector."cyrl/tse.italic" = "toothed"
[prime.u.variants.tailed]
rank = 4
description = "`u` with right bar and a slightly curly tail"
selector.u = "tailed"
selectorUpright."cyrl/i" = "upright"
selectorItalic."cyrl/i" = "italicTailed"
selectorUpright."cyrl/sha" = "upright"
selectorItalic."cyrl/sha" = "italicTailed"
selectorUpright."cyrl/dzhe" = "upright"
selectorItalic."cyrl/dzhe" = "italicTailed"
selectorUpright."cyrl/tse" = "upright"
selectorItalic."cyrl/tse" = "italicToothed"
selector."cyrl/i.BGR" = "tailed"
selector."cyrl/sha.BGR" = "tailed"
selector."cyrl/tse.BGR" = "toothed"
selector."cyrl/i.italic" = "tailed"
selector."cyrl/sha.italic" = "tailed"
selector."cyrl/dzhe.italic" = "tailed"
selector."cyrl/tse.italic" = "toothed"
[prime.u.variants.motion-serifed]
rank = 5
description = "Normal `u` with right bar and motion serifs"
selector.u = "motionSerifed"
selectorUpright."cyrl/i" = "upright"
selectorItalic."cyrl/i" = "italicMotionSerifed"
selectorUpright."cyrl/sha" = "upright"
selectorItalic."cyrl/sha" = "italicMotionSerifed"
selectorUpright."cyrl/dzhe" = "upright"
selectorItalic."cyrl/dzhe" = "italicMotionSerifed"
selectorUpright."cyrl/tse" = "upright"
selectorItalic."cyrl/tse" = "italicMotionSerifed"
selector."cyrl/i.BGR" = "motionSerifed"
selector."cyrl/sha.BGR" = "motionSerifed"
selector."cyrl/tse.BGR" = "motionSerifed"
selector."cyrl/i.italic" = "motionSerifed"
selector."cyrl/sha.italic" = "motionSerifed"
selector."cyrl/dzhe.italic" = "motionSerifed"
selector."cyrl/tse.italic" = "motionSerifed"
[prime.u.variants.motion-serifed-tailed]
rank = 6
description = "`u` with right bar, motion serifs and a slightly curly tail"
selector.u = "motionSerifedTailed"
selectorUpright."cyrl/i" = "upright"
selectorItalic."cyrl/i" = "italicMotionSerifedTailed"
selectorUpright."cyrl/sha" = "upright"
selectorItalic."cyrl/sha" = "italicMotionSerifedTailed"
selectorUpright."cyrl/dzhe" = "upright"
selectorItalic."cyrl/dzhe" = "italicMotionSerifedTailed"
selectorUpright."cyrl/tse" = "upright"
selectorItalic."cyrl/tse" = "italicMotionSerifed"
selector."cyrl/i.BGR" = "motionSerifedTailed"
selector."cyrl/sha.BGR" = "motionSerifedTailed"
selector."cyrl/tse.BGR" = "motionSerifed"
selector."cyrl/i.italic" = "motionSerifedTailed"
selector."cyrl/sha.italic" = "motionSerifedTailed"
selector."cyrl/dzhe.italic" = "motionSerifedTailed"
selector."cyrl/tse.italic" = "motionSerifed"
[prime.v]
sampler = 'vV'
@ -1394,31 +1305,37 @@ tag = 'cv44'
rank = 1
description = 'Higher five-pointed asterisk `*`'
selector.asterisk = 'high'
selector."asterisk/lowered" = 'low'
[prime.asterisk.variants.low]
rank = 2
description = 'Lower five-pointed asterisk `*`'
selector.asterisk = 'low'
selector."asterisk/lowered" = 'low'
[prime.asterisk.variants.hexhigh]
rank = 3
description = 'Higher six-pointed asterisk `*`'
selector.asterisk = "hexhigh"
selector."asterisk/lowered" = "hexlow"
[prime.asterisk.variants.hexlow]
rank = 4
description = 'Lower six-pointed asterisk `*`'
selector.asterisk = "hexlow"
selector."asterisk/lowered" = "hexlow"
[prime.asterisk.variants.flip-penta-high]
rank = 5
description = 'Higher five-pointed and turned asterisk `*`'
selector.asterisk = 'turnPentaHigh'
selector."asterisk/lowered" = 'turnPentaLow'
[prime.asterisk.variants.flip-penta-low]
rank = 6
description = 'Lower five-pointed and turned asterisk `*`'
selector.asterisk = 'turnPentaLow'
selector."asterisk/lowered" = 'turnPentaLow'
@ -1651,14 +1568,12 @@ slopeDependent = true
[prime.bar.variants.natural-slope]
rank = 1
description = 'Bar punctuations (`|`) has a natural slope under italics and oblique'
selectorUpright.bar = "naturalSlope"
selectorItalic.bar = "naturalSlope"
selector."bar.italic" = "naturalSlope"
[prime.bar.variants.force-upright]
rank = 2
description = 'Bar punctuations (`|`) is forced upright under italics and oblique'
selectorUpright.bar = "naturalSlope"
selectorItalic.bar = "forceUpright"
selector."bar.italic" = "forceUpright"