More unify

This commit is contained in:
be5invis 2022-12-14 06:47:04 -08:00
parent c23890aa9d
commit d054ca6fee
19 changed files with 289 additions and 293 deletions

View file

@ -8,7 +8,7 @@ glyph-block Letter-Cyrillic-Che : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame RightwardTailedBar DToothlessRise
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrLeftDescender
glyph-block-import Letter-Shared-Shapes : CyrDescender
define BODY-STRAIGHT 0
define BODY-TAILED 1
@ -49,8 +49,8 @@ glyph-block Letter-Cyrillic-Che : begin
[Just SLAB-TAILED-BGR] sf.rt.inner
__ : glyph-proc
include : tagged 'SerifRB' : match slabType
[Just SLAB-ALL] sf.rb.full
[Just SLAB-ALL-BGR] sf.rb.full
[Just SLAB-ALL] sf.rb.fullSide
[Just SLAB-ALL-BGR] sf.rb.fullSide
[Just SLAB-LOWER] sf.rb.outer
__ : glyph-proc
@ -58,8 +58,12 @@ glyph-block Letter-Cyrillic-Che : begin
include : MarkSet.capital
include : CyrCheShape CAP [if SLAB 0.45 0.35] BODY-STRAIGHT : if SLAB SLAB-ALL SLAB-NONE
create-glyph 0x4B6 : composite-proc [refer-glyph 'cyrl/Che'] [CyrDescender RightSB]
create-glyph 0x4CB : composite-proc [refer-glyph 'cyrl/Che'] [CyrLeftDescender (RightSB - HVContrast * Stroke)]
create-glyph 0x4B6 : composite-proc
refer-glyph 'cyrl/Che'
CyrDescender.rSideJut RightSB 0
create-glyph 0x4CB : composite-proc
refer-glyph 'cyrl/Che'
CyrDescender.lSideJut (RightSB - HVContrast * Stroke) 0 (jut -- MidJutSide)
create-glyph 'cyrl/che.standard' : glyph-proc
include : MarkSet.e
@ -84,11 +88,15 @@ glyph-block Letter-Cyrillic-Che : begin
select-variant 'cyrl/che' 0x447
select-variant 'cyrl/che.BGR' (follow -- 'cyrl/che')
create-glyph 0x4B7 : composite-proc [refer-glyph 'cyrl/che.standard'] [CyrDescender RightSB]
create-glyph 0x4CC : composite-proc [refer-glyph 'cyrl/che.standard'] [CyrLeftDescender (RightSB - HVContrast * Stroke)]
create-glyph 0x4B7 : composite-proc
refer-glyph 'cyrl/che.standard'
CyrDescender.rSideJut RightSB 0
create-glyph 0x4CC : composite-proc
refer-glyph 'cyrl/che.standard'
CyrDescender.lSideJut (RightSB - HVContrast * Stroke) 0 (jut -- MidJutSide)
turned 'cyrl/Shha' 0x4BA 'cyrl/Che' Middle (CAP / 2)
derive-composites 'cyrl/ShhaDescender' 0x526 'cyrl/Shha' [CyrDescender RightSB]
derive-composites 'cyrl/ShhaDescender' 0x526 'cyrl/Shha' [CyrDescender.rSideJut RightSB 0]
define SwCheVBar : Math.min OverlayStroke (0.625 * (RightSB - SB - Stroke * 2 * HVContrast) / HVContrast)
create-glyph 'cyrl/CheVBar' 0x4B8 : glyph-proc

View file

@ -9,7 +9,7 @@ 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 : CyrDescender CyrTailDescender CyrHookDescender
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrTailDescender PalatalHook
define BODY-STRAIGHT 0
define BODY-TAILED 1
@ -62,14 +62,14 @@ 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
derive-composites 'cyrl/ElDescender' 0x52E 'cyrl/El' [CyrDescender RightSB]
derive-composites 'cyrl/elDescender' 0x52F 'cyrl/el.straight' [CyrDescender RightSB]
derive-composites 'cyrl/ElDescender' 0x52E 'cyrl/El' [CyrDescender.rSideJut RightSB 0]
derive-composites 'cyrl/elDescender' 0x52F 'cyrl/el.straight' [CyrDescender.rSideJut RightSB 0]
derive-composites 'cyrl/ElTail' 0x4C5 'cyrl/El' [CyrTailDescender RightSB]
derive-composites 'cyrl/elTail' 0x4C6 'cyrl/el.straight' [CyrTailDescender RightSB]
derive-composites 'cyrl/ElTail' 0x4C5 'cyrl/El' [CyrTailDescender.rSideJut RightSB 0]
derive-composites 'cyrl/elTail' 0x4C6 'cyrl/el.straight' [CyrTailDescender.rSideJut RightSB 0]
derive-composites 'cyrl/ElHook' 0x512 'cyrl/El' [CyrHookDescender RightSB]
derive-composites 'cyrl/elHook' 0x513 'cyrl/el.straight' [CyrHookDescender RightSB]
derive-composites 'cyrl/ElHook' 0x512 'cyrl/El' [PalatalHook.rSideJut RightSB 0]
derive-composites 'cyrl/elHook' 0x513 'cyrl/el.straight' [PalatalHook.rSideJut RightSB 0]
select-variant 'cyrl/el' 0x43B
alias 'cyrl/El.BGR' null 'grek/Lambda'

View file

@ -85,7 +85,7 @@ glyph-block Letter-Cyrillic-Sha : begin
define [CyrShchaShape top df] : glyph-proc
include : CyrShaShape top df
#eject-contour 'serifRB'
include : CyrDescender df.rightSB
include : CyrDescender.rSideJut df.rightSB 0 (refSw -- df.mvs)
create-glyph 'cyrl/Shcha' 0x429 : glyph-proc
local df : DivFrame para.diversityM 3
@ -103,13 +103,13 @@ glyph-block Letter-Cyrillic-Sha : begin
local df : DivFrame para.diversityM 3
set-width df.width
include [refer-glyph 'cyrl/sha.italic.toothed'] AS_BASE
include : CyrDescender df.rightSB
include : CyrDescender.rSideJut df.rightSB 0 (refSw -- df.mvs)
create-glyph 'cyrl/shcha.italic.motionSerifed' : glyph-proc
local df : DivFrame para.diversityM 3
set-width df.width
include [refer-glyph 'cyrl/sha.italic.motionSerifedShachaBase'] AS_BASE
include : CyrDescender df.rightSB
include : CyrDescender.rSideJut df.rightSB 0 (refSw -- df.mvs)
select-variant 'cyrl/shcha.italic'
alias 'cyrl/shcha.BGR' null 'cyrl/shcha.italic'

View file

@ -13,7 +13,7 @@ glyph-block Letter-Cyrillic-Tse : begin
include : VBarLeft SB 0 top
include : HBarBottom SB RightSB 0
include : VBarRight RightSB 0 top
include : CyrDescender RightSB
include : CyrDescender.rSideJut RightSB 0
if SLAB : let [sf : SerifFrame top 0 SB RightSB] : begin
include sf.lt.full
include sf.rt.full
@ -35,7 +35,7 @@ glyph-block Letter-Cyrillic-Tse : begin
widths.rhs sw
flat xTopBarLeft top [if SLAB [heading Rightward] null]
curl xTopBarRight top [if SLAB [heading Rightward] null]
include : CyrDescender right
include : CyrDescender.rSideJut right 0
if SLAB : let [sf : SerifFrame top 0 left right sw] : begin
include sf.rt.outer
@ -58,12 +58,12 @@ glyph-block Letter-Cyrillic-Tse : begin
create-glyph 'cyrl/tse.italic.toothed' : glyph-proc
include [refer-glyph "u.toothed"] AS_BASE
eject-contour 'serifRB'
include : CyrDescender RightSB
include : CyrDescender.rSideJut RightSB 0
create-glyph 'cyrl/tse.italic.motionSerifed' : glyph-proc
include [refer-glyph "u.motionSerifed"] AS_BASE
eject-contour 'serifRB'
include : CyrDescender RightSB
include : CyrDescender.rSideJut RightSB 0
create-glyph 'cyrl/TsTse' 0x4B4 : glyph-proc
include : MarkSet.capital
@ -77,13 +77,13 @@ glyph-block Letter-Cyrillic-Tse : begin
include [refer-glyph "u.toothed"] AS_BASE ALSO_METRICS
include [refer-glyph "tildeAbove"]
eject-contour 'serifRB'
include : CyrDescender RightSB
include : CyrDescender.rSideJut RightSB 0
create-glyph 'cyrl/tstse.italic.motionSerifed' : glyph-proc
include [refer-glyph "u.motionSerifed"] AS_BASE ALSO_METRICS
include [refer-glyph "tildeAbove"]
eject-contour 'serifRB'
include : CyrDescender RightSB
include : CyrDescender.rSideJut RightSB 0
select-variant 'cyrl/tse.italic'
select-variant 'cyrl/tstse.italic' (follow -- 'cyrl/tse.italic')

View file

@ -137,7 +137,11 @@ glyph-block Letter-Cyrillic-Zhe : begin
create-glyph "cyrl/ZheDescender.\(suffix)" : composite-proc
refer-glyph "cyrl/Zhe.\(suffix)"
CyrDescender ([DivFrame para.diversityM 3].rightSB - O * 2)
local df : DivFrame para.diversityM 3
CyrDescender.r
xLink -- df.rightSB - 0.5 * HVContrast * df.mvs
x -- df.rightSB + SideJut
y -- 0
create-glyph "cyrl/zhe.\(suffix)" : glyph-proc
define df : DivFrame para.diversityM 3
@ -147,7 +151,11 @@ glyph-block Letter-Cyrillic-Zhe : begin
create-glyph "cyrl/zheDescender.\(suffix)" : composite-proc
refer-glyph "cyrl/zhe.\(suffix)"
CyrDescender ([DivFrame para.diversityM 3].rightSB - O * 2)
local df : DivFrame para.diversityM 3
CyrDescender.r
xLink -- df.rightSB - 0.5 * HVContrast * df.mvs
x -- df.rightSB + SideJut
y -- 0
create-glyph "cyrl/zhe.BGR.\(suffix)" : glyph-proc
define df : DivFrame para.diversityM 3

View file

@ -54,8 +54,8 @@ glyph-block Letter-Greek-Pi : begin
include [refer-glyph src] AS_BASE
include : refer-glyph "macronAbove"
derive-composites 'cyrl/PeDescender' 0x524 'cyrl/Pe' [CyrDescender RightSB]
derive-composites 'cyrl/peDescender.upright' null 'cyrl/pe.upright' [CyrDescender RightSB]
derive-composites 'cyrl/PeDescender' 0x524 'cyrl/Pe' [CyrDescender.rSideJut RightSB 0]
derive-composites 'cyrl/peDescender.upright' null 'cyrl/pe.upright' [CyrDescender.rSideJut RightSB 0]
create-glyph 'grek/pi' 0x3C0 : glyph-proc
include : MarkSet.e

View file

@ -9,8 +9,8 @@ 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 CyrDescender CyrHookDescender
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay VerticalHook
glyph-block-import Letter-Shared-Shapes : nShoulder CyrDescender
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay VerticalHook PalatalHook
glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft
glyph-block-import Letter-Latin-Upper-F : xMidBarShrink
@ -60,11 +60,17 @@ glyph-block Letter-Greek-Upper-Gamma: begin
create-glyph "cyrl/GheDescender.\(suffix)" : glyph-proc
include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS
include : CyrDescender (GammaBarLeft + Stroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
include : CyrDescender.rSideJut
x -- GammaBarLeft + Stroke * HVContrast
y -- 0
jut -- MidJutSide
create-glyph "cyrl/GheDHook.\(suffix)" : glyph-proc
include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS
include : CyrHookDescender (GammaBarLeft + Stroke * HVContrast) (overflow -- (MidJutCenter - HalfStroke * HVContrast))
include : PalatalHook.rSideJut
x -- GammaBarLeft + Stroke * HVContrast
y -- 0
jut -- MidJutSide
create-glyph "cyrl/ghe.upright.\(suffix)" : glyph-proc
include : MarkSet.e
@ -72,11 +78,17 @@ glyph-block Letter-Greek-Upper-Gamma: begin
create-glyph "cyrl/gheDescender.upright.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS
include : CyrDescender (GammaBarLeft + Stroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
include : CyrDescender.rSideJut
x -- GammaBarLeft + Stroke * HVContrast
y -- 0
jut -- MidJutSide
create-glyph "cyrl/gheDHook.upright.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS
include : CyrHookDescender (GammaBarLeft + Stroke * HVContrast) (overflow -- (MidJutCenter - HalfStroke * HVContrast))
include : PalatalHook.rSideJut
x -- GammaBarLeft + Stroke * HVContrast
y -- 0
jut -- MidJutSide
create-glyph "cyrl/Ge.\(suffix)" : glyph-proc
include : CyrlGeMarks.capital

View file

@ -275,20 +275,16 @@ glyph-block Letter-Latin-K : begin
if (slab && !tailed) : include : RightwardBottomSerif dim.slabStartX 0 SideJut
define [KCyrlCursiveDescender top straightBar slabLeft slab] : begin
define dim : KCursiveLoopAndLegDimen top straightBar slabLeft slab
return : CyrDescender dim.slabStartX
define [KCyrlNormalDescender top straightBar slabLeft slab] : CyrDescender
RightSB + [KBalanceRight slab straightBar] - [KO slab straightBar top Stroke]
connex -- [if straightBar 1 0.1]
define [KPalatalHook top straightBar slabLeft slab] : begin
define [KDescender shape top straightBar slabLeft slab] : begin
local xPos : RightSB + [KBalanceRight slab straightBar] - [KO slab straightBar top Stroke]
return : PalatalHook.r
return : shape.r
x -- xPos + SideJut
y -- 0
xLink -- xPos - [if straightBar 1 0.1] * HVContrast * Stroke
define [KCyrlNormalDescender top straightBar slabLeft slab] : begin
return : KDescender CyrDescender top straightBar slabLeft slab
define [KPalatalHook top straightBar slabLeft slab] : begin
return : KDescender PalatalHook top straightBar slabLeft slab
define [KHookTopBar slab straightBar] : HooktopLeftBar.inner
x -- SB + [KBalance slab straightBar]

View file

@ -9,8 +9,7 @@ glyph-block Letter-Latin-Lower-H : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar nShoulder nShoulderMask
glyph-block-import Letter-Shared-Shapes : CyrDescender CyrLeftDescender HooktopLeftBar
glyph-block-import Letter-Shared-Shapes : VerticalHook
glyph-block-import Letter-Shared-Shapes : CyrDescender HooktopLeftBar VerticalHook
define [SmallHSerifs tailed hookTop] : glyph-proc : if SLAB : begin
if [not hookTop] : include : tagged 'serifLT' : LeftwardTopSerif SB Ascender SideJut
@ -98,7 +97,7 @@ glyph-block Letter-Latin-Lower-H : begin
select-variant 'hBar' 0x127 (follow -- 'h')
select-variant 'cyrl/shha' 0x4BB (shapeFrom -- 'h')
derive-composites 'cyrl/shhaDescender' 0x527 'cyrl/shha' [CyrDescender RightSB]
derive-composites 'cyrl/shhaDescender' 0x527 'cyrl/shha' [CyrDescender.rSideJut RightSB 0]
select-variant 'hHookTop' 0x266
select-variant 'hHookTopLTail' 0x267

View file

@ -267,13 +267,16 @@ glyph-block Letter-Latin-Lower-M : begin
select-variant 'cyrl/te.italic' (shapeFrom -- 'm')
alias 'cyrl/te.BGR' null 'cyrl/te.italic'
derive-composites 'cyrl/teDescender.italic' null 'cyrl/te.italic'
CyrDescender [DivFrame para.diversityM 3].rightSB
derive-composites 'mPalatalHook' 0x1D86 'cyrl/te.italic'
derive-composites 'cyrl/teDescender.italic' null 'cyrl/te.italic' : do
local df : DivFrame para.diversityM 3
CyrDescender.rSideJut df.rightSB 0 (refSw -- df.mvs)
derive-composites 'mPalatalHook' 0x1D86 'cyrl/te.italic' : do
local df : DivFrame para.diversityM 3
PalatalHook.r
xLink -- [DivFrame para.diversityM 3].rightSB
x -- [DivFrame para.diversityM 3].rightSB + SideJut
xLink -- df.rightSB
x -- df.rightSB + SideJut
y -- 0
refSw -- df.mvs
select-variant 'mLTail' 0x271
select-variant 'turnmLeg' 0x270 (follow -- 'm')

View file

@ -154,7 +154,7 @@ glyph-block Letter-Latin-Lower-N : begin
CreateAccentedComposition 'nTildeOver' 0x1D70 'n' 'tildeOverWide'
derive-composites 'cyrl/peDescender.italic' null 'cyrl/peItalicDescBase' [CyrDescender RightSB]
derive-composites 'cyrl/peDescender.italic' null 'cyrl/peItalicDescBase' [CyrDescender.rSideJut RightSB 0]
derive-composites 'nPalatalHook' 0x1D87 'cyrl/peItalicDescBase'
PalatalHook.r
xLink -- RightSB

View file

@ -18,7 +18,7 @@ glyph-block Letter-Latin-S : begin
glyph-block-import Letter-Shared-Shapes : ArcStartSerifL ArcEndSerifR
glyph-block-import Letter-Shared-Shapes : ArcStartInwardSerifR ArcEndInwardSerifL
glyph-block-import Letter-Shared-Shapes : ArcStartInwardSerifL ArcEndInwardSerifR
glyph-block-import Letter-Shared-Shapes : PalatalHook RetroflexHook
glyph-block-import Letter-Shared-Shapes : PalatalHook RetroflexHook CyrDescender
define SLAB-NONE 0
define SLAB-CLASSICAL 1
@ -211,9 +211,6 @@ glyph-block Letter-Latin-S : begin
[Just SLAB-INWARD] : ArcEndInwardSerifR RightSB bot sw hook
__ : glyph-proc
define CyrlGeMarks : object
e : MarkSet.OfZone { .top (XH + AccentStackOffset / 2) .bot 0 }
define SConfig : object
serifless { SLAB-NONE SLAB-NONE }
unilateralSerifed { SLAB-CLASSICAL SLAB-NONE }
@ -278,26 +275,6 @@ glyph-block Letter-Latin-S : begin
include : RevSAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
include : RevSAutoSlabEnd doBS 0 [AdviceStroke2 2 3 XH] Hook
create-glyph "cyrl/gheDescender.italic.\(suffix)" : glyph-proc
include : MarkSet.e
include : RevSmallSStroke doTS SLAB-CLASSICAL [AdviceStroke2 2 3 XH] EssLower
include : RevSAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
include : ArcEndSerifR RightSB 0 [AdviceStroke2 2 3 XH] Hook AccentStackOffset
create-glyph "cyrl/gheDHook.italic.\(suffix)" : glyph-proc
include : MarkSet.e
include : RevSmallSStroke doTS SLAB-CLASSICAL [AdviceStroke2 2 3 XH] EssLower
include : RevSAutoSlabStart doTS XH [AdviceStroke2 2 3 XH] Hook
local hd : FlatHookDepth [DivFrame 1]
local hookSw : ArcStartSerifWidth : AdviceStroke2 2 3 XH
include : dispiro
widths.rhs hookSw
flat RightSB (Hook - O * 2) [heading Downward]
curl RightSB (hd.y - Hook - 0.25 * hookSw) [heading Downward]
arcvh
flat (RightSB - hd.x + 0.25 * hookSw * HVContrast) (0 - Hook)
curl (RightSB - HookX - 0.5 * hookSw * HVContrast) (0 - Hook)
define [UpperSBaseWithAttach] : glyph-proc
include : SAutoSlabStart doTS CAP Stroke Hook
local stroke : include : SStrokeImpl CAP 0 doTS doBS [AdviceStroke2 2 3 CAP] EssUpper
@ -332,17 +309,6 @@ glyph-block Letter-Latin-S : begin
flat (RightSB - 1) Descender [widths sw 0]
curl RightSB Descender
create-glyph "SRTail.\(suffix)" : glyph-proc
include [refer-glyph "S.\(suffix)"] AS_BASE ALSO_METRICS
include : RetroflexHook.l SB 0 (refSw -- [AdviceStroke2 2 3 CAP])
include : ExtendBelowBaseAnchors (-Hook)
create-glyph "sRTail.\(suffix)" : glyph-proc
include [refer-glyph "s.\(suffix)"] AS_BASE ALSO_METRICS
include : RetroflexHook.l SB 0 (refSw -- [AdviceStroke2 2 3 XH])
include : ExtendBelowBaseAnchors (-Hook)
select-variant 'S' 'S'
link-reduced-variant 'S/sansSerif' 'S' MathSansSerif
select-variant 's' 's'
@ -350,6 +316,9 @@ glyph-block Letter-Latin-S : begin
select-variant 'smcpS' 0xA731 (follow -- 'S')
select-variant 'revS' 0x1A7 (follow -- 'S')
select-variant 'revs' 0x1A8 (follow -- 's')
alias 'cyrl/Dze' 0x405 'S'
alias 'cyrl/dze' 0x455 's'
alias 'cyrl/ghe.italic' null 'revs'
select-variant 'DollarKernelStd' (follow -- 'S')
select-variant 'DollarKernelCap' (follow -- 'S')
@ -357,18 +326,26 @@ glyph-block Letter-Latin-S : begin
select-variant 'SSwash' 0x2C7E
select-variant 'sSwash' 0x23F
select-variant 'SRTail' 0xA7C5
select-variant 'sRTail' 0x282
alias 'cyrl/Dze' 0x405 'S'
alias 'cyrl/dze' 0x455 's'
alias 'cyrl/ghe.italic' null 'revs'
select-variant 'cyrl/gheDescender.italic' null (follow -- 'sSwash')
select-variant 'cyrl/gheDHook.italic' null (follow -- 'sSwash')
select-variant 'S/descBase' (shapeFrom -- 'S') (follow -- 'SRTail')
select-variant 's/descBase' (shapeFrom -- 's') (follow -- 'sRTail')
select-variant 'revs/descBase' (shapeFrom -- 'revs') (follow -- 'sRTail')
select-variant 's/phoneticRight'
derive-composites 'SRTail' 0xA7C5 'S/descBase'
RetroflexHook.l SB 0 (refSw -- [AdviceStroke 2 3 CAP])
derive-composites 'sRTail' 0x282 's/descBase'
RetroflexHook.l SB 0 (refSw -- [AdviceStroke 2 3 XH])
derive-composites 'cyrl/gheDescender.italic' null 'revs/descBase'
CyrDescender.r RightSB 0 (refSw -- [AdviceStroke 2 3 XH])
derive-composites 'cyrl/gheDHook.italic' null 'revs/descBase'
PalatalHook.r RightSB 0 (refSw -- [AdviceStroke 2 3 XH])
derive-composites 'cyrl/ghayn.italic' null 'revs'
FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75
derive-composites 'cyrl/gheStrokeHook.italic' null 'cyrl/gheDHook.italic'
FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75
derive-composites 'sPalatalHook' 0x1D8A 's' : PalatalHook.r
x -- [mix (Middle + CorrectionOMidS) RightSB 0.75]
y -- 0
@ -424,11 +401,7 @@ glyph-block Letter-Latin-S : begin
.y ([if (sign < 0) 0.25 0.375] * sign * BBD * [Math.cos theta])
}
derive-composites 'cyrl/ghayn.italic' null 'revs'
FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75
derive-composites 'cyrl/gheStrokeHook.italic' null 'cyrl/gheDHook.italic'
FlatSlashShape Middle (XH / 2) (OverlayStroke / 2) (-0.2) 0.75
define DollarConfig : object
open { 0.95 0.05 (Descender / 2) 0 "std" }

View file

@ -218,7 +218,9 @@ glyph-block Letter-Latin-U : begin
include [refer-glyph src] AS_BASE ALSO_METRICS
include [refer-glyph 'graveAbove']
derive-composites 'cyrl/iShortTail.italic' null 'cyrl/i.italic.reduced' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB]
derive-composites 'cyrl/iShortTail.italic' null 'cyrl/i.italic.reduced'
refer-glyph 'breveAbove'
CyrTailDescender.rSideJut RightSB 0
derive-composites 'uRTailBR' 0x1D99 'u/uRTailBase'
RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke)

View file

@ -183,11 +183,11 @@ glyph-block Letter-Latin-Upper-H : begin
select-variant 'cyrl/en.BGR' (shapeFrom -- 'smcpH')
alias 'grek/heta' 0x371 'halfSmcpH.serifless'
derive-composites 'cyrl/EnDescender' 0x4A2 'cyrl/En' [CyrDescender RightSB]
derive-composites 'cyrl/enDescender' 0x4A3 'cyrl/en/descenderBase' [CyrDescender RightSB]
derive-composites 'cyrl/EnDescender' 0x4A2 'cyrl/En' [CyrDescender.rSideJut RightSB 0]
derive-composites 'cyrl/enDescender' 0x4A3 'cyrl/en/descenderBase' [CyrDescender.rSideJut RightSB 0]
derive-composites 'cyrl/EnTail' 0x4C9 'cyrl/En' [CyrTailDescender RightSB]
derive-composites 'cyrl/enTail' 0x4CA 'cyrl/en/descenderBase' [CyrTailDescender RightSB]
derive-composites 'cyrl/EnTail' 0x4C9 'cyrl/En' [CyrTailDescender.rSideJut RightSB 0]
derive-composites 'cyrl/enTail' 0x4CA 'cyrl/en/descenderBase' [CyrTailDescender.rSideJut RightSB 0]
select-variant 'cyrl/EnGhe' 0x4A4 (follow -- 'H')
select-variant 'cyrl/enghe' 0x4A5 (follow -- 'cyrl/en')

View file

@ -132,8 +132,12 @@ glyph-block Letter-Latin-Upper-M : begin
alias-reduced-variant 'grek/Mu/sansSerif' 'grek/Mu' 'M/sansSerif' MathSansSerif
alias 'cyrl/Em' 0x41C 'M'
derive-composites 'cyrl/EmTail' 0x4CD 'cyrl/Em' [CyrTailDescender [DivFrame para.diversityM 3].rightSB]
derive-composites 'cyrl/emTail' 0x4CE 'cyrl/em' [CyrTailDescender [DivFrame para.diversityM 3].rightSB]
derive-composites 'cyrl/EmTail' 0x4CD 'cyrl/Em' : do
local df : DivFrame para.diversityM 3
CyrTailDescender.rSideJut df.rightSB 0 (sw -- df.mvs)
derive-composites 'cyrl/emTail' 0x4CE 'cyrl/em' : do
local df : DivFrame para.diversityM 3
CyrTailDescender.rSideJut df.rightSB 0 (sw -- df.mvs)
alias 'grek/San' 0x3FA 'M.grekCapitalSan'
alias 'grek/san' 0x3FB 'smcpMWithDescender.grekSmallSan'

View file

@ -157,5 +157,5 @@ glyph-block Letter-Latin-Inverse-Upper-N : begin
alias 'cyrl/smcpI' 0x1D0E 'cyrl/i.upright'
derive-composites 'cyrl/IShortTail' 0x48A 'cyrl/I' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB]
derive-composites 'cyrl/iShortTail.upright' null 'cyrl/i.upright' [refer-glyph 'breveAbove'] [CyrTailDescender RightSB]
derive-composites 'cyrl/IShortTail' 0x48A 'cyrl/I' [refer-glyph 'breveAbove'] [CyrTailDescender.rSideJut RightSB 0]
derive-composites 'cyrl/iShortTail.upright' null 'cyrl/i.upright' [refer-glyph 'breveAbove'] [CyrTailDescender.rSideJut RightSB 0]

View file

