Add Cyrillic tailed Short I (U+048A, U+048B), tailed El (U+04C5, U+04C6), railed En (U+04C9, U+04CA), tailed Em (U+04CD, U+04CE).

This commit is contained in:
be5invis 2021-05-08 00:26:04 -07:00
parent f3c1c20782
commit e5f3b6b951
21 changed files with 140 additions and 71 deletions

View file

@ -6,4 +6,5 @@
- Cyrillic combining Dasia (`U+0485`), Psili (`U+0486`), Pokrytie (`U+0478`).
- Cyrillic Ornate Omega (`U+047C`, `U+047D`).
- Cyrillic Koppa (`U+0480`, `U+0481`).
- Cyrillic tailed Short I (`U+048A`, `U+048B`), tailed El (`U+04C5`, `U+04C6`), railed En (`U+04C9`, `U+04CA`), tailed Em (`U+04CD`, `U+04CE`).
* Add tailed variants for Cyrillic El, En, Che, Yery and Ya (#972).

View file

@ -50,12 +50,12 @@ glyph-block Common-Derivatives : begin
if [not goal] : throw : new Error "Cannot find glyph '\(id)'"
this.includeGlyph goal copyAnchors copyWidth
define [with-related-glyphs dstGid dstUnicode sourceGid Fn] : begin
if [not : glyph-is-needed sourceGid] : return nothing
define [with-related-glyphs dstGid dstUnicode srcGid Fn] : begin
if [not : glyph-is-needed srcGid] : return nothing
local glyphSrc : glyphStore.queryByName sourceGid
local glyphSrc : glyphStore.queryByName srcGid
local glyphDst : create-glyph dstGid dstUnicode : glyph-proc
include : Fn sourceGid null
include : Fn srcGid null
local derivedGlyphIdMap : new Map
if glyphDst : foreach [gr : items-of : AnyDerivingCv.query glyphSrc] : begin
@ -68,13 +68,21 @@ glyph-block Common-Derivatives : begin
gr.set glyphDst relGidDst
derivedGlyphIdMap.set relGidSrc relGidDst
define [alias dstGid dstUnicode sourceGid] : begin
if [not dstGid] : throw : new Error "Target ID not specified"
if [not : glyph-is-needed sourceGid] : return nothing
define [build-related-composite dstGid dstUnicode srcGid] : begin
if [not : glyph-is-needed srcGid] : return nothing
local glyphSrc : glyphStore.queryByNameEnsured sourceGid
local restComponents : {}.slice.call arguments 3
return : with-related-glyphs dstGid dstUnicode srcGid : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
foreach component [items-of restComponents] : include component
define [alias dstGid dstUnicode srcGid] : begin
if [not dstGid] : throw : new Error "Target ID not specified"
if [not : glyph-is-needed srcGid] : return nothing
local glyphSrc : glyphStore.queryByNameEnsured srcGid
local glyphDst : create-glyph dstGid dstUnicode : glyph-proc
include [refer-glyph sourceGid] AS_BASE ALSO_METRICS
include [refer-glyph srcGid] AS_BASE ALSO_METRICS
if glyphDst : begin
foreach [gr : items-of : AnyCv.query glyphSrc] : begin
@ -125,7 +133,8 @@ 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 orthographic-italic refer-glyph query-glyph with-related-glyphs
glyph-block-export select-variant orthographic-italic refer-glyph query-glyph
glyph-block-export with-related-glyphs build-related-composite
glyph-block-export alias turned HDual HCombine VDual VCombine glyph-is-needed
glyph-block-export HalfAdvance TurnMarks

View file

@ -536,18 +536,6 @@ glyph-block CommonShapes : begin
.af [lambda [before after] [HookShape before after false y tight sw swItalicAdj noAdjTerminalY]]
}
define [CyrDescender] : params [x [shift 0.1] [connex 0] [sideJut SideJut]] : glyph-proc
local descenderOverflow : if SLAB sideJut ((RightSB - SB) * shift)
include : VBarRight (x + descenderOverflow + 0.25 * Stroke) (HalfStroke - LongJut) Stroke VJutSw
if (!SLAB && descenderOverflow > Stroke * 0.75 || connex) : begin
include : HBarTop (x - connex * Stroke * HVContrast) (x + descenderOverflow) Stroke
define [CyrLeftDescender] : params [x [shift 0.1] [connex 0] [sideJut SideJut]] : glyph-proc
local descenderOverflow : if SLAB sideJut ((RightSB - SB) * shift)
include : VBarLeft (x - descenderOverflow - 0.25 * Stroke) (HalfStroke - LongJut) Stroke VJutSw
if (!SLAB && descenderOverflow > Stroke * 0.75 || connex) : begin
include : HBarTop (x + connex * Stroke * HVContrast) (x - descenderOverflow) Stroke
# Composite transformations
define [FlipAround x y sx sy] : glyph-proc
include : Upright
@ -594,4 +582,9 @@ glyph-block CommonShapes : begin
corner [mix x1 x2 (-k)] [mix y1 y2 (-k)]
corner [mix x1 x2 (1+k)] [mix y1 y2 (1+k)]
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender CyrLeftDescender FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter DiagCorDs HCrossBar VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight
define [ExtLineLhs k sw x1 y1 x2 y2] : dispiro
widths.lhs sw
corner [mix x1 x2 (-k)] [mix y1 y2 (-k)]
corner [mix x1 x2 (1+k)] [mix y1 y2 (1+k)]
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LeftHook HooktopLeftBar FlatSlashShape hookstart hookend FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs DiagCorDs HCrossBar VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight

View file

@ -10,6 +10,7 @@ glyph-block Letter-Cyrillic-Che : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrLeftDescender
define BODY-STRAIGHT 0
define BODY-TAILED 1
@ -71,12 +72,13 @@ glyph-block Letter-Cyrillic-Che : begin
turned 'cyrl/Shha' 0x4BA 'cyrl/Che' Middle (CAP / 2)
create-glyph 'cyrl/Chevbar' 0x4B8 : glyph-proc
define SwCheVBar : Math.min OverlayStroke (0.625 * (RightSB - SB - Stroke * 2 * HVContrast) / HVContrast)
create-glyph 'cyrl/CheVBar' 0x4B8 : glyph-proc
include [refer-glyph 'cyrl/Che'] AS_BASE
local yc (CAP * [if SLAB 0.45 0.35] + Stroke * 0.1)
include : VBar Middle (yc + LongJut * 0.8) (yc - LongJut * 0.8) OverlayStroke
include : VBar Middle (yc + LongJut * 0.8) (yc - LongJut * 0.8) SwCheVBar
create-glyph 'cyrl/chevbar' 0x4B9 : glyph-proc
create-glyph 'cyrl/cheVBar' 0x4B9 : glyph-proc
include [refer-glyph 'cyrl/che'] AS_BASE
local yc (XH * [if SLAB 0.45 0.35] + Stroke * 0.1)
include : VBar Middle (yc + LongJut * 0.8) (yc - LongJut * 0.8) OverlayStroke
include : VBar Middle (yc + LongJut * 0.8) (yc - LongJut * 0.8) SwCheVBar

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Cyrillic-El : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : LegShape RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : LegShape RightwardTailedBar CyrTailDescender
define BODY-STRAIGHT 0
define BODY-TAILED 1
@ -23,11 +23,10 @@ glyph-block Letter-Cyrillic-El : begin
define [CyrElShape top bodyType slabType] : glyph-proc
local cutleft : mix SB RightSB 0.135
local cutleft2 : mix SB RightSB 0.075
local cutright : mix SB RightSB 1
include : match bodyType
[Just BODY-TAILED] : RightwardTailedBar cutright 0 top
__ : VBarRight cutright 0 top
include : HBar cutleft cutright (top - HalfStroke)
[Just BODY-TAILED] : RightwardTailedBar RightSB 0 top
__ : VBarRight RightSB 0 top
include : HBar cutleft RightSB (top - HalfStroke)
include : LegShape
ztop -- [Point.fromXY Point.Type.Corner cutleft top]
zbot -- [Point.fromXY Point.Type.Corner [mix SB 0 [if SLAB 1 0.75]] 0]
@ -40,12 +39,12 @@ glyph-block Letter-Cyrillic-El : begin
[Just SLAB-TAILED-I] : LeftwardTopSerif cutleft top SideJut
__ : glyph-proc
include : tagged 'SerifRT' : match slabType
[Just SLAB-ALL] : RightwardTopSerif cutright top SideJut
[Just SLAB-TAILED-U] : RightwardTopSerif cutright top SideJut
[Just SLAB-ALL] : RightwardTopSerif RightSB top SideJut
[Just SLAB-TAILED-U] : RightwardTopSerif RightSB top SideJut
__ : glyph-proc
include : tagged 'SerifRB' : match slabType
[Just SLAB-ALL] : CenterBottomSerif (cutright - HalfStroke * HVContrast) 0 Jut
[Just SLAB-LOWER] : RightwardBottomSerif cutright 0 SideJut
[Just SLAB-ALL] : CenterBottomSerif (RightSB - HalfStroke * HVContrast) 0 Jut
[Just SLAB-LOWER] : RightwardBottomSerif RightSB 0 SideJut
__ : glyph-proc
create-glyph 'cyrl/El' 0x41B : glyph-proc
@ -60,6 +59,10 @@ glyph-block Letter-Cyrillic-El : begin
include : MarkSet.e
include : CyrElShape XH BODY-TAILED : if SLAB [if para.isItalic SLAB-TAILED-I SLAB-TAILED-U] SLAB-NONE
build-related-composite 'cyrl/ElTail' 0x4C5 'cyrl/El' [CyrTailDescender RightSB]
build-related-composite 'cyrl/elTail' 0x4C6 'cyrl/el.straight' [CyrTailDescender RightSB]
select-variant 'cyrl/el' 0x43B
alias 'cyrl/smcpEl' 0x1D2B 'cyrl/el'
alias 'cyrl/El.BGR' null 'grek/Lambda'

