From fd8317d0dd58191c525fde23a3372a421736de7d Mon Sep 17 00:00:00 2001 From: be5invis Date: Thu, 30 Mar 2023 20:40:35 -0700 Subject: [PATCH] Fixups --- font-src/glyphs/letter/cyrillic/e.ptl | 32 ++-- .../glyphs/letter/cyrillic/iotified-a.ptl | 16 +- font-src/glyphs/letter/cyrillic/yu.ptl | 6 +- .../glyphs/letter/latin-ext/lower-ae-oe.ptl | 10 +- .../glyphs/letter/latin-ext/sakha-yat.ptl | 2 +- font-src/glyphs/letter/latin/c.ptl | 145 ++++++++++-------- font-src/glyphs/letter/latin/lower-a.ptl | 8 +- font-src/glyphs/letter/latin/upper-a.ptl | 6 +- font-src/glyphs/letter/shared.ptl | 7 +- params/variants.toml | 9 +- 10 files changed, 138 insertions(+), 103 deletions(-) diff --git a/font-src/glyphs/letter/cyrillic/e.ptl b/font-src/glyphs/letter/cyrillic/e.ptl index e7cb5c9d9..af5d509d3 100644 --- a/font-src/glyphs/letter/cyrillic/e.ptl +++ b/font-src/glyphs/letter/cyrillic/e.ptl @@ -7,39 +7,47 @@ glyph-module glyph-block Letter-Cyrillic-E : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives - glyph-block-import Letter-Latin-C : CLetter + glyph-block-import Letter-Latin-C : CLetterForm CConfig glyph-block-import Letter-Cyrillic-Iotified-A : Iotified - foreach { suffix { sty styBot } } [Object.entries CLetter.Config] : do + foreach { suffix { sty styBot } } [Object.entries CConfig] : do create-glyph "cyrl/E.\(suffix)" : glyph-proc include : MarkSet.capital - include : CLetter.Shape [DivFrame 1] sty styBot CAP 0 ArchDepthA ArchDepthB Hook Stroke - include : HBar.m [mix SB RightSB 0.35] RightSB (CAP / 2) + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : lf.revFull + include : HBar.m [mix SB RightSB 0.35] RightSB (CAP / 2) [AdviceStroke2 2 3 CAP] create-glyph "cyrl/e.\(suffix)" : glyph-proc include : MarkSet.e set-base-anchor 'cvDecompose' 0 0 - include : CLetter.Shape [DivFrame 1] sty styBot XH 0 SmallArchDepthA SmallArchDepthB Hook Stroke - include : HBar.m [mix SB RightSB 0.35] RightSB (XH / 2) + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + ada -- SmallArchDepthA + adb -- SmallArchDepthB + include : lf.revFull + include : HBar.m [mix SB RightSB 0.35] RightSB (XH / 2) [AdviceStroke2 2 3 XH] create-glyph "cyrl/Ye.\(suffix)" : glyph-proc include : MarkSet.capital - include : CLetter.RevShape [DivFrame 1] sty styBot CAP 0 ArchDepthA ArchDepthB Hook Stroke - include : HBar.m SB [mix RightSB SB 0.35] (CAP / 2) [AdviceStroke2 2 4 CAP] + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : lf.full + include : HBar.m SB [mix RightSB SB 0.35] (CAP / 2) [AdviceStroke2 2 3 CAP] create-glyph "cyrl/ye.\(suffix)" : glyph-proc include : MarkSet.e set-base-anchor 'cvDecompose' 0 0 - include : CLetter.RevShape [DivFrame 1] sty styBot XH 0 SmallArchDepthA SmallArchDepthB Hook Stroke - include : HBar.m SB [mix RightSB SB 0.35] (XH / 2) [AdviceStroke2 2 4 XH] + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + ada -- SmallArchDepthA + adb -- SmallArchDepthB + include : lf.full + include : HBar.m SB [mix RightSB SB 0.35] (XH / 2) [AdviceStroke2 2 3 XH] define [IotifiedEShape fCapital df top ada adb] : glyph-proc local gap : 0.25 * (df.width - 2 * df.leftSB - 2.5 * df.mvs) define divSub : (df.width - gap - df.mvs) / Width define dfSub : DivFrame divSub 2 - include : CLetter.Shape dfSub sty styBot top 0 ada adb Hook df.mvs - include : Translate (Width * (df.div - divSub)) 0 + local lf : CLetterForm dfSub sty styBot top 0 (ada -- ada) (adb -- adb) (sw -- df.mvs) + include : WithTransform [ApparentTranslate (Width * (df.div - divSub)) 0] : lf.full local useItalicShape : [not fCapital] && para.isItalic include : Iotified.full df top diff --git a/font-src/glyphs/letter/cyrillic/iotified-a.ptl b/font-src/glyphs/letter/cyrillic/iotified-a.ptl index 66a9c4729..4bb22b4bd 100644 --- a/font-src/glyphs/letter/cyrillic/iotified-a.ptl +++ b/font-src/glyphs/letter/cyrillic/iotified-a.ptl @@ -17,12 +17,12 @@ glyph-block Letter-Cyrillic-Iotified-A : begin glyph-block-export Iotified define Iotified : namespace - export : define [Shape] : params [df top hBarRight [hBarY (top / 2)] slabTop slabBottom swSerif] : glyph-proc + export : define [Shape] : params [df top hBarRight [hBarY (top / 2)] [slabTop false] [slabBottom false] [swSerif Stroke]] : glyph-proc include : VBar.l df.leftSB 0 top df.mvs if (hBarRight > 0) include : HBar.m df.leftSB hBarRight hBarY df.mvs - local sf : SerifFrame.fromDf df top 0 swSerif + local sf : SerifFrame.fromDf df top 0 (swSerif -- swSerif) if SLAB : begin include : tagged "serifLT" : match slabTop [Just SLAB-FULL] : begin sf.lt.full @@ -34,7 +34,7 @@ glyph-block Letter-Cyrillic-Iotified-A : begin __ : glyph-proc # "Default" version - export : define [full] : params [df top hBarRight hBarY fCapital swSerif] : begin + export : define [full] : params [df top hBarRight hBarY [fCapital false] [swSerif Stroke]] : begin local useItalicShape : [not fCapital] && para.isItalic Shape df -- df @@ -46,7 +46,7 @@ glyph-block Letter-Cyrillic-Iotified-A : begin swSerif -- swSerif # Outwards only - export : define [outer] : params [df top hBarRight hBarY fCapital swSerif] : begin + export : define [outer] : params [df top hBarRight hBarY [fCapital false] [swSerif Stroke]] : begin local useItalicShape : [not fCapital] && para.isItalic Shape df -- df @@ -58,7 +58,7 @@ glyph-block Letter-Cyrillic-Iotified-A : begin swSerif -- swSerif # Iotified A-shaped glyphs - export : define [A] : params [df top hBarRight hBarY fCapital swSerif] : begin + export : define [A] : params [df top hBarRight hBarY [fCapital false] [swSerif Stroke]] : begin local useItalicShape : [not fCapital] && para.isItalic Shape df -- df @@ -101,7 +101,7 @@ glyph-block Letter-Cyrillic-Iotified-A : begin ALetterShape subDf CAP df.mvs fStraightBar slabKind include : difference - Iotified.A df CAP [mix df.leftSB df.rightSB (3 / 4)] (CAP / 2) true df.mvs + Iotified.A df CAP [mix df.leftSB df.rightSB (3 / 4)] (CAP / 2) (fCapital -- true) WithTransform [ApparentTranslate shift 0] [AMaskShape subDf CAP df.mvs fStraightBar slabKind] do "iotified a" @@ -123,7 +123,7 @@ glyph-block Letter-Cyrillic-Iotified-A : begin include : WithTransform [ApparentTranslate shift 0] [body subDf df.mvs] include : difference - Iotified.full df XH [mix df.leftSB df.rightSB (3 / 4)] (XH / 2) false + Iotified.full df XH [mix df.leftSB df.rightSB (3 / 4)] (XH / 2) WithTransform [ApparentTranslate shift 0] [DoubleStorey.GetMask body df df.mvs] do "iotified e" @@ -144,7 +144,7 @@ glyph-block Letter-Cyrillic-Iotified-A : begin local { subDf shift } : SubDfAndShift 1 df OX include : WithTransform [ApparentTranslate shift 0] [body subDf XH df.mvs] - include : Iotified.full df XH df.middle (XH / 2) false + include : Iotified.full df XH df.middle (XH / 2) select-variant 'cyrl/AIotified' 0xA656 (follow -- 'A') select-variant 'cyrl/aIotified' 0xA657 (follow -- 'a/turnABase') diff --git a/font-src/glyphs/letter/cyrillic/yu.ptl b/font-src/glyphs/letter/cyrillic/yu.ptl index bf46be77b..7eacf962e 100644 --- a/font-src/glyphs/letter/cyrillic/yu.ptl +++ b/font-src/glyphs/letter/cyrillic/yu.ptl @@ -25,7 +25,11 @@ glyph-block Letter-Cyrillic-Yu : begin local slabTop : if (slabType === SLAB-BULGARIAN || useItalicShape) SLAB-OUTWARD SLAB-FULL local slabBottom : if useItalicShape SLAB-NONE SLAB-FULL - include : Iotified.Shape df xtop xm (top / 2) slabTop slabBottom + include : Iotified.Shape df xtop + hBarRight -- xm + yBarY -- (top / 2) + slabTop -- slabTop + slabBottom -- slabBottom create-glyph 'cyrl/Yu' 0x42E : glyph-proc local df : DivFrame para.diversityM 3 diff --git a/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl b/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl index c5fe8aa52..d6b0270f2 100644 --- a/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl +++ b/font-src/glyphs/letter/latin-ext/lower-ae-oe.ptl @@ -142,17 +142,21 @@ glyph-block Letter-Latin-Lower-AE-OE : begin include : ueUPart df fSlab do "open o subglyphs" - glyph-block-import Letter-Latin-C : CLetter + glyph-block-import Letter-Latin-C : CLetterForm CConfig define [openOShape df sty styBot] : new-glyph : glyph-proc local { subDf } : SubDfAndShift 0 df OX local ada : subDf.archDepthA SmallArchDepth df.mvs local adb : subDf.archDepthB SmallArchDepth df.mvs - include : CLetter.Shape subDf sty styBot XH 0 ada adb Hook df.mvs + local lf : CLetterForm subDf sty styBot XH 0 + ada -- [subDf.archDepthA SmallArchDepth df.mvs] + adb -- [subDf.archDepthB SmallArchDepth df.mvs] + sw -- df.mvs + include : lf.full include : FlipAround (subDf.width / 2) (XH / 2) - foreach { suffix { sty styBot } } [Object.entries CLetter.Config] : do + foreach { suffix { sty styBot } } [Object.entries CConfig] : do create-glyph "oeOpenO/left.\(suffix)" : glyph-proc local df : DivFrame para.diversityM 3 set-width df.width diff --git a/font-src/glyphs/letter/latin-ext/sakha-yat.ptl b/font-src/glyphs/letter/latin-ext/sakha-yat.ptl index 20951367c..c5b13d4e0 100644 --- a/font-src/glyphs/letter/latin-ext/sakha-yat.ptl +++ b/font-src/glyphs/letter/latin-ext/sakha-yat.ptl @@ -20,7 +20,7 @@ glyph-block Letter-Latin-Sakha-Yat : begin jut -- jut set-width df.width - include : Iotified.outer df top (df.middle + df.mvs / 2 * HVContrast) (top - df.mvs * 0.5) false + include : Iotified.outer df top (df.middle + df.mvs / 2 * HVContrast) (top - df.mvs * 0.5) define YerConfig : object corner { CyrlYeriUprightShape } diff --git a/font-src/glyphs/letter/latin/c.ptl b/font-src/glyphs/letter/latin/c.ptl index 8ab673476..871b5f734 100644 --- a/font-src/glyphs/letter/latin/c.ptl +++ b/font-src/glyphs/letter/latin/c.ptl @@ -19,6 +19,7 @@ glyph-block Letter-Latin-C : begin glyph-block-import Letter-Shared-Shapes : ArcEndInwardSerifL ArcEndInwardSerifR glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart_RtlLhs glyph-block-import Letter-Shared-Shapes : LetterBarOverlay PalatalHook RetroflexHook + glyph-block-import Letter-Shared-Shapes : ArcStartSerifWidth ArcStartSerifDepth glyph-block-import Letter-Blackboard : BBS BBD define SLAB-NONE 0 @@ -114,28 +115,36 @@ glyph-block Letter-Latin-C : begin arcvh CurlyTail fine rinner m1 0 RightSB x2 y2 - glyph-block-export CLetter - define CLetter : namespace - export : define [Shape df sty styBot top bot ada adb hook sw ob] : glyph-proc - include : CShapeT dispiro 0 df sty styBot top bot ada adb hook sw ob - include : AutoStartSerifR df sty top hook sw - include : AutoStartSerifRB df styBot bot hook sw + glyph-block-export CLetterForm + define [CLetterForm] : params [df sty styBot top bot [ada ArchDepthA] [adb ArchDepthB] [hook Hook] [sw Stroke] [ob nothing]] : namespace + export : define [base] : CShapeT dispiro 0 df sty styBot top bot ada adb hook sw ob + export : define [topSerif] : AutoStartSerifR df sty top hook sw + export : define [botSerif] : AutoStartSerifRB df styBot bot hook sw - export : define [RevShape df sty styBot top bot ada adb hook sw ob] : glyph-proc - include : RevCShapeT dispiro 0 df sty styBot top bot ada adb hook sw ob - include : AutoStartSerifR df sty top hook sw - include : AutoStartSerifRB df styBot bot hook sw + export : define [revBase] : RevCShapeT dispiro 0 df sty styBot top bot ada adb hook sw ob + export : define [revTopSerif] : AutoStartSerifL df sty top hook sw + export : define [revBotSerif] : AutoStartSerifLB df styBot bot hook sw - export : define Config : object - serifless { SLAB-NONE SLAB-NONE } - bottomSerifed { SLAB-NONE SLAB-CLASSICAL } - unilateralSerifed { SLAB-CLASSICAL SLAB-NONE } - bilateralSerifed { SLAB-CLASSICAL SLAB-CLASSICAL } - unilateralInwardSerifed { SLAB-INWARD SLAB-NONE } - bilateralInwardSerifed { SLAB-INWARD SLAB-INWARD } - hybridSerifed1 { SLAB-INWARD SLAB-CLASSICAL } + export : define [hookTop] : ArcStartHookTop df.rightSB top sw (HookX * hook / Hook) hook - foreach { suffix { sty styBot } } [Object.entries CLetter.Config] : do + # Used by Cyrillic Koppa + export : define [baseTopOnly] : CShapeT dispiro 0 df sty SLAB-NONE top bot ada adb hook sw ob + export : define [descBase] : CShapeT dispiro 0 df sty (styBot || SLAB-CLASSICAL) top bot ada adb hook sw ob + + export : define [full] : composite-proc [base] [topSerif] [botSerif] + export : define [revFull] : composite-proc [revBase] [revTopSerif] [revBotSerif] + + glyph-block-export CConfig + define CConfig : object + serifless { SLAB-NONE SLAB-NONE } + bottomSerifed { SLAB-NONE SLAB-CLASSICAL } + unilateralSerifed { SLAB-CLASSICAL SLAB-NONE } + bilateralSerifed { SLAB-CLASSICAL SLAB-CLASSICAL } + unilateralInwardSerifed { SLAB-INWARD SLAB-NONE } + bilateralInwardSerifed { SLAB-INWARD SLAB-INWARD } + hybridSerifed1 { SLAB-INWARD SLAB-CLASSICAL } + + foreach { suffix { sty styBot } } [Object.entries CConfig] : do define [cShape df top bot ada adb hook sw ob] CShapeT dispiro 0 df sty styBot top bot ada adb hook sw ob define [cShapeTopOnly df top bot ada adb hook sw ob] @@ -145,57 +154,55 @@ glyph-block Letter-Latin-C : begin create-glyph "C.\(suffix)" : glyph-proc include : MarkSet.capital - include : cShape [DivFrame 1] CAP 0 ArchDepthA ArchDepthB Hook Stroke - include : AutoStartSerifR [DivFrame 1] sty CAP - include : AutoStartSerifRB [DivFrame 1] styBot 0 + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : lf.full create-glyph "smcpC.\(suffix)" : glyph-proc include : MarkSet.e - include : cShape [DivFrame 1] XH 0 ArchDepthA ArchDepthB Hook Stroke - include : AutoStartSerifR [DivFrame 1] sty XH - include : AutoStartSerifRB [DivFrame 1] styBot 0 + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + include : lf.full create-glyph "revC.\(suffix)" : glyph-proc include : MarkSet.capital - include : revCShape [DivFrame 1] CAP 0 ArchDepthA ArchDepthB Hook Stroke - include : AutoStartSerifL [DivFrame 1] sty CAP - include : AutoStartSerifLB [DivFrame 1] styBot 0 + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : lf.revFull create-glyph "CHookTop.\(suffix)" : glyph-proc include : MarkSet.capital - include : cShape [DivFrame 1] CAP 0 ArchDepthA ArchDepthB Hook Stroke - include : ArcStartHookTop RightSB CAP Stroke HookX Hook - include : AutoStartSerifRB [DivFrame 1] styBot 0 + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : union [lf.base] [lf.hookTop] [lf.botSerif] create-glyph "c.\(suffix)" : glyph-proc include : MarkSet.e set-base-anchor 'cvDecompose' 0 0 - include : cShape [DivFrame 1] XH 0 SmallArchDepthA SmallArchDepthB Hook Stroke - include : AutoStartSerifR [DivFrame 1] sty XH - include : AutoStartSerifRB [DivFrame 1] styBot 0 + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + ada -- SmallArchDepthA + adb -- SmallArchDepthB + include : lf.full create-glyph "revSmallC.\(suffix)" : glyph-proc include : MarkSet.e - include : revCShape [DivFrame 1] XH 0 SmallArchDepthA SmallArchDepthB Hook Stroke - include : AutoStartSerifL [DivFrame 1] sty XH - include : AutoStartSerifLB [DivFrame 1] styBot 0 + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + ada -- SmallArchDepthA + adb -- SmallArchDepthB + include : lf.revFull create-glyph "revSmallCSideways.\(suffix)" : glyph-proc local df : DivFrame (XH / Width) 2 (XH * 0.1 / SB) local top : Width - SB local p : mix 1 (Width / UPM) 0.5 include : PointingTo Width XH Width 0 : function [] : glyph-proc - include : cShape df top 0 ArchDepthA ArchDepthB (Hook * p) Stroke - include : AutoStartSerifR df sty top (Hook * p) - include : AutoStartSerifRB df styBot 0 (Hook * p) + local lf : CLetterForm df sty styBot top 0 (hook -- Hook * p) + include : lf.revFull include : FlipAround df.middle (top / 2) include : Translate 0 (SB / 2) create-glyph "cHookTop.\(suffix)" : glyph-proc include : MarkSet.e - include : cShape [DivFrame 1] XH 0 SmallArchDepthA SmallArchDepthB Hook Stroke - include : ArcStartHookTop RightSB XH Stroke HookX Hook - include : AutoStartSerifRB [DivFrame 1] styBot 0 + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + ada -- SmallArchDepthA + adb -- SmallArchDepthB + include : union [lf.base] [lf.hookTop] [lf.botSerif] create-glyph "cCurlyTail.\(suffix)" : glyph-proc include : MarkSet.e @@ -204,16 +211,8 @@ glyph-block Letter-Latin-C : begin create-glyph "stretchedC.\(suffix)" : glyph-proc include : MarkSet.p - include : cShape [DivFrame 1] XH Descender ArchDepthA ArchDepthB Hook Stroke - include : AutoStartSerifR [DivFrame 1] sty XH - include : AutoStartSerifRB [DivFrame 1] styBot Descender - - create-glyph "romanSixLateForm.\(suffix)" : glyph-proc - include : MarkSet.capDesc - include : revCShape [DivFrame 1] CAP 0 ArchDepthA ArchDepthB Hook Stroke - include : AutoStartSerifLB [DivFrame 1] styBot 0 - include : FlipAround Middle (CAP / 2) - include : VBar.r RightSB Descender (Hook - O * 2) + local lf : CLetterForm [DivFrame 1] sty styBot XH Descender + include : lf.full define [KoppaShapeT styTop styBot top base] : union VBar.r (Middle + Stroke * HVContrast) Descender (Stroke / 2) @@ -224,19 +223,39 @@ glyph-block Letter-Latin-C : begin create-glyph "cyrl/Koppa.\(suffix)" : glyph-proc include : MarkSet.capDesc - include : KoppaShapeT sty styBot CAP : union - cShapeTopOnly [DivFrame 1] CAP 0 ArchDepthA ArchDepthB Hook Stroke - AutoStartSerifR [DivFrame 1] sty CAP + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : KoppaShapeT sty styBot CAP : union [lf.baseTopOnly] [lf.topSerif] create-glyph "cyrl/koppa.\(suffix)" : glyph-proc include : MarkSet.p - include : KoppaShapeT sty styBot XH : union - cShapeTopOnly [DivFrame 1] XH 0 SmallArchDepthA SmallArchDepthB Hook Stroke - AutoStartSerifR [DivFrame 1] sty XH + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + ada -- SmallArchDepthA + adb -- SmallArchDepthB + include : KoppaShapeT sty styBot XH : union [lf.baseTopOnly] [lf.topSerif] + + create-glyph "C/descBase.\(suffix)" : glyph-proc + include : MarkSet.capDesc + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : union [lf.descBase] [lf.topSerif] + include : VBar.r RightSB 0 [ArcStartSerifDepth Hook] [ArcStartSerifWidth Stroke] + + create-glyph "c/descBase.\(suffix)" : glyph-proc + include : MarkSet.capDesc + local lf : CLetterForm [DivFrame 1] sty styBot XH 0 + ada -- SmallArchDepthA + adb -- SmallArchDepthB + include : union [lf.descBase] [lf.topSerif] + include : VBar.r RightSB 0 [ArcStartSerifDepth Hook] [ArcStartSerifWidth Stroke] + + create-glyph "romanSixLateForm.\(suffix)" : glyph-proc + include : MarkSet.capDesc + local lf : CLetterForm [DivFrame 1] sty styBot CAP 0 + include : union [lf.descBase] [lf.topSerif] + include : VBar.r RightSB Descender [ArcStartSerifDepth Hook] [ArcStartSerifWidth Stroke] + if styBot : let [sf : SerifFrame.fromDf [DivFrame 1] CAP Descender] : include sf.rb.full select-variant 'C' 'C' link-reduced-variant 'C/sansSerif' 'C' MathSansSerif - link-reduced-variant 'C/descBase' 'C' select-variant 'revC' 0x2183 (follow -- 'C') alias 'cyrl/Es' 0x421 'C' alias 'grek/lunateSigma' 0x3F9 'C' @@ -244,12 +263,10 @@ glyph-block Letter-Latin-C : begin select-variant 'CTopSerifOnly' (shapeFrom -- 'C') select-variant 'CHookTop' 0x187 - select-variant 'romanSixLateForm' 0x2185 select-variant 'smcpC' 0x1D04 (follow -- 'C') select-variant 'c' 'c' link-reduced-variant 'c/sansSerif' 'c' MathSansSerif - link-reduced-variant 'c/descBase' 'c' link-reduced-variant 'c/turnDescBase' 'c' select-variant 'revSmallC' 0x2184 (follow -- 'c') alias 'cyrl/es' 0x441 'c' @@ -265,6 +282,10 @@ glyph-block Letter-Latin-C : begin select-variant 'cyrl/Koppa' 0x480 (follow -- 'C') select-variant 'cyrl/koppa' 0x481 (follow -- 'c') + select-variant 'C/descBase' + select-variant 'c/descBase' + select-variant 'romanSixLateForm' 0x2185 (follow -- 'C/descBase') + create-glyph 'mathbb/C' 0x2102 : glyph-proc include : MarkSet.capital include : CShapeT dispiro 0 [DivFrame 1] SLAB-NONE SLAB-NONE CAP 0 ArchDepthA ArchDepthB Hook BBS diff --git a/font-src/glyphs/letter/latin/lower-a.ptl b/font-src/glyphs/letter/latin/lower-a.ptl index 97f746c50..1e0bf95a8 100644 --- a/font-src/glyphs/letter/latin/lower-a.ptl +++ b/font-src/glyphs/letter/latin/lower-a.ptl @@ -10,7 +10,7 @@ glyph-block Letter-Latin-Lower-A : begin glyph-block-import Common-Derivatives glyph-block-import Mark-Shared-Metrics : markHalfStroke glyph-block-import Letter-Shared : CreateAccentedComposition CreateOgonekComposition - glyph-block-import Letter-Shared-Shapes : OBarLeft OBarRight + glyph-block-import Letter-Shared-Shapes : SerifFrame OBarLeft OBarRight glyph-block-import Letter-Shared-Shapes : RightwardTailedBar InvRightwardTailedBar glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend RetroflexHook @@ -81,7 +81,7 @@ glyph-block Letter-Latin-Lower-A : begin Arc df 0 nothing nothing sw export : define [Serifed df sw] : union Serifless df sw - HSerif.rb df.rightSB 0 SideJut sw + begin [SerifFrame.fromDf df XH 0].rb.outer export : define [Tailed df sw] : union HookAndBar df (XH - [ADoubleStoreySmoothB df] + O) sw Arc df 0 nothing nothing sw @@ -152,7 +152,7 @@ glyph-block Letter-Latin-Lower-A : begin mask height export : define [SerifedBar height mask] : glyph-proc include : SeriflessBar height mask - include : tagged 'serifRB' : HSerif.rb RightSB 0 SideJut + include [SerifFrame.fromDf [DivFrame 1] XH 0].rb.outer export : define [TailedBar height mask] : glyph-proc set-base-anchor 'trailing' (RightSB + SideJut) 0 include : difference @@ -162,7 +162,7 @@ glyph-block Letter-Latin-Lower-A : begin set SeriflessBar.inv SeriflessBar set SerifedBar.inv : function [height mask] : glyph-proc include : SeriflessBar height mask - include : tagged 'serifRT' : HSerif.rt RightSB height SideJut + include [SerifFrame.fromDf [DivFrame 1] height 0].rt.outer set TailedBar.inv : function [height mask] : glyph-proc set-base-anchor 'trailing' (RightSB + SideJut) 0 include : difference diff --git a/font-src/glyphs/letter/latin/upper-a.ptl b/font-src/glyphs/letter/latin/upper-a.ptl index 31cc9c5ff..d434cb445 100644 --- a/font-src/glyphs/letter/latin/upper-a.ptl +++ b/font-src/glyphs/letter/latin/upper-a.ptl @@ -38,13 +38,13 @@ glyph-block Letter-Latin-Upper-A : begin curlyTriSerifed { false [bitOr SLAB-TOP SLAB-LEFT SLAB-RIGHT] } define [ASerifs df top sw slabKind] : glyph-proc : begin - local sf : SerifFrame.fromDf df top 0 sw + local sf : SerifFrame.fromDf df top 0 if [maskBits slabKind SLAB-LEFT] : include sf.lb.full if [maskBits slabKind SLAB-RIGHT] : include sf.rb.full if [maskBits slabKind SLAB-TOP] : include : intersection [MaskLeft df.middle] if [maskBits slabKind : bitOr SLAB-LEFT SLAB-RIGHT] - : then : HSerif.lt df.middle top (MidJutSide + sw * HVContrast * 0.25) sw - : else : HSerif.lt df.middle top [mix MidJutSide LongJut 0.5] sw + : then : HSerif.lt df.middle top (MidJutSide + sw * HVContrast * 0.25) sf.swSerif + : else : HSerif.lt df.middle top [mix MidJutSide LongJut 0.5] sf.swSerif glyph-block-export ALetterShape define [ALetterShape] : params [df top sw fStraightBar slabKind] : new-glyph : glyph-proc diff --git a/font-src/glyphs/letter/shared.ptl b/font-src/glyphs/letter/shared.ptl index ba532dfee..8354a6723 100644 --- a/font-src/glyphs/letter/shared.ptl +++ b/font-src/glyphs/letter/shared.ptl @@ -469,6 +469,9 @@ glyph-block Letter-Shared-Shapes : begin glyph-block-export ArcStartSerifWidth define [ArcStartSerifWidth stroke] : Math.max (stroke * 0.875) VJutStroke + glyph-block-export ArcStartSerifDepth + define [ArcStartSerifDepth hook] : hook - O * 2 + glyph-block-export ArcStartSerifR define [ArcStartSerifR cx cy stroke hook overflow] : begin return : VBar.r cx (cy - hook + O * 2) (cy + [fallback overflow 0]) [ArcStartSerifWidth stroke] @@ -635,10 +638,10 @@ glyph-block Letter-Shared-Shapes : begin return : new CSerifFrame this.top this.bot l1 r1 this.swRef this.swSerif this.div (r - l + 1) glyph-block-export SerifFrame - define [SerifFrame] : params [top bot left right [swRef Stroke] [swSerif Stroke] [div 1] [hSplit 2]] : begin + define [SerifFrame] : params [top bot left right [swRef Stroke] [swSerif swRef] [div 1] [hSplit 2]] : begin return : new CSerifFrame top bot left right swRef swSerif div hSplit - define SerifFrame.fromDf : function [] : params [df top bot [swSerif Stroke]] : begin + define SerifFrame.fromDf : function [] : params [df top bot [swSerif df.mvs]] : begin return : SerifFrame top bot df.leftSB df.rightSB sw -- df.mvs div -- df.div diff --git a/params/variants.toml b/params/variants.toml index 75ef977c5..f4de15096 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -159,10 +159,9 @@ tag = "cv03" rank = 1 description = "Serifless `C`" selector.C = "serifless" -selector."C/descBase" = "bottomSerifed" +selector."C/descBase" = "serifless" selector."C/sansSerif" = "serifless" selector.CHookTop = "unilateralSerifed" -selector.romanSixLateForm = "unilateralSerifed" selector.CTopSerifOnly = "serifless" [prime.capital-c.variants.unilateral-serifed] @@ -172,7 +171,6 @@ selector.C = "unilateralSerifed" selector."C/descBase" = "bilateralSerifed" selector."C/sansSerif" = "serifless" selector.CHookTop = "unilateralSerifed" -selector.romanSixLateForm = "bilateralSerifed" selector.CTopSerifOnly = "unilateralSerifed" [prime.capital-c.variants.bilateral-serifed] @@ -182,7 +180,6 @@ selector.C = "bilateralSerifed" selector."C/descBase" = "bilateralSerifed" selector."C/sansSerif" = "serifless" selector.CHookTop = "bilateralSerifed" -selector.romanSixLateForm = "bilateralSerifed" selector.CTopSerifOnly = "unilateralSerifed" [prime.capital-c.variants.unilateral-inward-serifed] @@ -192,7 +189,6 @@ selector.C = "unilateralInwardSerifed" selector."C/descBase" = "hybridSerifed1" selector."C/sansSerif" = "serifless" selector.CHookTop = "unilateralInwardSerifed" -selector.romanSixLateForm = "bilateralInwardSerifed" selector.CTopSerifOnly = "unilateralInwardSerifed" [prime.capital-c.variants.bilateral-inward-serifed] @@ -202,7 +198,6 @@ selector.C = "bilateralInwardSerifed" selector."C/descBase" = "bilateralInwardSerifed" selector."C/sansSerif" = "serifless" selector.CHookTop = "bilateralInwardSerifed" -selector.romanSixLateForm = "bilateralInwardSerifed" selector.CTopSerifOnly = "unilateralInwardSerifed" @@ -1982,7 +1977,7 @@ rank = 1 description = "Serifless `c`" selector.c = "serifless" selector."c/sansSerif" = "serifless" -selector."c/descBase" = "bottomSerifed" +selector."c/descBase" = "serifless" selector."c/turnDescBase" = "unilateralSerifed" selector.cCurlyTail = "serifless" selector.cHookTop = "unilateralSerifed"