This commit is contained in:
be5invis 2023-05-03 18:22:52 -07:00
parent 6ab33a385a
commit 29328b6933
12 changed files with 253 additions and 181 deletions

View file

@ -12,12 +12,12 @@ glyph-block Letter-Greek-Lower-Rho : begin
create-glyph 'grek/rho' 0x3C1 : glyph-proc
include : MarkSet.p
include : tagged 'bowl' : OBarRight.rounded XH RightSB CAP
include : tagged 'bowl' : OBarRight.rounded XH (yTerminal -- CAP)
include : FlipAround Middle (XH / 2)
create-glyph 'grek/rhoSymbol' 0x3F1 : glyph-proc
include : MarkSet.p
include : tagged 'bowl' : OBarRight.rounded XH RightSB XH
include : tagged 'bowl' : OBarRight.rounded XH (yTerminal -- XH)
include : FlipAround Middle (XH / 2)
include : dispiro
widths.lhs

View file

@ -51,33 +51,33 @@ glyph-block Letter-Latin-Lower-DB-QP : begin
if SLAB : begin
include : HSerif.mb df.middle Descender Jut
create-glyph 'cyrl/djeKomi' 0x503 : glyph-proc
local df : DivFrame para.diversityM 3
set-width df.width
include : df.markSet.b
# create-glyph 'cyrl/djeKomi' 0x503 : glyph-proc
# local df : DivFrame para.diversityM 3
# set-width df.width
# include : df.markSet.b
local { subDf } : SubDfAndShift 0 df OX
local ada : subDf.archDepthA SmallArchDepth df.mvs
local adb : subDf.archDepthB SmallArchDepth df.mvs
# local { subDf } : SubDfAndShift 0 df OX
# local ada : subDf.archDepthA SmallArchDepth df.mvs
# local adb : subDf.archDepthB SmallArchDepth df.mvs
include : OBarLeft.roundedTop
left -- df.middle - 0.5 * df.mvs * HVContrast
right -- df.rightSB
yTerminal -- 0
sw -- df.mvs
ada -- ada
adb -- adb
include : FlipAround df.middle (XH / 2)
include : UpwardHookShape
left -- df.middle - 0.5 * df.mvs * HVContrast
right -- df.rightSB
ybegin -- Ascender
yend -- (XH / 2)
ada -- (SmallArchDepthA * 0.6 * df.div)
adb -- (SmallArchDepthB * 0.6 * df.div)
sw -- df.mvs
# include : OBarLeft.roundedTop
# left -- df.middle - 0.5 * df.mvs * HVContrast
# right -- df.rightSB
# yTerminal -- 0
# sw -- df.mvs
# ada -- ada
# adb -- adb
# include : FlipAround df.middle (XH / 2)
# include : UpwardHookShape
# left -- df.middle - 0.5 * df.mvs * HVContrast
# right -- df.rightSB
# ybegin -- Ascender
# yend -- (XH / 2)
# ada -- (SmallArchDepthA * 0.6 * df.div)
# adb -- (SmallArchDepthB * 0.6 * df.div)
# sw -- df.mvs
if SLAB : begin
include : HSerif.lt (df.middle - df.mvs / 2 * HVContrast) Ascender SideJut df.mvs
local sf2 : [SerifFrame.fromDf df (XH / 2) 0].slice 1 2
include sf2.rt.full
# if SLAB : begin
# include : HSerif.lt (df.middle - df.mvs / 2 * HVContrast) Ascender SideJut df.mvs
# local sf2 : [SerifFrame.fromDf df (XH / 2) 0].slice 1 2
# include sf2.rt.full

View file

@ -134,7 +134,7 @@ glyph-block Letter-Latin-Lower-A : begin
define SingleStorey : namespace
export : define [FullBarBody height bar mask] : glyph-proc
include : OBarRight.shape height
include : OBarRight.shape (top -- height)
include : bar height mask
export : define [EarlessCornerBody height bar mask] : glyph-proc
include : OBarLeft.toothless (rise -- DToothlessRise) (mBlend -- DMBlend)

View file

@ -113,4 +113,4 @@ glyph-block Letter-Latin-Lower-B : begin
include : OBarLeft.shape
left -- SB + BBD
top -- XH
stroke -- BBS
sw -- BBS