@ -47,7 +47,10 @@ glyph-block Letter-Latin-Upper-T : begin
include : df.markSet.capDesc
set-base-anchor 'bottomright' (df.middle + HalfStroke * HVContrast) 0
include : TShape df CAP doST doSB
include : CyrDescender (df.middle + HalfStroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
include : CyrDescender.rSideJut
x -- (df.middle + HalfStroke * HVContrast)
y -- 0
jut -- [if doSB MidJutCenter Jut]
create-glyph "TBar.\(suffix)" : glyph-proc
include [refer-glyph "T.\(suffix)"] AS_BASE ALSO_METRICS
@ -69,7 +72,10 @@ glyph-block Letter-Latin-Upper-T : begin
set-width df.width
include : df.markSet.p
include : TShape df XH doST doSB
include : CyrDescender (df.middle + HalfStroke * HVContrast) (overflow -- [if doSB (MidJutCenter - HalfStroke * HVContrast)])
include : CyrDescender.rSideJut
x -- (df.middle + HalfStroke * HVContrast)
y -- 0
jut -- [if doSB MidJutCenter Jut]
turned "turnT.\(suffix)" nothing "T.\(suffix)" df.middle (CAP / 2)

View file

@ -10,19 +10,20 @@ glyph-block Letter-Latin-X : begin
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 : CyrDescender CyrHookDescender
glyph-block-import Letter-Shared-Shapes : CyrDescender PalatalHook
glyph-block-export HalfXStrand
define [HalfXStrand stb fSlab _leftx lefty rightx righty turn pStraight tension _fine] : glyph-proc
local sbCor : if stb ([StrokeWidthBlend 1 6] * OX * ([Math.abs (lefty - righty)] / CAP)) 0
local leftx : _leftx + ((HalfStroke * HVContrast + sbCor) * [if (rightx > _leftx) 1 (-1)])
local leftx : _leftx + (HalfStroke * HVContrast + [Math.max (-SideJut) sbCor]) * [if (rightx > _leftx) 1 (-1)]
local fine : (_fine || Stroke) * 0.5
if stb : begin
local hst : HalfStroke * [DiagCor (righty - lefty) (rightx - leftx) 0 0]
local hse : HalfStroke * [Math.min 0.97 ([AdviceStroke 3] / Stroke)]
local leftx2 : _leftx + (hst * HVContrast + [Math.max (-SideJut) sbCor]) * [if (rightx > _leftx) 1 (-1)]
include : dispiro
corner leftx lefty [widths.heading hst hst [if (lefty < righty) Upward Downward]]
corner leftx2 lefty [widths.heading hst hst [if (lefty < righty) Upward Downward]]
corner rightx righty [widths hse hse]
: else : begin
@ -53,10 +54,12 @@ glyph-block Letter-Latin-X : begin
XStrand fStraight fSlab SB bottom RightSB top turn 0.4 tension
XStrand fStraight fSlab SB top RightSB bottom turn 0.4 tension
export : define [StraightBase fSlab top bottom turn tension] : XBase true fSlab top bottom turn tension
export : define [CurlyBase fSlab top bottom turn tension] : XBase false fSlab top bottom turn tension
export : define [StraightBase fSlab top bottom turn tension]
XBase true fSlab top bottom turn tension
export : define [CurlyBase fSlab top bottom turn tension]
XBase false fSlab top bottom turn tension
define [XCursiveHalfShape top] : glyph-proc
define [XCursiveHalfShape top bottom] : glyph-proc
local ada : ArchDepthAOf (ArchDepth * 0.8) (Width / 2)
local adb : ArchDepthBOf (ArchDepth * 0.8) (Width / 2)
@ -82,22 +85,21 @@ glyph-block Letter-Latin-X : begin
ShoulderMidKnotLhsRev (xTurn) (top - O) fineMid swEnd (-1) (-1)
archv 16
flat (xCenterRight - HVContrast * fineMid) (top - ada) [widths.lhs fineMid]
curl (xCenterRight - HVContrast * fineMid) (top / 2 + O)
curl (xCenterRight - HVContrast * fineMid) ([mix bottom top 0.5] + O)
define lowerHalf : include : dispiro
flat (xCenterRight - 0.5 * HVContrast * fineMid) (top / 2 - O) [widths.center fineMid]
curl (xCenterRight - 0.5 * HVContrast * fineMid) [Math.min adb (swMid + rIn)]
flat (xCenterRight - 0.5 * HVContrast * fineMid) ([mix bottom top 0.5] - O) [widths.center fineMid]
curl (xCenterRight - 0.5 * HVContrast * fineMid) (bottom + [Math.min adb (swMid + rIn)])
arcvh 16
DiagonalTailF 1 [DivFrame 1] (xCenterRight - 0.5 * HVContrast * Stroke + TanSlope * rIn) 0 rIn 50 flatHookDepth Stroke
DiagonalTailF 1 [DivFrame 1] (xCenterRight - 0.5 * HVContrast * Stroke + TanSlope * rIn) bottom rIn 50 flatHookDepth Stroke
define lowerHalfLastKnot lowerHalf.rhsKnots.(lowerHalf.rhsKnots.length - 1)
set-base-anchor 'cyrlDescenderAttach' lowerHalfLastKnot.x lowerHalfLastKnot.y
export : define [CursiveBase fSerifs top bottom turn tension]
WithTransform [ApparentTranslate 0 bottom] : glyph-proc
include : XCursiveHalfShape (top - bottom)
include : FlipAround Middle ((top - bottom) / 2)
include : XCursiveHalfShape (top - bottom)
export : define [CursiveBase fSerifs top bottom turn tension] : glyph-proc
include : XCursiveHalfShape top bottom
include : FlipAround Middle [mix bottom top 0.5]
include : XCursiveHalfShape top bottom
# Serifs
export : define [FullSerifs top bot] : let [sf : SerifFrame top bot SB RightSB]
@ -155,11 +157,25 @@ glyph-block Letter-Latin-X : begin
select-variant 'latn/chi' 0xAB53 (follow -- 'x')
select-variant 'latn/Chi' 0xA7B3 (follow -- 'x')
derive-composites 'cyrl/HaDescender' 0x4B2 'cyrl/Ha' [CyrDescender RightSB]
derive-composites 'cyrl/haDescender' 0x4B3 'cyrl/ha' [CyrDescender RightSB]
derive-composites 'cyrl/HaHook' 0x4FC 'cyrl/Ha' [CyrHookDescender RightSB]
derive-composites 'cyrl/haHook' 0x4FD 'cyrl/ha' [CyrHookDescender RightSB]
define [AddDescender Ctor] : function [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
local attachAnchor currentGlyph.baseAnchors.cyrlDescenderAttach
if attachAnchor
: then : begin
local attach : currentGlyph.gizmo.unapply attachAnchor
include : Ctor.r attach.x 0 (yAttach -- attach.y)
: else : begin
local sw : Ctor.Sw Stroke
include : Ctor.r
x -- RightSB + SideJut + sw * TanSlope
y -- 0
xLink -- RightSB - HVContrast * HalfStroke
derive-glyphs 'cyrl/HaDescender' 0x4B2 'cyrl/Ha' [AddDescender CyrDescender]
derive-glyphs 'cyrl/haDescender' 0x4B3 'cyrl/ha' [AddDescender CyrDescender]
derive-glyphs 'cyrl/HaHook' 0x4FC 'cyrl/Ha' [AddDescender PalatalHook]
derive-glyphs 'cyrl/haHook' 0x4FD 'cyrl/ha' [AddDescender PalatalHook]
alias 'xPalatalHook' 0x1D8D 'cyrl/haHook'
define [CyrlHaBarShape top] : HOverlayBar [mix SB RightSB 0.08] [mix SB RightSB 0.92] (top / 2)

View file

@ -440,6 +440,7 @@ glyph-block Letter-Shared-Shapes : begin
glyph-block-export SerifFrame
define [SerifFrame] : params [top bot left right [sw Stroke]] : begin
local jutFS MidJutSide
local jutIn : JutIn left right
local sideJutIn : jutIn - 0.5 * sw * HVContrast
local lBarCenter : left + 0.5 * sw * HVContrast
@ -457,10 +458,12 @@ glyph-block Letter-Shared-Shapes : begin
inner : tagged 'serifRT' : LeftwardTopSerif rBarInner top sideJutIn sw
lb : object
full : tagged 'serifLB' : CenterBottomSerifAsymmetric lBarCenter bot Jut jutIn sw
fullSide : tagged 'serifLB' : CenterBottomSerifAsymmetric lBarCenter bot Jut jutFS sw
outer : tagged 'serifLB' : LeftwardBottomSerif left bot SideJut sw
inner : tagged 'serifLB' : RightwardBottomSerif lBarInner bot sideJutIn sw
rb : object
full : tagged 'serifRB' : CenterBottomSerifAsymmetric rBarCenter bot jutIn Jut sw
fullSide : tagged 'serifRB' : CenterBottomSerifAsymmetric rBarCenter bot jutFS Jut sw
outer : tagged 'serifRB' : RightwardBottomSerif right bot SideJut sw
inner : tagged 'serifRB' : LeftwardBottomSerif rBarInner bot sideJutIn sw
@ -482,54 +485,6 @@ glyph-block Letter-Shared-Shapes : begin
alsoThruThem {{0.5 0.94}}
straight.left.end zbot.x (zbot.y + fine) [heading Leftward]
glyph-block-export CyrDescender
define [CyrDescender] : params [x [connex 0.5] [overflow nothing]] : glyph-proc
local attachAnchor currentGlyph.baseAnchors.cyrlDescenderAttach
if attachAnchor
: then : begin
local attach : currentGlyph.gizmo.unapply attachAnchor
local descenderOverflow : fallback overflow SideJut
include : union
VBarRight attach.x (HalfStroke - LongJut) attach.y VJutStroke
HBarTop (attach.x - connex * Stroke * HVContrast) attach.x attach.y
: else : begin
local descenderOverflow : fallback overflow SideJut
include : union
VBarRight (x + descenderOverflow + 0.125 * Stroke) (HalfStroke - LongJut) Stroke VJutStroke
HBarTop (x - connex * Stroke * HVContrast) (x + descenderOverflow) Stroke
glyph-block-export CyrHookDescender
define [CyrHookDescender] : params [x [connex 0.5] [overflow nothing]] : begin
local descenderOverflow : fallback overflow SideJut
local xRef : x + descenderOverflow + 0.25 * Stroke
PalatalHook.r
x -- x + descenderOverflow + 0.25 * Stroke
y -- 0
xAttach -- (x - connex * Stroke * HVContrast)
yOverflow -- Stroke
glyph-block-export CyrTailDescender
define [CyrTailDescender] : params [x [connex 0.5] [overflow nothing]] : begin
local descenderOverflow SideJut
local xRef : x + descenderOverflow + (0.3 + TanSlope) * Stroke
return : union
difference
ExtLineLhs 4 VJutStroke (xRef - 0.275 * LongJut) (HalfStroke - LongJut) xRef Stroke
MaskAbove Stroke
MaskBelow (HalfStroke - LongJut)
if (!SLAB && descenderOverflow > Stroke * 0.7 || connex)
HBarTop (x - connex * Stroke * HVContrast) (x + descenderOverflow) Stroke
glyph-proc
glyph-block-export CyrLeftDescender
define [CyrLeftDescender] : params [x [connex 0.5] [overflow nothing]] : begin
local descenderOverflow : fallback overflow SideJut
return : union
VBarLeft (x - descenderOverflow - 0.25 * Stroke) (HalfStroke - LongJut) Stroke VJutStroke
if (!SLAB && descenderOverflow > Stroke * 0.75 || connex)
HBarTop (x + connex * Stroke * HVContrast) (x - descenderOverflow) Stroke
glyph-proc
# Generic "connected" vertical hooks
glyph-block-export VerticalHook
define VerticalHook : namespace
@ -571,17 +526,58 @@ glyph-block Letter-Shared-Shapes : begin
sw -- sw
yExtension -- yExtension
# Palatal Hooks
glyph-block-export PalatalHook
define PalatalHook : namespace
define [Impl x y xLink yAttach yOverflow sw maskOut] : glyph-proc
include : ExtendBelowBaseAnchors (y - Hook)
include : difference
union
do "Descender shapes"
define [xLinkStroke xLink x yAttach sw]
if (xLink == nothing) [no-shape] : HBarBottom
Math.min xLink (x - 0.5 * HVContrast * sw)
Math.max xLink (x + 0.5 * HVContrast * sw)
begin yAttach
define [Descenders Impl] : namespace
export : define Sw ArcStartSerifWidth
export : define [adviceGap refSw] : HVContrast * [Sw refSw] + [Math.max (Width / 16) [AdviceStroke 12]]
export : define [m] : params [x y xLink [yAttach y] [yOverflow 0] [refSw Stroke] [maskOut null]] : begin
local sw : Sw refSw
return : Impl x y xLink yAttach yOverflow sw maskOut
export : define [l] : params [x y xLink [yAttach y] [yOverflow 0] [refSw Stroke] [maskOut null]] : begin
local sw : Sw refSw
return : Impl (x + 0.5 * sw * HVContrast) y xLink yAttach yOverflow sw maskOut
export : define [r] : params [x y xLink [yAttach y] [yOverflow 0] [refSw Stroke] [maskOut null]] : begin
local sw : Sw refSw
return : Impl (x - 0.5 * sw * HVContrast) y xLink yAttach yOverflow sw maskOut
export : define [lSideJut] : params [x y [yOverflow 0] [refSw Stroke] [jut Jut]] : begin
local sw : Sw refSw
local xPos : x + 0.5 * HVContrast * (refSw + sw) - jut - sw * TanSlope
return : Impl xPos y x y yOverflow sw
export : define [rSideJut] : params [x y [yOverflow 0] [refSw Stroke] [jut Jut]] : begin
local sw : Sw refSw
local xPos : x - 0.5 * HVContrast * (refSw + sw) + jut + sw * TanSlope
return : Impl xPos y x y yOverflow sw
# Descender of cyrillics
glyph-block-export CyrDescender
define CyrDescender : Descenders : function [x y xLink yAttach sw] : union
xLinkStroke xLink x yAttach sw
VBar x yAttach (y - LongJut) sw
glyph-block-export CyrTailDescender
define CyrTailDescender : Descenders : function [x y xLink yAttach sw] : union
xLinkStroke xLink x yAttach sw
intersection
MaskBelow (yAttach + Stroke)
MaskAbove (y - LongJut)
ExtLineCenter 16 sw (x - 0.125 * LongJut) (y + 0.5 * sw - LongJut) x y
# Palatal Hooks
glyph-block-export PalatalHook
define PalatalHook : Descenders : function [x y xLink yAttach yOverflow sw maskOut] : glyph-proc
include : ExtendBelowBaseAnchors (y - Hook)
include : difference
union
xLinkStroke xLink x yAttach sw
VerticalHook.m
x -- x
y -- y
@ -591,24 +587,10 @@ glyph-block Letter-Shared-Shapes : begin
yExtension -- yAttach + yOverflow - y
if maskOut maskOut [no-shape]
export : define [r] : params [x y xLink [yAttach y] [yOverflow 0] [refSw Stroke] [maskOut null]] : begin
local sw : Sw refSw
Impl (x - 0.5 * HVContrast * sw) y xLink yAttach yOverflow sw maskOut
export : define Sw ArcStartSerifWidth
export : define [adviceGap refSw]
HVContrast * [Sw refSw] + [Math.max (Width / 16) [AdviceStroke 12]]
# Retroflex hooks
glyph-block-export RetroflexHook
define RetroflexHook : namespace
define [Impl x y xLink yAttach yOverflow sw] : glyph-proc
local hd : FlatHookDepth [DivFrame 1]
include : union
if (xLink == nothing) [no-shape] : HBarBottom
Math.min xLink (x - 0.5 * HVContrast * sw)
Math.max xLink (x + 0.5 * HVContrast * sw)
begin yAttach
define RetroflexHook : Descenders : function [x y xLink yAttach yOverflow sw] : union
xLinkStroke xLink x yAttach sw
VerticalHook.m
x -- x
y -- y
@ -617,21 +599,6 @@ glyph-block Letter-Shared-Shapes : begin
sw -- sw
yExtension -- yAttach + yOverflow - y
export : define Sw ArcStartSerifWidth
export : define [m] : params [x y xLink [yAttach y] [yOverflow 0] [refSw Stroke]]
Impl x y xLink yAttach yOverflow [Sw refSw]
export : define [l] : params [x y xLink [yAttach y] [yOverflow 0] [refSw Stroke]]
begin
local sw : Sw refSw
return : Impl (x + 0.5 * sw * HVContrast) y xLink yAttach yOverflow sw
export : define [r] : params [x y xLink [yAttach y] [yOverflow 0] [refSw Stroke]]
begin
local sw : Sw refSw
return : Impl (x - 0.5 * sw * HVContrast) y xLink yAttach yOverflow sw
export : define [rSideJut] : params [x y [yOverflow 0] [refSw Stroke]] : begin
local sw : Sw refSw
return : Impl (x + SideJut - 0.5 * sw * HVContrast) y x y yOverflow sw
# Left bar with hook at top, shared by multiple glyphs
glyph-block-export HooktopLeftBar
define HooktopLeftBar : namespace
@ -642,6 +609,7 @@ glyph-block Letter-Shared-Shapes : begin
VBarLeft x bottom (top - Hook - HalfStroke)
VerticalHook.l x (top - Hook - HalfStroke) HookX (-Hook)
do "Belt overlays"
define [BeltOverlayAt x y] : begin
local fine : AdviceStroke 4.5
local r : XH * 0.05
@ -659,6 +627,7 @@ glyph-block Letter-Shared-Shapes : begin
define [BeltOverlay top xMiddle] : BeltOverlayAt xMiddle (0.5 * top)
set BeltOverlay.at BeltOverlayAt
do "Letter bar overlays"
glyph-block-export LetterBarOverlay
define [LetterBarOverlay] : params [x y space refSw pXInSw sw] : begin
local {xLeftSpace xRightSpace} space