diff --git a/buildglyphs-intro.patel b/buildglyphs-intro.patel index a857718..e361beb 100644 --- a/buildglyphs-intro.patel +++ b/buildglyphs-intro.patel @@ -259,8 +259,15 @@ define [select-variant name unicode default] : begin { set unicodeGlyphs.(chosenGlyph.unicode`[chosenGlyph.unicode.length - 1]) chosenGlyph } } +define [italic-variant name unicode] : create-glyph name : glyph-construction { + if [para.italicangle > 0] { + then : include glyphs.[name + '.italic'] AS_BASE + else : include glyphs.[name + '.upright'] AS_BASE + } + if unicode : assign-unicode unicode +} define [alias newid unicode oldid] : create-glyph newid : glyph-construction { - assign-unicode unicode + if unicode : assign-unicode unicode include glyphs`oldid AS_BASE } diff --git a/glyphs/autobuilds.patel b/glyphs/autobuilds.patel index 5a2d344..f58356d 100644 --- a/glyphs/autobuilds.patel +++ b/glyphs/autobuilds.patel @@ -275,6 +275,18 @@ define customDecompositions ( ."\u013C" "l\u0326" ."\u0122" "G\u0326" ."\u0123" "g\u0312" + ."\u1FED" " \u0308\u0300" + ."\u1FEE" " \u0308\u0301" + ."\u1FEF" " \u0300" + ."\u1FFD" " \u0301" + ."\u1FFE" " \u0314" + ."\u1FBD" " \u0313" + ."\u1FBE" " \u0345" + ."\u1FBF" " \u0313" + ."\u1FC0" " \u0342" + ."\u1FC1" " \u0308\u0342" + ."\u0384" " \u0301" + ."\u0385" " \u0308\u0301" ) define [decompositionModify s] : s.replace [regex '\u0313\u0300'] "\u1FCD" :.replace [regex '\u0313\u0301'] "\u1FCE" @@ -296,10 +308,11 @@ foreach code [range 0x00A0 0xFFFF] : if [not unicodeGlyphs`code] : begin { if [isAboveMark parts`j] : set hasMarkAbove true } if allFound : begin { - if [parts.0 === glyphs.i && hasMarkAbove] : parts.0 = glyphs.dotlessi + local namingParts : parts.slice 0 + if [[parts.0 === glyphs.i || parts.0 === glyphs.ukrainiani] && hasMarkAbove] : parts.0 = glyphs.dotlessi if [parts.0 === glyphs.j && hasMarkAbove] : parts.0 = glyphs.dotlessj - create-glyph [parts.map [[part] -> part.name] :.join '_'] : glyph-construction { + create-glyph [namingParts.map [[part] -> part.name] :.join '_'] : glyph-construction { assign-unicode code include parts.0 AS_BASE foreach part [items-of : parts.slice 1] : include part diff --git a/glyphs/common-shapes.patel b/glyphs/common-shapes.patel index 8983d5b..7b396d4 100644 --- a/glyphs/common-shapes.patel +++ b/glyphs/common-shapes.patel @@ -228,8 +228,8 @@ define [smallo u d l r _width _sma _smb] : glyph-construction { :.heads-to LEFTWARD } else : begin { - local ymiddlea : [u - sma + d + smb] / 2 - local ymiddleb : [u - smb + d + sma] / 2 + local ymiddlea : mix d u [smb / [sma + smb]] + local ymiddleb : mix d u [sma / [sma + smb]] include : create-stroke :.set-transform globalTransform :.start-from middle [u - O] @@ -255,6 +255,9 @@ define [HBar xleft xright y _fine] : glyph-construction { :.line-to xright y :.heads-to RIGHTWARD } +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 [adviceBlackness 5] define [VBar x ydown yup _fine] : glyph-construction { local fine : [fallback _fine STROKE] / 2 include : create-stroke @@ -265,7 +268,8 @@ 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] +define [VBarLeft x yd yu _fine] : VBar [x + [fallback _fine STROKE] * 0.5 * ITALICCOR] yd yu _fine +define [VBarRight x yd yu _fine] : VBar [x - [fallback _fine STROKE] * 0.5 * ITALICCOR] yd yu _fine # Common transformations define [FlipAround x y sx sy] : glyph-construction { diff --git a/glyphs/cyrillic-basic.patel b/glyphs/cyrillic-basic.patel new file mode 100644 index 0000000..eaa1579 --- /dev/null +++ b/glyphs/cyrillic-basic.patel @@ -0,0 +1,412 @@ +###### Cyrillic glyphs + +alias 'cyrA' 0x410 'A' +alias 'cyra' 0x430 'a' +alias 'Ve' 0x412 'B' +alias 'Ghe' 0x413 'Gamma' +alias 'Ie' 0x415 'E' +alias 'ie' 0x435 'e' +alias 'Ka' 0x41A 'K' +alias 'ka' 0x43A 'kappa' +alias 'Em' 0x41C 'M' +alias 'En' 0x41D 'H' +alias 'cyrO' 0x41E 'O' +alias 'cyro' 0x43e 'o' +alias 'Pe' 0x41F 'Pi' +alias 'pe.upright' null 'pi' +alias 'pe.italic' null 'n' +italic-variant 'pe' 0x43f +alias 'Er' 0x420 'P' +alias 'er' 0x440 'p' +alias 'Es' 0x421 'C' +alias 'es' 0x441 'c' +alias 'Te' 0x422 'T' +alias 'te.upright' null 'tau' +alias 'te.italic' null 'm' +italic-variant 'te' 0x442 +alias 'Ef' 0x424 'Phi' +alias 'ef' 0x444 'phi' +alias 'Ha' 0x425 'X' +alias 'ha' 0x445 'x' +alias 'cyru' 0x443 'y' +alias 'ukrainianI' 0x406 'I' +alias 'ukrainiani' 0x456 'i' +alias 'Je' 0x408 'J' +alias 'je' 0x458 'j' +alias 'Dze' 0x405 'S' +alias 'dze' 0x455 's' + +### Russian letters +define [YeriShape top _left _right _fine] : glyph-construction { + local fine : fallback _fine STROKE + local left : fallback _left SB + local right : fallback _right RIGHTSB + + local bowl : top * 0.55 + HALFSTROKE + local tkappa [COKAPPA - 0.22] + local bkappa [COKAPPA - 0.2] + + local turnbottom : bowl / 2 + + include : create-stroke + :.start-from [left + STROKE * 0.2] 0 + :.heads-to RIGHTWARD + :.set-width fine 0 + :.line-to [right - turnbottom * [right - left] / [RIGHTSB - SB]] 0 + :.arc-hv-to [right - O] turnbottom + :.arc-vh-to [right - turnbottom * [right - left] / [RIGHTSB - SB]] bowl + :.line-to [left + STROKE * 0.2] bowl + :.heads-to LEFTWARD + + include : VBarLeft left 0 top fine +} +create-glyph 'Yeri' : glyph-construction { + assign-unicode 0x42C + include capitalMarks + include : YeriShape CAP SB RIGHTSB +} +create-glyph 'yeri' : glyph-construction { + assign-unicode 0x44C + include eMarks + include : YeriShape XH SB RIGHTSB +} +create-glyph 'Be' : glyph-construction { + assign-unicode 0x411 + include glyphs.Yeri AS_BASE + include : HBar SB [mix SB RIGHTSB 0.9] [CAP - HALFSTROKE] +} +define [CyrIShape top] : glyph-construction { + local topstroke : adviceBlackness 4 + local halftopstroke : topstroke / 2 + include : create-stroke + :.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0 + :.line-to RIGHTSB [top * 0.4] :.heads-to UPWARD + :.line-to RIGHTSB top :.heads-to UPWARD :.set-width topstroke 0 + include : create-stroke + :.start-from SB 0 :.heads-to UPWARD :.set-width 0 topstroke + :.line-to SB [top * 0.6] :.heads-to UPWARD :.set-width 0 STROKE + :.line-to SB top :.heads-to UPWARD + include : create-stroke + :.start-from [SB + halftopstroke] 0 :.heads-to UPWARD :.set-width 0 topstroke + :.line-to [RIGHTSB - topstroke - halftopstroke] top :.heads-to UPWARD +} +create-glyph 'cyrI' : glyph-construction { + assign-unicode 0x418 + include capitalMarks + include : CyrIShape CAP +} +create-glyph 'cyri.upright' : glyph-construction { + include eMarks + dont-export + include : CyrIShape XH +} +create-glyph 'cyri.italic' : glyph-construction { + dont-export + include glyphs.u AS_BASE +} +italic-variant 'cyri' 0x438 +create-glyph 'cyrU' : glyph-construction { + set-width WIDTH + assign-unicode 0x423 + include capitalMarks + + local xbottom : mix SB RIGHTSB 0.28 + local turnp : XH / CAP + local xb : mix SB RIGHTSB 0.51 + local yb : mix [CAP - XH] CAP [0.05 * turnp] + + include : xStrand xbottom 0 RIGHTSB CAP 0.1 0.6 0.14 + include : halfXStrand SB CAP xb yb [0.1 * turnp] 0.4 [0.14 * turnp] +} +create-glyph 'be' : glyph-construction { + assign-unicode 0x431 + include bMarks + include glyphs.o + include : create-stroke + :.start-from [SB + O] SMALLSMOOTHB + :.set-width 0 STROKE + :.line-to [SB + O] [XH - SMALLSMOOTHA] + :.cubic-to [SB + O] [mix XH CAP 1.2] [mix SB RIGHTSB 0.4] [mix XH CAP 0.5] [RIGHTSB - HALFSTROKE * ITALICCOR] CAP +} +create-glyph 've' : glyph-construction { + assign-unicode 0x432 + include eMarks + include : BShape XH +} +create-glyph 'ghe' : glyph-construction { + assign-unicode 0x433 + include eMarks + include : LShape XH + include : FlipAround MIDDLE [XH / 2] 1 [-1] +} +define [DeShape top] : glyph-construction { + local cutleft : mix SB RIGHTSB 0.2 + local cutright : mix SB RIGHTSB 0.92 + include : HBar [SB + O * 2] RIGHTSB HALFSTROKE + include : VBar [cutright - HALFSTROKE * ITALICCOR] 0 top + include : HBar cutleft cutright [top - HALFSTROKE] + include : halfXStrand [cutleft + STROKE * ITALICCOR] top [SB + HALFSTROKE * ITALICCOR] HALFSTROKE 0.1 0.75 0.5 + include : VBar [SB + HALFSTROKE * ITALICCOR + O * 2] [-LONGJUT + HALFSTROKE] 0 + include : VBar [RIGHTSB - HALFSTROKE * ITALICCOR] [-LONGJUT + HALFSTROKE] 0 +} +create-glyph 'De' : glyph-construction { + assign-unicode 0x414 + include ifMarks + include : DeShape CAP +} +create-glyph 'de' : glyph-construction { + assign-unicode 0x434 + include pMarks + include : DeShape XH +} +define [ZheShape top] : glyph-construction { + local fine : adviceBlackness 3.75 + local midx : mix SB MIDDLE 0.3 + define [AngleShape] : glyph-construction { + local cor 1 + start-from [SB + O] 0 + line-to [SB + fine * cor + O] 0 + line-to [midx + fine * cor] [top / 2] + line-to [SB + fine * cor + O] top + line-to [SB + O] top + line-to midx [top / 2] + reverse-last + } + include : AngleShape + include : FlipAround MIDDLE [top / 2] + include : AngleShape + include : VBar MIDDLE 0 top fine + include : HBar midx [WIDTH - midx] [top / 2] fine +} +create-glyph 'Zhe' : glyph-construction { + assign-unicode 0x416 + include capitalMarks + include : ZheShape CAP +} +create-glyph 'zhe' : glyph-construction { + assign-unicode 0x436 + include eMarks + include : ZheShape XH +} +define [ZeShape top] : glyph-construction { + local mid : mix RIGHTSB SB 0.65 + include : twoHookUpper top [SMOOTHB * 0.87 / [XH / top]] SHOOK + include : sHookLower 0 [SMOOTHA * 0.87 / [XH / top]] SHOOK + include : create-stroke + :.start-from RIGHTSB [top - SMOOTHB * 0.87 / [XH / top]] + :.set-width 0 STROKE + :.arc-vh-to MIDDLE [top / 2 - HALFSTROKE] KAPPA + :.line-to mid [top / 2 - HALFSTROKE] + :.heads-to LEFTWARD + include : create-stroke + :.start-from RIGHTSB [SMOOTHA * 0.87 / [XH / top]] + :.set-width STROKE 0 + :.arc-vh-to MIDDLE [top / 2 + HALFSTROKE] KAPPA + :.line-to mid [top / 2 + HALFSTROKE] + :.heads-to LEFTWARD +} +create-glyph 'Ze' : glyph-construction { + assign-unicode 0x417 + include capitalMarks + include : ZeShape CAP +} +create-glyph 'ze' : glyph-construction { + assign-unicode 0x437 + include eMarks + include : ZeShape XH +} + +define [ElShape top] : glyph-construction { + local cutleft : mix SB RIGHTSB 0.16 + local cutright : mix SB RIGHTSB 0.95 + include : VBar [cutright - HALFSTROKE * ITALICCOR] 0 top + include : HBar [cutleft + O * 2] RIGHTSB [top - HALFSTROKE] + include : HBar [SB + O * 2] [SB + STROKE] HALFSTROKE + include : halfXStrand [cutleft + STROKE * ITALICCOR] top [SB + HALFSTROKE] HALFSTROKE 0.1 0.75 0.5 +} +create-glyph 'El' : glyph-construction { + assign-unicode 0x41B + include capitalMarks + include : ElShape CAP +} +create-glyph 'el' : glyph-construction { + assign-unicode 0x43B + include eMarks + include : ElShape XH +} +create-glyph 'em' : glyph-construction { + assign-unicode 0x43C + include eMarks + include : MShape XH +} +create-glyph 'en' : glyph-construction { + assign-unicode 0x43D + include eMarks + include : HShape XH +} + +define [TseShape top] : glyph-construction { + include : VBarLeft SB 0 top + include : HBarBottom SB RIGHTSB 0 + include : VBarRight RIGHTSB 0 top + include : VBarRight [mix SB RIGHTSB 1.05] [HALFSTROKE - LONGJUT] STROKE +} +create-glyph 'Tse' : glyph-construction { + assign-unicode 0x426 + include capitalMarks + include : TseShape CAP +} +create-glyph 'tse' : glyph-construction { + assign-unicode 0x446 + include eMarks + include : TseShape XH +} +define [CheShape top] : glyph-construction { + include : VBarRight RIGHTSB 0 top + include : create-stroke + :.start-from SB top + :.set-width STROKE 0 + :.heads-to DOWNWARD + :.line-to SB [top * 0.3 + SMOOTHB - HALFSTROKE] + :.arc-vh-to MIDDLE [top * 0.3 - HALFSTROKE] + :.heads-to RIGHTWARD + :.line-to RIGHTSB [top * 0.3 - HALFSTROKE] + :.heads-to RIGHTWARD +} +create-glyph 'Che' : glyph-construction { + assign-unicode 0x427 + include capitalMarks + include : CheShape CAP +} +create-glyph 'che' : glyph-construction { + assign-unicode 0x447 + include eMarks + include : CheShape XH +} +define [ShaShape top] : glyph-construction { + local fine : adviceBlackness 3.5 + include : HBarBottom SB RIGHTSB 0 + include : VBarLeft SB 0 top fine + include : VBarRight RIGHTSB 0 top fine + include : VBar MIDDLE 0 top fine +} +create-glyph 'Sha' : glyph-construction { + assign-unicode 0x428 + include capitalMarks + include : ShaShape CAP +} +create-glyph 'sha' : glyph-construction { + assign-unicode 0x448 + include eMarks + include : ShaShape XH +} +define [ShchaShape top] : glyph-construction { + include : ShaShape top + include : VBarRight [mix SB RIGHTSB 1.05] [HALFSTROKE - LONGJUT] STROKE +} +create-glyph 'Shcha' : glyph-construction { + assign-unicode 0x429 + include capitalMarks + include : ShchaShape CAP +} +create-glyph 'shcha' : glyph-construction { + assign-unicode 0x449 + include eMarks + include : ShchaShape XH +} +define [YerShape top] : glyph-construction { + include : YeriShape top [mix SB RIGHTSB 0.2] RIGHTSB + include : HBarTop SB [STROKE * 0.1 + [mix SB RIGHTSB 0.2]] top +} +create-glyph 'Yer' : glyph-construction { + assign-unicode 0x42A + include capitalMarks + include : YerShape CAP +} +create-glyph 'yer' : glyph-construction { + assign-unicode 0x44A + include eMarks + include : YerShape XH +} +define [YeryShape top] : glyph-construction { + local fine : adviceBlackness 3.5 + include : YeriShape top SB [mix [RIGHTSB - fine * ITALICCOR] [MIDDLE + fine / 2 * ITALICCOR] 0.5] fine + include : VBarRight RIGHTSB 0 top fine +} +create-glyph 'Yery' : glyph-construction { + assign-unicode 0x42B + include capitalMarks + include : YeryShape CAP +} +create-glyph 'yery' : glyph-construction { + assign-unicode 0x44B + include eMarks + include : YeryShape XH +} +create-glyph 'cyrE' : glyph-construction { + assign-unicode 0x42D + include eMarks + include glyphs.C + include : FlipAround MIDDLE [CAP / 2] + include : HBar [mix SB RIGHTSB 0.25] RIGHTSB [CAP / 2] +} +create-glyph 'cyre' : glyph-construction { + assign-unicode 0x44D + include eMarks + include glyphs.c + include : FlipAround MIDDLE [XH / 2] + include : HBar [mix SB RIGHTSB 0.25] RIGHTSB [XH / 2] +} +define [YuShape top sma smb] : glyph-construction { + local fine : adviceBlackness 3.5 + include : VBarLeft SB 0 top fine + include : smallo top 0 [mix [SB + fine * ITALICCOR] RIGHTSB 0.2] RIGHTSB fine [sma * 0.8] [smb * 0.8] + include : HBar [SB + fine * 0.1] [mix [SB + fine * ITALICCOR] RIGHTSB 0.2] [top / 2] +} +create-glyph 'Yu' : glyph-construction { + assign-unicode 0x42E + include capitalMarks + include : YuShape CAP SMOOTHA SMOOTHB +} +create-glyph 'yu' : glyph-construction { + assign-unicode 0x44E + include eMarks + include : YuShape XH SMALLSMOOTHA SMALLSMOOTHB +} +define [YaShape top] : glyph-construction { + local bowlTop [top * 1] + local bowlBottom [[top - STROKE] / 2 - HALFSTROKE] + + local turn : mix bowlTop bowlBottom 0.5 + local turnRadius : [bowlTop - bowlBottom] / 2 + + include : create-stroke + :.start-from [WIDTH - SB * 1.25 - HALFSTROKE * 0.1] bowlTop + :.heads-to LEFTWARD + :.set-width STROKE 0 + :.line-to [SB + turnRadius] bowlTop + :.arc-hv-to [SB + O] turn + :.arc-vh-to [SB + turnRadius] bowlBottom + :.line-to [WIDTH - SB * 1.25 - HALFSTROKE * 0.1] bowlBottom + :.heads-to RIGHTWARD + + include : VBarRight RIGHTSB 0 top + + local turn [XH * 0.1] + local left [SB + O] + include : create-stroke + :.start-from [left + HALFSTROKE] 0 + :.heads-to UPWARD + :.set-width HALFSTROKE HALFSTROKE + :.curve-to [left + HALFSTROKE] [turn + 0.2 * [XH - turn]] MIDDLE [bowlBottom + HALFSTROKE] +} +create-glyph 'Ya' : glyph-construction { + assign-unicode 0x42F + include capitalMarks + include : YaShape CAP +} +create-glyph 'ya' : glyph-construction { + assign-unicode 0x44F + include eMarks + include : YaShape XH +} \ No newline at end of file diff --git a/glyphs/greek.patel b/glyphs/greek.patel index 9d0b213..346d1d6 100644 --- a/glyphs/greek.patel +++ b/glyphs/greek.patel @@ -155,9 +155,9 @@ create-glyph 'alpha' : glyph-construction { include eMarks local middle : mix SB RIGHTSB 0.425 - local cx : mix SB RIGHTSB 0.65 + local cx : mix SB RIGHTSB 0.7 local cy : mix 0 XH 0.3 - local cx2 : mix SB RIGHTSB 0.575 + local cx2 : mix SB RIGHTSB 0.625 local fine : adviceBlackness 3.5 include : create-stroke :.start-from [RIGHTSB - fine * ITALICCOR - O] XH @@ -199,7 +199,7 @@ create-glyph 'eta' : glyph-construction { create-glyph 'kappa' : glyph-construction { set-width WIDTH assign-unicode 0x3BA - include bMarks + include eMarks include : create-stroke :.start-from SB 0 :.set-width 0 STROKE @@ -238,7 +238,7 @@ create-glyph 'mu' : glyph-construction { create-glyph 'theta' : glyph-construction { assign-unicode 0x3B8 include bMarks - include : smallo CAP 0 [SB - O] [RIGHTSB + O] + include : smallo CAP 0 [SB - O] [RIGHTSB + O] STROKE [SMALLSMOOTHA * 100] [SMALLSMOOTHB * 100] include : HBar [SB + HALFSTROKE] [RIGHTSB - HALFSTROKE] CAPMIDDLE } create-glyph 'beta' : glyph-construction { @@ -293,7 +293,7 @@ create-glyph 'delta' : glyph-construction { assign-unicode 0x3B4 include bMarks - local xNeck : mix SB RIGHTSB 0.05 + local xNeck : mix SB RIGHTSB 0.125 local bar : mix 0 XH 0.96 local xOTLeft : mix SB RIGHTSB 0.5 local fine : STROKE * 0.5 @@ -355,7 +355,7 @@ create-glyph 'xi' : glyph-construction { include ifMarks include : HBar SB [RIGHTSB + O] [CAP - HALFSTROKE] - local xbar : mix SB RIGHTSB 0.925 + local xbar : mix SB RIGHTSB 0.85 local ybar : mix 0 CAP 0.55 include : create-stroke :.start-from xbar [CAP - STROKE] @@ -497,7 +497,7 @@ create-glyph 'omega' : glyph-construction { } create-glyph 'phi' : glyph-construction { - assign-unicode 0x3C6 + assign-unicode 0x3D5 include ifMarks local fine : adviceBlackness 3.5 local y1 0 @@ -507,6 +507,27 @@ create-glyph 'phi' : glyph-construction { include : VBar MIDDLE y1 y2 fine include : VBar MIDDLE [y2 - HALFSTROKE] CAP } +create-glyph 'varphi' : glyph-construction { + assign-unicode 0x3C6 + include pMarks + local fine : adviceBlackness 3.5 + local x0 : [mix SB RIGHTSB 0.1] + fine + local y0 : XH - STROKE * 0.2 + local y1 : mix 0 XH 0.75 + local x1 : SB + fine * ITALICCOR + O + local y3 : XH / 2 + local y4 : XH * 0.65 + + include : create-stroke + :.start-from x0 y0 + :.set-width 0 fine + :.curve-to x1 y1 x1 [XH / 2] + :.arc-vh-to MIDDLE [fine + O] + :.arc-hv-to [WIDTH - x1] [XH / 2] + :.arc-vh-to [mix [WIDTH - x1] [MIDDLE + fine / 2] 0.5] [XH - fine - O] + :.arc-hv-to [MIDDLE + fine / 2] y3 + :.line-to [MIDDLE + fine / 2] DESCENDER +} create-glyph 'psi' : glyph-construction { assign-unicode 0x3C8 @@ -534,6 +555,14 @@ create-glyph 'chi' : glyph-construction { include : xStrand SB XH RIGHTSB DESCENDER 0.05 0.4 0.1 } +# Variant letters + +create-glyph 'pomega' : glyph-construction { + assign-unicode 0x3D6 + include glyphs.omega AS_BASE + include : HBar SB RIGHTSB [XH - HALFSTROKE] +} + ### Polytonic symbols define [GreekLRDoubleMark id unicode leftGlyph rightGlyph] : create-glyph id : glyph-construction { assign-unicode unicode diff --git a/glyphs/latin-basic-capital.patel b/glyphs/latin-basic-capital.patel index 7d1d398..ddfd349 100644 --- a/glyphs/latin-basic-capital.patel +++ b/glyphs/latin-basic-capital.patel @@ -186,23 +186,19 @@ create-glyph 'K' : glyph-construction { } ### B D P R -create-glyph 'B' : glyph-construction { - set-width WIDTH - assign-unicode 'B' - include capitalMarks - - local bowl 451 +define [BShape top] : glyph-construction { + local bowl : top * 0.585 local tkappa [COKAPPA - 0.22] local bkappa [COKAPPA - 0.2] - local turntop : [CAP + [bowl - STROKE]] / 2 + local turntop : [top + [bowl - STROKE]] / 2 local turnbottom : bowl / 2 include : create-stroke - :.start-from SB CAP + :.start-from SB top :.heads-to RIGHTWARD :.set-width 0 STROKE - :.line-to [RIGHTSB - SB * 0.5 - turnbottom] CAP + :.line-to [RIGHTSB - SB * 0.5 - turnbottom] top :.arc-hv-to [RIGHTSB - SB * 0.5] turntop :.arc-vh-to [RIGHTSB - SB * 0.5 - turnbottom] [bowl - STROKE] :.line-to SB [bowl - STROKE] @@ -222,9 +218,15 @@ create-glyph 'B' : glyph-construction { :.start-from SB 0 :.heads-to UPWARD :.set-width 0 STROKE - :.line-to SB CAP + :.line-to SB top :.heads-to UPWARD } +create-glyph 'B' : glyph-construction { + set-width WIDTH + assign-unicode 'B' + include capitalMarks + include : BShape CAP +} create-glyph 'D' : glyph-construction { set-width WIDTH @@ -414,26 +416,23 @@ create-glyph 'E' : glyph-construction { include : create-stroke :.start-from [SB * 1.5] 0 :.set-width STROKE 0 :.heads-to RIGHTWARD :.line-to RIGHTSB 0 :.heads-to RIGHTWARD } +define [HShape top] : glyph-construction { + include : create-stroke :.start-from SB 0 :.heads-to UPWARD :.set-width 0 STROKE + :.line-to SB top :.heads-to UPWARD + include : create-stroke :.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0 + :.line-to RIGHTSB top :.heads-to UPWARD + include : create-stroke :.start-from SB [top / 2] :.set-width HALFSTROKE HALFSTROKE :.heads-to RIGHTWARD + :.line-to RIGHTSB [top / 2] :.heads-to RIGHTWARD +} create-glyph 'H' : glyph-construction { set-width WIDTH assign-unicode 'H' include capitalMarks - - include : create-stroke :.start-from SB 0 :.heads-to UPWARD :.set-width 0 STROKE - :.line-to SB CAP :.heads-to UPWARD - include : create-stroke :.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0 - :.line-to RIGHTSB CAP :.heads-to UPWARD - include : create-stroke :.start-from SB [CAP / 2] :.set-width HALFSTROKE HALFSTROKE :.heads-to RIGHTWARD - :.line-to RIGHTSB [CAP / 2] :.heads-to RIGHTWARD + include : HShape CAP } - -create-glyph 'L' : glyph-construction { - set-width WIDTH - assign-unicode 'L' - include capitalMarks - +define [LShape top] : glyph-construction { include : create-stroke - :.start-from [SB * 1.5] CAP + :.start-from [SB * 1.5] top :.set-width STROKE 0 :.heads-to DOWNWARD :.line-to [SB * 1.5] 0 @@ -445,6 +444,12 @@ create-glyph 'L' : glyph-construction { :.line-to RIGHTSB 0 :.heads-to RIGHTWARD } +create-glyph 'L' : glyph-construction { + set-width WIDTH + assign-unicode 'L' + include capitalMarks + include : LShape CAP +} create-glyph 'I.straight' : glyph-construction { dont-export @@ -571,28 +576,30 @@ create-glyph 'N' : glyph-construction { :.start-from [SB + halftopstroke] CAP :.heads-to DOWNWARD :.set-width topstroke 0 :.line-to [RIGHTSB - topstroke - halftopstroke] 0 :.heads-to DOWNWARD } -create-glyph 'M' : glyph-construction { - set-width WIDTH - assign-unicode 'M' - include capitalMarks - +define [MShape top] : glyph-construction { local topstroke : adviceBlackness 5 local halftopstroke : topstroke / 2 include : create-stroke :.start-from SB 0 :.heads-to UPWARD :.set-width 0 STROKE - :.line-to SB [CAP * 0.2] :.heads-to UPWARD - :.line-to SB CAP :.heads-to UPWARD :.set-width 0 topstroke + :.line-to SB [top * 0.2] :.heads-to UPWARD + :.line-to SB top :.heads-to UPWARD :.set-width 0 topstroke include : create-stroke :.start-from RIGHTSB 0 :.heads-to UPWARD :.set-width STROKE 0 - :.line-to RIGHTSB [CAP * 0.2] :.heads-to UPWARD - :.line-to RIGHTSB CAP :.heads-to UPWARD :.set-width topstroke 0 + :.line-to RIGHTSB [top * 0.2] :.heads-to UPWARD + :.line-to RIGHTSB top :.heads-to UPWARD :.set-width topstroke 0 include : create-stroke - :.start-from [SB + halftopstroke] CAP :.heads-to DOWNWARD :.set-width topstroke 0 - :.line-to [MIDDLE - halftopstroke] [CAP * 0.3] :.heads-to DOWNWARD + :.start-from [SB + halftopstroke] top :.heads-to DOWNWARD :.set-width topstroke 0 + :.line-to [MIDDLE - halftopstroke] [top * 0.3] :.heads-to DOWNWARD include : create-stroke - :.start-from [MIDDLE + halftopstroke] [CAP * 0.3] :.heads-to UPWARD :.set-width topstroke 0 - :.line-to [RIGHTSB - halftopstroke] CAP :.heads-to UPWARD + :.start-from [MIDDLE + halftopstroke] [top * 0.3] :.heads-to UPWARD :.set-width topstroke 0 + :.line-to [RIGHTSB - halftopstroke] top :.heads-to UPWARD +} +create-glyph 'M' : glyph-construction { + set-width WIDTH + assign-unicode 'M' + include capitalMarks + include : MShape CAP } ### S diff --git a/makefile b/makefile index 3d86826..25f0ded 100644 --- a/makefile +++ b/makefile @@ -1,5 +1,5 @@ SUPPORT_FILES = support/glyph.js support/stroke.js parameters.js -GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/overmarks.patel glyphs/latin-basic-capital.patel glyphs/latin-basic-lower.patel glyphs/greek.patel glyphs/latin-extend.patel glyphs/numbers.patel glyphs/symbol-ascii.patel glyphs/symbol-extend.patel glyphs/autobuilds.patel +GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/overmarks.patel glyphs/latin-basic-capital.patel glyphs/latin-basic-lower.patel glyphs/greek.patel glyphs/cyrillic-basic.patel glyphs/latin-extend.patel glyphs/numbers.patel glyphs/symbol-ascii.patel glyphs/symbol-extend.patel glyphs/autobuilds.patel OBJDIR = build ifeq ($(OS),Windows_NT) diff --git a/parameters.patel b/parameters.patel index c085a80..2950ab1 100644 --- a/parameters.patel +++ b/parameters.patel @@ -39,7 +39,7 @@ define regular ( .family 'Iosevka' .style 'Regular' .weight 400 - .version 'r0.0.5' + .version 'r0.0.6' .variantSelector (.) .copyright 'Copyright (c) 2015 Belleve Invis.' )