View file

@ -9,6 +9,8 @@ glyph-module
glyph-block Letter-Cyrillic-I : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : CyrTailDescender
define [CyrISerifs top _left _right] : glyph-proc
local left : fallback _left SB
@ -46,3 +48,6 @@ glyph-block Letter-Cyrillic-I : begin
include : CyrIShape XH
alias 'cyrl/smcpI' 0x1D0E 'cyrl/i.upright'
build-related-composite 'cyrl/IShortTail' 0x48A 'cyrl/I' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB]
build-related-composite 'cyrl/iShortTail.upright' null 'cyrl/i.upright' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB]

View file

@ -8,6 +8,7 @@ glyph-block Letter-Cyrillic-Orthography : begin
orthographic-italic 'cyrl/de' 0x434
orthographic-italic 'cyrl/dzhe' 0x45F
orthographic-italic 'cyrl/i' 0x438
orthographic-italic 'cyrl/iShortTail' 0x48B
orthographic-italic 'cyrl/sha' 0x448
orthographic-italic 'cyrl/shcha' 0x449
orthographic-italic 'cyrl/te' 0x442

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Cyrillic-Sha : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar CyrDescender
define [CyrShaShape top df] : glyph-proc
include : union

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Cyrillic-Tse : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame
glyph-block-import Letter-Shared-Shapes : SerifFrame CyrDescender
define [CyrTseShape top] : glyph-proc
include : VBarLeft SB 0 top

View file

@ -9,6 +9,7 @@ glyph-module
glyph-block Letter-Cyrillic-Zhe : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : CyrDescender
define [CyrZheShape top midtop df] : glyph-proc
local fine : AdviceStroke 3.3 df.div

View file

@ -8,7 +8,7 @@ glyph-module
glyph-block Letter-Greek-Upper-Gamma: begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : nShoulder
glyph-block-import Letter-Shared-Shapes : nShoulder CyrDescender
glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft
define SLAB-AUTO 0
@ -28,21 +28,33 @@ glyph-block Letter-Greek-Upper-Gamma: begin
include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut
define GammaConfig : object
standard { SLAB-AUTO }
motionSerifed { SLAB-MOTION }
standard { SLAB-AUTO SLAB }
motionSerifed { SLAB-MOTION false }
foreach { suffix { slabType } } [Object.entries GammaConfig] : do
foreach { suffix { slabType doSB } } [Object.entries GammaConfig] : do
create-glyph "grek/Gamma.\(suffix)" : glyph-proc
include : MarkSet.capital
include : GammaShape CAP slabType
create-glyph "cyrl/GheDescender.\(suffix)" : glyph-proc
include : MarkSet.capital
include : GammaShape CAP slabType
include : CyrDescender (GammaBarLeft + Stroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
create-glyph "cyrl/ghe.upright.\(suffix)" : glyph-proc
include : MarkSet.e
include : GammaShape XH slabType
create-glyph "cyrl/gheDescender.upright.\(suffix)" : glyph-proc
include : MarkSet.e
include : GammaShape XH slabType
include : CyrDescender (GammaBarLeft + Stroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
select-variant 'grek/Gamma' 0x393
select-variant 'cyrl/Ghe' 0x413 (shapeFrom -- 'grek/Gamma')
select-variant 'cyrl/GheDescender' 0x4F6 (follow -- 'cyrl/Ghe')
select-variant 'cyrl/ghe.upright'
select-variant 'cyrl/gheDescender.upright' (follow -- 'cyrl/ghe.upright')
alias 'grek/smcpGamma' 0x1D26 'cyrl/ghe.upright'
with-related-glyphs 'cyrl/GheHook' 0x494 'cyrl/Ghe' : lambda [src sel] : glyph-proc
@ -75,17 +87,6 @@ glyph-block Letter-Greek-Upper-Gamma: begin
include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * (1 - OverlayPos))
with-related-glyphs 'cyrl/GheDescender' 0x4F6 'cyrl/Ghe' : lambda [src sel] : composite-proc
refer-glyph src
CyrDescender (GammaBarLeft + Stroke * HVContrast) (sideJut -- MidJutCenter - HalfStroke * HVContrast)
MarkSet.if
with-related-glyphs 'cyrl/gheDescender.upright' null 'cyrl/ghe.upright' : lambda [src sel] : composite-proc
refer-glyph src
CyrDescender (GammaBarLeft + Stroke * HVContrast) (sideJut -- MidJutCenter - HalfStroke * HVContrast)
MarkSet.p
define [CyrGeShape top] : glyph-proc
include : GammaShape top
eject-contour 'serifRT'

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Latin-K : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius DiagonalTailF
glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius DiagonalTailF CyrDescender
local [KBalance slab straightBar] : if slab (Width / 16) : if straightBar (Width / 32) 0
local [KBalanceRight slab straightBar] : if slab 0 : if straightBar (Width / 32) 0
@ -215,7 +215,7 @@ glyph-block Letter-Latin-K : begin
define [KCyrlNormalDescender top straightBar slabLeft slab] : CyrDescender
RightSB + [KBalanceRight slab straightBar] - [KO slab straightBar top Stroke]
connex -- [if straightBar 1 0]
connex -- [if straightBar 1 0.1]
define [KHookTopBar slab straightBar] : union
VBarLeft (SB + [KBalance slab straightBar]) 0 (CAP - Hook - HalfStroke)

View file

@ -10,7 +10,7 @@ glyph-block Letter-Latin-Lower-M : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend
glyph-block-import Letter-Shared-Shapes : nShoulder nShoulderMask
glyph-block-import Letter-Shared-Shapes : nShoulder nShoulderMask CyrDescender
define [SmallMSmooth df] : df.div * (0.5 * SmallSmooth + 0.375 * Stroke)
define [SmallMShoulderSpiro] : params [left right top bottom width fine df coBottom] : glyph-proc

View file

@ -12,6 +12,7 @@ glyph-block Letter-Latin-U : begin
glyph-block-import Marks : markHalfStroke
glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : nShoulder RightwardTailedBar DToothlessRise SerifFrame
glyph-block-import Letter-Shared-Shapes : CyrTailDescender
glyph-block-export UShape
@ -167,6 +168,7 @@ glyph-block Letter-Latin-U : begin
select-variant 'smcpU' 0x1D1C (follow -- 'U')
select-variant 'u' 'u'
select-variant 'cyrl/i.italic' (shapeFrom -- 'u')
select-variant 'cyrl/i.italic.reduced' (shapeFrom -- 'u')
alias 'cyrl/i.BGR' null 'cyrl/i.italic'
with-related-glyphs 'cyrl/ibreve.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc
@ -177,6 +179,8 @@ glyph-block Letter-Latin-U : begin
include [refer-glyph src] AS_BASE ALSO_METRICS
include [refer-glyph 'graveAbove']
build-related-composite 'cyrl/iShortTail.italic' null 'cyrl/i.italic.reduced' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB]
create-glyph 'grek/upsilon' 0x3C5 : glyph-proc
include : MarkSet.e
set-base-anchor 'trailing' Middle 0

