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:
parent
f3c1c20782
commit
e5f3b6b951
21 changed files with 140 additions and 71 deletions
|
@ -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).
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue