diff --git a/glyphs/common-shapes.ptl b/glyphs/common-shapes.ptl index 05e89c745..e4ac8a6d2 100644 --- a/glyphs/common-shapes.ptl +++ b/glyphs/common-shapes.ptl @@ -142,7 +142,7 @@ export : define [apply] : begin begin [lambda : set this.gizmo currentGlyph.gizmo] corner l d corner l u - corner u u + corner r u corner r d close [lambda : begin [set this.angles 4] [set this.fairGizmo currentGlyph.gizmo]] if transformShiftOnly : begin @@ -444,16 +444,16 @@ export : define [apply] : begin include : spiro-outline corner (right - width * HVCONTRAST) bottom curl (right - width * HVCONTRAST) (top - sm + fix) - arcvh 8 'no-tiny' + arcvh 8 g2 [mix left (right - width * HVCONTRAST) 0.5] (top - O - width) - archv 8 'no-tiny' + archv 8 flat left (top - sm - fix) corner left (top - sm - fix - 1) corner (left - fine) (top - sm - 1) curl (left - fine) (top - sm) - arcvh 8 'no-tiny' + arcvh 8 g2 [mix (left - fine * HVCONTRAST) right 0.5] (top - O) - archv 8 'no-tiny' + archv 8 flat right (top - sm) corner right bottom close diff --git a/glyphs/letters-unified-basic.ptl b/glyphs/letters-unified-basic.ptl index 9e111f6a1..2d854003c 100644 --- a/glyphs/letters-unified-basic.ptl +++ b/glyphs/letters-unified-basic.ptl @@ -1357,6 +1357,52 @@ export : define [apply] : begin include : RightwardTopSerif topSerifX top (SIDEJUT + HALFSTROKE * 0.5 * HVCONTRAST) include : RightwardBottomSerif bottomSerifX 0 SIDEJUT + + define [KCurlyShape top straightBar] : glyph-construction + define kshLeft : SB + [KBalance straightBar] + define kshRight : RIGHTSB + [KBalanceRight straightBar] + 0.2 * STROKE + + define Ok 0 + define arcFine SHOULDERFINE + define arcStroke : adviceBlackness2 2 3 top + define arcTerminalFine : adviceBlackness2 3 4 top + define st : shoulderMidSlope arcFine arcStroke 1 + + define arcMaxPropX : 0.8 + 2 * (arcStroke / WIDTH) + define startPropY : 0.46 + 0.1 * (arcStroke / WIDTH) + define arcTopPropX : 0.56 + 0.2 * (arcStroke / WIDTH) + define arcMaxXPropY : 0.6 - 1 * (arcStroke / WIDTH) + define arcEndPropX : 0.15 - 0.5 * (arcStroke / WIDTH) + define arcEndPropY : 0.45 + 0.2 * (arcStroke / WIDTH) + + define arcStartX : kshLeft + HVCONTRAST * (STROKE - arcFine) + define arcMaxX : kshRight * 0.9 - Ok + define arcTopY : top - O + + define arcTerminalX : mix arcStartX kshRight arcEndPropX + define arcTerminalY : mix 0 top arcEndPropY + define barEndX : kshRight - Ok + + include : difference + dispiro + g2.up.start arcStartX (top * startPropY) [widths.heading 0 arcFine UPWARD] + arcvh + g2.right.mid [mix arcStartX arcMaxX arcTopPropX] arcTopY [widths.heading 0 arcStroke {.y (+1) .x (+st)}] + archv + g2.down.mid arcMaxX [mix arcTerminalY top arcMaxXPropY] [heading DOWNWARD] + quadcontrols 0 0.7 + g2 arcTerminalX arcTerminalY [widths arcTerminalFine 0] + spiro-outline + corner 0 0 + corner 0 arcTerminalY + corner arcTerminalX arcTerminalY + corner barEndX 0 + + include : intersection + Rect [mix 0 top arcEndPropY] 0 0 UPM + dispiro + flat arcTerminalX arcTerminalY [widths.lhs] + curl barEndX 0 [widths.rhs] sketch # K set-width WIDTH @@ -1384,7 +1430,18 @@ export : define [apply] : begin include : CenterBottomSerif (SB + [KBalance para.straightBar] + HALFSTROKE * HVCONTRAST) 0 JUT tag-contour 'serifLB' - save 'k' 'k' + save 'k.upright' + + sketch # k + set-width WIDTH + include markset.b + include : VBarLeft (SB + [KBalance para.straightBar]) 0 CAP + include : KCurlyShape XH para.straightBar + if SLAB : begin + include : LeftwardTopSerif (SB + [KBalance para.straightBar]) CAP SIDEJUT + save 'k.italic' + + select-variant 'k' 'k' sketch # kappa set-width WIDTH @@ -1425,6 +1482,7 @@ export : define [apply] : begin include : VerticalHook (SB + [KBalance para.straightBar] + HALFSTROKE * HVCONTRAST) (CAP - HOOK - HALFSTROKE) HOOKX (-HOOK) save 'khooktop' 0x199 + turned nothing 0xA7B0 'K' MIDDLE (CAP / 2) turned nothing 0x29E 'k' MIDDLE (XH / 2) markset.p diff --git a/support/regulate-glyph.js b/support/regulate-glyph.js index bd9c794c9..4959c8b13 100644 --- a/support/regulate-glyph.js +++ b/support/regulate-glyph.js @@ -43,8 +43,8 @@ function regulateGlyph(g, skew) { } // De-overlap - g.contours = [...cSimple, ...caryllShapeOps.removeOverlap(cFill, 1, 2048, true)]; - // g.contours = [...cSimple, ...cFill]; + // g.contours = [...cSimple, ...caryllShapeOps.removeOverlap(cFill, 1, 2048, true)]; + g.contours = [...cSimple, ...cFill]; // Finalize g.contours = c2q.contours(g.contours); diff --git a/support/spirokit.ptl b/support/spirokit.ptl index 5097b9edc..4a1e56599 100644 --- a/support/spirokit.ptl +++ b/support/spirokit.ptl @@ -112,8 +112,8 @@ export : define [SetupBuilders args] : begin if [not cache.(samples)] : build samples return cache.(samples).vh list hv vh - define [archv samples notiny k raf] : alsothruthem [jhv [fallback samples DEFAULT_STEPS]] raf - define [arcvh samples notiny k raf] : alsothruthem [jvh [fallback samples DEFAULT_STEPS]] raf + define [archv samples raf] : alsothruthem [jhv [fallback samples DEFAULT_STEPS]] raf + define [arcvh samples raf] : alsothruthem [jvh [fallback samples DEFAULT_STEPS]] raf define [complexThru] : begin local a : {}.slice.call arguments diff --git a/variants.toml b/variants.toml index 71f281e03..ef990ffd7 100644 --- a/variants.toml +++ b/variants.toml @@ -259,7 +259,15 @@ permille = "rings" basepoint = "rings" tag = "cv63" -# "Untagged" variants, used for Aile, etc. +[simple.v-seven-normal] +tag = "cv64" +seven = "normal" + +[simple.v-seven-force-serifed] +tag = "cv65" +seven = "force-serifed" + +########## "Untagged" variants, used for Aile, etc. [simple.v-i-tailed] dotlessi = 'tailed' @@ -285,20 +293,18 @@ f = 'narrow' [simple.v-t-narrow] t = 'narrow' +[simple.v-k-upright] +k = 'upright' + +[simple.v-k-italic] +k = 'italic' + [simple.v-j-narrow] dotlessj = "narrow" [simple.v-j-narrow-serifed] dotlessj = "narrow-serifed" -[simple.v-seven-normal] -tag = "cv64" -seven = "normal" - -[simple.v-seven-force-serifed] -tag = "cv65" -seven = "force-serifed" - [simple.v-r-standard] r = "standard" @@ -343,7 +349,8 @@ upright = [ 'v-l-serifed', 'v-g-doublestorey', 'v-y-straight', - 'v-f-straight' + 'v-f-straight', + 'v-k-upright' ] italic = [ 'v-a-singlestorey', @@ -352,7 +359,8 @@ italic = [ 'v-l-italic', 'v-g-singlestorey', 'v-y-curly', - 'v-f-tailed' + 'v-f-tailed', + 'v-k-italic' ] [composite.slab]