diff --git a/glyphs/autobuilds.patel b/glyphs/autobuilds.patel index a7c2469..7a8efaf 100644 --- a/glyphs/autobuilds.patel +++ b/glyphs/autobuilds.patel @@ -351,10 +351,13 @@ createSMCPs : list list 0x1D0D 'M' list 0x1D0E 'cyrI' list 0x1D0F 'O' + list 0x1D10 'turnC' + list 0x1D15 'OU' list 0x1D18 'P' list 0x1D19 'cyrYa' list 0x1D1A 'R' [FlipAround MIDDLE (XH / 2)] list 0x1D1B 'T' + list 0x1D1C 'U' list 0x1D20 'V' list 0x1D21 'W' list 0x1D22 'Z' @@ -363,7 +366,6 @@ createSMCPs : list list 0x1D27 'Lambda' list 0x1D28 'Pi' list 0x1D29 'Rho' - list 0x1D2A 'Psi' list 0x1D2B 'cyrEl' progress 'Small Caps' @@ -413,6 +415,8 @@ createSuperscripts : list list 0x1D51 'eng' list 0x1D52 'o' list 0x1D53 'turnc' + list 0x1D54 'oupperhalf' + list 0x1D55 'olowerhalf' list 0x1D56 'p' list 0x1D57 't' list 0x1D58 'u' @@ -449,6 +453,7 @@ createSuperscripts : list list 0x1DB2 'varphi' list 0x1DB3 'srtail' list 0x1DB4 'esh' + list 0x1DB5 'tltail' list 0x1DB6 'ulongBarOver' list 0x1DB7 'latinupsilon1' list 0x1DB8 'smcpU' @@ -462,6 +467,7 @@ createSuperscripts : list list 0x1D2C 'A' list 0x1D2D 'AE' list 0x1D2E 'B' + list 0x1D2F 'Bbar' list 0x1D30 'D' list 0x1D31 'E' list 0x1D32 'turnE' diff --git a/glyphs/common-shapes.patel b/glyphs/common-shapes.patel index f20be8d..093ba39 100644 --- a/glyphs/common-shapes.patel +++ b/glyphs/common-shapes.patel @@ -383,7 +383,7 @@ define [HBar xleft xright y _fine] : glyph-construction define [HBarTop xl xr y _fine] : HBar xl xr (y - [fallback _fine STROKE] * 0.5) _fine define [HBarBottom xl xr y _fine] : HBar xl xr (y + [fallback _fine STROKE] * 0.5) _fine -define [HOverlayBar xleft xright y] : HBar xleft xright y OVERLAYSTROKE +define [HOverlayBar xleft xright y s] : HBar xleft xright y [fallback s OVERLAYSTROKE] define [VBar x ydown yup _fine] : glyph-construction local fine : fallback _fine STROKE include : dispiro diff --git a/glyphs/letters-unified-basic.patel b/glyphs/letters-unified-basic.patel index 3a127dc..18149e9 100644 --- a/glyphs/letters-unified-basic.patel +++ b/glyphs/letters-unified-basic.patel @@ -131,14 +131,13 @@ symbol-block 'J' local slope (STROKE * 0.00092) local expand 0.35 local coexpand ((1 - expand) / 2) - local smooth : HOOK + 0.75 * STROKE local hookx (0.5 * SB + OXHOOK) include : dispiro widths.rhs flat (RIGHTSB - JBALANCE2) CAP [heading DOWNWARD] - curl (RIGHTSB - JBALANCE2) smooth + curl (RIGHTSB - JBALANCE2) SMOOTH hookend O g4 hookx HOOK @@ -176,11 +175,10 @@ symbol-block 'j' local center : MIDDLE + JBALANCE + HALFSTROKE * CORRECTION_HX local hookx : center - (WIDTH * 0.5) - STROKE * CORRECTION_HX + OXHOOK local turn : [mix center hookx 0.5] + CORRECTION_OMIDS - local smb : (center - turn) * 1.2 include : dispiro widths.rhs flat center XH [heading DOWNWARD] - curl center (DESCENDER + smb) + curl center (DESCENDER + SMOOTH) hookend (DESCENDER + O) g4 hookx (DESCENDER + JHOOK) @@ -992,7 +990,7 @@ symbol-block 'B' assign-unicode 0x243 include glyphs.B AS_BASE - include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix 0 CAP 0.3] + include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix 0 CAP 0.3] [Math.min (CAP / 8) OVERLAYSTROKE] create-glyph 'beta' : glyph-construction assign-unicode 0x3B2 @@ -1066,9 +1064,11 @@ symbol-block 'b' assign-unicode 0x185 include glyphs.b AS_BASE eject-contour 'serifLT' - start-from SB CAP + start-from (SB - O) CAP + line-to SB CAP line-to (SB - STROKE) (CAP - STROKE) line-to SB (CAP - STROKE * 2) + line-to (SB - O) (CAP - STROKE * 2) reverse-last ### D symbol-block 'D' @@ -1683,8 +1683,8 @@ symbol-block 'O' set-width WIDTH assign-unicode 'o' include eMarks - include : OShape XH 0 SB RIGHTSB nothing nothing nothing true + alias 'omicron' 0x3BF 'o' alias 'cyro' 0x43e 'o' @@ -1725,6 +1725,31 @@ symbol-block 'O' include glyphs.O AS_BASE local radius : Math.min DOTRADIUS ((RIGHTSB - SB - STROKE * 2) / 4) include : Ring (CAPMIDDLE + radius) (CAPMIDDLE - radius) (MIDDLE + radius) (MIDDLE - radius) + + create-glyph 'oupperhalf' : glyph-construction + assign-unicode 0x1D16 + include eMarks + include : dispiro + widths.rhs + flat (SB + OX) (XH / 2) [heading UPWARD] + curl (SB + OX) (XH - SMALLSMOOTHA) + arcvh + g4 (MIDDLE - CORRECTION_OMIDS) (XH - O) + archv + flat (RIGHTSB - OX) (XH - SMALLSMOOTHB) + curl (RIGHTSB - OX) (XH / 2) [heading DOWNWARD] + create-glyph 'olowerhalf' : glyph-construction + assign-unicode 0x1D17 + include eMarks + include : dispiro + widths.lhs + flat (SB + OX) (XH / 2) [heading DOWNWARD] + curl (SB + OX) SMALLSMOOTHB + arcvh + g4 (MIDDLE + CORRECTION_OMIDS) O + archv + flat (RIGHTSB - OX) SMALLSMOOTHA + curl (RIGHTSB - OX) (XH / 2) [heading UPWARD] ### Q symbol-block 'Q' @@ -2523,13 +2548,14 @@ symbol-block 't' local turn : [mix center hookx 0.5] + CORRECTION_OMIDS local smb : (turn - center) * 1.2 - include : dispiro + local g : dispiro widths.lhs flat center top [heading DOWNWARD] curl center (bot + smb) hookend (bot + O) g4 hookx (bot + HOOK) - set-anchor 'bottomright' BASE hookx (bot + HOOK) + include g + set-anchor 'bottomright' BASE g.knots.(g.knots.length - 1).x g.knots.(g.knots.length - 1).y include : HBarTop (center + HALFSTROKE - LONGJUT + TBALANCE2) (center + HALFSTROKE + LONGJUT + TBALANCE2) XH diff --git a/glyphs/letters-unified-extended.patel b/glyphs/letters-unified-extended.patel index a44db5c..03de471 100644 --- a/glyphs/letters-unified-extended.patel +++ b/glyphs/letters-unified-extended.patel @@ -75,6 +75,7 @@ symbol-block 'Gamma' create-glyph 'cyrghayn.italic' : glyph-construction include glyphs.'cyrghe.italic' AS_BASE include : FlatSlashShape MIDDLE (XH / 2) (OVERLAYSTROKE / 2) (-0.2) 0.75 + alias 'voicedlaryngenalspirant' 0x1D24 'cyrghayn.italic' italic-variant 'cyrghayn' 0x493 @@ -512,6 +513,28 @@ symbol-block 'Psi' include : tagged 'serifRT' : RightwardTopSerif RIGHTSB y2 SIDEJUT include : tagged 'serifMT' : CenterTopSerif MIDDLE CAP JUT include : tagged 'serifMB' : CenterBottomSerif MIDDLE 0 JUT + + create-glyph 'smcpPsi' : glyph-construction + assign-unicode 0x1D2A + include eMarks + local y : XH * 0.3 + local y2 XH + include : dispiro + widths.lhs MVERTSTROKE + flat SB y2 [heading DOWNWARD] + curl SB (y + SMOOTHB) + arcvh + g4 MIDDLE y [heading RIGHTWARD] + archv + flat RIGHTSB (y + SMOOTHA) + curl RIGHTSB y2 [heading UPWARD] + include : VBar MIDDLE y XH MVERTSTROKE + include : VBar MIDDLE 0 (y + HALFSTROKE) + if SLAB : begin + include : tagged 'serifLT' : LeftwardTopSerif SB y2 SIDEJUT + include : tagged 'serifRT' : RightwardTopSerif RIGHTSB y2 SIDEJUT + include : tagged 'serifMB' : CenterBottomSerif MIDDLE 0 JUT + create-glyph 'psi' : glyph-construction assign-unicode 0x3C8 include ifMarks @@ -708,9 +731,11 @@ define {CyrYeriShape RevCyrYeriShape} : symbol-block 'CyrYeri-related' assign-unicode 0x184 include glyphs.cyrYeri AS_BASE eject-contour 'serifYeriLT' - start-from SB CAP + start-from (SB - O) CAP + line-to SB CAP line-to (SB - STROKE) (CAP - STROKE) line-to SB (CAP - STROKE * 2) + line-to (SB - O) (CAP - STROKE * 2) reverse-last create-glyph 'latinDe' : glyph-construction @@ -1303,6 +1328,7 @@ symbol-block 'Digraphs' include eMarks include aeepart include oeopart + turned nothing 0x1D14 'oe' MIDDLE (XH / 2) create-glyph 'db' : glyph-construction set-width WIDTH diff --git a/support/spirokit.patel b/support/spirokit.patel index 65bc3f6..9c19a9d 100644 --- a/support/spirokit.patel +++ b/support/spirokit.patel @@ -161,7 +161,9 @@ export : define [SetupBuilders args] : begin local g : new Glyph lhs.0.type = rhs.0.type = lhs.(lhs.length - 1).type = rhs.(rhs.length - 1).type = 'corner' libspiro.spiroToBezierOnContext [lhs.concat : rhs.reverse] true g - + set g.knots knots + set g.lhsknots lhs + set g.rhsknots rhs return g define [spiro-outline] : let [k : {}.slice.call arguments 0] : lambda [] : begin local {.knots knots .closed closed .lastafs lastafs} : prepareSpiroKnots k this