Add new parameter LongVJut as a VJut-like counterpart to LongJut. (#2606)

This commit is contained in:
John McWilliams 2024-12-02 20:25:33 -05:00 committed by GitHub
parent 2711921bf9
commit c7a2353640
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 70 additions and 65 deletions

View file

@ -229,10 +229,10 @@ glyph-block Letter-Cyrillic-Che : begin
define [CheVBarBarShape top pyBar] : begin define [CheVBarBarShape top pyBar] : begin
local SwCheVBar : Math.min OverlayStroke (0.625 * (RightSB - SB - [HSwToV : 2 * Stroke]) / HVContrast) local SwCheVBar : Math.min OverlayStroke (0.625 * (RightSB - SB - [HSwToV : 2 * Stroke]) / HVContrast)
local yc : top * [fallback pyBar 0.5] + Stroke * 0.1 local yc : top * [fallback pyBar 0.5] + Stroke * 0.1
return : VBar.m Middle (yc + LongJut * 0.8) (yc - LongJut * 0.8) SwCheVBar return : VBar.m Middle (yc + LongVJut * 0.8) (yc - LongVJut * 0.8) SwCheVBar
derive-composites 'cyrl/CheVBar' 0x4B8 'cyrl/Che' [CheVBarBarShape CAP [if SLAB 0.45 0.35]] derive-composites 'cyrl/CheVBar' 0x4B8 'cyrl/Che' [CheVBarBarShape CAP : if SLAB 0.45 0.35]
derive-composites 'cyrl/cheVBar' 0x4B9 'cyrl/che' [CheVBarBarShape XH [if SLAB 0.45 0.4 ]] derive-composites 'cyrl/cheVBar' 0x4B9 'cyrl/che' [CheVBarBarShape XH : if SLAB 0.45 0.4 ]
define ShhaConfig : object define ShhaConfig : object
serifless SERIFS.NONE serifless SERIFS.NONE
@ -245,7 +245,7 @@ glyph-block Letter-Cyrillic-Che : begin
include : MarkSet.capital include : MarkSet.capital
include : LeaningAnchor.Above.VBar.l SB include : LeaningAnchor.Above.VBar.l SB
include : CyrCheShape [DivFrame 1] CAP (1 - HBarPos) BODY.STRAIGHT serifs include : CyrCheShape [DivFrame 1] CAP (1 - HBarPos) BODY.STRAIGHT serifs
yBarOffset -- [HSwToV : Math.pow Stroke 2] / (RightSB - SB) yBarOffset -- ([HSwToV : Math.pow Stroke 2] / (RightSB - SB))
include : FlipAround Middle (CAP / 2) include : FlipAround Middle (CAP / 2)
create-glyph "cyrl/Hwe.\(suffix)" : glyph-proc create-glyph "cyrl/Hwe.\(suffix)" : glyph-proc

View file

@ -11,7 +11,7 @@ glyph-block Letter-Cyrillic-De : begin
glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe EpsilonConfig glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe EpsilonConfig
glyph-block-export BottomExtension glyph-block-export BottomExtension
local BottomExtension : 0.25 * Stroke - LongJut local BottomExtension : 0.25 * Stroke - LongVJut
glyph-block-export CyrDeBottom glyph-block-export CyrDeBottom
define [CyrDeBottom left right _sw _desc] : glyph-proc define [CyrDeBottom left right _sw _desc] : glyph-proc
@ -126,7 +126,7 @@ glyph-block Letter-Cyrillic-De : begin
right -- sr right -- sr
hook -- hook hook -- hook
stroke -- sw stroke -- sw
xo -- 0.5 * O xo -- (0.5 * O)
op -- 0.5 op -- 0.5
return : union [ze.Shape] [ze.AutoEndSerifL] return : union [ze.Shape] [ze.AutoEndSerifL]

View file

@ -8,19 +8,22 @@ glyph-block Letter-Cyrillic-Dzhe : 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
glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors
define [CyrDzheShape top] : glyph-proc define [CyrDzheShape top] : glyph-proc
include : VBar.l SB 0 top include : VBar.l SB 0 top
include : HBar.b SB RightSB 0 include : HBar.b SB RightSB 0
include : VBar.r RightSB 0 top include : VBar.r RightSB 0 top
include : VBar.m Middle Descender Stroke local desc : 0.25 * Stroke - LongVJut
include : VBar.m Middle desc Stroke
include : ExtendBelowBaseAnchors desc
if SLAB : let [sf : SerifFrame.fromDf [DivFrame 1] top 0] : begin if SLAB : let [sf : SerifFrame.fromDf [DivFrame 1] top 0] : begin
include : composite-proc sf.lt.full sf.rt.full sf.lb.outer sf.rb.outer include : composite-proc sf.lt.full sf.rt.full sf.lb.outer sf.rb.outer
create-glyph 'cyrl/Dzhe' 0x40F : glyph-proc create-glyph 'cyrl/Dzhe' 0x40F : glyph-proc
include : MarkSet.capDesc include : MarkSet.capital
include : CyrDzheShape CAP include : CyrDzheShape CAP
create-glyph 'cyrl/dzhe.upright' : glyph-proc create-glyph 'cyrl/dzhe.upright' : glyph-proc
include : MarkSet.p include : MarkSet.e
include : CyrDzheShape XH include : CyrDzheShape XH

View file

@ -33,14 +33,14 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
create-glyph "cyrl/Dzzhe/left" : glyph-proc create-glyph "cyrl/Dzzhe/left" : glyph-proc
define df : include : DivFrame para.diversityM 3.5 define df : include : DivFrame para.diversityM 3.5
include : df.markSet.capital include : df.markSet.capital
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke)
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
include : CyrDzzheDeShape df CAP include : CyrDzzheDeShape df CAP
create-glyph "cyrl/dzzhe.upright/left" : glyph-proc create-glyph "cyrl/dzzhe.upright/left" : glyph-proc
define df : include : DivFrame para.diversityM 3.5 define df : include : DivFrame para.diversityM 3.5
include : df.markSet.e include : df.markSet.e
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke)
set-base-anchor 'cvDecompose' 0 0 set-base-anchor 'cvDecompose' 0 0
include : CyrDzzheDeShape df XH include : CyrDzzheDeShape df XH
@ -58,7 +58,7 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
right -- subDf.rightSB right -- subDf.rightSB
hook -- hook hook -- hook
stroke -- sw stroke -- sw
xo -- 0.33 * OX xo -- (0.33 * OX)
include : ze.Shape include : ze.Shape
include : ze.AutoStartSerifL include : ze.AutoStartSerifL
include : ze.AutoEndSerifL include : ze.AutoEndSerifL
@ -94,7 +94,7 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
left -- subDf.leftSB left -- subDf.leftSB
right -- subDf.rightSB right -- subDf.rightSB
hook -- hook hook -- hook
stroke -- 0.5 * sw stroke -- (0.5 * sw)
xo -- 0 xo -- 0
yo -- 0 yo -- 0
include : difference [CyrRightZheShape legShape fSlab fMidSlab df top subDf.middle] [zeNoO.ShapeMask] include : difference [CyrRightZheShape legShape fSlab fMidSlab df top subDf.middle] [zeNoO.ShapeMask]

