Add
- CYRILLIC CAPITAL LETTER DZZE (`U+A688`) (#1799). - CYRILLIC SMALL LETTER DZZE (`U+A689`) (#1799). - MODIFIER LETTER CYRILLIC SMALL DZZE (`U+1E04A`) (#1799).
This commit is contained in:
parent
6edc915e6c
commit
088b555749
30 changed files with 200 additions and 123 deletions
|
@ -2,5 +2,8 @@
|
|||
* Add Characters:
|
||||
- CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH (`U+1F10F`).
|
||||
- CIRCLED C WITH OVERLAID BACKSLASH (`U+1F16E`).
|
||||
- CYRILLIC CAPITAL LETTER DZZE (`U+A688`) (#1799).
|
||||
- CYRILLIC SMALL LETTER DZZE (`U+A689`) (#1799).
|
||||
- MODIFIER LETTER CYRILLIC SMALL DZZE (`U+1E04A`) (#1799).
|
||||
* Fix reversed shape of `U+1D12` (#1814).
|
||||
* Improve density of quadruple arrows for better legibility at smaller font sizes.
|
||||
|
|
|
@ -1356,16 +1356,16 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
|||
define stdShrink : clamp 0.625 0.9 : StrokeWidthBlend 0.625 0.9
|
||||
createPhoneticLigatures ToLetter 'phonetic' para.diversityM 2 stdShrink 1 : list
|
||||
list 0x02A3 { 'd/phoneticLeft' 'z' } 'b'
|
||||
list 0x02A4 { 'd/phoneticLeft' 'ezh' } 'if'
|
||||
list 0x02A4 { 'd/phoneticLeft' 'ezh' } 'bp'
|
||||
list 0x02A5 { 'd/phoneticLeft' 'zCurlyTail' } 'b'
|
||||
list 0x02A6 { 't/phoneticLeft2' 's/phoneticRight' } 'b'
|
||||
list 0x02A7 { 't/teshLeft' 'esh' } 'if'
|
||||
list 0x02A7 { 't/teshLeft' 'esh' } 'bp'
|
||||
list 0x02A8 { 't/phoneticLeft1' 'cCurlyTail' } 'b'
|
||||
list 0x02A9 { 'f/phoneticLeft' 'eng/phoneticRight' } 'if'
|
||||
list 0x02A9 { 'f/phoneticLeft' 'eng/phoneticRight' } 'bp'
|
||||
list 0x02AA { 'l/phoneticLeft' 's/phoneticRight' } 'b'
|
||||
list 0x02AB { 'l/phoneticLeft' 'z' } 'b'
|
||||
list 0xAB66 { 'd/phoneticLeft' 'zRTailBR' } 'if'
|
||||
list 0xAB67 { 't/phoneticLeft1' 'sRTail' } 'if'
|
||||
list 0xAB66 { 'd/phoneticLeft' 'zRTailBR' } 'bp'
|
||||
list 0xAB67 { 't/phoneticLeft1' 'sRTail' } 'bp'
|
||||
list 0xFB00 { 'f' 'f' } null
|
||||
list 0xFB01 { 'f/compLigLeft1' 'dotlessi/compLigRight' } null
|
||||
list 0xFB02 { 'f/compLigLeft2' 'l/compLigRight' } null
|
||||
|
@ -1378,15 +1378,15 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
|
|||
|
||||
createPhoneticLigatures ToSuperscript 'phoneticSuperscript' 1 2 stdShrink 1 : list
|
||||
list 0x10787 { 'd/phoneticLeft' 'z' } 'b'
|
||||
list 0x1078A { 'd/phoneticLeft' 'ezh' } 'if'
|
||||
list 0x10789 { 'd/phoneticLeft' 'zCurlyTail' } 'if'
|
||||
list 0x1078A { 'd/phoneticLeft' 'ezh' } 'bp'
|
||||
list 0x10789 { 'd/phoneticLeft' 'zCurlyTail' } 'bp'
|
||||
list 0x107AC { 't/phoneticLeft2' 's/phoneticRight' } 'b'
|
||||
list 0x107AE { 't/teshLeft' 'esh' } 'if'
|
||||
list 0x107AE { 't/teshLeft' 'esh' } 'bp'
|
||||
list 0x107AB { 't/phoneticLeft1' 'cCurlyTail' } 'b'
|
||||
list 0x10790 { 'f/phoneticLeft' 'eng/phoneticRight' } 'if'
|
||||
list 0x10790 { 'f/phoneticLeft' 'eng/phoneticRight' } 'bp'
|
||||
list 0x10799 { 'l/phoneticLeft' 's/phoneticRight' } 'b'
|
||||
list 0x1079A { 'l/phoneticLeft' 'z' } 'b'
|
||||
list 0x10788 { 'd/phoneticLeft' 'zRTailBR' } 'if'
|
||||
list 0x10788 { 'd/phoneticLeft' 'zRTailBR' } 'bp'
|
||||
list 0x107AD { 't/phoneticLeft1' 'sRTail' } 'p'
|
||||
|
||||
createPhoneticLigatures ToSubscript 'tenSubscript' 1 2 1 0.5 : list
|
||||
|
|
|
@ -320,6 +320,7 @@ glyph-block Autobuild-Transformed : begin
|
|||
list 0x1E047 'cyrl/yery'
|
||||
list 0x1E048 'cyrl/e'
|
||||
list 0x1E049 'cyrl/yu'
|
||||
list 0x1E04A 'cyrl/dzze'
|
||||
list 0x1E04B 'cyrl/schwa'
|
||||
list 0x1E04C 'cyrl/Ukrainiani'
|
||||
list 0x1E04D 'cyrl/je'
|
||||
|
|
|
@ -8,6 +8,9 @@ glyph-block Letter-Cyrillic-De : begin
|
|||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors
|
||||
glyph-block-import Letter-Greek-Lower-Epsilon : CyrZe EpsilonConfig
|
||||
|
||||
local BottomExtension : 0.25 * Stroke - LongJut
|
||||
|
||||
glyph-block-export CyrDeShape CyrDeItalicShapeT
|
||||
define [CyrDeShape top left right _sw _desc] : glyph-proc
|
||||
|
@ -18,17 +21,21 @@ glyph-block Letter-Cyrillic-De : begin
|
|||
local xTopRight : mix xCutLeft xCutRight : StrokeWidthBlend 0.95 0.96
|
||||
local swOuter : fallback _sw Stroke
|
||||
local swInner : swOuter * [AdviceStroke 2.75] / Stroke
|
||||
local desc : fallback _desc : -LongJut + 0.5 * Stroke
|
||||
local desc : fallback _desc BottomExtension
|
||||
|
||||
include : HBar.b (xCutLeft - descenderOverflow) (xCutRight + descenderOverflow) 0 swOuter
|
||||
include : HBar.b xTopLeft xTopRight 0 swOuter
|
||||
include : VBar.r xTopRight 0 top swInner
|
||||
include : dispiro
|
||||
widths.lhs swInner
|
||||
flat xTopLeft top
|
||||
curl xTopLeft [mix 0 top 0.625]
|
||||
g4 xCutLeft swOuter
|
||||
include : VBar.l (xCutLeft - descenderOverflow) desc 0.1 swOuter
|
||||
include : VBar.r (xCutRight + descenderOverflow) desc 0.1 swOuter
|
||||
include : tagged 'footL' : union
|
||||
HBar.b (xCutLeft - descenderOverflow) xTopLeft 0 swOuter
|
||||
VBar.l (xCutLeft - descenderOverflow) desc 0.1 swOuter
|
||||
include : tagged 'footR' : union
|
||||
HBar.b xTopRight (xCutRight + descenderOverflow) 0 swOuter
|
||||
VBar.r (xCutRight + descenderOverflow) desc 0.1 swOuter
|
||||
|
||||
include : if SLAB
|
||||
then : dispiro
|
||||
|
@ -37,25 +44,7 @@ glyph-block Letter-Cyrillic-De : begin
|
|||
curl (xTopRight + descenderOverflow) top
|
||||
else : HBar.t xTopLeft xTopRight top swOuter
|
||||
|
||||
define [CyrDeItalicShapeT sink left right _sw] : begin
|
||||
local stroke : fallback _sw Stroke
|
||||
local middle : mix left right 0.5
|
||||
return : sink
|
||||
widths.lhs (stroke * CThinB)
|
||||
flat (right - OX - stroke * HVContrast * (1 - CThinB)) SmallArchDepthA
|
||||
curl (right - OX - stroke * HVContrast * (1 - CThinB)) (XH - SmallArchDepthB)
|
||||
arcvh
|
||||
g4 (middle - CorrectionOMidS) (Ascender * 0.7 - O) [widths.lhs stroke]
|
||||
archv
|
||||
flat (left + OX) (XH - SmallArchDepthA)
|
||||
curl (left + OX) SmallArchDepthB
|
||||
arcvh
|
||||
g4 (middle + CorrectionOMidS) O
|
||||
archv
|
||||
flat (right - OX) SmallArchDepthA
|
||||
curl (right - OX) (XH - SmallArchDepthB)
|
||||
quadControls 0 0.8
|
||||
g4 (left + stroke * 1.1) Ascender
|
||||
return : object desc xTopLeft xTopRight
|
||||
|
||||
define [CyrSoftDeShape top left right _sw] : glyph-proc
|
||||
local descenderOverflow : if SLAB SideJut ((right - left) * 0.075)
|
||||
|
@ -74,12 +63,12 @@ glyph-block Letter-Cyrillic-De : begin
|
|||
|
||||
create-glyph 'cyrl/De' 0x414 : glyph-proc
|
||||
include : MarkSet.capital
|
||||
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
|
||||
include : ExtendBelowBaseAnchors BottomExtension
|
||||
include : CyrDeShape CAP SB RightSB
|
||||
|
||||
create-glyph 'cyrl/de.upright' : glyph-proc
|
||||
include : MarkSet.e
|
||||
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
|
||||
include : ExtendBelowBaseAnchors BottomExtension
|
||||
include : CyrDeShape XH SB RightSB
|
||||
|
||||
create-glyph 'cyrl/deLongLeg' 0x1C81 : glyph-proc
|
||||
|
@ -90,16 +79,86 @@ glyph-block Letter-Cyrillic-De : begin
|
|||
local df : DivFrame para.diversityM 3
|
||||
set-width df.width
|
||||
include : df.markSet.capital
|
||||
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
|
||||
include : ExtendBelowBaseAnchors BottomExtension
|
||||
include : CyrSoftDeShape CAP df.leftSB df.rightSB df.mvs
|
||||
|
||||
create-glyph 'cyrl/deSoft' 0xA663 : glyph-proc
|
||||
local df : DivFrame para.diversityM 3
|
||||
set-width df.width
|
||||
include : df.markSet.e
|
||||
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
|
||||
include : ExtendBelowBaseAnchors BottomExtension
|
||||
include : CyrSoftDeShape XH df.leftSB df.rightSB df.mvs
|
||||
|
||||
|
||||
foreach { suffix { st sb }} [Object.entries EpsilonConfig] : do
|
||||
define [DzzeDescendershape de] : begin
|
||||
local sr : [mix RightSB Width 0.5] - O * 2
|
||||
local sl : mix sr de.xTopRight 2
|
||||
local sw : AdviceStroke 2.5 ((sr - sl + 2 * SB) / Width)
|
||||
local shapeBot : de.desc - 0.5 * sw
|
||||
local hook : Hook * (0 - shapeBot) / CAP
|
||||
local ze : CyrZe 3 sb sw shapeBot sl sr 0.65 hook sw (0.5 * O) 0.5
|
||||
return : union [ze.Shape] [ze.AutoEndSerifL]
|
||||
|
||||
create-glyph "cyrl/Dzze.\(suffix)" : glyph-proc
|
||||
include : MarkSet.capital
|
||||
include : ExtendBelowBaseAnchors BottomExtension
|
||||
local de : include : CyrDeShape CAP SB RightSB
|
||||
eject-contour 'footR'
|
||||
include : DzzeDescendershape de
|
||||
|
||||
create-glyph "cyrl/dzze.upright.\(suffix)" : glyph-proc
|
||||
include : MarkSet.e
|
||||
include : ExtendBelowBaseAnchors BottomExtension
|
||||
local de : include : CyrDeShape XH SB RightSB
|
||||
eject-contour 'footR'
|
||||
include : DzzeDescendershape de
|
||||
|
||||
## Italic
|
||||
define [CyrDeItalicShapeT sink df _sw] : begin
|
||||
local left df.leftSB
|
||||
local right df.rightSB
|
||||
local middle : mix left right 0.5
|
||||
local sw : fallback _sw df.mvs
|
||||
|
||||
local ada : df.archDepthA SmallArchDepth
|
||||
local adb : df.archDepthB SmallArchDepth
|
||||
|
||||
return : sink
|
||||
widths.lhs (sw * CThinB)
|
||||
flat (right - OX - sw * HVContrast * (1 - CThinB)) ada
|
||||
curl (right - OX - sw * HVContrast * (1 - CThinB)) (XH - adb)
|
||||
arcvh
|
||||
g4 (middle - CorrectionOMidX * df.mvs) (Ascender * 0.7 - O) [widths.lhs sw]
|
||||
archv
|
||||
flat (left + OX) (XH - ada)
|
||||
curl (left + OX) adb
|
||||
arcvh
|
||||
g4 (middle + CorrectionOMidX * sw) O
|
||||
archv
|
||||
flat (right - OX) ada
|
||||
curl (right - OX) (XH - adb)
|
||||
quadControls 0 0.8
|
||||
g4 (left + sw * 1.1) Ascender
|
||||
|
||||
create-glyph 'cyrl/de.italic' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : CyrDeItalicShapeT dispiro SB RightSB Stroke
|
||||
include : CyrDeItalicShapeT dispiro [DivFrame 1]
|
||||
|
||||
foreach { suffix { st sb }} [Object.entries EpsilonConfig] : do
|
||||
create-glyph "cyrl/dzze.italic.\(suffix)" : glyph-proc
|
||||
local df : DivFrame para.diversityM 3
|
||||
set-width df.width
|
||||
include : df.markSet.bp
|
||||
|
||||
local dfLeft : df.slice 3 2 OX
|
||||
include : CyrDeItalicShapeT dispiro dfLeft
|
||||
|
||||
local xZeLeft : dfLeft.leftSB + df.width - dfLeft.width + OX
|
||||
local xZeRight : dfLeft.rightSB + df.width - dfLeft.width - OX
|
||||
local ze : CyrZe 1 sb XH Descender xZeLeft xZeRight 0.65 Hook df.mvs
|
||||
include : union [ze.Shape] [ze.AutoEndSerifL]
|
||||
|
||||
select-variant 'cyrl/Dzze' 0xA688 (follow -- 'cyrl/ze/topAttached')
|
||||
select-variant 'cyrl/dzze.upright' (follow -- 'cyrl/ze/topAttached')
|
||||
select-variant 'cyrl/dzze.italic' (follow -- 'cyrl/ze/topAttached')
|
||||
|
|
|
@ -22,13 +22,13 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
|
|||
glyph-block-import Letter-Cyrillic-De : CyrDeShape CyrDeItalicShapeT
|
||||
|
||||
define [CyrDzzheDeShape df top] : glyph-proc
|
||||
local [object subDf sw] : SubDfDim 0 2 df
|
||||
local [object subDf sw] : SubDfDim 0 2 df OX
|
||||
local left : if SLAB (subDf.leftSB + 0.5 * SideJut) subDf.leftSB
|
||||
include : CyrDeShape top left subDf.rightSB sw
|
||||
|
||||
define [CyrDzzheDeItalicShape df] : glyph-proc
|
||||
local [object subDf sw] : SubDfDim 0 2 df
|
||||
include : CyrDeItalicShapeT dispiro subDf.leftSB subDf.rightSB sw
|
||||
local [object subDf sw] : SubDfDim 0 2 df OX
|
||||
include : CyrDeItalicShapeT dispiro subDf sw
|
||||
|
||||
create-glyph "cyrl/Dzzhe/left" : glyph-proc
|
||||
define df : DivFrame para.diversityM 3.5
|
||||
|
@ -66,7 +66,7 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
|
|||
bilateralInwardSerifed { SLAB-INWARD SLAB-INWARD }
|
||||
|
||||
define [CyrZhweZeShape slabTop slabBot df top hook] : glyph-proc
|
||||
local [object subDf sw] : SubDfDim 0 2 df
|
||||
local [object subDf sw] : SubDfDim 0 2 df OX
|
||||
local ze : CyrZe slabTop slabBot top 0 subDf.leftSB subDf.rightSB 0.65 hook sw
|
||||
include : ze.Shape
|
||||
include : ze.AutoStartSerifL
|
||||
|
@ -90,26 +90,26 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
|
|||
do "zhe subglyphs"
|
||||
glyph-block-import Letter-Cyrillic-Zhe : Zhe
|
||||
define [CyrRightZheShape legShape fSlab df top barLeft] : glyph-proc
|
||||
local [object subDf shift sw] : SubDfDim 1 3 df
|
||||
local [object subDf shift sw] : SubDfDim 1 3 df OX
|
||||
include : WithTransform [ApparentTranslate shift 0] : Zhe.HalfShape legShape fSlab subDf 0 top top
|
||||
include : HBar.m barLeft (shift + subDf.middle) (0.5 * top) sw
|
||||
|
||||
define [DzzheLeft df] : begin
|
||||
local [object subDf sw] : SubDfDim 0 2 df
|
||||
local [object subDf sw] : SubDfDim 0 2 df OX
|
||||
local swInner : sw * [AdviceStroke 2.75] / Stroke
|
||||
return : [mix subDf.leftSB subDf.rightSB : StrokeWidthBlend 0.95 0.96] - 0.5 * HVContrast * swInner
|
||||
|
||||
define [ZhweZheShape legShape fSlab df top hook] : glyph-proc
|
||||
local [object subDf sw] : SubDfDim 0 2 df
|
||||
local [object subDf sw] : SubDfDim 0 2 df OX
|
||||
local ze : CyrZe 0 0 top 0 subDf.leftSB subDf.rightSB 0.65 hook (0.5 * sw)
|
||||
include : difference [CyrRightZheShape legShape fSlab df top subDf.middle] [ze.ShapeMask]
|
||||
|
||||
glyph-block-import Letter-Cyrillic-De : CyrDeItalicShapeT
|
||||
define [DzzheZheItalicShape legShape fSlab df] : glyph-proc
|
||||
local [object subDf sw] : SubDfDim 0 2 df
|
||||
local [object subDf sw] : SubDfDim 0 2 df OX
|
||||
include : difference
|
||||
CyrRightZheShape legShape fSlab df XH subDf.middle
|
||||
CyrDeItalicShapeT spiro-outline subDf.leftSB subDf.rightSB sw
|
||||
CyrDeItalicShapeT spiro-outline subDf sw
|
||||
|
||||
define ZheConfig : object
|
||||
straight { Zhe.StraightLegs SLAB }
|
||||
|
|
|
@ -17,7 +17,7 @@ glyph-block Letter-Cyrillic-Multiocular-O : begin
|
|||
local subDf : df.slice 5 2
|
||||
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
|
||||
local pMidRowBottom 0.327
|
||||
local pMidRowSw (-0.25)
|
||||
|
|
|
@ -27,6 +27,7 @@ glyph-block Letter-Cyrillic-Orthography : begin
|
|||
orthographic-italic 'cyrl/gheDescender' 0x4F7
|
||||
orthographic-italic 'cyrl/ve' 0x432
|
||||
orthographic-italic 'cyrl/gheStrokeHook' 0x4FB
|
||||
orthographic-italic 'cyrl/dzze' 0xA689
|
||||
orthographic-italic 'latn/yatSakha' 0xAB60
|
||||
|
||||
# Accented forms
|
||||
|
|
|
@ -161,7 +161,7 @@ glyph-block Letter-Cyrillic-Yeri : begin
|
|||
right -- right
|
||||
stroke -- stroke
|
||||
jut -- jut
|
||||
yStart -- (top - Hook - 0.5 * stroke)
|
||||
yStart -- (top - TailY - 0.5 * stroke)
|
||||
eject-contour 'serifYeriLT'
|
||||
include : VerticalHook.l xLeftBarLeftEdge (top - TailY - 0.5 * stroke) (xTopBarLeftEnd - xLeftBarLeftEdge - 0.5 * stroke) (-TailY) stroke
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
|
|||
define SLAB-NONE 0
|
||||
define SLAB-CLASSICAL 1
|
||||
define SLAB-INWARD 2
|
||||
define FLAT-CONNECTION 3
|
||||
|
||||
define StdBlend 0.65
|
||||
|
||||
|
@ -63,23 +64,24 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
|
|||
export : define [AutoStartSerifR] : begin
|
||||
define [object stroke] : Dim
|
||||
return : match slabTop
|
||||
[Just SLAB-CLASSICAL] : ArcStartSerif.R RightSB top stroke Hook
|
||||
[Just SLAB-INWARD] : ArcStartSerif.InwardR RightSB top stroke Hook
|
||||
[Just SLAB-CLASSICAL] : ArcStartSerif.R RightSB top stroke hook
|
||||
[Just SLAB-INWARD] : ArcStartSerif.InwardR RightSB top stroke hook
|
||||
__ : glyph-proc
|
||||
|
||||
export : define [AutoEndSerifR] : begin
|
||||
define [object stroke] : Dim
|
||||
return : match slabBot
|
||||
[Just SLAB-CLASSICAL] : ArcEndSerif.R RightSB bot stroke Hook
|
||||
[Just SLAB-INWARD] : ArcEndSerif.InwardR RightSB bot stroke Hook
|
||||
[Just SLAB-CLASSICAL] : ArcEndSerif.R RightSB bot stroke hook
|
||||
[Just SLAB-INWARD] : ArcEndSerif.InwardR RightSB bot stroke hook
|
||||
__ : glyph-proc
|
||||
|
||||
glyph-block-export CyrZe
|
||||
define [CyrZe slabTop slabBot top bot left right blend hook _stroke] : namespace
|
||||
define [CyrZe slabTop slabBot top bot left right blend hook _stroke _xo _op] : namespace
|
||||
local xo : fallback _xo OX
|
||||
export : define [Dim] : begin
|
||||
local stroke : fallback _stroke : AdviceStroke2 2 3 (top - bot)
|
||||
local midx : mix right left blend
|
||||
local midy : mix bot top OverlayPos
|
||||
local midy : mix bot top [fallback _op OverlayPos]
|
||||
local topHeight : top - bot
|
||||
local midyHeight : midy - bot
|
||||
local adb : topHeight - [mix (midyHeight + stroke / 2) (topHeight - O - stroke) (ArchDepthA / (ArchDepthA + ArchDepthB))] + TanSlope * HVContrast * stroke
|
||||
|
@ -94,7 +96,10 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
|
|||
match slabTop
|
||||
[Just SLAB-CLASSICAL] : SerifedArcStart.LtrRhs left middle top stroke hook
|
||||
[Just SLAB-INWARD] : InwardSlabArcStart.LtrRhs left middle top stroke hook
|
||||
__ : list [g4 (left - O) (top - hook) : widths.rhs stroke] [hookstart (top - O)]
|
||||
[Just FLAT-CONNECTION] : list
|
||||
flat (left - xo) top [widths.rhs.heading stroke Rightward]
|
||||
curl (middle - CorrectionOMidX * stroke) top [heading Rightward]
|
||||
__ : list [g4 (left - xo) (top - hook) : widths.rhs stroke] [hookstart (top - O)]
|
||||
g4 right [YSmoothMidR top (midy - stroke / 2)]
|
||||
arcvh
|
||||
flat middle (midy - (fine - stroke / 2)) [widths.heading 0 fine Leftward]
|
||||
|
@ -107,11 +112,11 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
|
|||
flat midx (midy + (fine - stroke / 2)) [widths.rhs.heading fine Rightward]
|
||||
curl middle (midy + (fine - stroke / 2)) [heading Rightward]
|
||||
archv
|
||||
g4 (right - OX * 2) [YSmoothMidR (midy + stroke / 2) bot] [widths.rhs stroke]
|
||||
g4 (right - xo * 2) [YSmoothMidR (midy + stroke / 2) bot] [widths.rhs stroke]
|
||||
match slabBot
|
||||
[Just SLAB-CLASSICAL] : SerifedArcEnd.RtlRhs left middle bot stroke hook
|
||||
[Just SLAB-INWARD] : InwardSlabArcEnd.RtlRhs left middle bot stroke hook
|
||||
__ : list [hookend (bot + O) (sw -- stroke)] [g4 (left + O) (bot + hook)]
|
||||
__ : list [hookend (bot + O) (sw -- stroke)] [g4 (left + xo) (bot + hook)]
|
||||
|
||||
export : define [UpperShape] : CyrZeUpperShapeT dispiro
|
||||
|
||||
|
@ -161,17 +166,18 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
|
|||
export : define [AutoStartSerifL] : begin
|
||||
define [object stroke] : Dim
|
||||
return : match slabTop
|
||||
[Just SLAB-CLASSICAL] : ArcStartSerif.L left top stroke Hook
|
||||
[Just SLAB-INWARD] : ArcStartSerif.InwardL left top stroke Hook
|
||||
[Just SLAB-CLASSICAL] : ArcStartSerif.L left top stroke hook
|
||||
[Just SLAB-INWARD] : ArcStartSerif.InwardL left top stroke hook
|
||||
__ : glyph-proc
|
||||
|
||||
export : define [AutoEndSerifL] : begin
|
||||
define [object stroke] : Dim
|
||||
return : match slabBot
|
||||
[Just SLAB-CLASSICAL] : ArcEndSerif.L left bot stroke Hook
|
||||
[Just SLAB-INWARD] : ArcEndSerif.InwardL left bot stroke Hook
|
||||
[Just SLAB-CLASSICAL] : ArcEndSerif.L left bot stroke hook
|
||||
[Just SLAB-INWARD] : ArcEndSerif.InwardL left bot stroke hook
|
||||
__ : glyph-proc
|
||||
|
||||
glyph-block-export EpsilonConfig
|
||||
define EpsilonConfig : object
|
||||
serifless { SLAB-NONE SLAB-NONE }
|
||||
unilateralSerifed { SLAB-CLASSICAL SLAB-NONE }
|
||||
|
|
|
@ -66,11 +66,11 @@ glyph-block Letter-Greek-Lower-Xi : begin
|
|||
curl [Math.min (RightSB - (Stroke - [mix Descender Stroke 0.5]) * 1.1 - 1) [mix SB RightSB 0.5]] (Descender + Stroke)
|
||||
|
||||
create-glyph 'grek/xi.flatTop' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : LowerXiShape SHAPE-FLAT-TOP
|
||||
|
||||
create-glyph 'grek/xi.rounded' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : LowerXiShape SHAPE-ROUNDED
|
||||
|
||||
select-variant 'grek/xi' 0x3BE
|
|
@ -11,7 +11,7 @@ glyph-block Letter-Greek-Lower-Zeta : begin
|
|||
create-glyph 'grek/zeta' 0x3B6 : glyph-proc
|
||||
local fine : AdviceStroke 3
|
||||
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : HBar.m SB RightSB (Ascender - HalfStroke)
|
||||
include : dispiro
|
||||
g4 RightSB (Ascender - Stroke) [widths.rhs fine]
|
||||
|
|
|
@ -45,7 +45,7 @@ glyph-block Letter-Greek-Psi : begin
|
|||
create-glyph 'grek/psi' 0x3C8 : glyph-proc
|
||||
local df : DivFrame para.diversityM 3
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
include : PsiBaseShape df Descender 0 XH Ascender false false SLAB false
|
||||
|
||||
create-glyph 'cyrl/psi' 0x471 : glyph-proc
|
||||
|
|
|
@ -43,7 +43,7 @@ glyph-block Letter-Greek-Upper-Phi : begin
|
|||
create-glyph 'grek/varphi' 0x3D5 : glyph-proc
|
||||
local df : DivFrame para.diversityM 3
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
|
||||
include : VarPhiRing 0 df 0 XH
|
||||
include : VBar.m df.middle Descender HalfStroke
|
||||
|
@ -52,7 +52,7 @@ glyph-block Letter-Greek-Upper-Phi : begin
|
|||
create-glyph 'cyrl/ef.serifless' : glyph-proc
|
||||
local df : DivFrame para.diversityM 3
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
|
||||
include : VarPhiRing 1 df 0 XH
|
||||
include : VBar.m df.middle Descender HalfStroke
|
||||
|
@ -72,7 +72,7 @@ glyph-block Letter-Greek-Upper-Phi : begin
|
|||
create-glyph 'cyrl/ef.cursive' : glyph-proc
|
||||
local df : DivFrame para.diversityM 3
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
|
||||
include : VarPhiRing 1 df 0 XH
|
||||
local hd : FlatHookDepth df
|
||||
|
|
|
@ -16,7 +16,7 @@ glyph-block Letter-Latin-Lower-Eszet : begin
|
|||
define TAILED 2
|
||||
|
||||
define [Traditional fFlathook slab tail] : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
local l : SB * 1
|
||||
local xHook : [mix SB RightSB 0.75] + HalfStroke * HVContrast
|
||||
local hd : FlatHookDepth [DivFrame 1]
|
||||
|
|
|
@ -103,7 +103,7 @@ glyph-block Letter-Latin-Ezh : begin
|
|||
include : RevEzhShape XH Descender
|
||||
|
||||
create-glyph 'lyogh.serifless' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : EzhShape XH Descender 0.4
|
||||
include : VBar.l SB (XH * 0.1) Ascender
|
||||
|
||||
|
|
|
@ -138,32 +138,32 @@ glyph-block Letter-Latin-Long-S : begin
|
|||
|
||||
foreach { suffix { serifStyle pShift } } [Object.entries SerifSuffixesDescending] : do
|
||||
create-glyph "longs.flatHookDescending\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
local m : Middle - pShift * (JBalance + HalfStroke * HVContrast)
|
||||
include : LongSFlatHookNoTailShape m Descender false
|
||||
include : StandardSerifs m serifStyle
|
||||
create-forked-glyph "longsbar.flatHookDescending\(suffix)" : LongSBentHookOverlayBar m
|
||||
|
||||
create-glyph "longs.flatHookDescendingExt\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
local m : Middle - pShift * (JBalance + HalfStroke * HVContrast)
|
||||
include : LongSFlatHookNoTailShape m Descender false
|
||||
include : HBar.t RightSB (2 * Width) Ascender
|
||||
|
||||
create-glyph "longs.flatHookTailed\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : LongSShape Ascender Descender (HookX + 0.25 * Stroke) Hook
|
||||
include : StandardSerifs (Middle - HalfStroke * HVContrast) serifStyle
|
||||
create-forked-glyph "longsbar.flatHookTailed\(suffix)" : LongSSymmetricOverlayBar Middle
|
||||
|
||||
create-glyph "longs.flatHookTailedExt\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : LongSShape Ascender Descender (HookX + 0.25 * Stroke) Hook
|
||||
include : StandardSerifs (Middle - HalfStroke * HVContrast) serifStyle
|
||||
include : HBar.t (Middle + HookX + (0.25 - TanSlope) * Stroke) (2 * Width) Ascender
|
||||
|
||||
create-glyph "longs.flatHookDiagonalTailed\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : union
|
||||
intersection [MaskAbove 0] [LongSShape Ascender Descender (HookX + 0.25 * Stroke) Hook]
|
||||
SmallFDiagonalTail [DivFrame 1] (Middle - HalfStroke * HVContrast)
|
||||
|
@ -171,7 +171,7 @@ glyph-block Letter-Latin-Long-S : begin
|
|||
create-forked-glyph "longsbar.flatHookDiagonalTailed\(suffix)" : LongSSymmetricOverlayBar Middle
|
||||
|
||||
create-glyph "longs.flatHookDiagonalTailedExt\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : union
|
||||
intersection [MaskAbove 0] [LongSShape Ascender Descender (HookX + 0.25 * Stroke) Hook]
|
||||
SmallFDiagonalTail [DivFrame 1] (Middle - HalfStroke * HVContrast)
|
||||
|
@ -179,7 +179,7 @@ glyph-block Letter-Latin-Long-S : begin
|
|||
include : HBar.t (Middle + HookX + (0.25 - TanSlope) * Stroke) (2 * Width) Ascender
|
||||
|
||||
create-glyph "longs.bentHookDescending\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
local m : StdSmallFBarLeftPos true
|
||||
include : LongSBentHookBase (XH / 2) m SLAB_SERIFLESS
|
||||
include : VBar.l m Descender 0
|
||||
|
@ -187,7 +187,7 @@ glyph-block Letter-Latin-Long-S : begin
|
|||
create-forked-glyph "longsbar.bentHookDescending\(suffix)" : LongSBentHookOverlayBar m
|
||||
|
||||
create-glyph "longs.bentHookTailed\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
local m : StdSmallFBarLeftPos true
|
||||
include : LongSBentHookBase (XH / 2) m SLAB_SERIFLESS
|
||||
include : LongSLowerHalf 1 (m + HalfStroke * HVContrast) (XH / 2 - O) Descender (HookX + 0.25 * Stroke) Hook Stroke
|
||||
|
@ -195,7 +195,7 @@ glyph-block Letter-Latin-Long-S : begin
|
|||
create-forked-glyph "longsbar.bentHookTailed\(suffix)" : LongSBentHookOverlayBar m
|
||||
|
||||
create-glyph "longs.bentHookDiagonalTailed\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
local m : StdSmallFBarLeftPos true
|
||||
include : LongSBentHookBase (XH / 2) m SLAB_SERIFLESS
|
||||
include : SmallFDiagonalTail [DivFrame 1] m
|
||||
|
@ -215,7 +215,7 @@ glyph-block Letter-Latin-Long-S : begin
|
|||
PalatalHook.r (x -- RightSB) (y -- 0) (xLink -- Middle) (refSw -- [AdviceStroke 3])
|
||||
maskOut -- [intersection [MaskBelow 0] [MaskLeft (Middle + HVContrast * HalfStroke)]]
|
||||
create-glyph "eshRetroflexHook" 0x1D98 : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : LongSShape Ascender 0 (HookX + 0.25 * Stroke) Hook
|
||||
include : RetroflexHook.l
|
||||
x -- Middle - (HookX + 0.25 * Stroke)
|
||||
|
@ -223,7 +223,7 @@ glyph-block Letter-Latin-Long-S : begin
|
|||
yOverflow -- Stroke
|
||||
|
||||
create-glyph "eshCurlyTail" 0x286 : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
local fine : AdviceStroke 3.5
|
||||
local rinner : LongJut / 2 - fine / 2
|
||||
local m1 : Middle - HalfStroke * HVContrast - FBalance
|
||||
|
|
|
@ -38,7 +38,7 @@ glyph-block Letter-Latin-Thorn : begin
|
|||
include : ThornShape yThornBowlBot
|
||||
|
||||
create-glyph 'thorn' 0xFE : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : OBarLeft.shape
|
||||
include : VBar.l SB Descender Ascender
|
||||
if SLAB : begin
|
||||
|
@ -69,6 +69,6 @@ glyph-block Letter-Latin-Thorn : begin
|
|||
|
||||
alias 'grek/Sho' 0x3F7 'Thorn'
|
||||
create-glyph 'grek/sho' 0x3F8 : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : OBarLeft.shape
|
||||
include : VBar.l SB Descender Ascender
|
||||
|
|
|
@ -145,9 +145,9 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
function [body] : object # hooks
|
||||
serifless { [if body pNarrowSide 0.95] CH-NONE 'b' }
|
||||
serifed { [if body pNarrowSide 0.95] CH-SERIF 'b' }
|
||||
extended { [if body pNarrowSide 0.95] CH-EXTENSION 'if' }
|
||||
tailed { [if body pNarrowSide 1] CH-HOOK 'if' }
|
||||
diagonalTailed { [if body pNarrowSide 1] CH-DIAGONAL-HOOK 'if' }
|
||||
extended { [if body pNarrowSide 0.95] CH-EXTENSION 'bp' }
|
||||
tailed { [if body pNarrowSide 1] CH-HOOK 'bp' }
|
||||
diagonalTailed { [if body pNarrowSide 1] CH-DIAGONAL-HOOK 'bp' }
|
||||
object # crossbar
|
||||
"" fbar
|
||||
crossbarAtXHeight XH
|
||||
|
|
|
@ -84,13 +84,13 @@ glyph-block Letter-Latin-Lower-H : begin
|
|||
include : Serifs fTailed true
|
||||
|
||||
create-glyph "hHookTopLTail.\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : refer-glyph "hHookTop.\(suffix)"
|
||||
eject-contour 'serifRB'
|
||||
include : EngHook RightSB 0 Descender
|
||||
|
||||
create-glyph "heng.\(suffix)" : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
include : refer-glyph "h.\(suffix)"
|
||||
eject-contour 'serifRB'
|
||||
include : EngHook RightSB 0 Descender
|
||||
|
@ -164,7 +164,7 @@ glyph-block Letter-Latin-Lower-H : begin
|
|||
include [refer-glyph 'cedillaBelow']
|
||||
include : ApparentTranslate shift 0
|
||||
include [refer-glyph src]
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
set-base-anchor 'belowBraceL' ((-Middle) + shift - 0.5 * markExtend) belowMarkMid
|
||||
set-base-anchor 'belowBraceR' ((-Middle) + shift + 0.5 * markExtend) belowMarkMid
|
||||
|
||||
|
|
|
@ -358,7 +358,7 @@ glyph-block Letter-Latin-Lower-I : begin
|
|||
create-glyph 'looprevesh' 0x1AA : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
local fine : AdviceStroke 4
|
||||
include : dispiro
|
||||
widths.center fine
|
||||
|
|
|
@ -261,7 +261,7 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
|
||||
create-glyph "tLTail.\(suffix)" : glyph-proc
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
include : (Style.LTBody || Style.Body) df top 0
|
||||
|
||||
local attach : currentGlyph.gizmo.unapply (currentGlyph.baseAnchors.lTailHookAttach || currentGlyph.baseAnchors.bottomRight)
|
||||
|
@ -272,12 +272,12 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
|
||||
create-glyph "tRTail.\(suffix)" : glyph-proc
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
include : Style.Retroflex df top Descender
|
||||
|
||||
create-glyph "tHookTopRTail.\(suffix)" : glyph-proc
|
||||
set-width df.width
|
||||
include : df.markSet.if
|
||||
include : df.markSet.bp
|
||||
include : Style.Retroflex df XH Descender
|
||||
local attach : currentGlyph.gizmo.unapply currentGlyph.baseAnchors.hooktopAttach
|
||||
include : TopHook.mBarInner attach.x XH Ascender
|
||||
|
|
|
@ -250,7 +250,7 @@ glyph-block Letter-Latin-Upper-B : begin
|
|||
include : ClosedEpsilonShape XH
|
||||
|
||||
create-glyph 'grek/beta' 0x3B2 : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : MarkSet.bp
|
||||
define pBar 0.55
|
||||
define fine : Stroke * CThin
|
||||
define yMiddle : [mix 0 Ascender pBar] - Stroke * 0.7 # Bottom edge
|
||||
|
|
|
@ -50,7 +50,7 @@ glyph-block Letter-Latin-Upper-J : begin
|
|||
|
||||
define [JDescendingBase df dfHook top] : glyph-proc
|
||||
set-width df.width
|
||||
include : df.markSet.[if (top > XH) 'if' 'p']
|
||||
include : df.markSet.[if (top > XH) 'bp' 'p']
|
||||
|
||||
local center : df.middle + JBalance + HalfStroke * HVContrast
|
||||
set-base-anchor 'above' (center - HVContrast * HalfStroke) top
|
||||
|
@ -67,7 +67,7 @@ glyph-block Letter-Latin-Upper-J : begin
|
|||
g4 hookx (Descender + JHook)
|
||||
|
||||
set JFullHookBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.rightSB - HalfStroke * HVContrast - JBalance2) (df.leftSB) top 0 'capital'
|
||||
set JDescendingBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.middle + JBalance) (df.middle + JBalance - LongJut - HalfStroke * HVContrast) top Descender 'if'
|
||||
set JDescendingBase.WithCurlyTail : function [df top] : JCurlyTailBaseT df (df.middle + JBalance) (df.middle + JBalance - LongJut - HalfStroke * HVContrast) top Descender 'bp'
|
||||
define [JCurlyTailBaseT df xc xCo top bottom markClass] : glyph-proc
|
||||
set-width df.width
|
||||
include : df.markSet.(markClass)
|
||||
|
@ -90,7 +90,7 @@ glyph-block Letter-Latin-Upper-J : begin
|
|||
|
||||
define [JDescendingFlatHookBase df dfHook top] : glyph-proc
|
||||
set-width df.width
|
||||
include : df.markSet.[if (top > XH) 'if' 'p']
|
||||
include : df.markSet.[if (top > XH) 'bp' 'p']
|
||||
include : FlatHookDotlessJShape df dfHook top
|
||||
crossLeft -- (df.middle - (dfHook.middle - [mix 0 dfHook.leftSB : mix 1 dfHook.div 2]))
|
||||
barCenter -- (df.middle + 0.25 * JBalance * df.div * [mix 1 df.div 2])
|
||||
|
@ -98,7 +98,7 @@ glyph-block Letter-Latin-Upper-J : begin
|
|||
|
||||
define [JDescendingFlatHookSerifedBase df dfHook top] : glyph-proc
|
||||
set-width df.width
|
||||
include : df.markSet.[if (top > XH) 'if' 'p']
|
||||
include : df.markSet.[if (top > XH) 'bp' 'p']
|
||||
include : FlatHookDotlessJShape df df top
|
||||
crossLeft -- [mix 0 SB : mix 1 df.div 2]
|
||||
barCenter -- (df.middle + JBalance * df.div)
|
||||
|
|
|
@ -157,16 +157,16 @@ glyph-block Letter-Latin-Upper-Q : begin
|
|||
|
||||
define QInnerVertSw : Math.min [AdviceStroke 3.5] ((RightSB - SB - Stroke * 2 * HVContrast) / (2 * HVContrast))
|
||||
define QConfig : object
|
||||
straight { QStdBody Stroke QStaraightTail 'if' 'p' }
|
||||
curlyTailed { QStdBody Stroke QCurlyTail 'if' 'p' }
|
||||
crossingCurlyTailed { QStdBody QInnerVertSw QCrossingCurlyTail 'if' 'p' }
|
||||
straight { QStdBody Stroke QStaraightTail 'bp' 'p' }
|
||||
curlyTailed { QStdBody Stroke QCurlyTail 'bp' 'p' }
|
||||
crossingCurlyTailed { QStdBody QInnerVertSw QCrossingCurlyTail 'bp' 'p' }
|
||||
crossing { QStdBody [AdviceStroke 4] QCrossing 'capital' 'e' }
|
||||
crossingBaseline { QStdBody [AdviceStroke 4] QCrossingBaseline 'capital' 'e' }
|
||||
verticalCrossing { QStdBody QInnerVertSw QVerticalCrossing 'if' 'p' }
|
||||
verticalCrossing { QStdBody QInnerVertSw QVerticalCrossing 'bp' 'p' }
|
||||
horizontalTailed { QHorizontalTailedBody [AdviceStroke 3] QHorizontalTail 'capital' 'e' }
|
||||
detachedTailed { QStdBody Stroke QDetachedTail 'if' 'p' }
|
||||
detachedBendTailed { QStdBody Stroke QDetachedBendTail 'if' 'p' }
|
||||
openSwash { QOpenSwashyBody Stroke QSwashyTail 'if' 'p' }
|
||||
detachedTailed { QStdBody Stroke QDetachedTail 'bp' 'p' }
|
||||
detachedBendTailed { QStdBody Stroke QDetachedBendTail 'bp' 'p' }
|
||||
openSwash { QOpenSwashyBody Stroke QSwashyTail 'bp' 'p' }
|
||||
|
||||
|
||||
foreach { suffix { body swTailInner tailShape mkCapital mkSmcp } } [Object.entries QConfig] : do
|
||||
|
|
|
@ -790,19 +790,21 @@ glyph-block Letter-Shared-Shapes : begin
|
|||
# Descender of cyrillics
|
||||
glyph-block-export CyrDescender
|
||||
define CyrDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc
|
||||
include : ExtendBelowBaseAnchors (y - LongJut + 0.5 * Stroke)
|
||||
local extension : 0.25 * Stroke - LongJut
|
||||
include : ExtendBelowBaseAnchors (y + extension)
|
||||
include : union
|
||||
xLinkStroke xLink x yAttach sw
|
||||
VBar.m x yAttach (y - LongJut + 0.5 * Stroke) sw
|
||||
VBar.m x yAttach (y + extension) sw
|
||||
|
||||
glyph-block-export CyrTailDescender
|
||||
define CyrTailDescender : Descenders : function [x y xLink yAttach yOverflow sw] : glyph-proc
|
||||
include : ExtendBelowBaseAnchors (y - LongJut + 0.5 * Stroke)
|
||||
local extension : 0.25 * Stroke - LongJut
|
||||
include : ExtendBelowBaseAnchors (y + extension)
|
||||
include : union
|
||||
xLinkStroke xLink x yAttach sw
|
||||
intersection
|
||||
MaskBelow (yAttach + Stroke)
|
||||
MaskAbove (y - LongJut + 0.5 * Stroke)
|
||||
MaskAbove (y + extension)
|
||||
ExtLineCenter 16 sw (x + 0.24 * Descender) (y + 0.5 * sw + Descender) x y
|
||||
|
||||
# Palatal Hooks
|
||||
|
|
|
@ -154,7 +154,7 @@ export : define [calculateMetrics para] : begin
|
|||
local smOfSma : ada + delta
|
||||
local smOfSmb : adb - delta
|
||||
local yNotAdjusted : mix top bot (smOfSmb / (smOfSma + smOfSmb))
|
||||
return : yNotAdjusted - delta
|
||||
return : yNotAdjusted - delta * [Math.min 1 ((top - bot) / (ada + adb))]
|
||||
define [YSmoothMidL top bot _ada _adb] : begin
|
||||
local ada : fallback _ada ArchDepthA
|
||||
local adb : fallback _adb ArchDepthB
|
||||
|
@ -162,7 +162,7 @@ export : define [calculateMetrics para] : begin
|
|||
local smOfSma : ada + delta
|
||||
local smOfSmb : adb - delta
|
||||
local yNotAdjusted : mix top bot (smOfSma / (smOfSma + smOfSmb))
|
||||
return : yNotAdjusted + delta
|
||||
return : yNotAdjusted + delta * [Math.min 1 ((top - bot) / (ada + adb))]
|
||||
define ArchDepthA : ArchDepth - TanSlope * SmoothAdjust
|
||||
define ArchDepthB : ArchDepth + TanSlope * SmoothAdjust
|
||||
define SmallArchDepthA : SmallArchDepth - TanSlope * SmoothAdjust
|
||||
|
@ -356,7 +356,7 @@ define [MarksetDiv p sbMul me] : begin
|
|||
oper : buildStandardMarkSet {.top me.OperTop .bot me.OperBot}
|
||||
tack : buildStandardMarkSet {.top me.TackTop .bot me.TackBot}
|
||||
plus : buildStandardMarkSet {.top me.PlusTop .bot me.PlusBot}
|
||||
if : buildStandardMarkSet {.top me.Ascender .bot me.Descender}
|
||||
bp : buildStandardMarkSet {.top me.Ascender .bot me.Descender}
|
||||
capDesc : buildStandardMarkSet {.top me.CAP .bot me.Descender}
|
||||
|
||||
export : define DesignParameters : object
|
||||
|
|
|
@ -118,8 +118,8 @@ class NormalRectifier {
|
|||
if (isTangentValid(d)) {
|
||||
this.m_biKnots[0].origTangent = d;
|
||||
} else {
|
||||
console.error(this.m_biKnots);
|
||||
throw new Error("NaN angle detected.");
|
||||
this.m_biKnots[0].origTangent = { x: 0, y: 0 };
|
||||
// throw new Error("NaN angle detected.");
|
||||
}
|
||||
}
|
||||
if (this.m_biKnots[this.m_nKnotsProcessed]) {
|
||||
|
@ -127,8 +127,8 @@ 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.");
|
||||
this.m_biKnots[this.m_nKnotsProcessed].origTangent = { x: 0, y: 0 };
|
||||
// throw new Error("NaN angle detected.");
|
||||
}
|
||||
}
|
||||
this.m_nKnotsProcessed += 1;
|
||||
|
|
4
package-lock.json
generated
4
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "iosevka",
|
||||
"version": "24.1.4",
|
||||
"version": "25.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "iosevka",
|
||||
"version": "24.1.4",
|
||||
"version": "25.0.0",
|
||||
"dependencies": {
|
||||
"@iarna/toml": "^2.2.5",
|
||||
"@msgpack/msgpack": "^2.8.0",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "iosevka",
|
||||
"version": "24.1.4",
|
||||
"version": "25.0.0",
|
||||
"main": "./font-src/index.js",
|
||||
"scripts": {
|
||||
"build": "verda -f verdafile.mjs",
|
||||
|
|
|
@ -4324,6 +4324,7 @@ description = "Serifless Cyrillic Lower Ze (`з`)"
|
|||
selector."latn/epsilon" = "serifless"
|
||||
selector."latn/epsilon/descBase" = "seriflessDesc"
|
||||
selector."cyrl/ze" = "serifless"
|
||||
selector."cyrl/ze/topAttached" = "serifless"
|
||||
selector."cyrl/ksi" = "serifless"
|
||||
|
||||
[prime.cyrl-ze.variants.unilateral-serifed]
|
||||
|
@ -4332,6 +4333,7 @@ description = "Cyrillic Lower Ze (`з`) with serif at top"
|
|||
selector."latn/epsilon" = "unilateralSerifed"
|
||||
selector."latn/epsilon/descBase" = "bilateralSerifed"
|
||||
selector."cyrl/ze" = "unilateralSerifed"
|
||||
selector."cyrl/ze/topAttached" = "serifless"
|
||||
selector."cyrl/ksi" = "unilateralSerifed"
|
||||
|
||||
[prime.cyrl-ze.variants.bilateral-serifed]
|
||||
|
@ -4340,6 +4342,7 @@ description = "Cyrillic Lower Ze (`з`) with serif at both top and bottom"
|
|||
selector."latn/epsilon" = "bilateralSerifed"
|
||||
selector."latn/epsilon/descBase" = "bilateralSerifed"
|
||||
selector."cyrl/ze" = "bilateralSerifed"
|
||||
selector."cyrl/ze/topAttached" = "bilateralSerifed"
|
||||
selector."cyrl/ksi" = "unilateralSerifed"
|
||||
|
||||
[prime.cyrl-ze.variants.unilateral-inward-serifed]
|
||||
|
@ -4348,6 +4351,7 @@ description = "Cyrillic Lower Ze (`з`) with inward serif at top"
|
|||
selector."latn/epsilon" = "unilateralInwardSerifed"
|
||||
selector."latn/epsilon/descBase" = "unilateralInwardSerifedDesc"
|
||||
selector."cyrl/ze" = "unilateralInwardSerifed"
|
||||
selector."cyrl/ze/topAttached" = "serifless"
|
||||
selector."cyrl/ksi" = "unilateralInwardSerifed"
|
||||
|
||||
[prime.cyrl-ze.variants.bilateral-inward-serifed]
|
||||
|
@ -4356,6 +4360,7 @@ description = "Cyrillic Lower Ze (`з`) with inward serif at both top and bottom
|
|||
selector."latn/epsilon" = "bilateralInwardSerifed"
|
||||
selector."latn/epsilon/descBase" = "unilateralInwardSerifedDesc"
|
||||
selector."cyrl/ze" = "bilateralInwardSerifed"
|
||||
selector."cyrl/ze/topAttached" = "bilateralInwardSerifed"
|
||||
selector."cyrl/ksi" = "unilateralInwardSerifed"
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue