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: 'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.'},