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 combining Dasia (`U+0485`), Psili (`U+0486`), Pokrytie (`U+0478`).
- Cyrillic Ornate Omega (`U+047C`, `U+047D`). - Cyrillic Ornate Omega (`U+047C`, `U+047D`).
- Cyrillic Koppa (`U+0480`, `U+0481`). - 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). * 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)'" if [not goal] : throw : new Error "Cannot find glyph '\(id)'"
this.includeGlyph goal copyAnchors copyWidth this.includeGlyph goal copyAnchors copyWidth
define [with-related-glyphs dstGid dstUnicode sourceGid Fn] : begin define [with-related-glyphs dstGid dstUnicode srcGid Fn] : begin
if [not : glyph-is-needed sourceGid] : return nothing 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 local glyphDst : create-glyph dstGid dstUnicode : glyph-proc
include : Fn sourceGid null include : Fn srcGid null
local derivedGlyphIdMap : new Map local derivedGlyphIdMap : new Map
if glyphDst : foreach [gr : items-of : AnyDerivingCv.query glyphSrc] : begin if glyphDst : foreach [gr : items-of : AnyDerivingCv.query glyphSrc] : begin
@ -68,13 +68,21 @@ glyph-block Common-Derivatives : begin
gr.set glyphDst relGidDst gr.set glyphDst relGidDst
derivedGlyphIdMap.set relGidSrc relGidDst derivedGlyphIdMap.set relGidSrc relGidDst
define [alias dstGid dstUnicode sourceGid] : begin define [build-related-composite dstGid dstUnicode srcGid] : begin
if [not dstGid] : throw : new Error "Target ID not specified" if [not : glyph-is-needed srcGid] : return nothing
if [not : glyph-is-needed sourceGid] : 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 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 if glyphDst : begin
foreach [gr : items-of : AnyCv.query glyphSrc] : 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" if [not newid] : throw : new Error "Target ID not specified"
return : VCombine newid unicode id id spacing 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 alias turned HDual HCombine VDual VCombine glyph-is-needed
glyph-block-export HalfAdvance TurnMarks 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]] .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 # Composite transformations
define [FlipAround x y sx sy] : glyph-proc define [FlipAround x y sx sy] : glyph-proc
include : Upright include : Upright
@ -594,4 +582,9 @@ glyph-block CommonShapes : begin
corner [mix x1 x2 (-k)] [mix y1 y2 (-k)] corner [mix x1 x2 (-k)] [mix y1 y2 (-k)]
corner [mix x1 x2 (1+k)] [mix y1 y2 (1+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 CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrLeftDescender
define BODY-STRAIGHT 0 define BODY-STRAIGHT 0
define BODY-TAILED 1 define BODY-TAILED 1
@ -71,12 +72,13 @@ glyph-block Letter-Cyrillic-Che : begin
turned 'cyrl/Shha' 0x4BA 'cyrl/Che' Middle (CAP / 2) 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 include [refer-glyph 'cyrl/Che'] AS_BASE
local yc (CAP * [if SLAB 0.45 0.35] + Stroke * 0.1) 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 include [refer-glyph 'cyrl/che'] AS_BASE
local yc (XH * [if SLAB 0.45 0.35] + Stroke * 0.1) 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 Letter-Cyrillic-El : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives 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-STRAIGHT 0
define BODY-TAILED 1 define BODY-TAILED 1
@ -23,11 +23,10 @@ glyph-block Letter-Cyrillic-El : begin
define [CyrElShape top bodyType slabType] : glyph-proc define [CyrElShape top bodyType slabType] : glyph-proc
local cutleft : mix SB RightSB 0.135 local cutleft : mix SB RightSB 0.135
local cutleft2 : mix SB RightSB 0.075 local cutleft2 : mix SB RightSB 0.075
local cutright : mix SB RightSB 1
include : match bodyType include : match bodyType
[Just BODY-TAILED] : RightwardTailedBar cutright 0 top [Just BODY-TAILED] : RightwardTailedBar RightSB 0 top
__ : VBarRight cutright 0 top __ : VBarRight RightSB 0 top
include : HBar cutleft cutright (top - HalfStroke) include : HBar cutleft RightSB (top - HalfStroke)
include : LegShape include : LegShape
ztop -- [Point.fromXY Point.Type.Corner cutleft top] ztop -- [Point.fromXY Point.Type.Corner cutleft top]
zbot -- [Point.fromXY Point.Type.Corner [mix SB 0 [if SLAB 1 0.75]] 0] 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 [Just SLAB-TAILED-I] : LeftwardTopSerif cutleft top SideJut
__ : glyph-proc __ : glyph-proc
include : tagged 'SerifRT' : match slabType include : tagged 'SerifRT' : match slabType
[Just SLAB-ALL] : RightwardTopSerif cutright top SideJut [Just SLAB-ALL] : RightwardTopSerif RightSB top SideJut
[Just SLAB-TAILED-U] : RightwardTopSerif cutright top SideJut [Just SLAB-TAILED-U] : RightwardTopSerif RightSB top SideJut
__ : glyph-proc __ : glyph-proc
include : tagged 'SerifRB' : match slabType include : tagged 'SerifRB' : match slabType
[Just SLAB-ALL] : CenterBottomSerif (cutright - HalfStroke * HVContrast) 0 Jut [Just SLAB-ALL] : CenterBottomSerif (RightSB - HalfStroke * HVContrast) 0 Jut
[Just SLAB-LOWER] : RightwardBottomSerif cutright 0 SideJut [Just SLAB-LOWER] : RightwardBottomSerif RightSB 0 SideJut
__ : glyph-proc __ : glyph-proc
create-glyph 'cyrl/El' 0x41B : glyph-proc create-glyph 'cyrl/El' 0x41B : glyph-proc
@ -60,6 +59,10 @@ glyph-block Letter-Cyrillic-El : begin
include : MarkSet.e include : MarkSet.e
include : CyrElShape XH BODY-TAILED : if SLAB [if para.isItalic SLAB-TAILED-I SLAB-TAILED-U] SLAB-NONE 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 select-variant 'cyrl/el' 0x43B
alias 'cyrl/smcpEl' 0x1D2B 'cyrl/el' alias 'cyrl/smcpEl' 0x1D2B 'cyrl/el'
alias 'cyrl/El.BGR' null 'grek/Lambda' alias 'cyrl/El.BGR' null 'grek/Lambda'

View file

@ -9,6 +9,8 @@ glyph-module
glyph-block Letter-Cyrillic-I : begin glyph-block Letter-Cyrillic-I : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : CyrTailDescender
define [CyrISerifs top _left _right] : glyph-proc define [CyrISerifs top _left _right] : glyph-proc
local left : fallback _left SB local left : fallback _left SB
@ -46,3 +48,6 @@ glyph-block Letter-Cyrillic-I : begin
include : CyrIShape XH include : CyrIShape XH
alias 'cyrl/smcpI' 0x1D0E 'cyrl/i.upright' 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/de' 0x434
orthographic-italic 'cyrl/dzhe' 0x45F orthographic-italic 'cyrl/dzhe' 0x45F
orthographic-italic 'cyrl/i' 0x438 orthographic-italic 'cyrl/i' 0x438
orthographic-italic 'cyrl/iShortTail' 0x48B
orthographic-italic 'cyrl/sha' 0x448 orthographic-italic 'cyrl/sha' 0x448
orthographic-italic 'cyrl/shcha' 0x449 orthographic-italic 'cyrl/shcha' 0x449
orthographic-italic 'cyrl/te' 0x442 orthographic-italic 'cyrl/te' 0x442

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Cyrillic-Sha : begin glyph-block Letter-Cyrillic-Sha : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives 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 define [CyrShaShape top df] : glyph-proc
include : union include : union

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Cyrillic-Tse : begin glyph-block Letter-Cyrillic-Tse : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives 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 define [CyrTseShape top] : glyph-proc
include : VBarLeft SB 0 top include : VBarLeft SB 0 top

View file

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

View file

@ -8,7 +8,7 @@ glyph-module
glyph-block Letter-Greek-Upper-Gamma: begin glyph-block Letter-Greek-Upper-Gamma: begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives 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 glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft
define SLAB-AUTO 0 define SLAB-AUTO 0
@ -28,21 +28,33 @@ glyph-block Letter-Greek-Upper-Gamma: begin
include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut include : tagged 'serifRT' : DownwardRightSerif (RightSB - OX) top VJut
define GammaConfig : object define GammaConfig : object
standard { SLAB-AUTO } standard { SLAB-AUTO SLAB }
motionSerifed { SLAB-MOTION } 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 create-glyph "grek/Gamma.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : GammaShape CAP slabType 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 create-glyph "cyrl/ghe.upright.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : GammaShape XH slabType 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 'grek/Gamma' 0x393
select-variant 'cyrl/Ghe' 0x413 (shapeFrom -- 'grek/Gamma') select-variant 'cyrl/Ghe' 0x413 (shapeFrom -- 'grek/Gamma')
select-variant 'cyrl/GheDescender' 0x4F6 (follow -- 'cyrl/Ghe')
select-variant 'cyrl/ghe.upright' select-variant 'cyrl/ghe.upright'
select-variant 'cyrl/gheDescender.upright' (follow -- 'cyrl/ghe.upright')
alias 'grek/smcpGamma' 0x1D26 'cyrl/ghe.upright' alias 'grek/smcpGamma' 0x1D26 'cyrl/ghe.upright'
with-related-glyphs 'cyrl/GheHook' 0x494 'cyrl/Ghe' : lambda [src sel] : glyph-proc 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 [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * (1 - OverlayPos)) 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 define [CyrGeShape top] : glyph-proc
include : GammaShape top include : GammaShape top
eject-contour 'serifRT' eject-contour 'serifRT'

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Latin-K : begin glyph-block Letter-Latin-K : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives 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 [KBalance slab straightBar] : if slab (Width / 16) : if straightBar (Width / 32) 0
local [KBalanceRight slab straightBar] : if slab 0 : 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 define [KCyrlNormalDescender top straightBar slabLeft slab] : CyrDescender
RightSB + [KBalanceRight slab straightBar] - [KO slab straightBar top Stroke] 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 define [KHookTopBar slab straightBar] : union
VBarLeft (SB + [KBalance slab straightBar]) 0 (CAP - Hook - HalfStroke) 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 CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend 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 [SmallMSmooth df] : df.div * (0.5 * SmallSmooth + 0.375 * Stroke)
define [SmallMShoulderSpiro] : params [left right top bottom width fine df coBottom] : glyph-proc 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 Marks : markHalfStroke
glyph-block-import Letter-Shared : CreateAccentedComposition glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : nShoulder RightwardTailedBar DToothlessRise SerifFrame glyph-block-import Letter-Shared-Shapes : nShoulder RightwardTailedBar DToothlessRise SerifFrame
glyph-block-import Letter-Shared-Shapes : CyrTailDescender
glyph-block-export UShape glyph-block-export UShape
@ -167,6 +168,7 @@ glyph-block Letter-Latin-U : begin
select-variant 'smcpU' 0x1D1C (follow -- 'U') select-variant 'smcpU' 0x1D1C (follow -- 'U')
select-variant 'u' 'u' select-variant 'u' 'u'
select-variant 'cyrl/i.italic' (shapeFrom -- 'u') select-variant 'cyrl/i.italic' (shapeFrom -- 'u')
select-variant 'cyrl/i.italic.reduced' (shapeFrom -- 'u')
alias 'cyrl/i.BGR' null 'cyrl/i.italic' alias 'cyrl/i.BGR' null 'cyrl/i.italic'
with-related-glyphs 'cyrl/ibreve.BGR' null 'cyrl/i.BGR' : lambda [src sel] : glyph-proc 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 src] AS_BASE ALSO_METRICS
include [refer-glyph 'graveAbove'] 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 create-glyph 'grek/upsilon' 0x3C5 : glyph-proc
include : MarkSet.e include : MarkSet.e
set-base-anchor 'trailing' Middle 0 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 Common-Derivatives
glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrTailDescender
define SLAB-AUTO 1 define SLAB-AUTO 1
define SLAB-MOTION 2 define SLAB-MOTION 2
@ -89,8 +90,11 @@ glyph-block Letter-Latin-Upper-H : begin
select-variant 'cyrl/en' 0x43D (shapeFrom -- 'smcpH') select-variant 'cyrl/en' 0x43D (shapeFrom -- 'smcpH')
create-glyph 0x4A2 : composite-proc [refer-glyph 'cyrl/En'] [CyrDescender RightSB] build-related-composite 'cyrl/EnDescender' 0x4A2 'H' [CyrDescender RightSB (connex -- 0.5)]
create-glyph 0x4A3 : composite-proc [refer-glyph 'cyrl/en'] [CyrDescender RightSB] 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 create-glyph 'mathbb/H' 0x210D : glyph-proc
include : MarkSet.capital include : MarkSet.capital

View file

@ -9,7 +9,7 @@ glyph-module
glyph-block Letter-Latin-Upper-M : begin glyph-block Letter-Latin-Upper-M : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame glyph-block-import Letter-Shared-Shapes : SerifFrame CyrTailDescender
define FORM-FLAT 0 define FORM-FLAT 0
@ -87,6 +87,7 @@ glyph-block Letter-Latin-Upper-M : begin
set-width df.width set-width df.width
include : df.markSet.capital include : df.markSet.capital
include : MShape CAP df form slab slanted include : MShape CAP df form slab slanted
create-glyph "smcpM.\(suffix)" : glyph-proc create-glyph "smcpM.\(suffix)" : glyph-proc
local df : DivFrame 1 3 local df : DivFrame 1 3
set-width df.width set-width df.width
@ -99,6 +100,9 @@ glyph-block Letter-Latin-Upper-M : begin
alias 'grek/Mu' 0x39C 'M' alias 'grek/Mu' 0x39C 'M'
alias 'cyrl/Em' 0x41C '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 glyph-block-import Letter-Blackboard : BBS BBD BBBarRight
create-glyph 'mathbb/M' 0x1D544 : glyph-proc create-glyph 'mathbb/M' 0x1D544 : glyph-proc
local df : DivFrame 1 3 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 Common-Derivatives
glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Latin-Lower-M glyph-block-import Letter-Latin-Lower-M
glyph-block-import Letter-Shared-Shapes : CyrDescender
define TLeftX : SB + OX * 1.5 define TLeftX : SB + OX * 1.5
define TRightX : RightSB - OX * 1.5 define TRightX : RightSB - OX * 1.5
@ -43,7 +44,7 @@ glyph-block Letter-Latin-Upper-T : begin
include : MarkSet.if include : MarkSet.if
set-base-anchor 'bottomright' (Middle + HalfStroke * HVContrast) 0 set-base-anchor 'bottomright' (Middle + HalfStroke * HVContrast) 0
include : TShape CAP doST doSB 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 create-glyph "TBar.\(suffix)" : glyph-proc
include [refer-glyph "T.\(suffix)"] AS_BASE ALSO_METRICS 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 create-glyph "cyrl/teDescender.upright.\(suffix)" : glyph-proc
include : MarkSet.p include : MarkSet.p
include : TShape XH doST doSB 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 'T' 'T'
select-variant 'smcpT' 0x1D1B (follow -- '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 CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : ShoulderMidKnotLhsRev SerifFrame WithAIHSerifsMask 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 glyph-block-export HalfXStrand XStrand
define [HalfXStrand stb slab _leftx lefty rightx righty turn pStraight tension _fine] : glyph-proc 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 with-related-glyphs 'cyrl/Hadescender' 0x4B2 'cyrl/Ha' : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS 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 with-related-glyphs 'cyrl/hadescender' 0x4B3 'xCyrlHaDescenderBase' : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
include : CyrDescender RightSB (connex -- 0.5) include : CyrDescender RightSB
glyph-block-import Letter-Blackboard : BBS BBD glyph-block-import Letter-Blackboard : BBS BBD
define [BBXShape l r top] : let [kDiag : DiagCorDs top (r - l) BBD] : union 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) curl xb (zbot.y + LongJut)
alsoThruThem {{0.5 0.94}} alsoThruThem {{0.5 0.94}}
g4.left.end zbot.x (zbot.y + fine) [heading Leftward] 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 define allExports : object
Common-Derivatives `[select-variant orthographic-italic refer-glyph query-glyph Common-Derivatives `[select-variant orthographic-italic refer-glyph query-glyph
alias turned HDual HCombine VDual VCombine with-related-glyphs glyph-is-needed alias turned HDual HCombine VDual VCombine with-related-glyphs build-related-composite
HalfAdvance TurnMarks] glyph-is-needed HalfAdvance TurnMarks]
CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt
CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape
@ -138,11 +138,10 @@ define-macro glyph-block-import : syntax-rules
CenterTopSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric CenterTopSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric
DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab
NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook
LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender LeftHook HooktopLeftBar FlatSlashShape hookstart hookend FlipAround ScaleAround Realign
CyrLeftDescender FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape
WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs DiagCorDs HCrossBar VERY-FAR
OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter DiagCorDs MaskAbove MaskBelow MaskLeft MaskRight]
HCrossBar VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight]
define vartiableFilter : if externEnv.$glyphBlockVariableUsage$ define vartiableFilter : if externEnv.$glyphBlockVariableUsage$
lambda [x] externEnv.$glyphBlockVariableUsage$.(x) lambda [x] externEnv.$glyphBlockVariableUsage$.(x)

View file

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