diff --git a/changes/28.0.1.md b/changes/28.0.1.md index 9cd232a63..a8b154d09 100644 --- a/changes/28.0.1.md +++ b/changes/28.0.1.md @@ -1,2 +1,3 @@ * Add italic form of CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK (`U+A68B`) (#2119). * Add missing feature tag to chaining plus ligation (#2118). +* Make the central part of Cyrillic Twe to follow lowercase Tau variants (#2122). diff --git a/packages/font-glyphs/src/letter/latin/lower-il.ptl b/packages/font-glyphs/src/letter/latin/lower-il.ptl index bbb6e69e2..d7ae68b4b 100644 --- a/packages/font-glyphs/src/letter/latin/lower-il.ptl +++ b/packages/font-glyphs/src/letter/latin/lower-il.ptl @@ -130,10 +130,12 @@ glyph-block Letter-Latin-Lower-I : begin set-base-anchor 'trailing' (xMiddle + [HSwToV : 0.75 * df.mvs]) 0 set-base-anchor 'palatalHookMask' currentGlyph.baseAnchors.trailing.x (HalfStroke + O) + local depth : [DiagTail.StdDepth df df.mvs] * (df.rightSB - xMiddle) / (df.rightSB - [XMiddle.FlatTailed df]) + include : dispiro widths.center df.mvs flat xMiddle top [heading Downward] - DiagTail.R xMiddle 0 [DiagTail.StdDepth df df.mvs] df.mvs + DiagTail.R xMiddle 0 depth df.mvs export : define [PhoneticLeft df top xMiddle] : glyph-proc include : dispiro @@ -282,6 +284,18 @@ glyph-block Letter-Latin-Lower-I : begin currentGlyph.deleteBaseAnchor 'trailing' + create-glyph "cyrl/Twe/middle.\(suffix)" : glyph-proc + local df : include : DivFrame div + include : Body df CAP [XMiddle.Center df] + currentGlyph.deleteBaseAnchor 'trailing' + set-mark-anchor 'cvDecompose' (df.width / 2) CAP + + create-glyph "cyrl/twe/middle.\(suffix)" : glyph-proc + local df : include : DivFrame div + include : Body df XH [XMiddle.Center df] + currentGlyph.deleteBaseAnchor 'trailing' + set-mark-anchor 'cvDecompose' (df.width / 2) XH + do "i glyphs" select-variant 'dotlessi' 0x131 link-reduced-variant 'dotlessi/sansSerif' 'dotlessi' MathSansSerif @@ -397,6 +411,8 @@ glyph-block Letter-Latin-Lower-I : begin do "Tau" select-variant 'grek/tau' 0x3C4 + select-variant 'cyrl/Twe/middle' (follow -- 'grek/tau/tailed') + select-variant 'cyrl/twe/middle' (follow -- 'grek/tau/tailed') do "Blackboard" glyph-block-import Letter-Blackboard : BBS BBD BBBarCenter diff --git a/packages/font-glyphs/src/letter/latin/upper-t.ptl b/packages/font-glyphs/src/letter/latin/upper-t.ptl index 58dc89af5..d939c2d29 100644 --- a/packages/font-glyphs/src/letter/latin/upper-t.ptl +++ b/packages/font-glyphs/src/letter/latin/upper-t.ptl @@ -16,7 +16,7 @@ glyph-block Letter-Latin-Upper-T : begin define [TLeftX df] : df.leftSB + 0.75 * OX define [TRightX df] : df.rightSB - 0.75 * OX define [TShape df top doTopSerifs doBottomSerifs] : glyph-proc - include : VBar.m df.middle 0 top + include : tagged 'strokeV' : VBar.m df.middle 0 top local l : TLeftX df local r : TRightX df include : tagged 'strokeLT' : HBar.t l df.middle top @@ -53,18 +53,9 @@ glyph-block Letter-Latin-Upper-T : begin local sf2 : [SerifFrame.fromDf df (top / 2) 0].slice 1 2 if SLAB : include sf2.rt.full - define [TweShape df top doTopSerifs] : glyph-proc - local hd : FlatHookDepth df - include : difference - TShape df top doTopSerifs false - MaskBelow hd.y - - include : dispiro - widths.center - straight.down.start df.middle hd.y [heading Downward] - arcvh.superness DesignParameters.tightHookSuperness - flat (df.middle + hd.x - [HSwToV HalfStroke]) HalfStroke - curl (df.middle + [Math.max (hd.x - [HSwToV HalfStroke] + 1) (LongJut * 1.05)] + HalfStroke * TanSlope) HalfStroke + define [TweUpperShape df top doTopSerifs] : glyph-proc + include : TShape df top doTopSerifs false + eject-contour 'strokeV' define [CyrlTallTeShape df top doTopSerifs doBottomSerifs] : glyph-proc local xRight : df.width - 1.5 * df.leftSB @@ -120,15 +111,17 @@ glyph-block Letter-Latin-Upper-T : begin set-base-anchor 'bottomRight' (df.middle + [HSwToV HalfStroke]) 0 include : TShape df XH doST doSB - create-glyph "cyrl/Twe.\(suffix)" : glyph-proc + create-glyph "cyrl/Twe/upper.\(suffix)" : glyph-proc set-width df.width include : df.markSet.capital - include : TweShape df CAP doST doSB + include : TweUpperShape df CAP doST doSB + set-base-anchor 'cvDecompose' (df.width / 2) CAP - create-glyph "cyrl/twe.\(suffix)" : glyph-proc + create-glyph "cyrl/twe/upper.\(suffix)" : glyph-proc set-width df.width include : df.markSet.e - include : TweShape df XH doST doSB + include : TweUpperShape df XH doST doSB + set-base-anchor 'cvDecompose' (df.width / 2) XH create-glyph "currency/tengeSign.\(suffix)" : glyph-proc set-width df.width @@ -187,8 +180,10 @@ glyph-block Letter-Latin-Upper-T : begin select-variant 'cyrl/TjeKomi' 0x50E (follow -- 'T/rtailBase') select-variant 'cyrl/tjeKomi.upright' null (follow -- 'T/rtailBase') - select-variant 'cyrl/Twe' 0xA68C (follow -- 'T/rtailBase') - select-variant 'cyrl/twe' 0xA68D (follow -- 'T/rtailBase') + select-variant 'cyrl/Twe/upper' (follow -- 'T/rtailBase') + select-variant 'cyrl/twe/upper' (follow -- 'T/rtailBase') + derive-composites 'cyrl/Twe' 0xA68C 'cyrl/Twe/upper' 'cyrl/Twe/middle' + derive-composites 'cyrl/twe' 0xA68D 'cyrl/twe/upper' 'cyrl/twe/middle' select-variant 'currency/tengeSign' 0x20B8 (follow -- 'T') diff --git a/params/variants.toml b/params/variants.toml index 5c1fc7fb4..48e67ed31 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -5033,31 +5033,37 @@ tagKind = "letter" rank = 1 description = "Greek lower Tau (`τ`) with a tailless shape" selector."grek/tau" = "tau/tailless" +selector."grek/tau/tailed" = "tau/flatTailed" [prime.lower-tau.variants.short-tailed] rank = 2 description = "Greek lower Tau (`τ`) with a very short tail" selector."grek/tau" = "tau/shortTailed" +selector."grek/tau/tailed" = "tau/flatTailed" [prime.lower-tau.variants.tailed] rank = 3 description = "Greek lower Tau (`τ`) with curly tail" selector."grek/tau" = "tau/tailed" +selector."grek/tau/tailed" = "tau/tailed" [prime.lower-tau.variants.flat-tailed] rank = 4 description = "Greek lower Tau (`τ`) with a flat tail" selector."grek/tau" = "tau/flatTailed" +selector."grek/tau/tailed" = "tau/flatTailed" [prime.lower-tau.variants.diagonal-tailed] rank = 5 description = "Greek lower Tau (`τ`) with a diagonal tail" selector."grek/tau" = "tau/diagonalTailed" +selector."grek/tau/tailed" = "tau/diagonalTailed" [prime.lower-tau.variants.semi-tailed] rank = 6 description = "Greek lower Tau (`τ`) with a slightly curly tail" selector."grek/tau" = "tau/semiTailed" +selector."grek/tau/tailed" = "tau/semiTailed"