diff --git a/glyphs/autobuilds.patel b/glyphs/autobuilds.patel index d75aa69..0cf9329 100644 --- a/glyphs/autobuilds.patel +++ b/glyphs/autobuilds.patel @@ -35,6 +35,7 @@ define customDecompositions ( ."\u0289" "u\u0336" ."\u0244" "U\u0336" ."\u01E5" "g\u0336" + ."\u01BB" "2\u0336" ."\u0290" "z\u0322" ."\u0256" "d\u0322" diff --git a/glyphs/latin-basic-capital.patel b/glyphs/latin-basic-capital.patel index c71f917..af62b79 100644 --- a/glyphs/latin-basic-capital.patel +++ b/glyphs/latin-basic-capital.patel @@ -137,12 +137,7 @@ define [YShape top] : glyph-construction { local cross [top * 0.4] include : halfXStrand SB top MIDDLE cross 0.1 0.4 0.28 include : halfXStrand RIGHTSB top MIDDLE cross 0.1 0.4 0.28 - include : create-stroke - :.start-from MIDDLE 0 - :.set-width HALFSTROKE HALFSTROKE - :.heads-to UPWARD - :.line-to MIDDLE [cross + HALFSTROKE] - :.heads-to UPWARD + include : VBar MIDDLE 0 [cross + HALFSTROKE] } create-glyph 'Y' : glyph-construction { set-width WIDTH @@ -151,24 +146,12 @@ create-glyph 'Y' : glyph-construction { include : YShape CAP } -create-glyph 'K' : glyph-construction { - set-width WIDTH - assign-unicode 'K' - include capitalMarks - +define [KShape] : glyph-construction { local TURN [CAP * 0.95] local rturn [XH * 0.1] local right [RIGHTSB - O] 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 CAP :.heads-to DOWNWARD @@ -184,7 +167,13 @@ create-glyph 'K' : glyph-construction { :.set-width HALFSTROKE HALFSTROKE :.curve-to [right - HALFSTROKE] [rturn + 0.2 * [XH - rturn]] MIDDLE [CAPMIDDLE + HALFSTROKE] :.set-width [fine / 2] [fine / 2] - +} +create-glyph 'K' : glyph-construction { + set-width WIDTH + assign-unicode 'K' + include capitalMarks + include : VBarLeft SB 0 CAP + include : KShape } ### B D P R @@ -246,26 +235,27 @@ create-glyph 'D' : glyph-construction { curl [SB - O] 0 [heading LEFTWARD] } } -define [PShape top] : glyph-construction { +define [PShape top _mul bp] : glyph-construction { + local mul : fallback _mul 1.25 local bowlTop [top * 1] - local bowlBottom [[top - STROKE] * 0.55 - HALFSTROKE] + local bowlBottom [[top - STROKE] * [fallback bp 0.55] - HALFSTROKE] local turn : mix bowlTop bowlBottom [SMOOTHB / [SMOOTHA + SMOOTHB]] local turnRadius : [bowlTop - bowlBottom] * 0.45 include : spiro { widths.rhs - flat [SB * 1.25 - O] bowlTop [heading RIGHTWARD] + flat [SB * mul - O] bowlTop [heading RIGHTWARD] curl [RIGHTSB - turnRadius - CORRECTION_OMIDS] bowlTop archv g4 [RIGHTSB - O] turn arcvh flat [RIGHTSB - turnRadius + CORRECTION_OMIDS] bowlBottom - curl [SB * 1.25 - O] bowlBottom [heading LEFTWARD] + curl [SB * mul - O] bowlBottom [heading LEFTWARD] } - include : VBarLeft [SB * 1.25] 0 top + include : VBarLeft [SB * mul] 0 top } define [RShape top] : glyph-construction { - include : PShape top + include : PShape top 1 local TURN [XH * 0.1] local right [RIGHTSB - O] include : create-stroke @@ -337,7 +327,7 @@ create-glyph 'O' : glyph-construction { assign-unicode 'O' include capitalMarks - include : smallo CAP 0 [SB - O] [RIGHTSB + O] nothing SMOOTHA SMOOTHB + include : smallo CAP 0 SB RIGHTSB nothing SMOOTHA SMOOTHB } create-glyph 'Q' : glyph-construction { diff --git a/glyphs/latin-basic-lower.patel b/glyphs/latin-basic-lower.patel index 7cc9887..ce53cad 100644 --- a/glyphs/latin-basic-lower.patel +++ b/glyphs/latin-basic-lower.patel @@ -93,9 +93,9 @@ create-glyph 'g' : glyph-construction { local groundy : [mix DESCENDER [XH * GBARPOS] 0.7] + HALFSTROKE include : spiro { g4 [mix SB RIGHTSB 0.3] [mix XH [XH * GBARPOS - O] 0.95] [widths 0 [STROKE * 0.7]] - alsothru [-0.6] 0.5 [widths 0 [STROKE * 0.95]] - flat [mix SB RIGHTSB 0.425] groundy [widths 0 STROKE] - curl [mix RIGHTSB SB 0.425] groundy + alsothru [-1.2] 0.5 [widths HALFSTROKE HALFSTROKE] + flat [mix SB RIGHTSB 0.435] groundy [widths 0 STROKE] + curl [mix RIGHTSB SB 0.435] groundy archv 4 g4 grightx [mix [DESCENDER + O] groundy 0.53] arcvh @@ -103,7 +103,7 @@ create-glyph 'g' : glyph-construction { archv g4 gleftx [mix [DESCENDER + O] groundy 0.53] arcvh - g4 [mix SB RIGHTSB 0.425] groundy + g4 [mix SB RIGHTSB 0.435] groundy } start-from [RIGHTSB + 0.25 * SB] XH line-to [RIGHTSB + 0.25 * SB] [XH - STROKE] @@ -221,9 +221,9 @@ create-glyph 'a.upright' : glyph-construction { dont-export include eMarks set-anchor 'trailing' BASE [RIGHTSB - markHalfStroke] 0 - local bartop [XH * BARPOS + HALFSTROKE] + local bartop [XH * BARPOS * 1.02 + HALFSTROKE] local lowmiddle : mix SB [RIGHTSB - STROKE] [linreg 80 0.55 120 0.65 STROKE] - local barsmooth : mix SB RIGHTSB 0.6 + local barsmooth : mix SB RIGHTSB 0.65 include : spiro { widths.lhs flat RIGHTSB 0 [heading UPWARD] @@ -236,7 +236,7 @@ create-glyph 'a.upright' : glyph-construction { flat [RIGHTSB + O] bartop [heading LEFTWARD] curl barsmooth bartop archv - g4 [SB + O] [bartop * 0.45] + g4 [SB + O] [bartop * 0.475] arcvh 16 g4 [lowmiddle + CORRECTION_OMIDS] O archv diff --git a/glyphs/latin-extend-basis.patel b/glyphs/latin-extend-basis.patel index 37b7295..9705151 100644 --- a/glyphs/latin-extend-basis.patel +++ b/glyphs/latin-extend-basis.patel @@ -91,10 +91,10 @@ define aeepart : glyph-construction { } define aeapart : glyph-construction { - local bartop [XH * BARPOS + HALFSTROKE] + local bartop [XH * BARPOS * 1.02 + HALFSTROKE] local abarRight : MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX local lowmiddle : [mix [SB + MVERTSTROKE] [abarRight - MVERTSTROKE] 0.5] + MVERTSTROKE * globalTransform.yx - local barsmooth : mix SB abarRight 0.6 + local barsmooth : mix SB abarRight 0.7 local sma : SMALLSMOOTHA * 0.6 local smb : SMALLSMOOTHB * 0.6 @@ -108,14 +108,13 @@ define aeapart : glyph-construction { arcvh g4 lowmiddle O archv - g4 [SB + O * 2] [mix 0 bartop [smb / [sma + smb]]] + g4 [SB + O * 2] [mix 0 bartop 0.5] arcvh flat barsmooth bartop curl [abarRight - 1] bartop [heading RIGHTWARD] } } define oeopart : glyph-construction { - local abarRight : MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX include : smallo XH 0 [SB + O] [abarRight + O] MVERTSTROKE [SMALLSMOOTHA * 0.6] [SMALLSMOOTHB * 0.6] } @@ -414,6 +413,57 @@ create-glyph 'hwair' : glyph-construction { } } +create-glyph 'Gha' : glyph-construction { + assign-unicode 0x1A2 + include capitalMarks + local abarRight : MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX + include : smallo CAP 0 [SB + O] abarRight MVERTSTROKE [SMALLSMOOTHA * 0.6] [SMALLSMOOTHB * 0.6] + include : VBarRight [RIGHTSB - O * 2] DESCENDER CAP MVERTSTROKE + include : spiro { + widths.lhs MVERTSTROKE + flat MIDDLE [CAP - SMALLSMOOTHB * 0.6] [heading RIGHTWARD] + curl [MIDDLE + 1] [CAP - SMALLSMOOTHB * 0.6] [heading RIGHTWARD] + alsothru 0.5 0.15 + g4 [RIGHTSB - MVERTSTROKE * CORRECTION_HX] CAP [widths 0 MVERTSTROKE] + } +} + +create-glyph 'gha' : glyph-construction { + assign-unicode 0x1A3 + include pMarks + local abarRight : MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX + include : smallo XH 0 [SB + O] abarRight MVERTSTROKE [SMALLSMOOTHA * 0.6] [SMALLSMOOTHB * 0.6] + include : VBarRight [RIGHTSB - O * 2] DESCENDER XH MVERTSTROKE + include : spiro { + widths.lhs MVERTSTROKE + flat MIDDLE [XH - SMALLSMOOTHB * 0.6] [heading RIGHTWARD] + curl [MIDDLE + 1] [XH - SMALLSMOOTHB * 0.6] [heading RIGHTWARD] + alsothru 0.5 0.15 + g4 [RIGHTSB - MVERTSTROKE * CORRECTION_HX] XH [widths 0 MVERTSTROKE] + } +} + +create-glyph 'looprevesh' : glyph-construction { + assign-unicode 0x1AA + include ifMarks + local fine : adviceBlackness 5 + include : spiro { + widths.center fine + g4 MIDDLE [CAP - fine * 1.5] [heading DOWNWARD] + arcvh + g4 [MIDDLE - fine * 1] [CAP - fine * 2.5] [heading LEFTWARD] + archv + g4 [MIDDLE - fine * 2] [CAP - fine * 1.5] [heading UPWARD] + arcvh + g4 [MIDDLE - fine * 1] [CAP - fine * 0.5] [heading RIGHTWARD] + archv + flat MIDDLE [CAP - fine * 1.5] [widths.heading HALFSTROKE HALFSTROKE DOWNWARD] + curl MIDDLE 0 [heading DOWNWARD] + arcvh + g4 [MIDDLE + HOOKX] [-HOOK] [heading RIGHTWARD] + } +} + create-glyph 'scripta' : glyph-construction { assign-unicode 0x0251 include eMarks @@ -637,6 +687,23 @@ create-glyph 'reve' : glyph-construction { include : RevSmallEShape XH STROKE } +create-glyph 'Yr' : glyph-construction { + assign-unicode 0x1A6 + include ifMarks + local top : CAP * 0.85 + local bp 0.45 + include : PShape top 1 bp + include : VBarLeft SB [top - 1] CAP + + local TURN [XH * 0.1] + local right [RIGHTSB - O] + include : create-stroke + :.start-from [right - HALFSTROKE] DESCENDER + :.heads-to UPWARD + :.set-width HALFSTROKE HALFSTROKE + :.curve-to [right - HALFSTROKE] [mix [DESCENDER + TURN] top 0.2] MIDDLE [[top - STROKE] * bp] +} + # Glottalstop create-glyph 'glottalstop' : glyph-construction { assign-unicode 0x294 diff --git a/glyphs/latin-extend-decorated.patel b/glyphs/latin-extend-decorated.patel index 05366b9..ef5386a 100644 --- a/glyphs/latin-extend-decorated.patel +++ b/glyphs/latin-extend-decorated.patel @@ -233,6 +233,20 @@ create-glyph 'phooktop' : glyph-construction { include : oLeft include : HooktopLeftBar nothing DESCENDER } +create-glyph 'Khooktop' : glyph-construction { + assign-unicode 0x198 + include capitalMarks + include : KShape + include : VBarLeft SB 0 [CAP - HOOK - HALFSTROKE] + include : VerticalHook [SB + HALFSTROKE * CORRECTION_HX] [CAP - HOOK - HALFSTROKE] HOOKX [-HOOK] +} +create-glyph 'khooktop' : glyph-construction { + assign-unicode 0x199 + include bMarks + include : SmallKShape + include : VBarLeft SB 0 [CAP - HOOK - HALFSTROKE] + include : VerticalHook [SB + HALFSTROKE * CORRECTION_HX] [CAP - HOOK - HALFSTROKE] HOOKX [-HOOK] +} create-glyph 'scriptghooktop' : glyph-construction { assign-unicode 0x260 include glyphs.scriptg AS_BASE @@ -367,6 +381,47 @@ create-glyph 'whooktop' : glyph-construction { line-to m2 bottomStroke include : VerticalHook [RIGHTSB - HALFSTROKE * CORRECTION_HX] [XH - HOOK] [HOOKX * 0.65] [-HOOK + HALFSTROKE] } +create-glyph 'Yhooktop' : glyph-construction { + assign-unicode 0x1B3 + include capitalMarks + + local cross [CAP * 0.4] + local TURN [mix cross CAP 0.9] + include : halfXStrand SB CAP MIDDLE cross 0.1 0.4 0.28 + + local x1 : RIGHTSB - HOOKX / 3 + local x2 : mix MIDDLE RIGHTSB 0.52 + local y1 : TURN - HOOK + local y2 : mix cross CAP 0.3 + include : create-stroke + :.start-from [RIGHTSB + HOOKX / 4] [CAP - STROKE] + :.set-width 0 STROKE + :.curve-to [linreg y1 x1 y2 x2 [CAP - STROKE]] [CAP - STROKE] x1 y1 + :.curve-to x2 y2 [MIDDLE + STROKE / 2 * CORRECTION_HX] cross + + include : VBar MIDDLE 0 [cross + HALFSTROKE] +} +create-glyph 'yhooktop' : glyph-construction { + assign-unicode 0x1B4 + include pMarks + + local xbottom : mix SB RIGHTSB 0.28 + local turnp : XH / [XH - DESCENDER] + local xb : mix SB RIGHTSB 0.49 + local yb : mix 0 XH [0.05 * turnp] + + # include : xStrand xbottom DESCENDER RIGHTSB XH 0.1 0.6 0.14 + include : spiro { + widths.center + flat [xbottom + HALFSTROKE * CORRECTION_HX] DESCENDER [heading UPWARD] + curl [xbottom + HALFSTROKE * CORRECTION_HX] [DESCENDER + 1] [heading UPWARD] + alsothruthem ((0 0.05) (0.1 0.19) (0.2125 0.33) (0.44 0.6) (0.93 0.98)) important + g2 [RIGHTSB - HOOKX / 6] [mix DESCENDER [XH - HALFSTROKE] 0.98] + flat [RIGHTSB + HOOKX / 4 - 1] [XH - HALFSTROKE] + curl [RIGHTSB + HOOKX / 4] [XH - HALFSTROKE] + } + include : halfXStrand SB XH xb yb [0.1 * turnp] 0.4 [0.14 * turnp] +} # Left-tail create-glyph 'fltail' : glyph-construction { assign-unicode 0x192 diff --git a/makefile b/makefile index ae4da65..2d5ab0b 100644 --- a/makefile +++ b/makefile @@ -42,6 +42,8 @@ $(OBJDIR)/.pass0-iosevkacc-bolditalic.ttf : $(FILES) | $(OBJDIR) $(ABFEAT) : $(OBJDIR)/.pass0-%.ab.fea : $(OBJDIR)/.pass0-%.ttf -@echo Autobuild feature $@ from $< +$(MAPS) : $(OBJDIR)/%.charmap : $(OBJDIR)/.pass0-%.ttf + -@echo Autobuild CM $@ from $< $(FEATURE) : $(OBJDIR)/.pass0-%.fea : $(OBJDIR)/.pass0-%.ab.fea features/common.fea cat $^ > $@ diff --git a/testdrive/index.html b/testdrive/index.html index 50c6198..22a2ea6 100644 --- a/testdrive/index.html +++ b/testdrive/index.html @@ -224,7 +224,7 @@ ]; var sampleSentences = [ - {lang: 'English', sample: 'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth. Bl̓ood of m̧y ḃlȯod.'}, + {lang: 'English', sample: 'Quirky spud boys can jam after zapping five worthy Polysixes.'}, {lang: 'IPA', sample: '*ɢʷəʔ nraʔ lˁoŋ t.qʰa ʑi̪ə'}, {lang: 'Powerline', sample: ' NORMAL \uE0B0 \uE0A0 master \uE0B1 glyphs/powerline.patel \uE0B0 dos \uE0B3 utf-8 \uE0B3 PatEL \uE0B2 2% \uE0B2 \uE0A1 1:1 '}, {lang: 'Bulgarian', sample: 'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.'},