diff --git a/buildglyphs.patel b/buildglyphs.patel
index 7176ba145..94fa57595 100644
--- a/buildglyphs.patel
+++ b/buildglyphs.patel
@@ -166,7 +166,7 @@ define [buildFont para recursive] : begin {
}
define [StdAnchorGroup] : begin {
local a : anchorDeriv.apply null arguments
- set a.anchors.overlay (.type BASE .x [mix a.anchors.above.x a.anchors.below.x 0.5] .y [mix a.anchors.above.y a.anchors.below.y 0.5])
+ set a.anchors.overlay (.type BASE .x [mix a.anchors.below.x a.anchors.above.x BARPOS] .y [mix a.anchors.below.y a.anchors.above.y BARPOS])
return a
}
diff --git a/features/common.fea b/features/common.fea
index c9b1a3dec..1ca68cf58 100644
--- a/features/common.fea
+++ b/features/common.fea
@@ -21,11 +21,15 @@ lookup ccmpManual2 {
sub revCommaAbove perispomeniAbove by dasiaperispomeni;
} ccmpManual2;
+lookup ccmpManual3 {
+ sub b dotAbove by bdot;
+ sub d dotAbove by ddot;
+} ccmpManual3;
+
feature ccmp {
script latn;
language dflt;
lookup ccmpManual1;
- lookup ccmpManual2;
script grek;
language dflt;
lookup ccmpManual1;
@@ -33,11 +37,9 @@ feature ccmp {
script cyrl;
language dflt;
lookup ccmpManual1;
- lookup ccmpManual2;
script dflt;
language dflt;
lookup ccmpManual1;
- lookup ccmpManual2;
} ccmp;
feature mark {
diff --git a/glyphs/autobuilds.patel b/glyphs/autobuilds.patel
index 8247cbbbb..1edc20c63 100644
--- a/glyphs/autobuilds.patel
+++ b/glyphs/autobuilds.patel
@@ -20,10 +20,24 @@ define customDecompositions (
."\u0122" "G\u0326"
."\u0123" "g\u0312"
- # autobuild IPA glyphs
+ # autobuild Latin glyphs
+ ."\u0197" "I\u0335"
+ ."\u019A" "l\u0335"
+ ."\u0248" "J\u0335"
+ ."\u0249" "j\u0335"
+ ."\u0268" "i\u0335"
+ ."\u01B5" "Z\u0335"
+ ."\u01B6" "z\u0335"
+ ."\u1D7B" "\u026A\u0335"
+ ."\u1D7C" "\u0269\u0335"
+
+ ."\u1D7F" "\u028A\u0336"
+ ."\u0289" "u\u0336"
+
."\u0290" "z\u0322"
."\u0256" "d\u0322"
."\u0273" "n\u0322"
+ ."\u1D91" "\u0257\u0322"
# Cyrillic composite characters
."\u0498" "\u0417\u0327"
@@ -340,7 +354,7 @@ createSuperscripts : list {
list 0x1DA3 'turnh'
list 0x1DA5 'latiniota'
list 0x1DA6 'smcpI'
- list 0x1DA7 'smcpIbar'
+ list 0x1DA7 'smcpIbarOver'
list 0x1DA8 'jcurlytail'
list 0x1DAB 'smcpL'
list 0x1DA9 'lrtail'
@@ -351,7 +365,7 @@ createSuperscripts : list {
list 0x1DB2 'varphi'
list 0x1DB3 'srtail'
list 0x1DB4 'esh'
- list 0x1DB6 'ubar'
+ list 0x1DB6 'ulongBarOver'
list 0x1DB7 'latinupsilon1'
list 0x1DB9 'latinupsilon2'
list 0x1DBA 'turnv'
diff --git a/glyphs/latin-basic-capital.patel b/glyphs/latin-basic-capital.patel
index e62b875b8..e953dec47 100644
--- a/glyphs/latin-basic-capital.patel
+++ b/glyphs/latin-basic-capital.patel
@@ -510,6 +510,7 @@ create-glyph 'J.straight' : glyph-construction {
set-width WIDTH
dont-export
include capitalMarks
+ set-anchor 'overlay' BASE [RIGHTSB - STROKE - JBALANCE] [CAP * BARPOS]
local slope [STROKE * 0.00092]
local expand 0.35
@@ -530,7 +531,7 @@ create-glyph 'J.shorthook' : glyph-construction {
dont-export
include capitalMarks
- local slope [STROKE * 0.00092]
+ local slope [STROKE * 0.00092]
local expand 0.35
local coexpand [[1 - expand] / 2]
local kappa KAPPA_HOOK
diff --git a/glyphs/latin-basic-lower.patel b/glyphs/latin-basic-lower.patel
index b463aa3c7..e0c25ba6c 100644
--- a/glyphs/latin-basic-lower.patel
+++ b/glyphs/latin-basic-lower.patel
@@ -377,6 +377,7 @@ create-glyph 'dotlessj.straight' : glyph-construction {
dont-export
include pMarks
set-anchor 'above' BASE [MIDDLE + JBALANCE] XH
+ set-anchor 'overlay' BASE [MIDDLE + JBALANCE] [XH / 2]
include : create-stroke
:.start-from [MIDDLE + JBALANCE] XH
:.heads-to DOWNWARD
diff --git a/glyphs/latin-extend-basis.patel b/glyphs/latin-extend-basis.patel
index b9bcc49a1..950b8e57a 100644
--- a/glyphs/latin-extend-basis.patel
+++ b/glyphs/latin-extend-basis.patel
@@ -362,10 +362,12 @@ create-glyph 'ezh' : glyph-construction {
}
create-glyph 'revEzh' : glyph-construction {
assign-unicode 0x1B8
+ include capitalMarks
include : RevEzhShape CAP 0
}
create-glyph 'revezh' : glyph-construction {
assign-unicode 0x1B9
+ include pMarks
include : RevEzhShape XH DESCENDER
}
create-glyph 'esh' : glyph-construction {
diff --git a/glyphs/latin-extend-decorated.patel b/glyphs/latin-extend-decorated.patel
index e84964de4..eb274a9fb 100644
--- a/glyphs/latin-extend-decorated.patel
+++ b/glyphs/latin-extend-decorated.patel
@@ -38,7 +38,7 @@ 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
+ local middle : mix 0 CAP BARPOS
local middlex [tp [Upright] glyphs.l.anchors.above].x
include : create-stroke
:.start-from [middlex - LONGJUT * 0.8] [middle - LONGJUT * 0.4]
@@ -86,32 +86,11 @@ create-glyph 'ldot' : glyph-construction {
Ring [[mix STROKE CAP 0.5] + DOTRADIUS] [[mix STROKE CAP 0.5] - DOTRADIUS] [[mix SB RIGHTSB 1] - DOTSIZE] [mix SB RIGHTSB 1]
}
}
-create-glyph 'ibar' : glyph-construction {
- assign-unicode 0x268
- include glyphs.'dotlessi.serifed' AS_BASE
- include glyphs.dotAbove
- include : HOverlayBar [mix MIDDLE SB 0.75] [mix MIDDLE RIGHTSB 0.75] [XH * 0.525]
-}
-create-glyph 'ubar' : glyph-construction {
- assign-unicode 0x289
- include glyphs.u AS_BASE
- include : HOverlayBar [mix 0 SB 0.5] [mix WIDTH RIGHTSB 0.5] [XH * 0.525]
-}
create-glyph 'obar' : glyph-construction {
assign-unicode 0x275
include glyphs.o AS_BASE
include : HOverlayBar [SB - O] [RIGHTSB + O] [XH * 0.5]
}
-create-glyph 'latinupsilon1bar' : glyph-construction {
- assign-unicode 0x1D7F
- include glyphs.latinupsilon1 AS_BASE
- include : HOverlayBar [mix 0 SB 0.5] [mix WIDTH RIGHTSB 0.5] [XH * 0.525]
-}
-create-glyph 'smcpIbar' : glyph-construction {
- assign-unicode 0x1D7B
- include glyphs.smcpI AS_BASE
- include : HOverlayBar [MIDDLE - LONGJUT * 0.6] [MIDDLE + LONGJUT * 0.6] [XH * 0.525]
-}
create-glyph 'glottalstopbar' : glyph-construction {
assign-unicode 0x2A1
include glyphs.glottalstop AS_BASE
@@ -176,12 +155,12 @@ create-glyph 'bhooktop' : glyph-construction {
include : oLeft
include : HooktopLeftBar
}
-create-glyph 'dhooktop' : glyph-construction {
+create-glyph 'scriptghooktop' : glyph-construction {
assign-unicode 0x260
include glyphs.scriptg AS_BASE
include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] XH HOOKX [-HOOK]
}
-create-glyph 'scriptghooktop' : glyph-construction {
+create-glyph 'dhooktop' : glyph-construction {
assign-unicode 0x257
include bMarks
include glyphs.'a.italic'
@@ -190,12 +169,20 @@ create-glyph 'scriptghooktop' : glyph-construction {
create-glyph 'Chooktop' : glyph-construction {
assign-unicode 0x187
include glyphs.C AS_BASE
- include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] [CAP - HOOK] HOOKX [-HOOK * 1.5]
+ include : VBarRight RIGHTSB [CAP - HOOK] CAP
+ include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] CAP HOOKX [-HOOK]
}
create-glyph 'chooktop' : glyph-construction {
assign-unicode 0x188
include glyphs.c AS_BASE
- include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] [XH - HOOK] HOOKX [-HOOK * 1.5]
+ include : VBarRight RIGHTSB [XH - HOOK] XH
+ include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] XH HOOKX [-HOOK]
+}
+create-glyph 'smcpGhooktop' : glyph-construction {
+ assign-unicode 0x29B
+ include glyphs.smcpG AS_BASE
+ include : VBarRight RIGHTSB [XH - HOOK] XH
+ include : VerticalHook [RIGHTSB - HALFSTROKE * ITALICCOR] XH HOOKX [-HOOK]
}
# Left-tail
create-glyph 'fltail' : glyph-construction {
@@ -463,12 +450,14 @@ define [ErTail] : glyph-construction {
}
create-glyph 'er' : glyph-construction {
assign-unicode 0x25A
+ include eMarks
local f : Thinner ('schwa') 0.85
include f.schwa
include : ErTail
}
create-glyph 'revlatinepsiloner' : glyph-construction {
assign-unicode 0x25D
+ include eMarks
local f : Thinner ('revlatinepsilon') 0.85
include f.revlatinepsilon
include : ErTail
diff --git a/glyphs/overmarks.patel b/glyphs/overmarks.patel
index bcf1c3d78..5ab9a986f 100644
--- a/glyphs/overmarks.patel
+++ b/glyphs/overmarks.patel
@@ -692,6 +692,18 @@ create-glyph 'tildeOver' : glyph-construction {
apply-transform : Translate 0 [XH / 2 - [mix aboveMarkTop aboveMarkBot 0.5]]
apply-transform : Italify
}
+create-glyph 'barOver' : glyph-construction {
+ set-width 0
+ assign-unicode 0x335
+ set-anchor 'overlay' MARK markMiddle [XH / 2] markMiddle [XH / 2]
+ include : HOverlayBar [markMiddle - LONGJUT * 0.75] [markMiddle + LONGJUT * 0.75] [XH / 2]
+}
+create-glyph 'longBarOver' : glyph-construction {
+ set-width 0
+ assign-unicode 0x336
+ set-anchor 'overlay' MARK markMiddle [XH / 2] markMiddle [XH / 2]
+ include : HOverlayBar [[mix 0 SB 0.5] - WIDTH] [[mix WIDTH RIGHTSB 0.5] - WIDTH] [XH / 2]
+}
# Double-character arcs
create-glyph 'tieAbove' : glyph-construction {
set-width 0
diff --git a/testdrive/index.html b/testdrive/index.html
index cfa5f5e2d..283f019e1 100644
--- a/testdrive/index.html
+++ b/testdrive/index.html
@@ -199,7 +199,7 @@
];
var sampleSentences = [
- {lang: 'English', sample: 'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.'},
+ {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: 'IPA', sample: '[aɪ kæn iːt glɑːs ænd ɪt dɐz nɒt hɜːt miː]'},
{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: 'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.'},