diff --git a/font-src/glyphs/auto-build/transformed.ptl b/font-src/glyphs/auto-build/transformed.ptl index 79460eead..2d4c2c013 100644 --- a/font-src/glyphs/auto-build/transformed.ptl +++ b/font-src/glyphs/auto-build/transformed.ptl @@ -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 diff --git a/font-src/glyphs/common/derivatives.ptl b/font-src/glyphs/common/derivatives.ptl index 782a71bb9..a766d342b 100644 --- a/font-src/glyphs/common/derivatives.ptl +++ b/font-src/glyphs/common/derivatives.ptl @@ -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 diff --git a/font-src/glyphs/letter/cyrillic.ptl b/font-src/glyphs/letter/cyrillic.ptl index 98f6b8c6e..5e1683009 100644 --- a/font-src/glyphs/letter/cyrillic.ptl +++ b/font-src/glyphs/letter/cyrillic.ptl @@ -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 diff --git a/font-src/glyphs/letter/greek.ptl b/font-src/glyphs/letter/greek.ptl index 11db3566c..af54f8f4d 100644 --- a/font-src/glyphs/letter/greek.ptl +++ b/font-src/glyphs/letter/greek.ptl @@ -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 diff --git a/font-src/glyphs/letter/latin.ptl b/font-src/glyphs/letter/latin.ptl index 4385d6935..1f58ab8c9 100644 --- a/font-src/glyphs/letter/latin.ptl +++ b/font-src/glyphs/letter/latin.ptl @@ -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 diff --git a/font-src/glyphs/symbol/math.ptl b/font-src/glyphs/symbol/math.ptl index b7bb5d23b..7b3d5a567 100644 --- a/font-src/glyphs/symbol/math.ptl +++ b/font-src/glyphs/symbol/math.ptl @@ -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' diff --git a/font-src/glyphs/symbol/punctuation.ptl b/font-src/glyphs/symbol/punctuation.ptl index ffeb21670..b25da21fd 100644 --- a/font-src/glyphs/symbol/punctuation.ptl +++ b/font-src/glyphs/symbol/punctuation.ptl @@ -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 diff --git a/font-src/meta/macros.ptl b/font-src/meta/macros.ptl index c50c971af..81121c2cd 100644 --- a/font-src/meta/macros.ptl +++ b/font-src/meta/macros.ptl @@ -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 diff --git a/font-src/otl/gsub-ligation.ptl b/font-src/otl/gsub-ligation.ptl index 3b8cc8aa1..b172b0ccc 100644 --- a/font-src/otl/gsub-ligation.ptl +++ b/font-src/otl/gsub-ligation.ptl @@ -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" diff --git a/font-src/support/variant-data.js b/font-src/support/variant-data.js index ba4e6f89f..089a9f091 100644 --- a/font-src/support/variant-data.js +++ b/font-src/support/variant-data.js @@ -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); - } } } diff --git a/params/variants.toml b/params/variants.toml index 3854c8b2f..331998e37 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -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"