Volapuk Letters, and a few other fixes (#1891)

* * CC-SA slight fix
* Added single-storey forms for iotated-a.

* Volapuk letters (#1865)
This commit is contained in:
Logo 2023-08-04 05:03:22 +08:00 committed by GitHub
parent f481c4943f
commit c603334802
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 439 additions and 179 deletions

View file

@ -18,6 +18,7 @@
- LATIN SMALL LETTER K WITH DIAGONAL STROKE (`U+A743`). - LATIN SMALL LETTER K WITH DIAGONAL STROKE (`U+A743`).
- LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE (`U+A744`). - LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE (`U+A744`).
- LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE (`U+A745`). - LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE (`U+A745`).
- LATIN CAPITAL LETTER VOLAPUK AE (`U+A79A`) ... LATIN SMALL LETTER VOLAPUK UE (`U+A79F`) (#1865).
- CIRCLED ANTICLOCKWISE ARROW (`U+1F10E`). - CIRCLED ANTICLOCKWISE ARROW (`U+1F10E`).
- CIRCLED HUMAN FIGURE (`U+1F16F`). - CIRCLED HUMAN FIGURE (`U+1F16F`).
* Drop `<=` and `>=` as inequality for Verilog (#1864). * Drop `<=` and `>=` as inequality for Verilog (#1864).
@ -29,3 +30,4 @@
* Fix variant selection for `cv27`, `cv33`, `cv36`, and `cv49` for `ss17` under italics. * Fix variant selection for `cv27`, `cv33`, `cv36`, and `cv49` for `ss17` under italics.
* Make Greek Kappa respond to top-left serifed variants of `k`. * Make Greek Kappa respond to top-left serifed variants of `k`.
* Fix slabs for `U+019C`, `U+0257`, `U+026F`, and `U+0270`. * Fix slabs for `U+019C`, `U+0257`, `U+026F`, and `U+0270`.
* Add single-storey variants support for `U+A657`.

View file

@ -290,7 +290,7 @@ glyph-block Autobuild-Transformed : begin
list 0x107A2 'oSlash' list 0x107A2 'oSlash'
list 0x1078E 'eRev' list 0x1078E 'eRev'
list 0x10791 'ramshorn' list 0x10791 'ramshorn'
list 0x1078F 'closeturnepsilon' list 0x1078F 'epsilonRevClosed'
list 0x10783 'ae' list 0x10783 'ae'
list 0x107A3 'smcpOE' list 0x107A3 'smcpOE'
list 0x10781 'triangleColon' list 0x10781 'triangleColon'

View file

@ -125,15 +125,9 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
AMaskShape subDf fStraightBar CAP df.mvs AMaskShape subDf fStraightBar CAP df.mvs
do "iotified a" do "iotified a"
glyph-block-import Letter-Latin-Lower-A : DoubleStorey glyph-block-import Letter-Latin-Lower-A : DoubleStorey DoubleStoreyConfig SingleStorey SingleStoreyConfig
define DoubleStoreyConfig : object
doubleStoreySerifless { DoubleStorey.Serifless }
doubleStoreySerifed { DoubleStorey.Serifed }
doubleStoreyTailed { DoubleStorey.Tailed }
doubleStoreyToothlessCorner { DoubleStorey.ToothlessCorner }
doubleStoreyToothlessRounded { DoubleStorey.ToothlessRounded }
foreach { suffix { body } } [Object.entries DoubleStoreyConfig] : do foreach { suffix { body xTrailing } } [Object.entries DoubleStoreyConfig] : do
create-glyph "cyrl/aIotified.\(suffix)" : glyph-proc create-glyph "cyrl/aIotified.\(suffix)" : glyph-proc
define df : DivFrame para.diversityM 3 define df : DivFrame para.diversityM 3
set-width df.width set-width df.width
@ -146,6 +140,17 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
Iotified.full df XH [mix df.leftSB df.rightSB (3 / 4)] (XH / 2) Iotified.full df XH [mix df.leftSB df.rightSB (3 / 4)] (XH / 2)
WithTransform [ApparentTranslate shift 0] [DoubleStorey.GetMask body df df.mvs] WithTransform [ApparentTranslate shift 0] [DoubleStorey.GetMask body df df.mvs]
foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do
create-glyph "cyrl/aIotified.\(suffix)" : glyph-proc
define df : DivFrame para.diversityM 3
set-width df.width
include : df.markSet.e
local { subDf shift } : SubDfAndShift 1 df
include : WithTransform [ApparentTranslate shift 0] [body subDf XH bar no-shape df.mvs]
include : Iotified.full df XH (shift + subDf.leftSB + 0.5 * HVContrast * df.mvs) (XH / 2)
do "iotified e" do "iotified e"
glyph-block-import Letter-Latin-Lower-E : SmallEShape SmallERoundedShape glyph-block-import Letter-Latin-Lower-E : SmallEShape SmallERoundedShape
@ -167,5 +172,5 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
include : Iotified.full df XH df.middle (XH / 2) include : Iotified.full df XH df.middle (XH / 2)
select-variant 'cyrl/AIotified' 0xA656 (follow -- 'A') select-variant 'cyrl/AIotified' 0xA656 (follow -- 'A')
select-variant 'cyrl/aIotified' 0xA657 (follow -- 'a/turnABase') select-variant 'cyrl/aIotified' 0xA657 (follow -- 'a')
select-variant 'latn/eIotified' 0xAB61 (follow -- 'e') select-variant 'latn/eIotified' 0xAB61 (follow -- 'e')

View file

@ -18,7 +18,7 @@ glyph-block Letter-Cyrillic-Orthography : begin
orthographic-italic 'cyrl/tse' 0x446 orthographic-italic 'cyrl/tse' 0x446
orthographic-italic 'cyrl/tetse' 0x4B5 orthographic-italic 'cyrl/tetse' 0x4B5
orthographic-italic 'cyrl/yat' 0x463 orthographic-italic 'cyrl/yat' 0x463
orthographic-italic 'cyrl/pe' 0x43f orthographic-italic 'cyrl/pe' 0x43F
orthographic-italic 'cyrl/peMidHook' 0x4A7 orthographic-italic 'cyrl/peMidHook' 0x4A7
orthographic-italic 'cyrl/peDescender' 0x525 orthographic-italic 'cyrl/peDescender' 0x525
orthographic-italic 'cyrl/ghe' 0x433 orthographic-italic 'cyrl/ghe' 0x433

View file

@ -2,7 +2,7 @@ $$include '../../../meta/macros.ptl'
extern isFinite extern isFinite
import [mix linreg clamp fallback] from"../../../support/utils.mjs" import [mix linreg clamp fallback SuffixCfg] from"../../../support/utils.mjs"
glyph-module glyph-module
@ -14,16 +14,26 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
glyph-block-import Letter-Shared-Shapes : SerifedArcStart SerifedArcEnd SerifFrame glyph-block-import Letter-Shared-Shapes : SerifedArcStart SerifedArcEnd SerifFrame
glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart InwardSlabArcEnd glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart InwardSlabArcEnd
glyph-block-import Letter-Shared-Shapes : ArcStartSerif ArcEndSerif glyph-block-import Letter-Shared-Shapes : ArcStartSerif ArcEndSerif
glyph-block-import Letter-Shared-Shapes : OBarLeft OBarRight
glyph-block-import Letter-Shared-Shapes : DToothlessRise RetroflexHook CyrDescender UpwardHookShape glyph-block-import Letter-Shared-Shapes : DToothlessRise RetroflexHook CyrDescender UpwardHookShape
define SLAB-NONE 0 define SLAB-NONE 0
define SLAB-CLASSICAL 1 define SLAB-CLASSICAL 1
define SLAB-INWARD 2 define SLAB-INWARD 2
define FLAT-CONNECTION 3 define FLAT-CONNECTION 3
define OPEN-HALF 4
define OPEN-VERTICAL 5
define CLOSED-CIRCLE 6
define CLOSED-ROUND 7
define CLOSED-STEM 8
define StdBlend 0.65 define StdBlend 0.65
define VolBlend 0.52
define [SmallEpsilon slabTop slabBot top bot blend hook] : namespace define [SmallEpsilon] : with-params [
slabTop slabBot top bot blend hook
[ada2 SmallArchDepthA] [adb2 SmallArchDepthB]
] : namespace
export : define [Dim] : begin export : define [Dim] : begin
local stroke : AdviceStroke2 2 3 (top - bot) local stroke : AdviceStroke2 2 3 (top - bot)
local midx : mix SB RightSB blend local midx : mix SB RightSB blend
@ -33,14 +43,23 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local ada : topHeight - [mix (midyHeight + stroke / 2) (topHeight - O - stroke) (ArchDepthB / (ArchDepthA + ArchDepthB))] - TanSlope * HVContrast * stroke local ada : topHeight - [mix (midyHeight + stroke / 2) (topHeight - O - stroke) (ArchDepthB / (ArchDepthA + ArchDepthB))] - TanSlope * HVContrast * stroke
local adb : [mix (stroke + O) (midyHeight - stroke / 2) (ArchDepthB / (ArchDepthA + ArchDepthB))] + TanSlope * HVContrast * stroke local adb : [mix (stroke + O) (midyHeight - stroke / 2) (ArchDepthB / (ArchDepthA + ArchDepthB))] + TanSlope * HVContrast * stroke
local fine : stroke * CThin local fine : stroke * CThin
return : object stroke midx midy ada adb fine local stemFine : stroke * (ShoulderFine / Stroke)
return : object stroke midx midy ada adb fine stemFine
export : define [UpperShape] : begin export : define [UpperShape] : begin
define [object stroke midx midy ada adb fine] : Dim define [object stroke midx midy ada adb fine stemFine] : Dim
return : dispiro return : dispiro
match slabTop match slabTop
[Just SLAB-CLASSICAL] : SerifedArcStart.RtlLhs RightSB Middle top stroke hook [Just SLAB-CLASSICAL] : SerifedArcStart.RtlLhs RightSB Middle top stroke hook
[Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs RightSB Middle top stroke hook [Just SLAB-INWARD] : InwardSlabArcStart.RtlLhs RightSB Middle top stroke hook
[Just OPEN-VERTICAL] : straight.down.start SB top [widths.lhs.heading stroke Downward]
([Just CLOSED-CIRCLE] || [Just CLOSED-ROUND]) : list
flat (RightSB - [if (slabTop === CLOSED-CIRCLE) OX 0]) midy [widths.lhs stroke]
curl (RightSB - [if (slabTop === CLOSED-CIRCLE) OX 0]) (top - adb2)
arcvh
g4 (Middle - CorrectionOMidX * stroke) (top - O)
archv
[Just CLOSED-STEM] : OBarRight.arcStart top SB RightSB stroke stemFine ada2 adb2 midy
__ : list [g4 (RightSB + O) (top - hook) [widths.lhs]] [hookstart (top - O)] __ : list [g4 (RightSB + O) (top - hook) [widths.lhs]] [hookstart (top - O)]
g4 SB [YSmoothMidL top (midy - stroke / 2)] g4 SB [YSmoothMidL top (midy - stroke / 2)]
arcvh arcvh
@ -48,15 +67,23 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
curl midx (midy - (fine - stroke / 2)) [heading Rightward] curl midx (midy - (fine - stroke / 2)) [heading Rightward]
export : define [LowerShape] : begin export : define [LowerShape] : begin
define [object stroke midx midy ada adb fine] : Dim define [object stroke midx midy ada adb fine stemFine] : Dim
return : dispiro return : dispiro
flat midx (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward] flat midx (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
curl Middle (midy + (fine - stroke / 2)) [heading Leftward] curl Middle (midy + (fine - stroke / 2)) [heading Leftward]
archv archv
g4 (SB + OX * 2) [YSmoothMidL (midy + stroke / 2) bot] [widths.lhs] g4 (SB + OX * 2) [YSmoothMidL (midy + stroke / 2) bot] [widths.lhs stroke]
match slabBot match slabBot
[Just SLAB-CLASSICAL] : SerifedArcEnd.LtrLhs RightSB Middle bot stroke hook [Just SLAB-CLASSICAL] : SerifedArcEnd.LtrLhs RightSB Middle bot stroke hook
[Just SLAB-INWARD] : InwardSlabArcEnd.LtrLhs RightSB Middle bot stroke hook [Just SLAB-INWARD] : InwardSlabArcEnd.LtrLhs RightSB Middle bot stroke hook
[Just OPEN-VERTICAL] : straight.down.end (SB + OX * 2) bot [heading Downward]
([Just CLOSED-CIRCLE] || [Just CLOSED-ROUND]) : list
arcvh
g4 (Middle + CorrectionOMidX * stroke) (bot + O)
archv
flat (RightSB - [if (slabBot === CLOSED-CIRCLE) OX 0]) (bot + adb2)
curl (RightSB - [if (slabBot === CLOSED-CIRCLE) OX 0]) midy
[Just CLOSED-STEM] : OBarRight.arcEnd bot SB RightSB stroke stemFine ada2 adb2 midy
__ : list [hookend (bot + O)] [g4 (RightSB - O) (bot + hook)] __ : list [hookend (bot + O)] [g4 (RightSB - O) (bot + hook)]
export : define [Shape] : union [UpperShape] [LowerShape] export : define [Shape] : union [UpperShape] [LowerShape]
@ -76,21 +103,24 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
__ : glyph-proc __ : glyph-proc
glyph-block-export CyrZe glyph-block-export CyrZe
define [CyrZe slabTop slabBot top bot left right blend hook _stroke _xo _op] : namespace define [CyrZe] : with-params [
local xo : fallback _xo OX slabTop slabBot top bot left right blend hook _stroke
[xo OX] [op OverlayPos] [ada2 SmallArchDepthA] [adb2 SmallArchDepthB]
] : namespace
export : define [Dim] : begin export : define [Dim] : begin
local stroke : fallback _stroke : AdviceStroke2 2 3 (top - bot) local stroke : fallback _stroke : AdviceStroke2 2 3 (top - bot)
local midx : mix right left blend local midx : mix right left blend
local midy : mix bot top [fallback _op OverlayPos] local midy : mix bot top op
local topHeight : top - bot local topHeight : top - bot
local midyHeight : midy - bot local midyHeight : midy - bot
local adb : topHeight - [mix (midyHeight + stroke / 2) (topHeight - O - stroke) (ArchDepthA / (ArchDepthA + ArchDepthB))] + TanSlope * HVContrast * stroke local adb : topHeight - [mix (midyHeight + stroke / 2) (topHeight - O - stroke) (ArchDepthA / (ArchDepthA + ArchDepthB))] + TanSlope * HVContrast * stroke
local ada : [mix (stroke + O) (midyHeight - stroke / 2) (ArchDepthA / (ArchDepthA + ArchDepthB))] - TanSlope * HVContrast * stroke local ada : [mix (stroke + O) (midyHeight - stroke / 2) (ArchDepthA / (ArchDepthA + ArchDepthB))] - TanSlope * HVContrast * stroke
local fine : stroke * CThin local fine : stroke * CThin
return : object stroke midx midy ada adb fine local stemFine : stroke * (ShoulderFine / Stroke)
return : object stroke midx midy ada adb fine stemFine
define [CyrZeUpperShapeT sink] : begin define [CyrZeUpperShapeT sink] : begin
define [object stroke midx midy ada adb fine] : Dim define [object stroke midx midy ada adb fine stemFine] : Dim
local middle : (left + right) / 2 local middle : (left + right) / 2
return : sink return : sink
match slabTop match slabTop
@ -99,6 +129,14 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
[Just FLAT-CONNECTION] : list [Just FLAT-CONNECTION] : list
flat (left - xo) top [widths.rhs.heading stroke Rightward] flat (left - xo) top [widths.rhs.heading stroke Rightward]
curl (middle - CorrectionOMidX * stroke) top [heading Rightward] curl (middle - CorrectionOMidX * stroke) top [heading Rightward]
[Just OPEN-VERTICAL] : straight.down.start right top [widths.rhs.heading stroke Downward]
([Just CLOSED-CIRCLE] || [Just CLOSED-ROUND]) : list
flat (left + [if (slabTop === CLOSED-CIRCLE) xo 0]) midy [widths.rhs stroke]
curl (left + [if (slabTop === CLOSED-CIRCLE) xo 0]) (top - ada2)
arcvh
g4 (middle - CorrectionOMidX * stroke) (top - O)
archv
[Just CLOSED-STEM] : OBarLeft.arcStart top left right stroke stemFine ada2 adb2 midy
__ : list [g4 (left - xo) (top - hook) : widths.rhs stroke] [hookstart (top - O)] __ : list [g4 (left - xo) (top - hook) : widths.rhs stroke] [hookstart (top - O)]
g4 right [YSmoothMidR top (midy - stroke / 2)] g4 right [YSmoothMidR top (midy - stroke / 2)]
arcvh arcvh
@ -106,31 +144,33 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
curl midx (midy - (fine - stroke / 2)) [heading Leftward] curl midx (midy - (fine - stroke / 2)) [heading Leftward]
define [CyrZeLowerShapeT sink] : begin define [CyrZeLowerShapeT sink] : begin
define [object stroke midx midy ada adb fine] : Dim define [object stroke midx midy ada adb fine stemFine] : Dim
local middle : (left + right) / 2 local middle : (left + right) / 2
return : sink return : sink
flat midx (midy + (fine - stroke / 2)) [widths.rhs.heading fine Rightward] flat midx (midy + (fine - stroke / 2)) [widths.heading 0 fine Rightward]
curl middle (midy + (fine - stroke / 2)) [heading Rightward] curl middle (midy + (fine - stroke / 2)) [heading Rightward]
archv archv
if (slabBot === OPEN-HALF)
g4.down.end (right - xo * 2) [YSmoothMidR (midy + stroke / 2) bot] [widths.rhs.heading stroke Downward]
g4 (right - xo * 2) [YSmoothMidR (midy + stroke / 2) bot] [widths.rhs stroke] g4 (right - xo * 2) [YSmoothMidR (midy + stroke / 2) bot] [widths.rhs stroke]
match slabBot match slabBot
[Just SLAB-CLASSICAL] : SerifedArcEnd.RtlRhs left middle bot stroke hook [Just SLAB-CLASSICAL] : SerifedArcEnd.RtlRhs left middle bot stroke hook
[Just SLAB-INWARD] : InwardSlabArcEnd.RtlRhs left middle bot stroke hook [Just SLAB-INWARD] : InwardSlabArcEnd.RtlRhs left middle bot stroke hook
[Just OPEN-HALF] : list
[Just OPEN-VERTICAL] : straight.down.end (right - xo * 2) bot [heading Downward]
([Just CLOSED-CIRCLE] || [Just CLOSED-ROUND]) : list
arcvh
g4 (middle + CorrectionOMidX * stroke) (bot + O)
archv
flat (left + [if (slabBot === CLOSED-CIRCLE) xo 0]) (bot + adb2)
curl (left + [if (slabBot === CLOSED-CIRCLE) xo 0]) midy
[Just CLOSED-STEM] : OBarLeft.arcEnd bot left right stroke stemFine ada2 adb2 midy
__ : list [hookend (bot + O) (sw -- stroke)] [g4 (left + xo) (bot + hook)] __ : list [hookend (bot + O) (sw -- stroke)] [g4 (left + xo) (bot + hook)]
export : define [UpperShape] : CyrZeUpperShapeT dispiro export : define [UpperShape] : CyrZeUpperShapeT dispiro
export : define [LowerShape] : CyrZeLowerShapeT dispiro export : define [LowerShape] : CyrZeLowerShapeT dispiro
define [CyrZeLowerShapeHalf] : begin
define [object stroke midx midy ada adb fine] : Dim
local middle : (left + right) / 2
return : dispiro
flat midx (midy + (fine - stroke / 2)) [widths.rhs.heading fine Rightward]
curl middle (midy + (fine - stroke / 2)) [heading Rightward]
archv
g4.down.end (right - OX * 2) [YSmoothMidR (midy + stroke / 2) bot] [widths.rhs.heading stroke Downward]
define [CyrZeLowerShapeTailed] : begin define [CyrZeLowerShapeTailed] : begin
define [object stroke midx midy ada adb fine] : Dim define [object stroke midx midy ada adb fine] : Dim
local middle : (left + right) / 2 local middle : (left + right) / 2
@ -155,10 +195,6 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
CyrZeUpperShapeT spiro-outline CyrZeUpperShapeT spiro-outline
CyrZeLowerShapeT spiro-outline CyrZeLowerShapeT spiro-outline
export : define [ShapeHalf] : union
CyrZeUpperShapeT dispiro
CyrZeLowerShapeHalf
export : define [KsiBaseShape] : union export : define [KsiBaseShape] : union
CyrZeUpperShapeT dispiro CyrZeUpperShapeT dispiro
CyrZeLowerShapeTailed CyrZeLowerShapeTailed
@ -216,20 +252,16 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
local ze : CyrZe slabTop slabBot CAP 0 SB RightSB StdBlend Hook local ze : CyrZe slabTop OPEN-VERTICAL CAP 0 SB RightSB StdBlend Hook
define [object stroke midy] : ze.Dim include : ze.Shape
include : ze.ShapeHalf include : ze.AutoStartSerifL
include : ze.AutoStartSerifL slabTop CAP 0 SB RightSB StdBlend
include : VBar.r (RightSB - OX * 2) 0 [YSmoothMidR (midy + stroke / 2) 0] stroke
include : CyrDescender.rSideJut (RightSB - OX * 2) 0 include : CyrDescender.rSideJut (RightSB - OX * 2) 0
create-glyph "cyrl/dzjeKomi.\(suffix)" : glyph-proc create-glyph "cyrl/dzjeKomi.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
local ze : CyrZe slabTop slabBot XH 0 SB RightSB StdBlend SHook local ze : CyrZe slabTop OPEN-VERTICAL XH 0 SB RightSB StdBlend SHook
define [object stroke midy] : ze.Dim include : ze.Shape
include : ze.ShapeHalf include : ze.AutoStartSerifL
include : ze.AutoStartSerifL slabTop XH 0 SB RightSB StdBlend
include : VBar.r (RightSB - OX * 2) 0 [YSmoothMidR (midy + stroke / 2) 0] stroke
include : CyrDescender.rSideJut (RightSB - OX * 2) 0 include : CyrDescender.rSideJut (RightSB - OX * 2) 0
create-glyph "cyrl/ZjeKomi.\(suffix)" : glyph-proc create-glyph "cyrl/ZjeKomi.\(suffix)" : glyph-proc
@ -238,9 +270,9 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : df.markSet.capital include : df.markSet.capital
local xm : df.middle + 0.5 * df.mvs * HVContrast local xm : df.middle + 0.5 * df.mvs * HVContrast
local ze : CyrZe slabTop slabBot CAP 0 df.leftSB xm StdBlend Hook df.mvs local ze : CyrZe slabTop OPEN-HALF CAP 0 df.leftSB xm StdBlend Hook df.mvs
define [object stroke midy] : ze.Dim define [object stroke midy] : ze.Dim
include : ze.ShapeHalf include : ze.Shape
include : UpwardHookShape include : UpwardHookShape
left -- xm - OX * 2 - stroke * HVContrast left -- xm - OX * 2 - stroke * HVContrast
right -- df.rightSB right -- df.rightSB
@ -259,9 +291,9 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : df.markSet.e include : df.markSet.e
local xm : df.middle + 0.5 * df.mvs * HVContrast local xm : df.middle + 0.5 * df.mvs * HVContrast
local ze : CyrZe slabTop slabBot XH 0 df.leftSB xm StdBlend Hook df.mvs local ze : CyrZe slabTop OPEN-HALF XH 0 df.leftSB xm StdBlend SHook df.mvs
define [object stroke midy] : ze.Dim define [object stroke midy] : ze.Dim
include : ze.ShapeHalf include : ze.Shape
include : UpwardHookShape include : UpwardHookShape
left -- xm - OX * 2 - stroke * HVContrast left -- xm - OX * 2 - stroke * HVContrast
right -- df.rightSB right -- df.rightSB
@ -284,6 +316,156 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : let [ze : CyrZe slabTop SLAB-NONE XH 0 SB RightSB StdBlend SHook] include : let [ze : CyrZe slabTop SLAB-NONE XH 0 SB RightSB StdBlend SHook]
union [ze.KsiBaseShape] [ze.AutoStartSerifL] union [ze.KsiBaseShape] [ze.AutoStartSerifL]
do "Closed Epsilon Shapes"
create-glyph 'epsilonClosed' 0x29A : glyph-proc
include : MarkSet.e
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0 StdBlend SHook
ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB
include : eps.Shape
create-glyph 'epsilonRevClosed' 0x25E : glyph-proc
include : MarkSet.e
local ze : CyrZe CLOSED-CIRCLE CLOSED-CIRCLE XH 0 SB RightSB StdBlend SHook
ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB
include : ze.Shape
create-glyph 'vol/Oe' 0xA79C : glyph-proc
include : MarkSet.capital
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE CAP 0 VolBlend Hook
ada2 -- ArchDepthA
adb2 -- ArchDepthB
include : eps.Shape
create-glyph 'vol/oe' 0xA79D : glyph-proc
include : MarkSet.e
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0 VolBlend SHook
ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB
include : eps.Shape
do "Volapuk AE"
glyph-block-import Letter-Latin-Lower-A : SingleStorey
define [FullBarBody df height bar hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon CLOSED-STEM CLOSED-STEM height 0 VolBlend hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
include : eps.Shape
include : bar df height no-shape stroke
define [EarlessCornerBody df height bar hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon SLAB-INWARD CLOSED-STEM height 0 VolBlend hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
include : eps.Shape
include : bar df (height - DToothlessRise) no-shape stroke
define [EarlessRoundedBody df height bar hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon CLOSED-ROUND CLOSED-STEM height 0 VolBlend hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
include : eps.Shape
include : bar df (height - adb2) no-shape stroke
define SingleStoreyConfig : SuffixCfg.weave
object # body
singleStorey FullBarBody
singleStoreyEarlessCorner EarlessCornerBody
singleStoreyEarlessRounded EarlessRoundedBody
object # bar
serifless SingleStorey.SeriflessBar
serifed SingleStorey.SerifedBar
tailed SingleStorey.TailedBar
foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do
create-glyph "vol/Ae.\(suffix)" : glyph-proc
include : MarkSet.capital
include : body [DivFrame 1] CAP bar Hook ArchDepthA ArchDepthB
create-glyph "vol/ae.\(suffix)" : glyph-proc
include : MarkSet.e
include : body [DivFrame 1] XH bar SHook SmallArchDepthA SmallArchDepthB
do "Volapuk UE"
glyph-block-import Letter-Latin-U : USerifs
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar
define [UToothed df height slab hook ada2 adb2] : glyph-proc
set-base-anchor 'trailing' df.rightSB 0
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0 VolBlend hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
include : eps.Shape
include : VBar.r df.rightSB 0 height stroke
include : slab df height
define [UTailed df height slab hook ada2 adb2] : glyph-proc
set-base-anchor 'trailing' (df.rightSB + SideJut) 0
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0 VolBlend hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
include : eps.Shape
include : RightwardTailedBar df.rightSB 0 height stroke
include : slab df height
define [UToothlessRounded df height slab hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-ROUND height 0 VolBlend hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
include : eps.Shape
include : VBar.r df.rightSB ada2 height stroke
include : slab df height
define [UToothlessCorner df height slab hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon OPEN-VERTICAL SLAB-INWARD height 0 VolBlend hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
include : eps.Shape
include : VBar.r df.rightSB DToothlessRise height stroke
include : slab df height stroke
define SmallUConfig : SuffixCfg.weave
object # body
toothed UToothed
tailed UTailed
toothlessCorner UToothlessCorner
toothlessRounded UToothlessRounded
function [body] : object # serifs
serifless no-shape
bottomRightSerifed USerifs.BottomRight
motionSerifed : match body
[Just 'toothed'] USerifs.MotionToothed
__ USerifs.MotionToothless
serifed : match body
[Just 'toothed'] USerifs.Toothed
[Just 'tailed'] USerifs.Tailed
__ USerifs.SmallToothless
foreach { suffix { Base Slabs } } [Object.entries SmallUConfig] : do
create-glyph "vol/Ue.\(suffix)" : glyph-proc
local df : DivFrame 1
include : MarkSet.capital
include : Base df CAP Slabs Hook ArchDepthA ArchDepthB
create-glyph "vol/ue.\(suffix)" : glyph-proc
local df : DivFrame 1
include : MarkSet.e
include : Base df XH Slabs SHook SmallArchDepthA SmallArchDepthB
select-variant 'vol/Ae' 0xA79A (follow -- 'a/single')
select-variant 'vol/ae' 0xA79B (follow -- 'a/single')
select-variant 'vol/Ue' 0xA79E (follow -- 'u')
select-variant 'vol/ue' 0xA79F (follow -- 'u')
alias 'grek/epsilon' 0x3B5 'latn/epsilon.serifless' alias 'grek/epsilon' 0x3B5 'latn/epsilon.serifless'
select-variant 'latn/Epsilon' 0x190 select-variant 'latn/Epsilon' 0x190
select-variant 'latn/epsilon' 0x25B select-variant 'latn/epsilon' 0x25B

View file

@ -21,7 +21,7 @@ glyph-block Letter-Latin-C : begin
define SLAB-NONE 0 define SLAB-NONE 0
define SLAB-CLASSICAL 1 define SLAB-CLASSICAL 1
define SLAB-INWARD 2 define SLAB-INWARD 2
define SLAB-FLAT 3 define FLAT-CONNECTION 3
glyph-block-export CShapeT glyph-block-export CShapeT
define [CShapeT sink offset df st sb top bot ada adb hook sw origBar] : sink define [CShapeT sink offset df st sb top bot ada adb hook sw origBar] : sink
@ -32,7 +32,7 @@ glyph-block Letter-Latin-C : begin
g4 (df.rightSB - offset) (top - DToothlessRise) g4 (df.rightSB - offset) (top - DToothlessRise)
g4 (df.middle - CorrectionOMidX * sw) (top - O - offset) g4 (df.middle - CorrectionOMidX * sw) (top - O - offset)
archv archv
[Just SLAB-FLAT] : list [Just FLAT-CONNECTION] : list
flat (df.rightSB - offset) (top - offset) flat (df.rightSB - offset) (top - offset)
curl (df.middle - CorrectionOMidX * sw) (top - offset) curl (df.middle - CorrectionOMidX * sw) (top - offset)
archv archv
@ -61,7 +61,7 @@ glyph-block Letter-Latin-C : begin
g4 (df.leftSB + offset) (top - DToothlessRise) g4 (df.leftSB + offset) (top - DToothlessRise)
g4 (df.middle - CorrectionOMidX * sw) (top - O - offset) g4 (df.middle - CorrectionOMidX * sw) (top - O - offset)
archv archv
[Just SLAB-FLAT] : list [Just FLAT-CONNECTION] : list
flat (df.leftSB + offset) (top - offset) flat (df.leftSB + offset) (top - offset)
curl (df.middle - CorrectionOMidX * sw) (top - offset) curl (df.middle - CorrectionOMidX * sw) (top - offset)
archv archv

View file

@ -14,7 +14,7 @@ glyph-block Letter-Latin-Lower-A : begin
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar InvRightwardTailedBar glyph-block-import Letter-Shared-Shapes : RightwardTailedBar InvRightwardTailedBar
glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend RetroflexHook glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend RetroflexHook
glyph-block-export DoubleStorey glyph-block-export DoubleStorey DoubleStoreyConfig
define DoubleStorey : namespace define DoubleStorey : namespace
define [ADoubleStoreyStroke df] : AdviceStroke2 2 3 XH df.div define [ADoubleStoreyStroke df] : AdviceStroke2 2 3 XH df.div
define [ADoubleStoreySmoothA df] : begin define [ADoubleStoreySmoothA df] : begin
@ -132,52 +132,82 @@ glyph-block Letter-Latin-Lower-A : begin
Rect XH 0 (RightSB - BBD) Width Rect XH 0 (RightSB - BBD) Width
include : HBar.b (RightSB - BBD) RightSB 0 BBS include : HBar.b (RightSB - BBD) RightSB 0 BBS
glyph-block-export SingleStorey SingleStoreyConfig
define SingleStorey : namespace define SingleStorey : namespace
export : define [FullBarBody height bar mask] : glyph-proc export : define [FullBarBody df height bar mask _sw] : glyph-proc
include : OBarRight.shape (top -- height) local sw : fallback _sw df.mvs
include : bar height mask include : OBarRight.shape
export : define [EarlessCornerBody height bar mask] : glyph-proc top -- height
include : OBarLeft.toothless (rise -- DToothlessRise) (mBlend -- DMBlend) left -- df.leftSB
include : FlipAround Middle (XH / 2) right -- df.rightSB
include : bar (height - DToothlessRise) mask sw -- sw
export : define [EarlessRoundedBody height bar mask] : glyph-proc fine -- sw * (ShoulderFine / Stroke)
include : OBarLeft.rounded (yTerminal -- (XH - SmallArchDepthA)) ada -- [df.archDepthA SmallArchDepth sw]
include : FlipAround Middle (XH / 2) adb -- [df.archDepthB SmallArchDepth sw]
include : bar (height - SmallArchDepthB) mask include : bar df height mask sw
export : define [EarlessCornerBody df height bar mask _sw] : glyph-proc
local sw : fallback _sw df.mvs
include : OBarLeft.toothless
top -- height
left -- df.leftSB
right -- df.rightSB
sw -- sw
fine -- sw * (ShoulderFine / Stroke)
ada -- [df.archDepthA SmallArchDepth sw]
adb -- [df.archDepthB SmallArchDepth sw]
rise -- DToothlessRise
mBlend -- DMBlend
include : FlipAround df.middle (height / 2)
include : bar df (height - DToothlessRise) mask sw
export : define [EarlessRoundedBody df height bar mask _sw] : glyph-proc
local sw : fallback _sw df.mvs
local ada : df.archDepthA SmallArchDepth sw
local adb : df.archDepthB SmallArchDepth sw
include : OBarLeft.rounded
top -- height
left -- df.leftSB
right -- df.rightSB
sw -- sw
fine -- sw * (ShoulderFine / Stroke)
ada -- ada
adb -- adb
yTerminal -- (height - ada)
include : FlipAround df.middle (height / 2)
include : bar df (height - adb) mask sw
export : define [SeriflessBar height mask] : glyph-proc export : define [SeriflessBar df height mask sw] : glyph-proc
set-base-anchor 'trailing' RightSB 0 set-base-anchor 'trailing' df.rightSB 0
include : difference include : difference
VBar.r RightSB 0 height VBar.r df.rightSB 0 height sw
mask height mask df height sw
export : define [SerifedBar height mask] : glyph-proc export : define [SerifedBar df height mask sw] : glyph-proc
include : SeriflessBar height mask include : SeriflessBar df height mask sw
include [SerifFrame.fromDf [DivFrame 1] XH 0].rb.outer include [SerifFrame.fromDf df height 0 (swSerif -- sw)].rb.outer
export : define [TailedBar height mask] : glyph-proc export : define [TailedBar df height mask sw] : glyph-proc
set-base-anchor 'trailing' (RightSB + SideJut) 0 set-base-anchor 'trailing' (df.rightSB + SideJut) 0
include : difference include : difference
RightwardTailedBar RightSB 0 height RightwardTailedBar df.rightSB 0 height sw
mask height mask df height sw
set SeriflessBar.inv SeriflessBar set SeriflessBar.inv SeriflessBar
set SerifedBar.inv : function [height mask] : glyph-proc set SerifedBar.inv : function [df height mask sw] : glyph-proc
include : SeriflessBar height mask include : SeriflessBar df height mask sw
include [SerifFrame.fromDf [DivFrame 1] height 0].rt.outer include [SerifFrame.fromDf df height 0 (swSerif -- sw)].rt.outer
set TailedBar.inv : function [height mask] : glyph-proc set TailedBar.inv : function [df height mask sw] : glyph-proc
set-base-anchor 'trailing' (RightSB + SideJut) 0 set-base-anchor 'trailing' (df.rightSB + SideJut) 0
include : difference include : difference
InvRightwardTailedBar RightSB 0 height InvRightwardTailedBar df.rightSB 0 height sw
mask height mask df height sw
export : define [ScriptCut y] : spiro-outline export : define [ScriptCut df y sw] : spiro-outline
corner RightSB y corner df.rightSB y
corner (RightSB - Stroke * HVContrast) y corner (df.rightSB - sw * HVContrast) y
corner (RightSB - Stroke * HVContrast) (y - Stroke / 2) corner (df.rightSB - sw * HVContrast) (y - sw / 2)
export : define [InvScriptCut y] : spiro-outline export : define [InvScriptCut df y sw] : spiro-outline
corner RightSB 0 corner df.rightSB 0
corner (RightSB - Stroke * HVContrast) 0 corner (df.rightSB - sw * HVContrast) 0
corner (RightSB - Stroke * HVContrast) (0 + Stroke / 2) corner (df.rightSB - sw * HVContrast) (0 + sw / 2)
define SingleStoreyConfig : SuffixCfg.weave define SingleStoreyConfig : SuffixCfg.weave
object # body object # body
@ -193,16 +223,16 @@ glyph-block Letter-Latin-Lower-A : begin
foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do
create-glyph "a.\(suffix)" : glyph-proc create-glyph "a.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : body XH bar no-shape include : body [DivFrame 1] XH bar no-shape
create-glyph "largescripta.\(suffix)" : glyph-proc create-glyph "largescripta.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : body CAP bar SingleStorey.ScriptCut include : body [DivFrame 1] CAP bar SingleStorey.ScriptCut
create-glyph "scripta.\(suffix)" : glyph-proc create-glyph "scripta.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : body XH bar SingleStorey.ScriptCut include : body [DivFrame 1] XH bar SingleStorey.ScriptCut
create-glyph "invscripta.\(suffix)" : glyph-proc create-glyph "invscripta.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : body XH bar.inv SingleStorey.InvScriptCut include : body [DivFrame 1] XH bar.inv SingleStorey.InvScriptCut
select-variant 'a' 'a' select-variant 'a' 'a'
link-reduced-variant 'a/sansSerif' 'a' MathSansSerif link-reduced-variant 'a/sansSerif' 'a' MathSansSerif

View file

@ -14,7 +14,7 @@ glyph-block Letter-Latin-U : begin
glyph-block-import Letter-Shared-Shapes : nShoulder RightwardTailedBar DToothlessRise SerifFrame glyph-block-import Letter-Shared-Shapes : nShoulder RightwardTailedBar DToothlessRise SerifFrame
glyph-block-import Letter-Shared-Shapes : CyrTailDescender RetroflexHook VerticalHook glyph-block-import Letter-Shared-Shapes : CyrTailDescender RetroflexHook VerticalHook
glyph-block-export UShape glyph-block-export UShape USerifs
define [UArcT] : with-params [sink df top bottom [stroke Stroke] [ada ArchDepthA] [adb ArchDepthB] [offset 0]] : sink define [UArcT] : with-params [sink df top bottom [stroke Stroke] [ada ArchDepthA] [adb ArchDepthB] [offset 0]] : sink
widths.lhs stroke widths.lhs stroke
@ -84,51 +84,52 @@ glyph-block Letter-Latin-U : begin
curl df.rightSB 0 [heading Downward] curl df.rightSB 0 [heading Downward]
include : FlipAround df.middle (top / 2) include : FlipAround df.middle (top / 2)
define [UTopLeftSerif df yTop] : tagged 'serifLT' define [UTopLeftSerif df yTop _sw] : tagged 'serifLT'
HSerif.lt df.leftSB yTop SideJut HSerif.lt df.leftSB yTop SideJut _sw
define [UTopRightSerif df yTop] : tagged 'serifRT' define [UTopRightSerif df yTop _sw] : tagged 'serifRT'
HSerif.lt (df.rightSB - Stroke * HVContrast) yTop SideJut HSerif.lt (df.rightSB - Stroke * HVContrast) yTop SideJut _sw
define [UBottomRightSerif df yTop] : glyph-proc define [UBottomRightSerif df yTop _sw] : glyph-proc
include : tagged 'serifRB' : HSerif.rb df.rightSB 0 SideJut include : tagged 'serifRB' : HSerif.rb df.rightSB 0 SideJut _sw
define trAnchor currentGlyph.baseAnchors.trailing define trAnchor currentGlyph.baseAnchors.trailing
if trAnchor : begin if trAnchor : begin
set-base-anchor 'trailing' (trAnchor.x + SideJut) trAnchor.y set-base-anchor 'trailing' (trAnchor.x + SideJut) trAnchor.y
define [SmallUSlabs df top] : glyph-proc define USerifs : namespace
include : UTopLeftSerif df top export : define [Toothed df top _sw] : glyph-proc
if [not para.isItalic] : include : UTopRightSerif df top include : UTopLeftSerif df top _sw
include : UBottomRightSerif df top if [not para.isItalic] : include : UTopRightSerif df top _sw
include : UBottomRightSerif df top _sw
define [UrtBaseSlabs df top] : glyph-proc export : define [RTBase df top _sw] : glyph-proc
include : UTopLeftSerif df top include : UTopLeftSerif df top _sw
if [not para.isItalic] : include : UTopRightSerif df top if [not para.isItalic] : include : UTopRightSerif df top _sw
define [SmallUTailedSlabs df top] : glyph-proc export : define [Tailed df top _sw] : glyph-proc
include : UTopLeftSerif df top include : UTopLeftSerif df top _sw
if [not para.isItalic] : include : UTopRightSerif df top if [not para.isItalic] : include : UTopRightSerif df top _sw
define [CapitalUMotionToothlessSlabs df top] : glyph-proc export : define [BilateralMotion df top _sw] : glyph-proc
include : HSerif.lt df.leftSB top SideJut include : HSerif.lt df.leftSB top SideJut _sw
include : HSerif.rt df.rightSB top SideJut include : HSerif.rt df.rightSB top SideJut _sw
define [SmallUToothlessSlabs df top] : glyph-proc export : define [SmallToothless df top _sw] : glyph-proc
include : UTopLeftSerif df top include : UTopLeftSerif df top _sw
include : UTopRightSerif df top include : UTopRightSerif df top _sw
define [SmallUMotionSlabs df top] : glyph-proc export : define [MotionToothed df top _sw] : glyph-proc
include : UTopLeftSerif df top include : UTopLeftSerif df top _sw
include : UBottomRightSerif df top include : UBottomRightSerif df top _sw
define [SmallUBottomRightSlabs df top] : glyph-proc export : define [BottomRight df top _sw] : glyph-proc
include : UBottomRightSerif df top include : UBottomRightSerif df top _sw
define [SmallUMotionTailedSlabs df top] : glyph-proc export : define [MotionToothless df top _sw] : glyph-proc
include : UTopLeftSerif df top include : UTopLeftSerif df top _sw
define [ToothlessSlabs df top] : begin export : define [Toothless df top _sw] : begin
local sf : SerifFrame.fromDf df top 0 local sf : SerifFrame.fromDf df top 0 (swSerif -- _sw)
return : composite-proc sf.lt.full sf.rt.full return : composite-proc sf.lt.full sf.rt.full
define CapitalUConfig : SuffixCfg.weave define CapitalUConfig : SuffixCfg.weave
@ -139,14 +140,14 @@ glyph-block Letter-Latin-U : begin
toothlessRounded UToothlessRounded toothlessRounded UToothlessRounded
function [body] : object # serifs function [body] : object # serifs
serifless { no-shape false } serifless { no-shape false }
bilateralMotionSerifed { CapitalUMotionToothlessSlabs true } bilateralMotionSerifed { USerifs.BilateralMotion true }
unilateralMotionSerifed : match body unilateralMotionSerifed : match body
[Just 'toothed'] { SmallUMotionSlabs true } [Just 'toothed'] { USerifs.MotionToothed true }
__ { SmallUMotionTailedSlabs true } __ { USerifs.MotionToothless true }
serifed : match body serifed : match body
[Just 'toothed'] { SmallUSlabs true } [Just 'toothed'] { USerifs.Toothed true }
[Just 'tailed'] { SmallUTailedSlabs true } [Just 'tailed'] { USerifs.Tailed true }
__ { ToothlessSlabs true } __ { USerifs.Toothless true }
foreach { suffix { Base {Slabs fLTSlab} } } [Object.entries CapitalUConfig] : do foreach { suffix { Base {Slabs fLTSlab} } } [Object.entries CapitalUConfig] : do
create-glyph "U.\(suffix)" : glyph-proc create-glyph "U.\(suffix)" : glyph-proc
@ -174,15 +175,15 @@ glyph-block Letter-Latin-U : begin
urtBase UToothed urtBase UToothed
function [body] : object # serifs function [body] : object # serifs
serifless no-shape serifless no-shape
bottomRightSerifed SmallUBottomRightSlabs bottomRightSerifed USerifs.BottomRight
motionSerifed : match body motionSerifed : match body
[Just 'toothed'] SmallUMotionSlabs [Just 'toothed'] USerifs.MotionToothed
__ SmallUMotionTailedSlabs __ USerifs.MotionToothless
serifed : match body serifed : match body
[Just 'toothed'] SmallUSlabs [Just 'toothed'] USerifs.Toothed
[Just 'tailed'] SmallUTailedSlabs [Just 'tailed'] USerifs.Tailed
[Just 'urtBase'] UrtBaseSlabs [Just 'urtBase'] USerifs.RTBase
__ SmallUToothlessSlabs __ USerifs.SmallToothless
foreach { suffix { Base Slabs } } [Object.entries SmallUConfig] : do foreach { suffix { Base Slabs } } [Object.entries SmallUConfig] : do
create-glyph "u.\(suffix)" : glyph-proc create-glyph "u.\(suffix)" : glyph-proc

View file

@ -212,33 +212,7 @@ glyph-block Letter-Latin-Upper-B : begin
flat Middle (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward] flat Middle (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
curl mid (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward] curl mid (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
define [ClosedEpsilonShape top] : glyph-proc create-glyph 'cyrl/ve.italic' : glyph-proc
local stroke : AdviceStroke2 2 3 top
local mid : mix SB RightSB 0.65
local midy : top * HBarPos
local ada : top - [mix (midy + stroke / 2) (top - O - stroke) (ArchDepthB / (ArchDepthA + ArchDepthB))] - TanSlope * HVContrast * stroke
local adb : [mix (stroke + O) (midy - stroke / 2) (ArchDepthB / (ArchDepthA + ArchDepthB))] + TanSlope * HVContrast * stroke
local fine : stroke * CThin
include : dispiro
widths.rhs fine
flat mid (midy - (fine - stroke / 2)) [heading Leftward]
curl Middle (midy - (fine - stroke / 2)) [heading Leftward]
archv
g4 (SB + (OX - O)) (top - ada) [widths.rhs stroke]
arcvh
g4 (Middle - stroke * 0.06 - CorrectionOMidS) (top - O)
archv
flat (RightSB - O) (top - SmallArchDepthB)
curl (RightSB - O) SmallArchDepthA
arcvh
g4 (Middle - stroke * 0.06 + CorrectionOMidS) O
archv
g4 (SB + (OX - O) + O * 2) (adb)
arcvh
flat Middle (midy + (fine - stroke / 2)) [widths.heading 0 fine Rightward]
curl mid (midy + (fine - stroke / 2)) [widths.heading 0 fine Rightward]
create-glyph 'closeturnepsilon' 0x25E : glyph-proc
include : MarkSet.e include : MarkSet.e
include : ItalicCyrveShape XH include : ItalicCyrveShape XH
@ -247,11 +221,6 @@ glyph-block Letter-Latin-Upper-B : begin
include : ItalicCyrveShape Ascender include : ItalicCyrveShape Ascender
alias 'cyrl/ve.BGR' null 'grek/betaSymbol' alias 'cyrl/ve.BGR' null 'grek/betaSymbol'
alias 'cyrl/ve.italic' null 'closeturnepsilon'
create-glyph 'closeepsilon' 0x29A : glyph-proc
include : MarkSet.e
include : ClosedEpsilonShape XH
create-glyph 'grek/beta' 0x3B2 : glyph-proc create-glyph 'grek/beta' 0x3B2 : glyph-proc
include : MarkSet.bp include : MarkSet.bp

View file

@ -226,6 +226,36 @@ glyph-block Letter-Shared-Shapes : begin
glyph-block-export : OBarLeft glyph-block-export : OBarLeft
define OBarLeft : namespace define OBarLeft : namespace
define kSkewShift 0.5 define kSkewShift 0.5
export : define [arcStart] : with-params [
[top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB]
[ystart (top - ada - 0.01)]
] : begin
local skew : shoulderMidSkew fine sw
local mt : [mix left right 0.5] + (skew + kSkewShift * TanSlope) * sw
local xstart : left + (sw - fine) * HVContrast
return : list
flat xstart ystart [widths.rhs fine]
curl xstart (top - ada)
arcvh
g4 mt (top - O) [widths.rhs.heading sw {.y (-1) .x (-skew)}]
archv
export : define [arcEnd] : with-params [
[bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB]
[yend (bot + ada + 0.01)]
] : begin
local skew : shoulderMidSkew fine sw
local mb : [mix left right 0.5] + (skew + kSkewShift * TanSlope) * sw
local xend : left + (sw - fine) * HVContrast
return : list
arcvh
g4 mb (bot + O) [widths.rhs.heading sw {.y (1) .x (-skew)}]
archv
flat xend (bot + adb) [widths.rhs fine]
curl xend yend
export : define [shape] : with-params [ export : define [shape] : with-params [
[top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB] [ada SmallArchDepthA] [adb SmallArchDepthB]
@ -334,6 +364,37 @@ glyph-block Letter-Shared-Shapes : begin
glyph-block-export : OBarRight glyph-block-export : OBarRight
define OBarRight : namespace define OBarRight : namespace
define kSkewShift 0.5
export : define [arcStart] : with-params [
[top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB]
[ystart (top - ada - 0.01)]
] : begin
local skew : shoulderMidSkew fine sw
local mt : [mix left right 0.5] - (skew + kSkewShift * TanSlope) * sw
local xstart : right - (sw - fine) * HVContrast
return : list
flat xstart ystart [widths.lhs fine]
curl xstart (top - adb)
arcvh
g4 mt (top - O) [widths.lhs.heading sw {.y (-1) .x (skew)}]
archv
export : define [arcEnd] : with-params [
[bot 0] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB]
[yend (bot + ada + 0.01)]
] : begin
local skew : shoulderMidSkew fine sw
local mb : [mix left right 0.5] - (skew + kSkewShift * TanSlope) * sw
local xend : right - (sw - fine) * HVContrast
return : list
arcvh
g4 mb (bot + O) [widths.lhs.heading sw {.y (1) .x (skew)}]
archv
flat xend (bot + ada) [widths.lhs fine]
curl xend yend
export : define [shape] : with-params [ export : define [shape] : with-params [
[top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine] [top XH] [left SB] [right RightSB] [sw Stroke] [fine ShoulderFine]
[ada SmallArchDepthA] [adb SmallArchDepthB] [ada SmallArchDepthA] [adb SmallArchDepthB]

View file

@ -479,8 +479,8 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
local arrowX : l + 0.5 * HVContrast * Stroke local arrowX : l + 0.5 * HVContrast * Stroke
local headLength : headSize * [Math.sqrt 0.5] local headLength : headSize * [Math.sqrt 0.5]
local gapSize : Math.max (2 * headLength) (CAP - 0 - ada - adb) local gapSize : Math.max (2 * headLength) (CAP - 0 - ada - adb)
local gapTop : SymbolMid + 0.5 * gapSize local gapTop : CAP / 2 + 0.5 * gapSize
local gapBot : SymbolMid - 0.5 * gapSize local gapBot : CAP / 2 - 0.5 * gapSize
set-width MosaicWidth set-width MosaicWidth
include : union include : union
difference difference

View file

@ -1425,6 +1425,7 @@ selectorAffix.a = "doubleStorey"
selectorAffix."a/sansSerif" = "doubleStorey" selectorAffix."a/sansSerif" = "doubleStorey"
selectorAffix."a/rtailBase" = "doubleStorey" selectorAffix."a/rtailBase" = "doubleStorey"
selectorAffix."a/turnABase" = "doubleStorey" selectorAffix."a/turnABase" = "doubleStorey"
selectorAffix."a/single" = "singleStorey"
selectorAffix.scripta = "singleStorey" selectorAffix.scripta = "singleStorey"
[prime.a.variants-buildup.stages.storey.single-storey] [prime.a.variants-buildup.stages.storey.single-storey]
@ -1435,6 +1436,7 @@ selectorAffix.a = "singleStorey"
selectorAffix."a/sansSerif" = "singleStorey" selectorAffix."a/sansSerif" = "singleStorey"
selectorAffix."a/rtailBase" = "singleStorey" selectorAffix."a/rtailBase" = "singleStorey"
selectorAffix."a/turnABase" = "doubleStorey" selectorAffix."a/turnABase" = "doubleStorey"
selectorAffix."a/single" = "singleStorey"
selectorAffix.scripta = "singleStorey" selectorAffix.scripta = "singleStorey"
[prime.a.variants-buildup.stages.ear."*"] [prime.a.variants-buildup.stages.ear."*"]
@ -1447,6 +1449,7 @@ selectorAffix.a = ""
selectorAffix."a/sansSerif" = "" selectorAffix."a/sansSerif" = ""
selectorAffix."a/rtailBase" = "" selectorAffix."a/rtailBase" = ""
selectorAffix."a/turnABase" = "" selectorAffix."a/turnABase" = ""
selectorAffix."a/single" = ""
selectorAffix.scripta = "" selectorAffix.scripta = ""
[prime.a.variants-buildup.stages.ear.earless-corner] [prime.a.variants-buildup.stages.ear.earless-corner]
@ -1456,6 +1459,7 @@ selectorAffix.a = "earlessCorner"
selectorAffix."a/sansSerif" = "earlessCorner" selectorAffix."a/sansSerif" = "earlessCorner"
selectorAffix."a/rtailBase" = "earlessCorner" selectorAffix."a/rtailBase" = "earlessCorner"
selectorAffix."a/turnABase" = "" selectorAffix."a/turnABase" = ""
selectorAffix."a/single" = "earlessCorner"
selectorAffix.scripta = "" selectorAffix.scripta = ""
[prime.a.variants-buildup.stages.ear.earless-rounded] [prime.a.variants-buildup.stages.ear.earless-rounded]
@ -1465,6 +1469,7 @@ selectorAffix.a = "earlessRounded"
selectorAffix."a/sansSerif" = "earlessRounded" selectorAffix."a/sansSerif" = "earlessRounded"
selectorAffix."a/rtailBase" = "earlessRounded" selectorAffix."a/rtailBase" = "earlessRounded"
selectorAffix."a/turnABase" = "" selectorAffix."a/turnABase" = ""
selectorAffix."a/single" = "earlessRounded"
selectorAffix.scripta = "" selectorAffix.scripta = ""
[prime.a.variants-buildup.stages.terminal.serifless] [prime.a.variants-buildup.stages.terminal.serifless]
@ -1475,6 +1480,7 @@ selectorAffix.a = "serifless"
selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/sansSerif" = "serifless"
selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "serifless" selectorAffix."a/turnABase" = "serifless"
selectorAffix."a/single" = "serifless"
selectorAffix.scripta = "serifless" selectorAffix.scripta = "serifless"
[prime.a.variants-buildup.stages.terminal.tailed] [prime.a.variants-buildup.stages.terminal.tailed]
@ -1484,6 +1490,7 @@ selectorAffix.a = "tailed"
selectorAffix."a/sansSerif" = "tailed" selectorAffix."a/sansSerif" = "tailed"
selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "tailed" selectorAffix."a/turnABase" = "tailed"
selectorAffix."a/single" = "tailed"
selectorAffix.scripta = "tailed" selectorAffix.scripta = "tailed"
[prime.a.variants-buildup.stages.terminal.toothless-corner] [prime.a.variants-buildup.stages.terminal.toothless-corner]
@ -1494,6 +1501,7 @@ selectorAffix.a = "toothlessCorner"
selectorAffix."a/sansSerif" = "toothlessCorner" selectorAffix."a/sansSerif" = "toothlessCorner"
selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "toothlessCorner" selectorAffix."a/turnABase" = "toothlessCorner"
selectorAffix."a/single" = "serifless"
selectorAffix.scripta = "serifless" selectorAffix.scripta = "serifless"
[prime.a.variants-buildup.stages.terminal.toothless-rounded] [prime.a.variants-buildup.stages.terminal.toothless-rounded]
@ -1504,6 +1512,7 @@ selectorAffix.a = "toothlessRounded"
selectorAffix."a/sansSerif" = "toothlessRounded" selectorAffix."a/sansSerif" = "toothlessRounded"
selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "toothlessRounded" selectorAffix."a/turnABase" = "toothlessRounded"
selectorAffix."a/single" = "serifless"
selectorAffix.scripta = "serifless" selectorAffix.scripta = "serifless"
[prime.a.variants-buildup.stages.terminal.serifed] [prime.a.variants-buildup.stages.terminal.serifed]
@ -1513,6 +1522,7 @@ selectorAffix.a = "serifed"
selectorAffix."a/sansSerif" = "serifless" selectorAffix."a/sansSerif" = "serifless"
selectorAffix."a/rtailBase" = "serifless" selectorAffix."a/rtailBase" = "serifless"
selectorAffix."a/turnABase" = "serifed" selectorAffix."a/turnABase" = "serifed"
selectorAffix."a/single" = "serifed"
selectorAffix.scripta = "serifed" selectorAffix.scripta = "serifed"