View file

@ -11,6 +11,7 @@ glyph-block Letter-Latin-Upper-H : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrTailDescender
define SLAB-AUTO 1
define SLAB-MOTION 2
@ -89,8 +90,11 @@ glyph-block Letter-Latin-Upper-H : begin
select-variant 'cyrl/en' 0x43D (shapeFrom -- 'smcpH')
create-glyph 0x4A2 : composite-proc [refer-glyph 'cyrl/En'] [CyrDescender RightSB]
create-glyph 0x4A3 : composite-proc [refer-glyph 'cyrl/en'] [CyrDescender RightSB]
build-related-composite 'cyrl/EnDescender' 0x4A2 'H' [CyrDescender RightSB (connex -- 0.5)]
build-related-composite 'cyrl/enDescender' 0x4A3 'smcpH' [CyrDescender RightSB (connex -- 0.5)]
build-related-composite 'cyrl/EnTail' 0x4C9 'H' [CyrTailDescender RightSB (connex -- 0.5)]
build-related-composite 'cyrl/enTail' 0x4CA 'smcpH' [CyrTailDescender RightSB (connex -- 0.5)]
create-glyph 'mathbb/H' 0x210D : glyph-proc
include : MarkSet.capital

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Latin-Upper-M : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame
glyph-block-import Letter-Shared-Shapes : SerifFrame CyrTailDescender
define FORM-FLAT 0
@ -87,6 +87,7 @@ glyph-block Letter-Latin-Upper-M : begin
set-width df.width
include : df.markSet.capital
include : MShape CAP df form slab slanted
create-glyph "smcpM.\(suffix)" : glyph-proc
local df : DivFrame 1 3
set-width df.width
@ -99,6 +100,9 @@ glyph-block Letter-Latin-Upper-M : begin
alias 'grek/Mu' 0x39C 'M'
alias 'cyrl/Em' 0x41C 'M'
build-related-composite 'cyrl/EmTail' 0x4CD 'cyrl/Em' [CyrTailDescender RightSB]
build-related-composite 'cyrl/emTail' 0x4CE 'cyrl/em' [CyrTailDescender RightSB]
glyph-block-import Letter-Blackboard : BBS BBD BBBarRight
create-glyph 'mathbb/M' 0x1D544 : glyph-proc
local df : DivFrame 1 3

View file

