From db421daba8fb2adba12eb545c82b0ce149e34368 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sun, 16 Aug 2015 01:58:15 +0800 Subject: [PATCH] added /revEzh, /revezh, /latinGamma, /latinepsilon, /latinEpsilon, ... --- glyphs/autobuilds.patel | 2 +- glyphs/common-shapes.patel | 13 +++- glyphs/greek.patel | 15 +++-- glyphs/latin-basic-lower.patel | 6 +- glyphs/latin-extend-basis.patel | 80 ++++++++++++++++++++----- glyphs/latin-extend-decorated.patel | 93 +++++++++++++++++++++++++---- parameters.patel | 2 + 7 files changed, 172 insertions(+), 39 deletions(-) diff --git a/glyphs/autobuilds.patel b/glyphs/autobuilds.patel index 7840d249e..8247cbbbb 100644 --- a/glyphs/autobuilds.patel +++ b/glyphs/autobuilds.patel @@ -284,7 +284,7 @@ createSuperscripts : list { list 0x207D 'parenLeft' list 0x207E 'parenRight' list 0x02B0 'h' - list 0x02B1 'hooktoph' + list 0x02B1 'hhooktop' list 0x02B2 'j' list 0x02B3 'r' list 0x02B4 'turnr' diff --git a/glyphs/common-shapes.patel b/glyphs/common-shapes.patel index 29976d1ec..79ba08544 100644 --- a/glyphs/common-shapes.patel +++ b/glyphs/common-shapes.patel @@ -196,6 +196,7 @@ define [XSHookUpper top left _middle right smooth hook _stroke] : glyph-construc :.arc-hv-to left [top - smooth] } define [sHookUpper top smooth hook _middle _stroke] : XSHookUpper top SB _middle RIGHTSB smooth hook _stroke +define [CHookUpper top smooth hook _middle _stroke] : XSHookUpper top [SB + O] _middle RIGHTSB smooth hook _stroke define [twoHookUpper top smooth hook _middle _stroke] : XSHookUpper top RIGHTSB _middle SB smooth hook _stroke define [XSHookLower bottom left _middle right smooth hook _stroke] : glyph-construction { local middle : fallback _middle [mix left right SBALANCE] @@ -208,7 +209,8 @@ define [XSHookLower bottom left _middle right smooth hook _stroke] : glyph-const :.curve-to [mix middle left KAPPA_HOOK] [bottom + O] [left + OXHOOK] [bottom + hook] } define [sHookLower bottom smooth hook _middle _stroke] : XSHookLower bottom SB _middle RIGHTSB smooth hook _stroke -define [EHookLower bottom smooth hook _middle _stroke _o] : XSHookLower bottom [RIGHTSB + TAILADJX * globalTransform.yx] _middle [SB + [fallback _o O]] smooth [hook - TAILADJY * globalTransform.yx] _stroke +define [EHookLower bottom smooth hook _middle _stroke _o] : XSHookLower bottom [RIGHTSB - O + TAILADJX * globalTransform.yx] _middle [SB + [fallback _o O]] smooth [hook - TAILADJY * globalTransform.yx] _stroke +define [CHookLower bottom smooth hook _middle _stroke _o] : XSHookLower bottom [RIGHTSB + TAILADJX * globalTransform.yx] _middle [SB + [fallback _o O]] smooth [hook - TAILADJY * globalTransform.yx] _stroke define [RevEHookLower bottom smooth hook _middle _stroke _o] : XSHookLower bottom SB _middle [RIGHTSB - [fallback _o O]] smooth hook _stroke define [smallo u d l r _width _sma _smb] : glyph-construction { @@ -310,6 +312,15 @@ define [Miniature glyphs fold scale] : begin { local forkFont : buildFont forkedPara shouldBuildList return forkFont.glyfMap } +define [Thinner glyphs p] : begin { + local forkedPara : Object.create para + forkedPara.upmscale = 1 + forkedPara.width = WIDTH * p + local shouldBuildList () + foreach glyphid [items-of glyphs] : set shouldBuildList : shouldBuildList.concat (glyphid :: dependencyProfile.(glyphid)) + local forkFont : buildFont forkedPara shouldBuildList + return forkFont.glyfMap +} define [turned newid unicode id x y mark] : create-glyph [fallback newid : 'turn' + id] : glyph-construction { if unicode : assign-unicode unicode include glyphs`id [if mark false AS_BASE] diff --git a/glyphs/greek.patel b/glyphs/greek.patel index ee25205dd..b47058a15 100644 --- a/glyphs/greek.patel +++ b/glyphs/greek.patel @@ -187,14 +187,12 @@ create-glyph 'alpha' : glyph-construction { :.set-width fine 0 :.heads-to DOWNWARD } -create-glyph 'iota' : glyph-construction { - assign-unicode 0x3B9 - include eMarks +define [IotaShape top] : glyph-construction { local middle MIDDLE - set-anchor 'above' BASE middle XH - include : leftwardTopSerif middle XH LONGJUT + set-anchor 'above' BASE middle top + include : leftwardTopSerif middle top LONGJUT include : create-stroke - :.start-from middle XH + :.start-from middle top :.heads-to DOWNWARD :.set-width HALFSTROKE HALFSTROKE :.line-to middle HOOK @@ -202,6 +200,11 @@ create-glyph 'iota' : glyph-construction { :.line-to [middle + LONGJUT * 1.05] HALFSTROKE :.heads-to RIGHTWARD } +create-glyph 'iota' : glyph-construction { + assign-unicode 0x3B9 + include eMarks + include : IotaShape XH +} create-glyph 'eta' : glyph-construction { assign-unicode 0x3B7 include pMarks diff --git a/glyphs/latin-basic-lower.patel b/glyphs/latin-basic-lower.patel index a84b89797..b463aa3c7 100644 --- a/glyphs/latin-basic-lower.patel +++ b/glyphs/latin-basic-lower.patel @@ -107,8 +107,8 @@ create-glyph 'c' : glyph-construction { assign-unicode 'c' include eMarks - include : EHookLower 0 SMALLSMOOTHB HOOK - include : XSHookUpper XH [SB + O] nothing RIGHTSB SMALLSMOOTHA [HOOK - TAILADJY * globalTransform.yx] + include : CHookLower 0 SMALLSMOOTHB HOOK + include : CHookUpper XH SMALLSMOOTHA HOOK include : create-stroke :.start-from [SB + O] [XH - SMALLSMOOTHA] :.set-width STROKE 0 :.line-to [SB + O] SMALLSMOOTHB @@ -126,7 +126,7 @@ define [SmallEShape top stroke barpos] : glyph-construction { :.arc-vh-to MIDDLE [top - O] :.arc-hv-to [SB + O] [top - SMALLSMOOTHA] :.line-to [SB + O] SMALLSMOOTHB - include : EHookLower 0 SMALLSMOOTHB HOOK + include : EHookLower 0 SMALLSMOOTHB SHOOK [mix SB RIGHTSB SBALANCE] stroke include : create-stroke :.start-from [SB + [stroke / 2]] barbottom :.set-width stroke 0 diff --git a/glyphs/latin-extend-basis.patel b/glyphs/latin-extend-basis.patel index b39184bf8..b9bcc49a1 100644 --- a/glyphs/latin-extend-basis.patel +++ b/glyphs/latin-extend-basis.patel @@ -168,10 +168,8 @@ create-glyph 'Eth' : glyph-construction { :.line-to [mix [SB + STROKE] [RIGHTSB - STROKE] 0.55] [CAP * 0.54] :.heads-to RIGHTWARD } -create-glyph 'Dcroat' : glyph-construction { - assign-unicode 0x110 - include glyphs.Eth AS_BASE -} +alias 'DCroat' 0x110 'Eth' +alias 'arficanD' 0x189 'Eth' create-glyph 'eth' : glyph-construction { set-width WIDTH @@ -299,13 +297,12 @@ create-glyph 'eszet' : glyph-construction { } } -define [EzhShape top bot pleft] : glyph-construction { +define [EzhShape top bot pleft flat] : glyph-construction { local cor 1.2 local yMidBar : mix bot top 0.6 local ezhLeft : mix SB RIGHTSB [fallback pleft 0.2] local ezhRight : mix SB RIGHTSB 0.925 - include : create-stroke :.start-from SB top :.heads-to RIGHTWARD :.set-width 0 STROKE - :.line-to ezhRight top :.heads-to RIGHTWARD :.to-outline + include : HBarTop SB ezhRight top start-from ezhLeft yMidBar line-to [ezhLeft + STROKE * cor] [yMidBar - HALFSTROKE] @@ -314,14 +311,42 @@ define [EzhShape top bot pleft] : glyph-construction { line-to [ezhRight - STROKE * cor] [top - STROKE] reverse-last - include : create-stroke + local s : create-stroke :.start-from ezhLeft yMidBar :.heads-to RIGHTWARD :.set-width 0 STROKE :.line-to MIDDLE yMidBar :.arc-hv-to RIGHTSB [mix yMidBar bot 0.5] - :.to-outline - include : XSHookLower bot SB [mix SB RIGHTSB 0.465] RIGHTSB [[yMidBar - bot] / 2] SHOOK + if flat { + then : s.heads-to DOWNWARD + else : include : XSHookLower bot SB [mix SB RIGHTSB 0.465] RIGHTSB [[yMidBar - bot] / 2] SHOOK + } + include s +} +define [RevEzhShape top bot pleft flat] : glyph-construction { + local cor 1.2 + local yMidBar : mix bot top 0.6 + local ezhRight : mix RIGHTSB SB [fallback pleft 0.2] + local ezhLeft : mix RIGHTSB SB 0.925 + include : HBarTop ezhLeft RIGHTSB top + + start-from ezhRight yMidBar + line-to [ezhRight - STROKE * cor] [yMidBar - HALFSTROKE] + line-to [ezhRight - STROKE * cor] yMidBar + line-to ezhLeft [top - STROKE] + line-to [ezhLeft + STROKE * cor] [top - STROKE] + + local s : create-stroke + :.start-from ezhRight yMidBar + :.heads-to LEFTWARD + :.set-width STROKE 0 + :.line-to MIDDLE yMidBar + :.arc-hv-to SB [mix yMidBar bot 0.5] + if flat { + then : s.heads-to DOWNWARD + else : include : XSHookLower bot RIGHTSB [mix RIGHTSB SB 0.465] SB [[yMidBar - bot] / 2] SHOOK + } + include s } create-glyph 'Ezh' : glyph-construction { set-width WIDTH @@ -335,6 +360,14 @@ create-glyph 'ezh' : glyph-construction { include pMarks include : EzhShape XH DESCENDER } +create-glyph 'revEzh' : glyph-construction { + assign-unicode 0x1B8 + include : RevEzhShape CAP 0 +} +create-glyph 'revezh' : glyph-construction { + assign-unicode 0x1B9 + include : RevEzhShape XH DESCENDER +} create-glyph 'esh' : glyph-construction { assign-unicode 0x283 include glyphs.'longs.italic' AS_BASE @@ -397,10 +430,11 @@ create-glyph 'scripta' : glyph-construction { line-to [RIGHTSB - STROKE * ITALICCOR] [XH - STROKE / 2] line-to RIGHTSB [XH - O] } -create-glyph 'ftail' : glyph-construction { - assign-unicode 0x192 - include glyphs.'longs.italic' AS_BASE - include : fBar +create-glyph 'turnSmallE' : glyph-construction { + assign-unicode 0x18F + include capitalMarks + include : SmallEShape CAP STROKE + include : FlipAround MIDDLE [CAP / 2] } create-glyph 'iogonek.dotless' : glyph-construction { include glyphs.dotlessi AS_BASE @@ -481,11 +515,26 @@ create-glyph 'latingamma' : glyph-construction { include pMarks include : RamsHornShape DESCENDER XH } +create-glyph 'latinGamma' : glyph-construction { + assign-unicode 0x194 + include ifMarks + include : RamsHornShape DESCENDER CAP +} create-glyph 'ramshorn' : glyph-construction { assign-unicode 0x264 include eMarks include : RamsHornShape 0 XH } +create-glyph 'latinEpsilon' : glyph-construction { + assign-unicode 0x190 + include capitalMarks + include : SmallEpsilonShape CAP +} +create-glyph 'latinIota' : glyph-construction { + assign-unicode 0x196 + include capitalMarks + include : IotaShape CAP +} define [RevSmallEShape top stroke barpos] : glyph-construction { local barbottom [top * [fallback barpos EBARPOS]] local hookx SB @@ -655,11 +704,12 @@ alias 'dentalclick' 0x1C0 'bar' dual 'alveolarlateralclick' 0x1C1 'bar' [WIDTH * 0.35] alias 'alveolarclick' 0x1C3 'exclam' alias 'smcpH' 0x29C 'cyren' -alias 'latiniota' 0x269 'dotlessi.italic' +alias 'latiniota' 0x269 'iota' alias 'revlatinepsilon' 0x25C 'cyrze' # Turned glyphs turned nothing 0x250 'a' MIDDLE [XH / 2] turned nothing 0x252 'scripta' MIDDLE [XH / 2] +turned nothing 0x186 'C' MIDDLE [CAP / 2] turned nothing 0x254 'c' MIDDLE [XH / 2] turned nothing 0x18E 'E' MIDDLE [CAP / 2] turned nothing 0x1DD 'e' MIDDLE [XH / 2] diff --git a/glyphs/latin-extend-decorated.patel b/glyphs/latin-extend-decorated.patel index d3ad5d865..e84964de4 100644 --- a/glyphs/latin-extend-decorated.patel +++ b/glyphs/latin-extend-decorated.patel @@ -122,6 +122,11 @@ create-glyph 'revglottalstopbar' : glyph-construction { include glyphs.revglottalstop AS_BASE include : HOverlayBar [MIDDLE - LONGJUT * 0.6] [MIDDLE + LONGJUT * 0.6] [CAP * 0.25] } +create-glyph 'eshbar' : glyph-construction { + assign-unicode 0x284 + include glyphs.esh AS_BASE + include : HOverlayBar [MIDDLE - LONGJUT * 0.6] [MIDDLE + LONGJUT * 0.6] [XH * 0.25] +} # bdot and ddot 's dots are closer to the glyph create-glyph 'bdot' : glyph-construction { include glyphs.dotAbove @@ -159,20 +164,50 @@ define [HooktopLeftBar stroke] : glyph-construction { :.line-to SB 0 :.heads-to DOWNWARD } -create-glyph 'hooktoph' : glyph-construction { +create-glyph 'hhooktop' : glyph-construction { assign-unicode 0x266 include bMarks include : nShoulder [SB + STROKE * ITALICCOR] MIDDLE RIGHTSB [STROKE * 0.4] include : HooktopLeftBar } -create-glyph 'hooktopb' : glyph-construction { +create-glyph 'bhooktop' : glyph-construction { assign-unicode 0x253 include bMarks include : oLeft include : HooktopLeftBar } - +create-glyph 'dhooktop' : glyph-construction { + assign-unicode 0x260 + include glyphs.scriptg AS_BASE + include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] XH HOOKX [-HOOK] +} +create-glyph 'scriptghooktop' : glyph-construction { + assign-unicode 0x257 + include bMarks + include glyphs.'a.italic' + include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] XH HOOKX [-HOOK] +} +create-glyph 'Chooktop' : glyph-construction { + assign-unicode 0x187 + include glyphs.C AS_BASE + include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] [CAP - HOOK] HOOKX [-HOOK * 1.5] +} +create-glyph 'chooktop' : glyph-construction { + assign-unicode 0x188 + include glyphs.c AS_BASE + include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] [XH - HOOK] HOOKX [-HOOK * 1.5] +} # Left-tail +create-glyph 'fltail' : glyph-construction { + assign-unicode 0x192 + include glyphs.'longs.italic' AS_BASE + include : fBar +} +create-glyph 'Fltail' : glyph-construction { + assign-unicode 0x191 + include glyphs.F AS_BASE + include : VerticalHook [SB * 1.5 + HALFSTROKE * ITALICCOR] 0 [-HOOKX] HOOK +} create-glyph 'nltail' : glyph-construction { assign-unicode 0x272 include glyphs.n AS_BASE @@ -185,10 +220,10 @@ create-glyph 'mltail' : glyph-construction { local fine : adviceBlackness 3.5 include : VerticalHook [RIGHTSB - O - fine / 2 * ITALICCOR] 0 [-HOOKX] HOOK fine } -create-glyph 'hooktophltail' : glyph-construction { +create-glyph 'hhooktopltail' : glyph-construction { assign-unicode 0x267 include pMarks - include glyphs.hooktoph + include glyphs.hhooktop include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] 0 [-HOOKX] HOOK } # Right-tail @@ -237,7 +272,21 @@ create-glyph 'trtail' : glyph-construction { include ifMarks include : SmallTShape CAP DESCENDER } - +create-glyph 'ezhtail' : glyph-construction { + assign-unicode 0x1BA + local b : mix DESCENDER XH 0.25 + include : EzhShape XH b nothing true + local y : mix [mix b XH 0.6] b 0.5 + include : create-stroke + :.start-from RIGHTSB y + :.heads-to DOWNWARD + :.set-width 0 STROKE + :.arc-vh-to [mix SB RIGHTSB 0.45] b + :.line-to [mix SB RIGHTSB 0.4] b + :.arc-hv-to [SB + STROKE * ITALICCOR] [mix [DESCENDER + STROKE] b 0.5] + :.arc-vh-to [mix SB RIGHTSB 0.4] [DESCENDER + STROKE] + :.line-to RIGHTSB [DESCENDER + STROKE] +} # Curly tail define [CurlyTail fine wide rinner m1 y1 bottom _right x1 x2 y2] : glyph-construction { local right : _right - fine * [if [_right > m1] 1 [-1]] @@ -355,12 +404,10 @@ create-glyph 'ccurlytail' : glyph-construction { assign-unicode 0x255 include eMarks local rinner : [[XH * 0.425] - STROKE * 1.5] / 2 - + include : XSHookUpper XH [SB + O] nothing RIGHTSB SMALLSMOOTHA [HOOK - TAILADJY * globalTransform.yx] include : create-stroke - :.start-from [RIGHTSB - OXHOOK] [XH - HOOK] + :.start-from [SB + O] [XH - SMALLSMOOTHA] :.set-width STROKE 0 - :.curve-to [MIDDLE + KAPPA_HOOK * [MIDDLE - para.sb]] XO [MIDDLE - OMIDCOR_S] XO - :.arc-hv-to [SB + O] [XH - SMALLSMOOTHA] :.line-to [SB + O] SMALLSMOOTHB :.heads-to DOWNWARD @@ -375,9 +422,7 @@ create-glyph 'ezhcurlytail' : glyph-construction { include eMarks local rinner : [[XH * 0.425] - STROKE * 1.5] / 2 - include : EzhShape XH DESCENDER - this.contours.pop - this.contours.pop + include : EzhShape XH DESCENDER nothing true local m1 : RIGHTSB - STROKE * ITALICCOR local x1 : mix RIGHTSB SB 0.25 @@ -406,6 +451,28 @@ create-glyph 'zcurlytail' : glyph-construction { line-to [RIGHTSB - STROKE * cor] [XH - STROKE] reverse-last } +# Er tail +define [ErTail] : glyph-construction { + local left : WIDTH * 0.85 - SB + include : HBarTop [left - markFine * 2] [left + markFine] [XH * 0.6] + include : create-stroke + :.start-from left [XH * 0.6] + :.set-width [markFine * 2] 0 + :.arc-vh-to WIDTH [XH * 0.3] + :.heads-to RIGHTWARD +} +create-glyph 'er' : glyph-construction { + assign-unicode 0x25A + local f : Thinner ('schwa') 0.85 + include f.schwa + include : ErTail +} +create-glyph 'revlatinepsiloner' : glyph-construction { + assign-unicode 0x25D + local f : Thinner ('revlatinepsilon') 0.85 + include f.revlatinepsilon + include : ErTail +} # Belted define [Belt] : glyph-construction { local fine : adviceBlackness 4.5 diff --git a/parameters.patel b/parameters.patel index 99b7e05b9..50f570691 100644 --- a/parameters.patel +++ b/parameters.patel @@ -11,6 +11,7 @@ define regular ( .descender [-194] .xheight 570 .barpos 0.52 + .ebarpos 0.45 .gbarpos 0.35 .fivebarpos 0.49 @@ -55,6 +56,7 @@ bold.sb = 50 bold.stroke = 120 bold.dotsize = 160 bold.periodsize = 180 +bold.barpos = 0.51 bold.ebarpos = 0.4 bold.oxhook = 0 bold.ahook = 120