View file

@ -246,20 +246,20 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
create-glyph "cyrl/Dhe.\(suffix)" : glyph-proc create-glyph "cyrl/Dhe.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/Ze.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "cyrl/Ze.\(suffix)"] AS_BASE ALSO_METRICS
local desc : (-LongJut) + HalfStroke local desc : (-LongVJut) + HalfStroke
include : ExtendBelowBaseAnchors desc include : ExtendBelowBaseAnchors desc
include : let [zeNoO : CyrZe slabTop slabBot CAP 0 (hook -- Hook) (xo -- 0) (yo -- 0)] include : let [zeNoO : CyrZe slabTop slabBot CAP 0 (hook -- Hook) (xo -- 0) (yo -- 0)]
difference difference
VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke
zeNoO.ShapeMask zeNoO.ShapeMask
create-glyph "cyrl/dhe.\(suffix)" : glyph-proc create-glyph "cyrl/dhe.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/ze.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "cyrl/ze.\(suffix)"] AS_BASE ALSO_METRICS
local desc : (-LongJut) + HalfStroke local desc : (-LongVJut) + HalfStroke
include : ExtendBelowBaseAnchors desc include : ExtendBelowBaseAnchors desc
include : let [zeNoO : CyrZe slabTop slabBot XH 0 (hook -- SHook) (xo -- 0) (yo -- 0)] include : let [zeNoO : CyrZe slabTop slabBot XH 0 (hook -- SHook) (xo -- 0) (yo -- 0)]
difference difference
VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke
zeNoO.ShapeMask zeNoO.ShapeMask
create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc

