diff --git a/.gitignore b/.gitignore index e0849eddc..94b78f1c8 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ build/ ref/ pages/ releases/ +previewer/ # Generated scripts .buildglyphs.all.patel diff --git a/glyphs/autobuilds.patel b/glyphs/autobuilds.patel index 69f29d409..6a6eba9df 100644 --- a/glyphs/autobuilds.patel +++ b/glyphs/autobuilds.patel @@ -86,7 +86,7 @@ define [createFractions records] : if [not recursive] : begin { apply-transform : Translate MIDDLE parenMid apply-transform : Italify } - include : hbar SB RIGHTSB parenMid fine + include : HBar SB RIGHTSB parenMid fine } } diff --git a/glyphs/common-shapes.patel b/glyphs/common-shapes.patel index 2b1012ca9..ae913b574 100644 --- a/glyphs/common-shapes.patel +++ b/glyphs/common-shapes.patel @@ -145,22 +145,26 @@ define [xStrand _leftx lefty _rightx righty turn straight tension] : begin { :.concat : halfXStrand _rightx righty middlex middley turn straight tension } -define [nBowl left middle right fine] : begin { +define [nBowl left middle right fine _top _bottom _sma _smb] : begin { + local top : fallback _top XH + local bottom : fallback _bottom 0 + local sma : fallback _sma SMALLSMOOTHA + local smb : fallback _smb SMALLSMOOTHB local bandLeft : new Stroke :.set-transform globalTransform - :.start-from right 0 + :.start-from right bottom :.heads-to UPWARD :.set-width STROKE 0 - :.line-to right [XH - SMALLSMOOTHB] - :.arc-vh-to middle XO + :.line-to right [top - smb] + :.arc-vh-to middle [top - O] :.heads-to LEFTWARD :.to-outline local bandRight : new Stroke :.set-transform globalTransform - :.start-from middle [XO - STROKE] + :.start-from middle [top - O - STROKE] :.set-width 0 STROKE :.heads-to LEFTWARD - :.arc-hv-to left [XH - SMALLSMOOTHA] + :.arc-hv-to left [top - sma] :.heads-to DOWNWARD :.set-width 0 fine :.to-outline @@ -239,7 +243,7 @@ define [smallo u d l r _width] : glyph-construction { } } -define [hbar xleft xright y _fine] : glyph-construction { +define [HBar xleft xright y _fine] : glyph-construction { local fine : [fallback _fine STROKE] / 2 include : create-stroke :.set-transform globalTransform @@ -249,7 +253,7 @@ define [hbar xleft xright y _fine] : glyph-construction { :.line-to xright y :.heads-to RIGHTWARD } -define [vbar x ydown yup _fine] : glyph-construction { +define [VBar x ydown yup _fine] : glyph-construction { local fine : [fallback _fine STROKE] / 2 include : create-stroke :.set-transform globalTransform @@ -259,7 +263,7 @@ define [vbar x ydown yup _fine] : glyph-construction { :.line-to x yup :.heads-to [if [ydown < yup] UPWARD DOWNWARD] } - +define [HOverlayBar xleft xright y] : HBar xleft xright y [adviceBlackness 5] # Common transformations define [FlipAround x y] : glyph-construction { @@ -268,4 +272,12 @@ define [FlipAround x y] : glyph-construction { apply-transform : Scale [-1] apply-transform : Translate x y apply-transform : Italify +} + +define [VerticalHook x y extend depth] : glyph-construction { + include : create-stroke + :.start-from x y + :.heads-to DOWNWARD + :.set-width HALFSTROKE HALFSTROKE + :.arc-vh-to [x + extend] [y - depth] } \ No newline at end of file diff --git a/glyphs/latin-basic-capital.patel b/glyphs/latin-basic-capital.patel index 11c5ce906..fe8e44740 100644 --- a/glyphs/latin-basic-capital.patel +++ b/glyphs/latin-basic-capital.patel @@ -524,6 +524,24 @@ create-glyph 'J.straight' : glyph-construction { :.arc-vh-to [mix hookx [RIGHTSB - JBALANCE] 0.5] O :.heads-to LEFTWARD :.curve-to [MIDDLE - kappa * [MIDDLE - SB] - SB * 0.5] O hookx HOOK } +create-glyph 'J.shorthook' : glyph-construction { + set-width WIDTH + dont-export + include capitalMarks + + local slope [STROKE * 0.00092] + local expand 0.35 + local coexpand [[1 - expand] / 2] + local kappa KAPPA_HOOK + local smooth : HOOK + 0.75 * STROKE + + local hookx [0.5 * SB + OXHOOK] + + include : create-stroke + :.start-from [RIGHTSB - JBALANCE] CAP :.set-width 0 STROKE :.heads-to DOWNWARD + :.line-to [RIGHTSB - JBALANCE] smooth + :.arc-vh-to [mix SB RIGHTSB 0.3] O :.heads-to LEFTWARD +} create-glyph 'J.serifed' : glyph-construction { set-width WIDTH dont-export diff --git a/glyphs/latin-basic-lower.patel b/glyphs/latin-basic-lower.patel index 835f2e30c..3fa2db08a 100644 --- a/glyphs/latin-basic-lower.patel +++ b/glyphs/latin-basic-lower.patel @@ -632,11 +632,7 @@ create-glyph 'z' : glyph-construction { reverse-last } -create-glyph 'k' : glyph-construction { - set-width WIDTH - assign-unicode 'k' - include bMarks - +define [SmallKShape] : glyph-construction { local TURN [XH * 0.99] local rturn [XH * 0.1] local right [RIGHTSB - O] @@ -645,13 +641,6 @@ create-glyph 'k' : glyph-construction { local attach2 [MIDDLE - WIDTH * 0.1] local fine : adviceBlackness 3.5 - - include : create-stroke - :.start-from SB 0 - :.set-width 0 STROKE - :.heads-to UPWARD - :.line-to SB CAP - :.heads-to UPWARD include : create-stroke :.start-from RIGHTSB XH :.heads-to DOWNWARD @@ -666,6 +655,19 @@ create-glyph 'k' : glyph-construction { :.set-width HALFSTROKE HALFSTROKE :.curve-to [right - HALFSTROKE] [rturn + 0.05 * [XH - rturn]] attach2 [XH * 0.5 + HALFSTROKE] :.set-width [fine / 2] [fine / 2] +} + +create-glyph 'k' : glyph-construction { + set-width WIDTH + assign-unicode 'k' + include bMarks + include : create-stroke + :.start-from SB 0 + :.set-width 0 STROKE + :.heads-to UPWARD + :.line-to SB CAP + :.heads-to UPWARD + include : SmallKShape } ### s diff --git a/glyphs/latin-extend.patel b/glyphs/latin-extend.patel index f66576ca4..d88045aee 100644 --- a/glyphs/latin-extend.patel +++ b/glyphs/latin-extend.patel @@ -367,4 +367,123 @@ create-glyph 'ezh' : glyph-construction { create-glyph 'esh' : glyph-construction { assign-unicode 0x283 include glyphs.'longs.italic' AS_BASE +} + +create-glyph 'latinkappa' : glyph-construction { + set-width WIDTH + assign-unicode 0x138 + include bMarks + include : create-stroke + :.start-from SB 0 + :.set-width 0 STROKE + :.heads-to UPWARD + :.line-to SB XH + :.heads-to UPWARD + include : SmallKShape +} +create-glyph 'Hbar' : glyph-construction { + assign-unicode 0x126 + + include glyphs.H AS_BASE + include : HOverlayBar [mix SB 0 0.7] [mix RIGHTSB WIDTH 0.7] [mix CAPMIDDLE CAP 0.45] +} +create-glyph 'hbar' : glyph-construction { + assign-unicode 0x127 + + include glyphs.h AS_BASE + include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix XH CAP 0.45] +} +create-glyph 'Tbar' : glyph-construction { + assign-unicode 0x166 + + include glyphs.T AS_BASE + include : HOverlayBar [mix MIDDLE SB 0.8] [mix MIDDLE RIGHTSB 0.8] [mix 0 CAP 0.45] +} +create-glyph 'tbar' : glyph-construction { + assign-unicode 0x167 + + include glyphs.t AS_BASE + include : HOverlayBar [[mix MIDDLE SB 0.7] - TBALANCE] [[mix MIDDLE RIGHTSB 0.7] - TBALANCE] [mix 0 XH 0.6] +} +create-glyph 'eng' : glyph-construction { + assign-unicode 0x14B + + include glyphs.n AS_BASE + include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] 0 [-HOOK * 1.2] HOOK +} +create-glyph 'Eng' : glyph-construction { + assign-unicode 0x14A + include capitalMarks + + include : nBowl [SB + STROKE] MIDDLE RIGHTSB [STROKE * 0.3] CAP [HOOK + HALFSTROKE + O] SMOOTHA SMOOTHB + include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] [HOOK + HALFSTROKE + O] [Math.max [[SB - RIGHTSB] / 2 + HALFSTROKE] [-HOOK * 1.2]] HOOK + include : VBar [SB + HALFSTROKE * ITALICCOR] 0 CAP +} +create-glyph 'napostrophe' : glyph-construction { + assign-unicode 0x149 + include glyphs.closeApostropheAbove + apply-transform : Translate [WIDTH + SB - MIDDLE] 0 + include glyphs.n AS_BASE +} +create-glyph 'IJ' : glyph-construction { + assign-unicode 0x132 + include capitalMarks + include : create-glyph : glyph-construction { + include glyphs.'I.straight' + apply-transform : Translate [SB - MIDDLE + HALFSTROKE * ITALICCOR] 0 + } + include : create-glyph : glyph-construction { + include glyphs.'J.shorthook' + apply-transform : Translate JBALANCE 0 + } +} +create-glyph 'ij' : glyph-construction { + assign-unicode 0x133 + include ifMarks + include : create-glyph : glyph-construction { + include glyphs.'dotlessi.straight' AS_BASE + include glyphs.dotAbove + apply-transform : Translate [SB * 1.5 - MIDDLE + HALFSTROKE * ITALICCOR] 0 + } + include : create-glyph : glyph-construction { + include glyphs.'dotlessj.straight' AS_BASE + include glyphs.dotAbove + apply-transform : Translate [RIGHTSB - SB * 0.5 - MIDDLE - JBALANCE - HALFSTROKE * ITALICCOR] 0 + } +} + +create-glyph 'Ldot' : glyph-construction { + assign-unicode 0x13F + include glyphs.L AS_BASE + include : list { + Ring [[mix STROKE CAP 0.5] + DOTRADIUS] [[mix STROKE CAP 0.5] - DOTRADIUS] [[mix SB RIGHTSB 0.65] - DOTRADIUS] [[mix SB RIGHTSB 0.65] + DOTRADIUS] + } +} +create-glyph 'ldot' : glyph-construction { + assign-unicode 0x140 + include glyphs.l AS_BASE + apply-transform : Translate [-DOTRADIUS / 2] 0 + include : list { + Ring [[mix STROKE CAP 0.5] + DOTRADIUS] [[mix STROKE CAP 0.5] - DOTRADIUS] [[mix SB RIGHTSB 1] - DOTSIZE] [mix SB RIGHTSB 1] + } +} +create-glyph 'Lslash' : glyph-construction { + assign-unicode 0x141 + include glyphs.L AS_BASE + local fine : 0.5 * [adviceBlackness 5] + local middle : mix STROKE CAP 0.5 + include : create-stroke + :.start-from [mix 0 SB 0.5] [middle - LONGJUT * 0.4] + :.set-width fine fine + :.line-to [1.6 * LONGJUT + [mix 0 SB 0.5]] [middle + LONGJUT * 0.4] +} +create-glyph 'lslash' : glyph-construction { + assign-unicode 0x142 + include glyphs.l AS_BASE + local fine : 0.5 * [adviceBlackness 5] + local middle : mix 0 CAP 0.55 + include : create-stroke + :.start-from [MIDDLE - LONGJUT * 0.8] [middle - LONGJUT * 0.4] + :.set-width fine fine + :.line-to [MIDDLE + LONGJUT * 0.8] [middle + LONGJUT * 0.4] } \ No newline at end of file diff --git a/glyphs/overmarks.patel b/glyphs/overmarks.patel index 19de97ae6..615494f1d 100644 --- a/glyphs/overmarks.patel +++ b/glyphs/overmarks.patel @@ -46,6 +46,9 @@ create-glyph 'ringAbove' : glyph-construction { Ring [XH + ACCENT + radiusIn] [XH + ACCENT - radiusIn] [markMiddle - radiusIn] [markMiddle + radiusIn] } reverse-last + apply-transform : Upright + apply-transform : Translate 0 [-DOTRADIUS * 0.6] + apply-transform : Italify } create-glyph 'graveAbove' : glyph-construction { set-width 0 @@ -239,6 +242,28 @@ create-glyph 'doubleAcuteAbove' : glyph-construction { :.set-samples 1 } +create-glyph 'closeApostropheAbove' : glyph-construction { + set-width 0 + assign-unicode 0x313 + include glyphs.dotAbove + set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop + + include : create-stroke + :.start-from [markMiddle + DOTRADIUS] [XH + ACCENT] + :.set-width 0 [markHalfStroke * 1.25] + :.curve-to [markMiddle + DOTRADIUS] [mix [XH + ACCENT] [aboveMarkBot - DOTRADIUS] 0.5] [mix markMiddle [markMiddle - DOTRADIUS] 0.3] [aboveMarkBot - DOTRADIUS] + apply-transform : Upright + apply-transform : Translate 0 [DOTRADIUS * 0.75] + apply-transform : Italify +} +create-glyph 'openApostropheAbove' : glyph-construction { + set-width 0 + assign-unicode 0x312 + include glyphs.closeApostropheAbove + include : FlipAround markMiddle [XH + ACCENT] + set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop +} + ### Below marks create-glyph 'cedillaBelow' : glyph-construction { set-width 0 @@ -346,4 +371,12 @@ create-glyph 'archBelow' : glyph-construction { include glyphs.breveAbove include : FlipAround markMiddle [XH / 2] +} +create-glyph 'commaBelow' : glyph-construction { + set-width 0 + assign-unicode 0x326 + set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot + + include glyphs.openApostropheAbove + include : FlipAround markMiddle [XH / 2] } \ No newline at end of file diff --git a/glyphs/symbol-ascii.patel b/glyphs/symbol-ascii.patel index 80e5dcfc8..1317a2161 100644 --- a/glyphs/symbol-ascii.patel +++ b/glyphs/symbol-ascii.patel @@ -269,7 +269,7 @@ create-glyph 'hyphen' : glyph-construction { set-width WIDTH assign-unicode '-' - include : hbar SB RIGHTSB hyphenCenter + include : HBar SB RIGHTSB hyphenCenter } create-glyph 'plus' : glyph-construction { set-width WIDTH @@ -277,15 +277,15 @@ create-glyph 'plus' : glyph-construction { include glyphs.hyphen - include : vbar MIDDLE [hyphenCenter - [RIGHTSB - SB] * 0.55] [hyphenCenter + [RIGHTSB - SB] * 0.55] + include : VBar MIDDLE [hyphenCenter - [RIGHTSB - SB] * 0.55] [hyphenCenter + [RIGHTSB - SB] * 0.55] } create-glyph 'equal' : glyph-construction { set-width WIDTH assign-unicode '=' - include : hbar SB RIGHTSB [hyphenCenter - XH * 0.2] - include : hbar SB RIGHTSB [hyphenCenter + XH * 0.2] + include : HBar SB RIGHTSB [hyphenCenter - XH * 0.2] + include : HBar SB RIGHTSB [hyphenCenter + XH * 0.2] } create-glyph 'bar' : glyph-construction { set-width WIDTH @@ -327,10 +327,10 @@ create-glyph 'numbersign' : glyph-construction { local fine : adviceBlackness 4 - include : hbar SB RIGHTSB [mix parenTop parenBot 0.33] - include : hbar SB RIGHTSB [mix parenTop parenBot 0.67] - include : vbar [mix SB RIGHTSB 0.3] [parenBot + fine] [parenTop - fine] fine - include : vbar [mix SB RIGHTSB 0.7] [parenBot + fine] [parenTop - fine] fine + include : HBar SB RIGHTSB [mix parenTop parenBot 0.33] + include : HBar SB RIGHTSB [mix parenTop parenBot 0.67] + include : VBar [mix SB RIGHTSB 0.3] [parenBot + fine] [parenTop - fine] fine + include : VBar [mix SB RIGHTSB 0.7] [parenBot + fine] [parenTop - fine] fine } create-glyph 'less' : glyph-construction { diff --git a/glyphs/symbol-extend.patel b/glyphs/symbol-extend.patel index 18197ff1e..4369214e6 100644 --- a/glyphs/symbol-extend.patel +++ b/glyphs/symbol-extend.patel @@ -20,8 +20,8 @@ create-glyph 'cent' : glyph-construction { create-glyph 'yen' : glyph-construction { assign-unicode 0xA5 include glyphs.Y AS_BASE - include : hbar SB RIGHTSB [CAP * 0.45] [adviceBlackness 4] - include : hbar SB RIGHTSB [CAP * 0.25] [adviceBlackness 4] + include : HBar SB RIGHTSB [CAP * 0.45] [adviceBlackness 4] + include : HBar SB RIGHTSB [CAP * 0.25] [adviceBlackness 4] } create-glyph 'section' : glyph-construction { @@ -127,8 +127,8 @@ create-glyph 'currency' : glyph-construction { create-glyph 'euro' : glyph-construction { assign-unicode 0x20AC include glyphs.C - include : hbar [SB - HALFSTROKE] [mix SB RIGHTSB 0.7] [CAP * 0.4] [adviceBlackness 4] - include : hbar [SB - HALFSTROKE] [mix SB RIGHTSB 0.7] [CAP * 0.6] [adviceBlackness 4] + include : HBar [SB - HALFSTROKE] [mix SB RIGHTSB 0.7] [CAP * 0.4] [adviceBlackness 4] + include : HBar [SB - HALFSTROKE] [mix SB RIGHTSB 0.7] [CAP * 0.6] [adviceBlackness 4] } create-glyph 'multiply' : glyph-construction { assign-unicode 0xD7 @@ -154,8 +154,8 @@ create-glyph 'divide' : glyph-construction { } create-glyph 'brokenbar' : glyph-construction { assign-unicode 0xA6 - include : vbar MIDDLE [parenMid + HALFSTROKE] parenTop - include : vbar MIDDLE parenBot [parenMid - HALFSTROKE] + include : VBar MIDDLE [parenMid + HALFSTROKE] parenTop + include : VBar MIDDLE parenBot [parenMid - HALFSTROKE] } create-glyph 'singleguillemetleft' : glyph-construction { set-width WIDTH @@ -218,8 +218,8 @@ create-glyph 'paragraph' : glyph-construction { assign-unicode 0xB6 local sw : adviceBlackness 3.6 - include : vbar [MIDDLE + sw / 4] 0 CAP sw - include : vbar [RIGHTSB - sw / 2] 0 CAP sw + include : VBar [MIDDLE + sw / 4] 0 CAP sw + include : VBar [RIGHTSB - sw / 2] 0 CAP sw include : create-stroke :.start-from [MIDDLE - sw / 4] [CAP - sw / 2] :.set-width [sw / 2] [sw / 2] @@ -234,5 +234,5 @@ create-glyph 'negate' : glyph-construction { include glyphs.hyphen - include : vbar [RIGHTSB - HALFSTROKE] [hyphenCenter - [RIGHTSB - SB] * 0.55] [hyphenCenter + HALFSTROKE] + include : VBar [RIGHTSB - HALFSTROKE] [hyphenCenter - [RIGHTSB - SB] * 0.55] [hyphenCenter + HALFSTROKE] } \ No newline at end of file