@ -11,6 +11,7 @@ glyph-block Letter-Latin-Upper-T : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Latin-Lower-M
glyph-block-import Letter-Shared-Shapes : CyrDescender
define TLeftX : SB + OX * 1.5
define TRightX : RightSB - OX * 1.5
@ -43,7 +44,7 @@ glyph-block Letter-Latin-Upper-T : begin
include : MarkSet.if
set-base-anchor 'bottomright' (Middle + HalfStroke * HVContrast) 0
include : TShape CAP doST doSB
include : CyrDescender (Middle + HalfStroke * HVContrast) (sideJut -- MidJutCenter - HalfStroke * HVContrast)
include : CyrDescender (Middle + HalfStroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
create-glyph "TBar.\(suffix)" : glyph-proc
include [refer-glyph "T.\(suffix)"] AS_BASE ALSO_METRICS
@ -63,7 +64,7 @@ glyph-block Letter-Latin-Upper-T : begin
create-glyph "cyrl/teDescender.upright.\(suffix)" : glyph-proc
include : MarkSet.p
include : TShape XH doST doSB
include : CyrDescender (Middle + HalfStroke * HVContrast) (sideJut -- MidJutCenter - HalfStroke * HVContrast)
include : CyrDescender (Middle + HalfStroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
select-variant 'T' 'T'
select-variant 'smcpT' 0x1D1B (follow -- 'T')

View file

@ -10,7 +10,7 @@ glyph-block Letter-Latin-X : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : ShoulderMidKnotLhsRev SerifFrame WithAIHSerifsMask
glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius DiagonalTailF
glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius DiagonalTailF CyrDescender
glyph-block-export HalfXStrand XStrand
define [HalfXStrand stb slab _leftx lefty rightx righty turn pStraight tension _fine] : glyph-proc
@ -182,11 +182,11 @@ glyph-block Letter-Latin-X : begin
with-related-glyphs 'cyrl/Hadescender' 0x4B2 'cyrl/Ha' : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : CyrDescender RightSB (connex -- 0.5)
include : CyrDescender RightSB
with-related-glyphs 'cyrl/hadescender' 0x4B3 'xCyrlHaDescenderBase' : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : CyrDescender RightSB (connex -- 0.5)
include : CyrDescender RightSB
glyph-block-import Letter-Blackboard : BBS BBD
define [BBXShape l r top] : let [kDiag : DiagCorDs top (r - l) BBD] : union

View file

@ -410,3 +410,36 @@ glyph-block Letter-Shared-Shapes : begin
curl xb (zbot.y + LongJut)
alsoThruThem {{0.5 0.94}}
g4.left.end zbot.x (zbot.y + fine) [heading Leftward]
define VJutSw : AdviceStroke 3.5
glyph-block-export CyrDescender
define [CyrDescender] : params [x [shift 0.1] [connex 0.5] [overflow nothing]] : begin
local descenderOverflow : fallback overflow : if SLAB SideJut ((RightSB - SB) * shift)
return : union
VBarRight (x + descenderOverflow + 0.25 * Stroke) (HalfStroke - LongJut) Stroke VJutSw
if (!SLAB && descenderOverflow > Stroke * 0.75 || connex)
HBarTop (x - connex * Stroke * HVContrast) (x + descenderOverflow) Stroke
glyph-proc
glyph-block-export CyrTailDescender
define [CyrTailDescender] : params [x [shift 0.1] [connex 0.5] [overflow nothing]] : begin
local descenderOverflow : if SLAB SideJut ((RightSB - SB) * shift)
local xRef : x + descenderOverflow + (0.3 + TanSlope) * Stroke
return : union
difference
ExtLineLhs 4 VJutSw (xRef - 0.275 * LongJut) (HalfStroke - LongJut) xRef Stroke
MaskAbove Stroke
MaskBelow (HalfStroke - LongJut)
if (!SLAB && descenderOverflow > Stroke * 0.75 || connex)
HBarTop (x - connex * Stroke * HVContrast) (x + descenderOverflow) Stroke
glyph-proc
glyph-block-export CyrLeftDescender
define [CyrLeftDescender] : params [x [shift 0.1] [connex 0.5] [overflow nothing]] : begin
local descenderOverflow : fallback overflow : if SLAB SideJut ((RightSB - SB) * shift)
return : union
VBarLeft (x - descenderOverflow - 0.25 * Stroke) (HalfStroke - LongJut) Stroke VJutSw
if (!SLAB && descenderOverflow > Stroke * 0.75 || connex)
HBarTop (x + connex * Stroke * HVContrast) (x - descenderOverflow) Stroke
glyph-proc

View file

@ -129,8 +129,8 @@ define-macro glyph-block-import : syntax-rules
define allExports : object
Common-Derivatives `[select-variant orthographic-italic refer-glyph query-glyph
alias turned HDual HCombine VDual VCombine with-related-glyphs glyph-is-needed
HalfAdvance TurnMarks]
alias turned HDual HCombine VDual VCombine with-related-glyphs build-related-composite
glyph-is-needed HalfAdvance TurnMarks]
CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt
CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape
@ -138,11 +138,10 @@ define-macro glyph-block-import : syntax-rules
CenterTopSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric
DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab
NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook
LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender
CyrLeftDescender FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo
WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape
OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter DiagCorDs
HCrossBar VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight]
LeftHook HooktopLeftBar FlatSlashShape hookstart hookend FlipAround ScaleAround Realign
ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape
OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs DiagCorDs HCrossBar VERY-FAR
MaskAbove MaskBelow MaskLeft MaskRight]
define vartiableFilter : if externEnv.$glyphBlockVariableUsage$
lambda [x] externEnv.$glyphBlockVariableUsage$.(x)

View file

@ -2595,6 +2595,7 @@ selector.u = "toothed"
selector."cyrl/i.italic" = "toothed"
selector."cyrl/sha.italic" = "toothed"
selector."cyrl/shcha.italic" = "toothed"
selector."cyrl/i.italic.reduced" = "toothed"
selector."cyrl/dzhe.italic" = "toothed"
selector."cyrl/tse.italic" = "toothed"
@ -2605,6 +2606,7 @@ selector.u = "toothlessCorner"
selector."cyrl/i.italic" = "toothed"
selector."cyrl/sha.italic" = "toothed"
selector."cyrl/shcha.italic" = "toothed"
selector."cyrl/i.italic.reduced" = "toothed"
selector."cyrl/dzhe.italic" = "toothed"
selector."cyrl/tse.italic" = "toothed"
@ -2615,6 +2617,7 @@ selector.u = "toothlessRounded"
selector."cyrl/i.italic" = "toothed"
selector."cyrl/sha.italic" = "toothed"
selector."cyrl/shcha.italic" = "toothed"
selector."cyrl/i.italic.reduced" = "toothed"
selector."cyrl/dzhe.italic" = "toothed"
selector."cyrl/tse.italic" = "toothed"
@ -2625,6 +2628,7 @@ selector.u = "tailed"
selector."cyrl/i.italic" = "tailed"
selector."cyrl/sha.italic" = "tailed"
selector."cyrl/shcha.italic" = "toothed"
selector."cyrl/i.italic.reduced" = "toothed"
selector."cyrl/dzhe.italic" = "tailed"
selector."cyrl/tse.italic" = "toothed"
@ -2635,6 +2639,7 @@ selector.u = "motionSerifed"
selector."cyrl/i.italic" = "motionSerifed"
selector."cyrl/sha.italic" = "motionSerifed"
selector."cyrl/shcha.italic" = "motionSerifed"
selector."cyrl/i.italic.reduced" = "motionSerifed"
selector."cyrl/dzhe.italic" = "motionSerifed"
selector."cyrl/tse.italic" = "motionSerifed"
@ -2645,6 +2650,7 @@ selector.u = "motionSerifedTailed"
selector."cyrl/i.italic" = "motionSerifedTailed"
selector."cyrl/sha.italic" = "motionSerifedTailed"
selector."cyrl/shcha.italic" = "motionSerifed"
selector."cyrl/i.italic.reduced" = "motionSerifed"
selector."cyrl/dzhe.italic" = "motionSerifedTailed"
selector."cyrl/tse.italic" = "motionSerifed"
@ -2655,6 +2661,7 @@ selector.u = "toothlessCornerMotionSerifed"
selector."cyrl/i.italic" = "motionSerifed"
selector."cyrl/sha.italic" = "motionSerifed"
selector."cyrl/shcha.italic" = "motionSerifed"
selector."cyrl/i.italic.reduced" = "motionSerifed"
selector."cyrl/dzhe.italic" = "motionSerifed"
selector."cyrl/tse.italic" = "motionSerifed"
@ -2665,6 +2672,7 @@ selector.u = "toothlessRoundedMotionSerifed"
selector."cyrl/i.italic" = "motionSerifed"
selector."cyrl/sha.italic" = "motionSerifed"
selector."cyrl/shcha.italic" = "motionSerifed"
selector."cyrl/i.italic.reduced" = "motionSerifed"
selector."cyrl/dzhe.italic" = "motionSerifed"
selector."cyrl/tse.italic" = "motionSerifed"