View file

@ -129,7 +129,7 @@ glyph-block Letter-Greek-Phi : begin
local df : include : DivFrame para.diversityM 3 local df : include : DivFrame para.diversityM 3
include : df.markSet.capital include : df.markSet.capital
local vJut : Math.max (LongJut - HalfStroke) : if SLAB (1.5 * Stroke) 0 local vJut : Math.max (LongVJut - HalfStroke) : if SLAB (1.5 * Stroke) 0
local top : CAP + vJut local top : CAP + vJut
local bot : 0 - vJut local bot : 0 - vJut

View file

@ -59,14 +59,14 @@ glyph-block Letter-Greek-Upper-Gamma: begin
create-glyph "cyrl/GheDescender.\(suffix)" : glyph-proc create-glyph "cyrl/GheDescender.\(suffix)" : glyph-proc
include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS
include : CyrDescender.rSideJut include : CyrDescender.rSideJut
x -- GammaBarLeft + [HSwToV Stroke] x -- (GammaBarLeft + [HSwToV Stroke])
y -- 0 y -- 0
jut -- MidJutSide jut -- MidJutSide
create-glyph "cyrl/GheDHook.\(suffix)" : glyph-proc create-glyph "cyrl/GheDHook.\(suffix)" : glyph-proc
include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "grek/Gamma.\(suffix)"] AS_BASE ALSO_METRICS
include : PalatalHook.rSideJut include : PalatalHook.rSideJut
x -- GammaBarLeft + [HSwToV Stroke] x -- (GammaBarLeft + [HSwToV Stroke])
y -- 0 y -- 0
jut -- MidJutSide jut -- MidJutSide
@ -77,30 +77,30 @@ glyph-block Letter-Greek-Upper-Gamma: begin
create-glyph "cyrl/gheDescender.upright.\(suffix)" : glyph-proc create-glyph "cyrl/gheDescender.upright.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS
include : CyrDescender.rSideJut include : CyrDescender.rSideJut
x -- GammaBarLeft + [HSwToV Stroke] x -- (GammaBarLeft + [HSwToV Stroke])
y -- 0 y -- 0
jut -- MidJutSide jut -- MidJutSide
create-glyph "cyrl/gheDHook.upright.\(suffix)" : glyph-proc create-glyph "cyrl/gheDHook.upright.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "cyrl/ghe.upright.\(suffix)"] AS_BASE ALSO_METRICS
include : PalatalHook.rSideJut include : PalatalHook.rSideJut
x -- GammaBarLeft + [HSwToV Stroke] x -- (GammaBarLeft + [HSwToV Stroke])
y -- 0 y -- 0
jut -- MidJutSide jut -- MidJutSide
create-glyph "cyrl/Ge.\(suffix)" : glyph-proc create-glyph "cyrl/Ge.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : ExtendAboveBaseAnchors (CAP + LongJut - 0.5 * Stroke) include : ExtendAboveBaseAnchors (CAP + LongVJut - HalfStroke)
include : GammaShape CAP 0 slabType include : GammaShape CAP 0 slabType
eject-contour 'serifRT' eject-contour 'serifRT'
include : VBar.r (RightSB - OX) CAP (CAP + LongJut - 0.5 * Stroke) include : VBar.r (RightSB - OX) CAP (CAP + LongVJut - HalfStroke)
create-glyph "cyrl/ge.\(suffix)" : glyph-proc create-glyph "cyrl/ge.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : ExtendAboveBaseAnchors (XH + LongJut - 0.5 * Stroke) include : ExtendAboveBaseAnchors (XH + LongVJut - HalfStroke)
include : GammaShape XH 0 slabType include : GammaShape XH 0 slabType
eject-contour 'serifRT' eject-contour 'serifRT'
include : VBar.r (RightSB - OX) XH (XH + LongJut - 0.5 * Stroke) include : VBar.r (RightSB - OX) XH (XH + LongVJut - HalfStroke)
if para.isItalic : eject-contour 'serifLB' if para.isItalic : eject-contour 'serifLB'
create-glyph "cyrl/GheMidHook.\(suffix)" : glyph-proc create-glyph "cyrl/GheMidHook.\(suffix)" : glyph-proc
@ -109,7 +109,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin
include : MidHook.general include : MidHook.general
left -- (GammaBarLeft + [HSwToV Stroke]) left -- (GammaBarLeft + [HSwToV Stroke])
right -- RightSB right -- RightSB
top -- CAP * HBarPos + Stroke / 4 top -- (CAP * HBarPos + Stroke / 4)
ada -- ArchDepthA ada -- ArchDepthA
adb -- ArchDepthB adb -- ArchDepthB
@ -119,9 +119,9 @@ glyph-block Letter-Greek-Upper-Gamma: begin
include : MidHook.general include : MidHook.general
left -- (GammaBarLeft + [HSwToV Stroke]) left -- (GammaBarLeft + [HSwToV Stroke])
right -- RightSB right -- RightSB
top -- XH * HBarPos + Stroke / 4 top -- (XH * HBarPos + Stroke / 4)
ada -- ArchDepthA * [Math.pow HBarPos 0.3] ada -- (ArchDepthA * [Math.pow HBarPos 0.3])
adb -- ArchDepthB * [Math.pow HBarPos 0.3] adb -- (ArchDepthB * [Math.pow HBarPos 0.3])
if para.isItalic : eject-contour 'serifLB' if para.isItalic : eject-contour 'serifLB'
select-variant 'grek/Gamma' 0x393 select-variant 'grek/Gamma' 0x393