View file

@ -11,38 +11,76 @@ glyph-block Letter-Latin-Lower-D : begin
glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : OBarRight RightwardTailedBar DToothlessRise DMBlend
glyph-block-import Letter-Shared-Shapes : CurlyTail LetterBarOverlay PalatalHook VerticalHook
glyph-block-import Letter-Shared-Shapes : SerifFrame UpwardHookShape
define [ToothedBody] : union
define [ToothedBody df yTop] : union
OBarRight.shape
VBar.r RightSB 0 Ascender
top -- XH
left -- df.leftSB
right -- df.rightSB
sw -- df.mvs
ada -- [df.archDepthA SmallArchDepth df.mvs]
adb -- [df.archDepthB SmallArchDepth df.mvs]
tagged 'rightBar' : VBar.r df.rightSB 0 yTop
define [ToothlessCornerBody] : union
OBarRight.toothless XH RightSB DToothlessRise DMBlend
VBar.r RightSB DToothlessRise Ascender
define [ToothlessCornerBody df yTop] : union
OBarRight.toothless
top -- XH
left -- df.leftSB
right -- df.rightSB
sw -- df.mvs
rise -- DToothlessRise
mBlend -- DMBlend
ada -- [df.archDepthA SmallArchDepth df.mvs]
adb -- [df.archDepthB SmallArchDepth df.mvs]
tagged 'rightBar' : VBar.r df.rightSB DToothlessRise yTop
define [ToothlessCornerHBBBody] : union
OBarRight.toothless XH RightSB DToothlessRise DMBlend
VBar.r RightSB 0 Ascender
define [ToothlessCornerHBBBody df yTop] : union
OBarRight.toothless
top -- XH
left -- df.leftSB
right -- df.rightSB
sw -- df.mvs
rise -- DToothlessRise
mBlend -- DMBlend
ada -- [df.archDepthA SmallArchDepth df.mvs]
adb -- [df.archDepthB SmallArchDepth df.mvs]
tagged 'rightBar' : VBar.r df.rightSB 0 yTop
define [ToothlessRoundedBody] : OBarRight.rounded XH RightSB Ascender
define [ToothlessRoundedHBBBody] : union
OBarRight.rounded XH RightSB Ascender
VBar.r RightSB 0 Ascender
define [ToothlessRoundedBody df yTop] : OBarRight.rounded
top -- XH
left -- df.leftSB
right -- df.rightSB
sw -- df.mvs
yTerminal -- yTop
ada -- [df.archDepthA SmallArchDepth df.mvs]
adb -- [df.archDepthB SmallArchDepth df.mvs]
define [TailedBody] : union
define [ToothlessRoundedHBBBody df yTop] : union
ToothlessRoundedBody df yTop
tagged 'rightBar' : VBar.r df.rightSB 0 yTop
define [TailedBody df yTop] : union
OBarRight.shape
RightwardTailedBar RightSB 0 Ascender
top -- XH
left -- df.leftSB
right -- df.rightSB
sw -- df.mvs
ada -- [df.archDepthA SmallArchDepth df.mvs]
adb -- [df.archDepthB SmallArchDepth df.mvs]
RightwardTailedBar df.rightSB 0 yTop
define [TopSerif] : tagged 'serifRT'
HSerif.lt (RightSB - Stroke * HVContrast) Ascender SideJut
define [TopSerif df yTop] : tagged 'serifRT'
HSerif.lt (df.rightSB - Stroke * HVContrast) yTop SideJut
define [BaseSerif] : tagged 'serifRB'
HSerif.rb RightSB 0 SideJut
define [BaseSerif df yTop] : tagged 'serifRB'
HSerif.rb df.rightSB 0 SideJut
define DConfig : object
toothedSerifless { ToothedBody null null }
toothedTopSerifed { ToothedBody TopSerif null }
toothedSerifed { ToothedBody TopSerif BaseSerif }
toothedBottomSerifed { ToothedBody null BaseSerif }
tailedSerifless { TailedBody null null }
tailedSerifed { TailedBody TopSerif null }
toothlessCornerSerifless { ToothlessCornerBody null null }
@ -53,27 +91,63 @@ glyph-block Letter-Latin-Lower-D : begin
toothlessRoundedSerifed { ToothlessRoundedBody TopSerif null }
toothlessRoundedSeriflessHBB { ToothlessRoundedHBBBody null null }
toothlessRoundedSerifedHBB { ToothlessRoundedHBBBody TopSerif null }
toothlessRoundedBottomSerifed { ToothlessRoundedHBBBody null BaseSerif }
toothlessRoundedBilateralSerifed{ ToothlessRoundedHBBBody TopSerif BaseSerif }
foreach { suffix { Body topSerif bottomSerif } } [Object.entries DConfig] : do
local yOverlay : mix XH (Ascender - [if topSerif Stroke 0]) 0.5
create-glyph "d.\(suffix)" : glyph-proc
include : MarkSet.b
include : Body
if topSerif : include : topSerif
if bottomSerif : include : bottomSerif
set-base-anchor 'overlayOnExtension' (RightSB - 0.5 * Stroke * HVContrast) yOverlay
local df : DivFrame 1
include : df.markSet.b
include : Body df Ascender
if topSerif : include : topSerif df Ascender
if bottomSerif : include : bottomSerif df Ascender
set-base-anchor 'overlayOnExtension' (df.rightSB - 0.5 * Stroke * HVContrast) yOverlay
create-glyph "dcroat.\(suffix)" : glyph-proc
local df : DivFrame 1
include [refer-glyph "d.\(suffix)"] AS_BASE ALSO_METRICS
include : LetterBarOverlay.r.in RightSB XH (Ascender - [if topSerif Stroke 0])
include : LetterBarOverlay.r.in df.rightSB XH (Ascender - [if topSerif Stroke 0])
create-glyph "latn/de.\(suffix)" : glyph-proc
local df : DivFrame 1
include [refer-glyph "d.\(suffix)"] AS_BASE ALSO_METRICS
local xLeft : mix RightSB SB 0.9
include : HBar.t xLeft (RightSB + O) CAP
local xLeft : mix df.rightSB df.leftSB 0.9
include : HBar.t xLeft (df.rightSB + O) CAP
if topSerif : include : VSerif.dl xLeft CAP : Math.min VJut (0.8 * (Ascender - XH))
define yDHookTopConnect : Ascender - Hook - HalfStroke
create-glyph "dHookTop.\(suffix)" : glyph-proc
local df : DivFrame 1
include : df.markSet.b
include : Body df (Ascender - Hook - HalfStroke)
include : VerticalHook.r df.rightSB yDHookTopConnect HookX (-Hook)
if bottomSerif : include : bottomSerif df Ascender
create-glyph "cyrl/djeKomi.\(suffix)" : glyph-proc
local df : DivFrame 1 3
include : df.markSet.b
local dfHalf : df.slice 3 2
include : Body dfHalf Ascender
eject-contour 'rightBar'
include : WithTransform [ApparentTranslate (df.width - dfHalf.width) 0] : UpwardHookShape
left -- dfHalf.leftSB
right -- dfHalf.rightSB
ybegin -- Ascender
yend -- (XH / 2)
ada -- [dfHalf.archDepthA SmallArchDepth df.mvs]
adb -- [dfHalf.archDepthB SmallArchDepth df.mvs]
sw -- df.mvs
if topSerif : include : topSerif dfHalf Ascender
if bottomSerif : begin
local sf2 : [SerifFrame.fromDf df (XH / 2) 0].slice 1 2
include sf2.rt.full
select-variant 'd' 'd'
select-variant 'dcroat' 0x111 (follow -- 'd')
select-variant 'latn/de' 0x18C (follow -- 'd')
@ -83,11 +157,33 @@ glyph-block Letter-Latin-Lower-D : begin
link-reduced-variant 'd/hookBottomBase' 'd'
CreateAccentedComposition 'dTildeOver' 0x1D6D 'd' 'tildeOverOnExension'
select-variant 'dHookTop' 0x257
link-reduced-variant 'dHookTop/hookBottomBase' 'dHookTop'
select-variant 'cyrl/djeKomi' 0x503
derive-composites 'dPalatalHook' 0x1D81 'd/hookBottomBase' : PalatalHook.r
xLink -- RightSB
x -- (RightSB + SideJut)
y -- 0
derive-composites 'dHookBottom' 0x256 'd/hookBottomBase'
VerticalHook.r RightSB 0 HookX Hook
derive-composites 'dHookTopBottom' 0x1D91 'dHookTop/hookBottomBase'
VerticalHook.r RightSB 0 HookX Hook
derive-multi-part-glyphs 'ddot' 0x1E0B {'d' 'dotAbove'} : lambda [srcs gr] : glyph-proc
local { base mark } srcs
include : refer-glyph mark
include : Translate (Width - HalfStroke) 0
include [refer-glyph base] AS_BASE
derive-composites 'dBar' 0xA7C8 'd'
HBar.m (SB - OX) (RightSB + OX) (XH * 0.5) OverlayStroke
derive-composites 'currency/dongSign' 0x20AB 'dcroat' 'sbRsbUnderlineBelow'
define DCurlyTailConfig : object
toothedSerifless { false }
toothedTopSerifed { true }
@ -111,67 +207,6 @@ glyph-block Letter-Latin-Lower-D : begin
select-variant 'dCurlyTail' 0x221
define yDHookTopConnect : Ascender - Hook - HalfStroke
create-glyph 'dHookTop.toothedSerifless' : glyph-proc
include : MarkSet.b
include : OBarRight.shape
include : VBar.r RightSB 0 yDHookTopConnect
include : VerticalHook.r RightSB yDHookTopConnect HookX (-Hook)
create-glyph 'dHookTop.toothedBottomSerifed' : glyph-proc
include : MarkSet.b
include : OBarRight.shape
include : VBar.r RightSB 0 yDHookTopConnect
include : VerticalHook.r RightSB yDHookTopConnect HookX (-Hook)
include : tagged 'serifRB' : HSerif.rb RightSB 0 SideJut
create-glyph 'dHookTop.tailedSerifless' : glyph-proc
include : MarkSet.b
include : OBarRight.shape
include : RightwardTailedBar RightSB 0 yDHookTopConnect
include : VerticalHook.r RightSB yDHookTopConnect HookX (-Hook)
create-glyph 'dHookTop.toothlessCornerSerifless' : glyph-proc
include : MarkSet.b
include : OBarRight.toothless XH RightSB DToothlessRise DMBlend
include : VBar.r RightSB DToothlessRise yDHookTopConnect
include : VerticalHook.r RightSB yDHookTopConnect HookX (-Hook)
create-glyph 'dHookTop.toothlessCornerSeriflessHBB' : glyph-proc
include : MarkSet.b
include : OBarRight.toothless XH RightSB DToothlessRise DMBlend
include : VBar.r RightSB 0 yDHookTopConnect
include : VerticalHook.r RightSB yDHookTopConnect HookX (-Hook)
create-glyph 'dHookTop.toothlessRoundedSerifless' : glyph-proc
include : MarkSet.b
include : OBarRight.rounded XH RightSB yDHookTopConnect
include : VerticalHook.r RightSB yDHookTopConnect HookX (-Hook)
create-glyph 'dHookTop.toothlessRoundedSeriflessHBB' : glyph-proc
include : MarkSet.b
include : OBarRight.rounded XH RightSB yDHookTopConnect
include : VBar.r RightSB 0 yDHookTopConnect
include : VerticalHook.r RightSB yDHookTopConnect HookX (-Hook)
select-variant 'dHookTop' 0x257
link-reduced-variant 'dHookTop/hookBottomBase' 'dHookTop'
derive-composites 'dHookBottom' 0x256 'd/hookBottomBase'
VerticalHook.r RightSB 0 HookX Hook
derive-composites 'dHookTopBottom' 0x1D91 'dHookTop/hookBottomBase'
VerticalHook.r RightSB 0 HookX Hook
derive-multi-part-glyphs 'ddot' 0x1E0B {'d' 'dotAbove'} : lambda [srcs gr] : glyph-proc
local { base mark } srcs
include : refer-glyph mark
include : Translate (Width - HalfStroke) 0
include [refer-glyph base] AS_BASE
derive-composites 'dBar' 0xA7C8 'd'
HBar.m (SB - OX) (RightSB + OX) (XH * 0.5) OverlayStroke
derive-composites 'currency/dongSign' 0x20AB 'dcroat' 'sbRsbUnderlineBelow'
glyph-block-import Letter-Blackboard : BBS BBD BBBarRight
create-glyph 'mathbb/d' 0x1D555 : glyph-proc

