127 lines
5 KiB
Text
127 lines
5 KiB
Text
$$include '../../../meta/macros.ptl'
|
|
|
|
import [mix linreg clamp fallback] from"../../../support/utils.mjs"
|
|
import [DependentSelector] from"../../../support/gr.mjs"
|
|
|
|
glyph-module
|
|
|
|
glyph-block Letter-Cyrillic-Yat : begin
|
|
glyph-block-import CommonShapes
|
|
glyph-block-import Common-Derivatives
|
|
glyph-block-import Mark-Adjustment : ExtendAboveBaseAnchors
|
|
glyph-block-import Letter-Shared : CreateDependentComposite
|
|
glyph-block-import Letter-Shared-Metrics : BowlXDepth
|
|
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
|
|
glyph-block-import Letter-Cyrillic-Yeri : YeriConfig
|
|
glyph-block-import Letter-Cyrillic-Iotified-A : Iotified
|
|
|
|
define [xBarLeft df] : Math.max (df.rightSB - (RightSB - SB)) : if SLAB
|
|
Just ([mix df.leftSB df.rightSB 0.35] - [HSwToV : 0.5 * df.mvs])
|
|
Just [mix df.leftSB df.rightSB 0.2]
|
|
|
|
define [YatShape] : with-params [df Yeri top [pBar 0.5] [fLowerCase false] [sw df.mvs] [xCrossbarLeftOverride nothing] [yCrossbarOverride nothing]] : glyph-proc
|
|
local xYeriLeft : xBarLeft df
|
|
|
|
include : Yeri top
|
|
left -- xYeriLeft
|
|
right -- df.rightSB - O * 2
|
|
pBar -- pBar
|
|
stroke -- sw
|
|
|
|
local cTop : if SLAB (top - Stroke / 2) top
|
|
|
|
local _xCrossbarLeft : mix 0 df.leftSB [if SLAB 0.25 0.375]
|
|
local xCrossbarLeft : fallback xCrossbarLeftOverride _xCrossbarLeft
|
|
local xCrossbarRight : mix _xCrossbarLeft (xYeriLeft + [HSwToV : 0.5 * sw]) 2
|
|
local yCrossbar : fallback yCrossbarOverride : [mix (top * pBar + sw / 2) cTop [if SLAB 0.625 0.5]] + 0.25 * OverlayStroke
|
|
include : HBar.t xCrossbarLeft xCrossbarRight yCrossbar OverlayStroke
|
|
|
|
if SLAB : begin
|
|
local swSerif : Math.min (VJutStroke * sw / Stroke) (0.625 * (xYeriLeft - _xCrossbarLeft))
|
|
local vJut : Math.min VJut (OverlayStroke + 0.5 * (yCrossbar - OverlayStroke - (top * pBar)))
|
|
include : tagged 'serifDL' : VSerif.dl xCrossbarLeft yCrossbar vJut swSerif
|
|
include : tagged 'serifDR' : VSerif.dr xCrossbarRight yCrossbar vJut swSerif
|
|
|
|
if fLowerCase : begin
|
|
eject-contour 'serifYeriLT'
|
|
include : tagged 'serifLT' : HSerif.lt xYeriLeft Ascender SideJut sw
|
|
|
|
define [IotifiedYatShape] : with-params [df Yeri top [pBar 0.5] [fLowerCase false]] : glyph-proc
|
|
local gap : 0.25 * (df.width - 2 * df.leftSB - [if SLAB 2.5 4.5] * df.mvs)
|
|
define divSub : (df.width - gap - df.mvs) / Width
|
|
define dfSub : DivFrame divSub 2
|
|
|
|
local shift : Width * (df.div - divSub)
|
|
include : with-transform [ApparentTranslate shift 0]
|
|
YatShape dfSub Yeri top
|
|
pBar -- pBar
|
|
fLowerCase -- fLowerCase
|
|
sw -- df.mvs
|
|
xCrossbarLeftOverride -- (df.leftSB - shift)
|
|
eject-contour 'serifDL'
|
|
|
|
if fLowerCase
|
|
include : Iotified.ascender df top 0 (fCapital -- false)
|
|
include : Iotified.full df top 0 (fCapital -- true)
|
|
|
|
foreach { suffix { Yeri } } [pairs-of YeriConfig] : do
|
|
create-glyph "cyrl/Yat.\(suffix)" : glyph-proc
|
|
local df : include : DivFrame [mix 1 para.diversityM 0.5]
|
|
include : df.markSet.capital
|
|
include : YatShape df Yeri CAP
|
|
pBar -- 0.5
|
|
|
|
create-glyph "cyrl/yat.upright.\(suffix)" : glyph-proc
|
|
local df : include : DivFrame [mix 1 para.diversityM 0.5]
|
|
include : df.markSet.b
|
|
include : YatShape df Yeri Ascender
|
|
pBar -- (0.55 * XH / Ascender)
|
|
fLowerCase -- true
|
|
|
|
create-glyph "cyrl/yatTall.\(suffix)" : glyph-proc
|
|
local df : include : DivFrame [mix 1 para.diversityM 0.5]
|
|
include : df.markSet.b
|
|
include : ExtendAboveBaseAnchors (Ascender + 0.5 * AccentStackOffset)
|
|
include : YatShape df Yeri (Ascender + 0.5 * AccentStackOffset)
|
|
pBar -- (0.55 * XH / (Ascender + 0.5 * AccentStackOffset))
|
|
fLowerCase -- true
|
|
yCrossbarOverride -- Ascender
|
|
|
|
create-glyph "cyrl/YatIotified.\(suffix)" : glyph-proc
|
|
local df : include : DivFrame para.diversityM 3
|
|
include : df.markSet.capital
|
|
include : IotifiedYatShape df Yeri CAP (pBar -- 0.5)
|
|
|
|
create-glyph "cyrl/yatIotified.\(suffix)" : glyph-proc
|
|
local df : include : DivFrame para.diversityM 3
|
|
include : df.markSet.b
|
|
include : IotifiedYatShape df Yeri Ascender (pBar -- 0.375) (fLowerCase -- true)
|
|
|
|
# Italic Yat
|
|
create-glyph "cyrl/yat.italic/yeri.\(suffix)" : glyph-proc
|
|
local df : include : DivFrame para.diversityM 3
|
|
include : df.markSet.e
|
|
|
|
local xMidBarLeft : df.middle - [HSwToV : 0.5 * df.mvs]
|
|
|
|
include : Yeri XH xMidBarLeft df.rightSB
|
|
stroke -- df.mvs
|
|
yStart -- (XH - SmallArchDepthB)
|
|
eject-contour 'serifYeriLT'
|
|
eject-contour 'serifYeriLB'
|
|
|
|
DependentSelector.set currentGlyph : if (suffix === "corner") 'full' 'reduced'
|
|
|
|
select-variant 'cyrl/Yat' 0x462 (follow -- 'cyrl/YeriBar')
|
|
select-variant 'cyrl/yat.upright' (follow -- 'cyrl/yeriBar')
|
|
select-variant 'cyrl/yatTall' 0x1C87 (follow -- 'cyrl/yeriBar')
|
|
|
|
select-variant 'cyrl/YatIotified' 0xA652 (follow -- 'cyrl/YeriBar')
|
|
select-variant 'cyrl/yatIotified' 0xA653 (follow -- 'cyrl/yeriBar')
|
|
|
|
select-variant 'cyrl/yat.italic/yeri' (follow -- 'cyrl/yeriBar')
|
|
CreateDependentComposite 'cyrl/yat.italic' null 'cyrl/yat.italic/yeri' : object
|
|
full 'cyrl/yat.italic/base/corner'
|
|
reduced 'cyrl/yat.italic/base/cursive'
|
|
|
|
alias 'latn/yatSakha.italic' null 'cyrl/yat.italic'
|