View file

@ -147,6 +147,6 @@ glyph-block Letter-Latin-Upper-Lambda-Delta : begin
local xCutLeft SB local xCutLeft SB
local xCutRight RightSB local xCutRight RightSB
include : HBar.b (xCutLeft - descenderOverflow) (xCutRight + descenderOverflow) 0 include : HBar.b (xCutLeft - descenderOverflow) (xCutRight + descenderOverflow) 0
include : VBar.l (xCutLeft - descenderOverflow) (-LongJut + HalfStroke) Stroke include : VBar.l (xCutLeft - descenderOverflow) (-LongVJut + HalfStroke) Stroke
include : VBar.r (xCutRight + descenderOverflow) (-LongJut + HalfStroke) Stroke include : VBar.r (xCutRight + descenderOverflow) (-LongVJut + HalfStroke) Stroke

View file

@ -106,7 +106,7 @@ glyph-block Letter-Latin-C : begin
[Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs RightSB XH sw Hook [Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs RightSB XH sw Hook
__ : list [g4 RightSB (XH - Hook) [widths.lhs sw]] [hookstart XH (sw -- sw)] __ : list [g4 RightSB (XH - Hook) [widths.lhs sw]] [hookstart XH (sw -- sw)]
flatside.ld SB 0 XH SmallArchDepthA SmallArchDepthB flatside.ld SB 0 XH SmallArchDepthA SmallArchDepthB
CurlyTail.n fine 0 RightSB 0 0 (yLoopTop -- XH * 0.45) CurlyTail.n fine 0 RightSB 0 0 (yLoopTop -- (XH * 0.45))
glyph-block-export CLetterForm glyph-block-export CLetterForm
define [CLetterForm] : with-params [df sty styBot top bot [ada ArchDepthA] [adb ArchDepthB] [hook Hook] [sw Stroke] [ob nothing]] : namespace define [CLetterForm] : with-params [df sty styBot top bot [ada ArchDepthA] [adb ArchDepthB] [hook Hook] [sw Stroke] [ob nothing]] : namespace
@ -205,7 +205,7 @@ glyph-block Letter-Latin-C : begin
local top : Width - SB local top : Width - SB
local p : mix 1 (Width / UPM) 0.5 local p : mix 1 (Width / UPM) 0.5
include : PointingTo Width XH Width 0 : function [] : glyph-proc include : PointingTo Width XH Width 0 : function [] : glyph-proc
local lf : CLetterForm df sty styBot top 0 (hook -- Hook * p) local lf : CLetterForm df sty styBot top 0 (hook -- (Hook * p))
include : lf.full include : lf.full
include : FlipAround df.middle (top / 2) include : FlipAround df.middle (top / 2)
include : Translate 0 (SB / 2) include : Translate 0 (SB / 2)
@ -213,7 +213,7 @@ glyph-block Letter-Latin-C : begin
create-glyph "cyrl/esWide.\(suffix)" : glyph-proc create-glyph "cyrl/esWide.\(suffix)" : glyph-proc
local df : include : DivFrame para.diversityT 3 local df : include : DivFrame para.diversityT 3
include : df.markSet.e include : df.markSet.e
local desc : (-LongJut) + HalfStroke local desc : (-LongVJut) + HalfStroke
include : ExtendBelowBaseAnchors desc include : ExtendBelowBaseAnchors desc
local lf : CLetterForm df sty styBot XH desc local lf : CLetterForm df sty styBot XH desc
ada -- [df.archDepthA SmallArchDepth Stroke] ada -- [df.archDepthA SmallArchDepth Stroke]
@ -356,10 +356,10 @@ glyph-block Letter-Latin-C : begin
derive-glyphs 'cyrl/The' 0x4AA "cyrl/Es" : function [src gr] : glyph-proc derive-glyphs 'cyrl/The' 0x4AA "cyrl/Es" : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
local desc : (-LongJut) + HalfStroke local desc : (-LongVJut) + HalfStroke
include : ExtendBelowBaseAnchors desc include : ExtendBelowBaseAnchors desc
include : difference include : difference
VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke
OShapeOutline.NoOvershoot CAP 0 SB RightSB Stroke ArchDepthA ArchDepthB OShapeOutline.NoOvershoot CAP 0 SB RightSB Stroke ArchDepthA ArchDepthB
derive-multi-part-glyphs 'cyrl/The.BSH' null { 'cyrl/Es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc derive-multi-part-glyphs 'cyrl/The.BSH' null { 'cyrl/Es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc
@ -373,10 +373,10 @@ glyph-block Letter-Latin-C : begin
derive-glyphs 'cyrl/the' 0x4AB "cyrl/es" : function [src gr] : glyph-proc derive-glyphs 'cyrl/the' 0x4AB "cyrl/es" : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
local desc : (-LongJut) + HalfStroke local desc : (-LongVJut) + HalfStroke
include : ExtendBelowBaseAnchors desc include : ExtendBelowBaseAnchors desc
include : difference include : difference
VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke
OShapeOutline.NoOvershoot XH 0 SB RightSB Stroke SmallArchDepthA SmallArchDepthB OShapeOutline.NoOvershoot XH 0 SB RightSB Stroke SmallArchDepthA SmallArchDepthB
derive-multi-part-glyphs 'cyrl/the.BSH' null { 'cyrl/es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc derive-multi-part-glyphs 'cyrl/the.BSH' null { 'cyrl/es' 'invCommaBelow' } : lambda [srcs gr] : glyph-proc

View file

@ -26,9 +26,9 @@ glyph-block Letter-Latin-K : begin
local kshRight : right + [KBalanceRight true straightBar] local kshRight : right + [KBalanceRight true straightBar]
local serifLengthAdj : Ok + [HSwToV stroke] local serifLengthAdj : Ok + [HSwToV stroke]
return : shape.rSideJut return : shape.rSideJut
x -- kshRight - serifLengthAdj x -- (kshRight - serifLengthAdj)
y -- 0 y -- 0
jut -- Jut + serifLengthAdj jut -- (Jut + serifLengthAdj)
define [KSlabs mode top left right stroke straightBar] : glyph-proc define [KSlabs mode top left right stroke straightBar] : glyph-proc
local Ok : KO mode true top stroke local Ok : KO mode true top stroke
@ -404,7 +404,7 @@ glyph-block Letter-Latin-K : begin
create-glyph "KDescender.\(suffix)" : glyph-proc create-glyph "KDescender.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : KBaseShape Stroke CAP CyrDescender include : KBaseShape Stroke CAP CyrDescender
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (0 - LongVJut + HalfStroke)
create-glyph "KStroke.\(suffix)" : glyph-proc create-glyph "KStroke.\(suffix)" : glyph-proc
include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS
@ -432,7 +432,7 @@ glyph-block Letter-Latin-K : begin
create-glyph "smcpKDescender.\(suffix)" : glyph-proc create-glyph "smcpKDescender.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : KBaseShape Stroke XH CyrDescender include : KBaseShape Stroke XH CyrDescender
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke)
create-glyph "smcpKVBar.\(suffix)" : glyph-proc create-glyph "smcpKVBar.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
@ -506,7 +506,7 @@ glyph-block Letter-Latin-K : begin
create-glyph "kDescender.\(suffix)" : glyph-proc create-glyph "kDescender.\(suffix)" : glyph-proc
include : MarkSet.b include : MarkSet.b
include : kBaseShape CyrDescender include : kBaseShape CyrDescender
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke)
create-glyph "kPalatalHook.\(suffix)" : glyph-proc create-glyph "kPalatalHook.\(suffix)" : glyph-proc
include : MarkSet.b include : MarkSet.b

View file

@ -135,7 +135,7 @@ glyph-block Letter-Latin-Lower-E : begin
tailSlab -- tailSlab tailSlab -- tailSlab
define offset : Width * (df.div - divSub) define offset : Width * (df.div - divSub)
if fDesc : begin if fDesc : begin
local desc : (-LongJut) + HalfStroke local desc : (-LongVJut) + HalfStroke
include : ExtendBelowBaseAnchors desc include : ExtendBelowBaseAnchors desc
include : difference include : difference
VBar.m dfSub.middle desc (stroke + O) [AdviceStroke 3.5 df.div] VBar.m dfSub.middle desc (stroke + O) [AdviceStroke 3.5 df.div]

View file

@ -193,7 +193,7 @@ glyph-block Letter-Latin-O : begin
local arcXR : df.leftSB + innerDist * (3 / 4) + [HSwToV : 4 * df.mvs] local arcXR : df.leftSB + innerDist * (3 / 4) + [HSwToV : 4 * df.mvs]
local heightGap : Math.min (df.mvs + (CAP - df.mvs * 4) / 5) (innerDist / 4 + df.mvs) local heightGap : Math.min (df.mvs + (CAP - df.mvs * 4) / 5) (innerDist / 4 + df.mvs)
local heightInner : CAP - 2 * heightGap local heightInner : CAP - 2 * heightGap
local smInner : clamp (df.mvs * 1.5) (0.499 * heightInner) (ArchDepth * heightInner / CAP) local smInner : clamp (df.mvs * 1.5) (heightInner / 2 - TINY) (ArchDepth * heightInner / CAP)
local adaInner : [ArchDepthAOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div local adaInner : [ArchDepthAOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div
local adbInner : [ArchDepthBOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div local adbInner : [ArchDepthBOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div
include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap
@ -217,10 +217,10 @@ glyph-block Letter-Latin-O : begin
local heightGap : Math.min (df.mvs + (CAP - df.mvs * 6) / 7) (innerDist / 6 + df.mvs) local heightGap : Math.min (df.mvs + (CAP - df.mvs * 6) / 7) (innerDist / 6 + df.mvs)
local heightInner1 : CAP - 2 * heightGap local heightInner1 : CAP - 2 * heightGap
local heightInner2 : CAP - 4 * heightGap local heightInner2 : CAP - 4 * heightGap
local smInner1 : clamp (df.mvs * 1.5) (0.499 * heightInner1) (ArchDepth * heightInner1 / CAP) local smInner1 : clamp (df.mvs * 1.5) (heightInner1 / 2 - TINY) (ArchDepth * heightInner1 / CAP)
local adaInner1 : [ArchDepthAOf smInner1 : arcXR1 - arcXL1 + df.leftSB * 2] * df.div local adaInner1 : [ArchDepthAOf smInner1 : arcXR1 - arcXL1 + df.leftSB * 2] * df.div
local adbInner1 : [ArchDepthBOf smInner1 : arcXR1 - arcXL1 + df.leftSB * 2] * df.div local adbInner1 : [ArchDepthBOf smInner1 : arcXR1 - arcXL1 + df.leftSB * 2] * df.div
local smInner2 : clamp (df.mvs * 1.5) (0.499 * heightInner2) (ArchDepth * heightInner2 / CAP) local smInner2 : clamp (df.mvs * 1.5) (heightInner2 / 2 - TINY) (ArchDepth * heightInner2 / CAP)
local adaInner2 : [ArchDepthAOf smInner2 : arcXR2 - arcXL2 + df.leftSB * 2] * df.div local adaInner2 : [ArchDepthAOf smInner2 : arcXR2 - arcXL2 + df.leftSB * 2] * df.div
local adbInner2 : [ArchDepthBOf smInner2 : arcXR2 - arcXL2 + df.leftSB * 2] * df.div local adbInner2 : [ArchDepthBOf smInner2 : arcXR2 - arcXL2 + df.leftSB * 2] * df.div
include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap
@ -284,18 +284,18 @@ glyph-block Letter-Latin-O : begin
create-glyph 'OPolish' 0xA7C0 : glyph-proc create-glyph 'OPolish' 0xA7C0 : glyph-proc
include [refer-glyph 'O'] AS_BASE include [refer-glyph 'O'] AS_BASE
include : MarkSet.capital include : MarkSet.capital
include : ExtendAboveBaseAnchors (CAP + LongJut - 0.5 * Stroke) include : ExtendAboveBaseAnchors (CAP + LongVJut - HalfStroke)
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke)
include : VBar.m Middle CAP (CAP + LongJut - 0.5 * Stroke) include : VBar.m Middle CAP (CAP + LongVJut - HalfStroke)
include : VBar.m Middle (-LongJut + 0.5 * Stroke) 0 include : VBar.m Middle (-LongVJut + HalfStroke) 0
create-glyph 'oPolish' 0xA7C1 : glyph-proc create-glyph 'oPolish' 0xA7C1 : glyph-proc
include [refer-glyph 'o'] AS_BASE include [refer-glyph 'o'] AS_BASE
include : MarkSet.e include : MarkSet.e
include : ExtendAboveBaseAnchors (XH + LongJut - 0.5 * Stroke) include : ExtendAboveBaseAnchors (XH + LongVJut - HalfStroke)
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongVJut + HalfStroke)
include : VBar.m Middle XH (XH + LongJut - 0.5 * Stroke) include : VBar.m Middle XH (XH + LongVJut - HalfStroke)
include : VBar.m Middle (-LongJut + 0.5 * Stroke) 0 include : VBar.m Middle (-LongVJut + HalfStroke) 0
derive-composites 'oRetroflexHook' 0x1DF1B 'o' : RetroflexHook.l derive-composites 'oRetroflexHook' 0x1DF1B 'o' : RetroflexHook.l
x -- [mix [arch.adjust-x.bot Middle] SB 0.75] x -- [mix [arch.adjust-x.bot Middle] SB 0.75]

View file

@ -906,10 +906,10 @@ glyph-block Letter-Shared-Shapes : begin
local xPos : x - [HSwToV : 0.5 * sw] + sj + sw * TanSlope * (DesignParameters.serifShiftX + 1) local xPos : x - [HSwToV : 0.5 * sw] + sj + sw * TanSlope * (DesignParameters.serifShiftX + 1)
return : Impl xPos y xLink y yOverflow sw return : Impl xPos y xLink y yOverflow sw
# Descender of cyrillics # Diacritical descender of cyrillics
glyph-block-export CyrDescender glyph-block-export CyrDescender
define CyrDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc define CyrDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc
local extension : 0.25 * Stroke - LongJut local extension : 0.25 * Stroke - LongVJut
include : ExtendBelowBaseAnchors (y + extension) include : ExtendBelowBaseAnchors (y + extension)
include : union include : union
xLinkStroke xLink x yAttach sw xLinkStroke xLink x yAttach sw
@ -917,7 +917,7 @@ glyph-block Letter-Shared-Shapes : begin
glyph-block-export CyrTailDescender glyph-block-export CyrTailDescender
define CyrTailDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc define CyrTailDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc
local extension : 0.25 * Stroke - LongJut local extension : 0.25 * Stroke - LongVJut
include : ExtendBelowBaseAnchors (y + extension) include : ExtendBelowBaseAnchors (y + extension)
include : union include : union
xLinkStroke xLink x yAttach sw xLinkStroke xLink x yAttach sw

View file

@ -103,6 +103,7 @@ export : define [calculateMetrics para] : begin
define Jut para.jut define Jut para.jut
define LongJut para.longjut define LongJut para.longjut
define VJut para.vjut define VJut para.vjut
define LongVJut : fallback para.longvjut LongJut
define MidJutSide : Math.max Jut : mix [HSwToV : 0.5 * Stroke] LongJut 0.5 define MidJutSide : Math.max Jut : mix [HSwToV : 0.5 * Stroke] LongJut 0.5
define MidJutCenter : Math.max Jut : mix [HSwToV : 0.5 * Stroke] LongJut 0.6 define MidJutCenter : Math.max Jut : mix [HSwToV : 0.5 * Stroke] LongJut 0.6
define AccentStackOffset para.accentStackOffset define AccentStackOffset para.accentStackOffset
@ -197,11 +198,11 @@ export : define [calculateMetrics para] : begin
BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate ApparentTranslate Rotate BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate ApparentTranslate Rotate
GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook GlobalTransform TanSlope HVContrast Upward Downward Rightward Leftward O OX OXHook Hook
AHook SHook RHook JHook HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize AHook SHook RHook JHook HookX TailX TailY ArchDepth SmallArchDepth Stroke DotSize PeriodSize
HBarPos OverlayPos LongJut Jut VJut VJutStroke AccentStackOffset AccentWidth AccentClearance HBarPos OverlayPos LongJut LongVJut Jut VJut VJutStroke AccentStackOffset AccentWidth
AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 AccentClearance AccentHeight CThin CThinB SLAB IBalance IBalance2 JBalance JBalance2 TBalance
RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 TBalance2 RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3
EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut WideWidth4 EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius
ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS SideJut ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS
compositeBaseAnchors AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke compositeBaseAnchors AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke
ShoulderFine AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf ShoulderFine AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf
SmoothAdjust MidJutSide MidJutCenter YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT SmoothAdjust MidJutSide MidJutCenter YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT

View file

@ -376,7 +376,7 @@ define-macro glyph-block : syntax-rules
PictTop PictBot BgOpTop BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate PictTop PictBot BgOpTop BgOpBot BgTkTop BgTkBot Italify Upright Scale Translate
ApparentTranslate Rotate GlobalTransform TanSlope HVContrast Upward Downward Rightward ApparentTranslate Rotate GlobalTransform TanSlope HVContrast Upward Downward Rightward
Leftward O OX OXHook Hook AHook SHook RHook JHook HookX TailX TailY ArchDepth Leftward O OX OXHook Hook AHook SHook RHook JHook HookX TailX TailY ArchDepth
SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos LongJut Jut VJut SmallArchDepth Stroke DotSize PeriodSize HBarPos OverlayPos LongJut LongVJut Jut VJut
VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight CThin CThinB VJutStroke AccentStackOffset AccentWidth AccentClearance AccentHeight CThin CThinB
SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance RBalance2 SLAB IBalance IBalance2 JBalance JBalance2 TBalance TBalance2 RBalance RBalance2
FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper

View file

@ -13,6 +13,7 @@ periodSize = 140 # Size of period
jut = 85 # Length of slab serif jut = 85 # Length of slab serif
vjut = 145 # Length of vertical slab serif vjut = 145 # Length of vertical slab serif
longjut = 175 # Length of long serifs, like that in `i`. longjut = 175 # Length of long serifs, like that in `i`.
longvjut = 175 # Length of diacritical descenders in cyrillics.
archDepth = 195 # Vertical arc size in capital letters. archDepth = 195 # Vertical arc size in capital letters.
smallArchDepth = 200 # Vertical arc size in lowercase letters. smallArchDepth = 200 # Vertical arc size in lowercase letters.