View file

@ -91,7 +91,7 @@ glyph-block Letter-Latin-Lower-G : begin
curl xTerminal Descender [heading Leftward]
export : define [SeriflessBody df top] : glyph-proc
include : OBarRight.shape (top -- top) (left -- df.leftSB) (right -- df.rightSB) (stroke -- df.mvs)
include : OBarRight.shape (top -- top) (left -- df.leftSB) (right -- df.rightSB) (sw -- df.mvs)
export : define [SerifedBody df top] : glyph-proc
include : SeriflessBody df top
@ -184,9 +184,10 @@ glyph-block Letter-Latin-Lower-G : begin
OShapeOutline.NoOvershoot XH 0 SB (RightSB - BBD - BBS * HVContrast)
VBar.l (SB + BBD + OX) 0 XH BBS
include : OBarRight.shape
right -- RightSB - BBD
top -- XH
stroke -- BBS
left -- SB
right -- RightSB - BBD
sw -- BBS
include : SingleStorey.RoundHookT dispiro [DivFrame 1] XH 0 BBS
include : HBar.t (RightSB - BBD) RightSB XH BBS
include : intersection

View file

@ -20,7 +20,7 @@ glyph-block Letter-Latin-Lower-P : begin
include : tagged 'stemLeft' : VBar.l SB Descender XH
define [EarlessCornerBody] : glyph-proc
include : tagged 'bowl' : OBarLeft.toothlessTop XH SB DToothlessRise DMBlend
include : tagged 'bowl' : OBarLeft.toothlessTop XH (rise -- DToothlessRise) (mBlend -- DMBlend)
include : tagged 'stemLeft' : VBar.l SB Descender (XH - DToothlessRise)
define [EarlessRoundedBody] : glyph-proc
@ -93,7 +93,7 @@ glyph-block Letter-Latin-Lower-P : begin
include : OBarLeft.shape
left -- SB + BBD
top -- XH
stroke -- BBS
sw -- BBS
derive-glyphs 'pHookTop' 0x1A5 "p/hookTopBase" : function [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS

View file

@ -24,7 +24,7 @@ glyph-block Letter-Latin-Lower-Q : begin
define [EaredBody terminal top bottom] : glyph-proc
set-base-anchor 'trailing' (RightSB - markHalfStroke) Descender
include : OBarRight.shape top
include : OBarRight.shape (top -- top)
include : match terminal
[Just TERMINAL-NORMAL] : VBar.r RightSB bottom top
[Just TERMINAL-TAILED] : RightwardTailedBar RightSB bottom top
@ -109,6 +109,7 @@ glyph-block Letter-Latin-Lower-Q : begin
OShapeOutline.NoOvershoot XH 0 SB (RightSB - BBD - BBS * HVContrast)
VBar.l (SB + BBD + OX) 0 XH BBS
include : OBarRight.shape
right -- RightSB - BBD
top -- XH
stroke -- BBS
left -- SB
right -- RightSB - BBD
sw -- BBS

View file

@ -35,8 +35,8 @@ glyph-block Letter-Latin-Upper-T : begin
local xTopBarLeft : df.leftSB - SideJut
local xTopBarRightSym : 2 * left + HVContrast * df.mvs - xTopBarLeft
local xTopBarRight : Math.max xTopBarRightSym : mix left df.rightSB 0.475
include : tagged 'strokeLT' : HBar.t xTopBarLeft mid top df.mvs
include : tagged 'strokeRT' : HBar.t mid xTopBarRight top df.mvs
include : tagged 'strokeLT' : HBar.t xTopBarLeft mid top
include : tagged 'strokeRT' : HBar.t mid xTopBarRight top
include : UpwardHookShape
left -- left
right -- df.rightSB
@ -138,11 +138,13 @@ glyph-block Letter-Latin-Upper-T : begin
include : VerticalHook.m df.middle 0 HookX Hook
create-glyph "cyrl/TjeKomi.\(suffix)" : glyph-proc
local df : DivFrame div 3
set-width df.width
include : df.markSet.capital
include : TjeShape df CAP doST
create-glyph "cyrl/tjeKomi.\(suffix)" : glyph-proc
local df : DivFrame div 3
set-width df.width
include : df.markSet.e
include : TjeShape df XH doST

View file

@ -227,30 +227,30 @@ glyph-block Letter-Shared-Shapes : begin
define OBarLeft : namespace
define kSkewShift 0.5
export : define [shape] : params [
[top XH] [left SB] [right RightSB] [stroke Stroke] [fine ShoulderFine]
[top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB]
] : begin
local skew : shoulderMidSkew fine stroke
local mt : [mix left right 0.5] + (skew + kSkewShift * TanSlope) * stroke
local mb : [mix left right 0.5] + (skew + kSkewShift * TanSlope) * stroke
local skew : shoulderMidSkew fine sw
local mt : [mix left right 0.5] + (skew + kSkewShift * TanSlope) * sw
local mb : [mix left right 0.5] + (skew + kSkewShift * TanSlope) * sw
return : dispiro
widths.lhs fine
flat (left + (stroke - fine) * HVContrast) (top - ada - 0.01)
curl (left + (stroke - fine) * HVContrast) (0 + adb)
flat (left + (sw - fine) * HVContrast) (top - ada - 0.01)
curl (left + (sw - fine) * HVContrast) (0 + adb)
arcvh
g4 (mb) O [widths.lhs.heading stroke {.y (1) .x (-skew)}]
g4 (mb) O [widths.lhs.heading sw {.y (1) .x (-skew)}]
archv
flat (right - OX) (0 + ada)
curl (right - OX) (top - adb)
arcvh
g4 (mt) (top - O) [widths.lhs.heading stroke {.y (-1) .x (-skew)}]
g4 (mt) (top - O) [widths.lhs.heading sw {.y (-1) .x (-skew)}]
archv
flat (left + (stroke - fine) * HVContrast) (top - ada) [widths.lhs fine]
curl (left + (stroke - fine) * HVContrast) (top - ada - 0.01)
flat (left + (sw - fine) * HVContrast) (top - ada) [widths.lhs fine]
curl (left + (sw - fine) * HVContrast) (top - ada - 0.01)
export : define [toothless] : params [
[top XH] [left SB] [right RightSB] [rise SHook] [mBlend : Math.sqrt (1 / 2)]
[sw Stroke]
[top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke]
[mBlend : Math.sqrt (1 / 2)] [ada SmallArchDepthA] [adb SmallArchDepthB]
] : begin
local fine ShoulderFine
local skew : shoulderMidSkew fine sw
@ -261,13 +261,13 @@ glyph-block Letter-Shared-Shapes : begin
alsoThru.g2 0.5 mBlend important
g4.right.mid mb O
archv
flat (right - OX) (0 + SmallArchDepthA)
curl (right - OX) (top - SmallArchDepthB)
flat (right - OX) (0 + ada)
curl (right - OX) (top - adb)
arcvh
g4 (mt) (top - O) [widths.heading sw 0 {.y (-1) .x (-skew)}]
archv
flat (left + (sw - fine) * HVContrast) (top - SmallArchDepthA) [widths fine 0]
curl (left + (sw - fine) * HVContrast) (top - SmallArchDepthA - 0.01) [widths fine 0]
flat (left + (sw - fine) * HVContrast) (top - ada) [widths fine 0]
curl (left + (sw - fine) * HVContrast) (top - ada - 0.01) [widths fine 0]
export : define [rounded] : params [
[top XH] [left SB] [right RightSB] [yTerminal CAP] [sw Stroke] [fine ShoulderFine]
@ -291,28 +291,29 @@ glyph-block Letter-Shared-Shapes : begin
curl (left + (sw - fine) * HVContrast) (top - ada - 0.01) [widths fine 0]
export : define [toothlessTop] : params [
[top XH] [left SB] [rise SHook] [mBlend : Math.sqrt (1 / 2)]
[top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke]
[mBlend : Math.sqrt (1 / 2)] [ada SmallArchDepthA] [adb SmallArchDepthB]
] : begin
local fine ShoulderFine
local skew : shoulderMidSkew fine
local mt : [mix left RightSB 0.5] - CorrectionOMidX * Stroke
local mb : [mix left RightSB 0.5] + (skew + kSkewShift * TanSlope) * Stroke
local mt : [mix left right 0.5] - CorrectionOMidX * sw
local mb : [mix left right 0.5] + (skew + kSkewShift * TanSlope) * sw
return : dispiro
flat (left + (Stroke - fine) * HVContrast) (top - SmallArchDepthA - 0.01) [widths fine 0]
curl (left + (Stroke - fine) * HVContrast) (0 + SmallArchDepthB) [widths fine 0]
flat (left + (sw - fine) * HVContrast) (top - ada - 0.01) [widths fine 0]
curl (left + (sw - fine) * HVContrast) (0 + adb) [widths fine 0]
arcvh
g4 (mb) O [widths.heading Stroke 0 {.y (1) .x (-skew)}]
g4 (mb) O [widths.heading sw 0 {.y (1) .x (-skew)}]
archv
flat (RightSB - OX) (0 + SmallArchDepthA)
curl (RightSB - OX) (top - SmallArchDepthB)
flat (right - OX) (0 + ada)
curl (right - OX) (top - adb)
arcvh
g4 mt (top - O) [widths.lhs Stroke]
g4 mt (top - O) [widths.lhs sw]
alsoThru.g2 0.5 (1 - mBlend) important
g4 left (top - rise) [widths.lhs Stroke]
g4 left (top - rise) [widths.lhs sw]
export : define [roundedTop] : params [
[top XH] [left SB] [right RightSB] [yTerminal Descender] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB]
[top XH] [left SB] [right RightSB] [yTerminal Descender] [sw Stroke]
[fine ShoulderFine] [ada SmallArchDepthA] [adb SmallArchDepthB]
] : begin
local skew : shoulderMidSkew fine
local mt : [mix left right 0.5] - CorrectionOMidX * sw
@ -334,26 +335,47 @@ glyph-block Letter-Shared-Shapes : begin
glyph-block-export : OBarRight
define OBarRight : namespace
export : define [shape] : params [
[top XH] [right RightSB] [stroke Stroke] [fine ShoulderFine]
[top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB]
] : new-glyph : glyph-proc
include : OBarLeft.shape
top -- [fallback top XH]
left -- (Width - right)
stroke -- stroke
top -- top
left -- left
right -- right
sw -- sw
fine -- fine
include : FlipAround Middle (top / 2)
ada -- ada
adb -- adb
include : FlipAround [mix left right 0.5] (top / 2)
export : define [toothless] : params [
[top XH] [right RightSB] [rise SHook] [mBlend : Math.sqrt (1 / 2)]
[top XH] [left SB] [right RightSB] [rise SHook] [sw Stroke]
[mBlend : Math.sqrt (1 / 2)] [ada SmallArchDepthA] [adb SmallArchDepthB]
] : new-glyph : glyph-proc
include : OBarLeft.toothlessTop top (Width - right) rise mBlend
include : FlipAround Middle (top / 2)
include : OBarLeft.toothlessTop
top -- top
left -- left
right -- right
rise -- rise
sw -- sw
mBlend -- mBlend
ada -- ada
adb -- adb
include : FlipAround [mix left right 0.5] (top / 2)
export : define [rounded _top _right _yTerminal] : params [
[top XH] [right RightSB] [yTerminal CAP]
export : define [rounded] : params [
[top XH] [left SB] [right RightSB] [sw Stroke] [yTerminal CAP]
[ada SmallArchDepthA] [adb SmallArchDepthB]
] : new-glyph : glyph-proc
include : OBarLeft.roundedTop top (Width - right) (yTerminal -- top - yTerminal)
include : FlipAround Middle (top / 2)
include : OBarLeft.roundedTop
top -- top
left -- left
right -- right
sw -- sw
yTerminal -- (top - yTerminal)
ada -- ada
adb -- adb
include : FlipAround [mix left right 0.5] (top / 2)
glyph-block-export FlatHookDepth
define [FlatHookDepth df s] : object

View file

@ -118,6 +118,7 @@ class NormalRectifier {
if (isTangentValid(d)) {
this.m_biKnots[0].origTangent = d;
} else {
console.error(this.m_biKnots);
throw new Error("NaN angle detected.");
}
}
@ -126,6 +127,7 @@ class NormalRectifier {
if (isTangentValid(d)) {
this.m_biKnots[this.m_nKnotsProcessed].origTangent = d;
} else {
console.error(this.m_biKnots);
throw new Error("NaN angle detected.");
}
}

View file

@ -2047,6 +2047,7 @@ selector."d/hookBottomBase" = "toothedSerifless"
selector.dCurlyTail = "toothedSerifless"
selector.dHookTop = "toothedSerifless"
selector."dHookTop/hookBottomBase" = "toothedSerifless"
selector."cyrl/djeKomi" = "toothedSerifless"
[prime.d.variants.toothed-top-serifed]
rank = 2
@ -2058,6 +2059,7 @@ selector."d/hookBottomBase" = "toothedTopSerifed"
selector.dCurlyTail = "toothedTopSerifed"
selector.dHookTop = "toothedSerifless"
selector."dHookTop/hookBottomBase" = "toothedSerifless"
selector."cyrl/djeKomi" = "toothedTopSerifed"
[prime.d.variants.toothed-serifed]
rank = 3
@ -2069,6 +2071,7 @@ selector."d/hookBottomBase" = "toothedTopSerifed"
selector.dCurlyTail = "toothedTopSerifed"
selector.dHookTop = "toothedBottomSerifed"
selector."dHookTop/hookBottomBase" = "toothedSerifless"
selector."cyrl/djeKomi" = "toothedSerifed"
[prime.d.variants.toothless-corner-serifless]
rank = 4
@ -2080,6 +2083,7 @@ selector."d/hookBottomBase" = "toothlessCornerSeriflessHBB"
selector.dCurlyTail = "toothedSerifless"
selector.dHookTop = "toothlessCornerSerifless"
selector."dHookTop/hookBottomBase" = "toothlessCornerSeriflessHBB"
selector."cyrl/djeKomi" = "toothlessRoundedSerifless"
[prime.d.variants.toothless-corner-serifed]
rank = 5
@ -2091,6 +2095,7 @@ selector."d/hookBottomBase" = "toothlessCornerSerifedHBB"
selector.dCurlyTail = "toothedTopSerifed"
selector.dHookTop = "toothlessCornerSerifless"
selector."dHookTop/hookBottomBase" = "toothlessCornerSeriflessHBB"
selector."cyrl/djeKomi" = "toothlessRoundedSerifed"
[prime.d.variants.toothless-rounded-serifless]
rank = 6
@ -2102,6 +2107,7 @@ selector."d/hookBottomBase" = "toothlessRoundedSeriflessHBB"
selector.dCurlyTail = "toothedSerifless"
selector.dHookTop = "toothlessRoundedSerifless"
selector."dHookTop/hookBottomBase" = "toothlessRoundedSeriflessHBB"
selector."cyrl/djeKomi" = "toothlessRoundedSerifless"
[prime.d.variants.toothless-rounded-serifed]
rank = 7
@ -2113,6 +2119,7 @@ selector."d/hookBottomBase" = "toothlessRoundedSerifedHBB"
selector.dCurlyTail = "toothedTopSerifed"
selector.dHookTop = "toothlessRoundedSerifless"
selector."dHookTop/hookBottomBase" = "toothlessRoundedSeriflessHBB"
selector."cyrl/djeKomi" = "toothlessRoundedSerifed"
[prime.d.variants.tailed-serifless]
rank = 8
@ -2124,6 +2131,7 @@ selector."d/hookBottomBase" = "toothedSerifless"
selector.dCurlyTail = "toothedSerifless"
selector.dHookTop = "tailedSerifless"
selector."dHookTop/hookBottomBase" = "toothedSerifless"
selector."cyrl/djeKomi" = "toothedSerifless"
[prime.d.variants.tailed-serifed]
rank = 9
@ -2135,6 +2143,7 @@ selector."d/hookBottomBase" = "toothedTopSerifed"
selector.dCurlyTail = "toothedTopSerifed"
selector.dHookTop = "tailedSerifless"
selector."dHookTop/hookBottomBase" = "toothedSerifless"
selector."cyrl/djeKomi" = "toothedSerifed"