summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Andersson <rasmus@notion.se>2017-08-25 10:44:50 +0300
committerRasmus Andersson <rasmus@notion.se>2017-08-25 10:44:50 +0300
commit0945b58f8f8a53f84df4116ca9948e9df8903e3e (patch)
tree5adfd239236af4407fa5c7a80c4666a3ad051659
parentc976260ba53f8f3f92def5015841bb77fd52fcce (diff)
downloadinter-0945b58f8f8a53f84df4116ca9948e9df8903e3e.tar.xz
Adds contextual alternates for [] () {} when enclosing upper-case characters
-rw-r--r--Makefile3
-rw-r--r--docs/lab/index.html83
-rw-r--r--src/Interface-Bold.ufo/glyphs/braceleft.cap.glif20
-rw-r--r--src/Interface-Bold.ufo/glyphs/braceright.cap.glif20
-rw-r--r--src/Interface-Bold.ufo/glyphs/braceright.glif37
-rw-r--r--src/Interface-Bold.ufo/glyphs/bracketleft.cap.glif20
-rw-r--r--src/Interface-Bold.ufo/glyphs/bracketleft.glif4
-rw-r--r--src/Interface-Bold.ufo/glyphs/bracketright.cap.glif20
-rw-r--r--src/Interface-Bold.ufo/glyphs/bracketright.glif13
-rw-r--r--src/Interface-Bold.ufo/glyphs/contents.plist12
-rw-r--r--src/Interface-Bold.ufo/glyphs/parenleft.cap.glif79
-rw-r--r--src/Interface-Bold.ufo/glyphs/parenright.cap.glif47
-rw-r--r--src/Interface-Bold.ufo/lib.plist12
-rw-r--r--src/Interface-Regular.ufo/glyphs/braceleft.cap.glif18
-rw-r--r--src/Interface-Regular.ufo/glyphs/braceright.cap.glif18
-rw-r--r--src/Interface-Regular.ufo/glyphs/braceright.glif37
-rw-r--r--src/Interface-Regular.ufo/glyphs/bracketleft.cap.glif18
-rw-r--r--src/Interface-Regular.ufo/glyphs/bracketleft.glif16
-rw-r--r--src/Interface-Regular.ufo/glyphs/bracketright.cap.glif18
-rw-r--r--src/Interface-Regular.ufo/glyphs/bracketright.glif11
-rw-r--r--src/Interface-Regular.ufo/glyphs/contents.plist12
-rw-r--r--src/Interface-Regular.ufo/glyphs/parenleft.cap.glif81
-rw-r--r--src/Interface-Regular.ufo/glyphs/parenright.cap.glif22
-rw-r--r--src/Interface-Regular.ufo/lib.plist12
-rw-r--r--src/features.fea13
25 files changed, 503 insertions, 143 deletions
diff --git a/Makefile b/Makefile
index 30f63be79..741408111 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,8 @@ VERSION := $(shell misc/version.py)
# all styles and alias targets
include build/etc/generated.make
-res_files := src/fontbuild.cfg src/diacritics.txt src/glyphlist.txt src/glyphorder.txt
+res_files := src/fontbuild.cfg src/diacritics.txt src/glyphlist.txt \
+ src/glyphorder.txt src/features.fea
# UFO -> TTF & OTF (note that UFO deps are defined by generated.make)
build/tmp/InterfaceTTF/Interface-%.ttf: $(res_files)
diff --git a/docs/lab/index.html b/docs/lab/index.html
index 0bd963634..9bf69b46e 100644
--- a/docs/lab/index.html
+++ b/docs/lab/index.html
@@ -108,23 +108,10 @@ e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 eA eB eC eD eE eF ea eb ec ed ee ef
f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fA fB fC fD fE fF fa fb fc fd fe ff
`)
-samples.set('Kerning wip', `
-Var Vcr Vdlav Verify Vgi Vox Vqms
-var vcr vdlav verify vgi vox vqms
-Yar Ycr Ydlav Year Ygi Yox Yqms
-yar ycr ydlav year ygi yox yqms
-// \\\\ A\\ VA VJ V/ WA WJ W/ \\W \\w \\V \\v
-AV AW Av Aw WAV WAW wav waw Wav Waw
-FF3345 FA3345 FA8 7F6544 7A6544
-far fcr fdlav fear fgi fox fqms
-Far Fcr Fdlav Fear Fgi Fox Fqms
-Ear Ecr Edlav Eear Egi Eox Eqms
-AO AU AT AY BT BY CT ET Ec
-".x." '.x.' ‘.x.’ “.x.” x.‛ x.‟
-",x," ',x,' ‘,x,’ “,x,” x,‛ x,‟
-L" L' L’ L” L‛ L‟
-version (s -><- i)
-Viewed (e -><- w)
+samples.set('Contextual alternates', `
+(m) (M) (6)
+[m] [M] [6]
+{m} {M} {6}
`)
// From http://justanotherfoundry.com/generator
@@ -155,7 +142,21 @@ ji ug um ob ns dz qe sn hr ap uh ea rc nt yu ae oj zj ud js fu pu cl vs gg
`)
-samples.set('Kerning German sample', `
+samples.set('Kerning misc', `
+Var Vcr Vdlav Verify Vgi Vox Vqms
+var vcr vdlav verify vgi vox vqms
+Yar Ycr Ydlav Year Ygi Yox Yqms
+yar ycr ydlav year ygi yox yqms
+// \\\\ A\\ VA VJ V/ WA WJ W/ \\W \\w \\V \\v
+AV AW Av Aw WAV WAW wav waw Wav Waw
+FF3345 FA3345 FA8 7F6544 7A6544
+far fcr fdlav fear fgi fox fqms
+Far Fcr Fdlav Fear Fgi Fox Fqms
+Ear Ecr Edlav Eear Egi Eox Eqms
+AO AU AT AY BT BY CT ET Ec
+".x." '.x.' ‘.x.’ “.x.” x.‛ x.‟
+",x," ',x,' ‘,x,’ “,x,” x,‛ x,‟
+L" L' L’ L” L‛ L‟
aufkauf aufhalt aufbleib
ver/fl ixt auflassen
ho/f_f e auffassen
@@ -715,14 +716,15 @@ h2 {
width: 275px;
box-sizing:border-box;
position:fixed;
- top:0; right:0; bottom:-1000px;
+ top:0; right:0; bottom:0;
background:#f4f4f4;
border-left:1px solid #ddd;
- border-bottom:1px solid rgba(0,0,0,0.15);
- margin-bottom:24px;
+ /*border-bottom:1px solid rgba(0,0,0,0.15);*/
+ /*margin-bottom:24px;*/
padding: 24px;
user-select:none;
font-family: sans-serif !important;
+ overflow: auto;
}
.options > * {
display: block;
@@ -1082,21 +1084,23 @@ document.head.appendChild(fontCSS)
<div class="checkbox-group">
<span>Features:</span>
- <label><input type="checkbox" class="featopt" name="feat:ss01"> Stylistic set 1 *</label>
- <label><input type="checkbox" class="featopt" name="feat:ss02"> Stylistic set 2</label>
- <label><input type="checkbox" class="featopt" name="feat:ss03"> Stylistic set 3</label>
- <label><input type="checkbox" class="featopt" name="feat:ss04"> Stylistic set 4</label>
- <label><input type="checkbox" class="featopt" name="feat:ss05"> Stylistic set 5</label>
- <label><input type="checkbox" class="featopt" name="feat:ss06"> Stylistic set 6</label>
- <label><input type="checkbox" class="featopt" name="feat:salt"> Stylistic alternates</label>
- <label><input type="checkbox" class="featopt" name="feat:c2sc"> c2sc</label>
- <label><input type="checkbox" class="featopt" name="feat:dlig"> dlig</label>
- <label><input type="checkbox" class="featopt" name="feat:onum"> onum</label>
- <label><input type="checkbox" class="featopt" name="feat:pnum"> pnum</label>
- <label><input type="checkbox" class="featopt" name="feat:tnum"> tnum *</label>
- <label><input type="checkbox" class="featopt" name="feat:lnum"> lnum</label>
- <label><input type="checkbox" class="featopt" name="feat:kern"> kern</label>
- <label><input type="checkbox" class="featopt" name="feat:zero"> (slashed) zero *</label>
+ <!-- <label><input type="checkbox" class="featopt" name="feat:dlig"> Enable dlig</label> -->
+ <!-- <label><input type="checkbox" class="featopt" name="feat:onum"> Enable onum</label> -->
+ <!-- <label><input type="checkbox" class="featopt" name="feat:pnum"> Enable pnum</label> -->
+ <label><input type="checkbox" class="featopt" name="feat:tnum"> Enable tnum *</label>
+ <!-- <label><input type="checkbox" class="featopt" name="feat:lnum"> Enable lnum</label> -->
+ <label><input type="checkbox" class="featopt" name="feat:kern"> Enable kern</label>
+ <label><input type="checkbox" class="featopt" name="feat:case"> Enable case</label>
+ <label><input type="checkbox" class="featopt" name="feat:calt=0"> <em>Disable</em> calt *</label>
+ <label><input type="checkbox" class="featopt" name="feat:zero"> Enable (slashed) zero *</label>
+ <!-- <label><input type="checkbox" class="featopt" name="feat:c2sc"> Enable c2sc</label> -->
+ <label><input type="checkbox" class="featopt" name="feat:ss01"> Enable Stylistic set 1 *</label>
+ <label><input type="checkbox" class="featopt" name="feat:ss02"> Enable Stylistic set 2</label>
+ <label><input type="checkbox" class="featopt" name="feat:ss03"> Enable Stylistic set 3</label>
+ <label><input type="checkbox" class="featopt" name="feat:ss04"> Enable Stylistic set 4</label>
+ <label><input type="checkbox" class="featopt" name="feat:ss05"> Enable Stylistic set 5</label>
+ <label><input type="checkbox" class="featopt" name="feat:ss06"> Enable Stylistic set 6</label>
+ <label><input type="checkbox" class="featopt" name="feat:salt"> Enable Stylistic alternates</label>
<small>* currently implemented</small>
</div>
@@ -1580,9 +1584,10 @@ function main() {
let features = new Set()
for (let e of Array.prototype.slice.call(document.querySelectorAll('input.featopt'))) {
- let feat = e.name.replace(/^feat\:/, '')
- vars.bind('feat-' + feat, e, (e, on) => {
- let val = '"'+feat+'" 1'
+ let p = e.name.replace(/^feat\:/, '').split('=')
+ let name = p[0], value = p[1] || '1'
+ vars.bind('feat-' + name, e, (e, on) => {
+ let val = '"' + name + '" ' + value
if (on) {
features.add(val)
} else {
diff --git a/src/Interface-Bold.ufo/glyphs/braceleft.cap.glif b/src/Interface-Bold.ufo/glyphs/braceleft.cap.glif
new file mode 100644
index 000000000..2ca6681ec
--- /dev/null
+++ b/src/Interface-Bold.ufo/glyphs/braceleft.cap.glif
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="braceleft.cap" format="1">
+ <advance width="1024"/>
+ <outline>
+ <component base="braceleft" yOffset="172"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.gridadjust.original</key>
+ <string>{'width': 920, 'leftMargin': 59, 'rightMargin': 52}</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Bold.ufo/glyphs/braceright.cap.glif b/src/Interface-Bold.ufo/glyphs/braceright.cap.glif
new file mode 100644
index 000000000..ce4fcee57
--- /dev/null
+++ b/src/Interface-Bold.ufo/glyphs/braceright.cap.glif
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="braceright.cap" format="1">
+ <advance width="1024"/>
+ <outline>
+ <component base="braceright" yOffset="172"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.gridadjust.original</key>
+ <string>{'width': 920, 'leftMargin': 54, 'rightMargin': 58}</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Bold.ufo/glyphs/braceright.glif b/src/Interface-Bold.ufo/glyphs/braceright.glif
index 952a4dda6..e8ef88c26 100644
--- a/src/Interface-Bold.ufo/glyphs/braceright.glif
+++ b/src/Interface-Bold.ufo/glyphs/braceright.glif
@@ -3,42 +3,7 @@
<advance width="1024"/>
<unicode hex="007D"/>
<outline>
- <contour>
- <point x="108" y="1956" type="line"/>
- <point x="260" y="1900"/>
- <point x="300" y="1744"/>
- <point x="300" y="1556" type="curve" smooth="yes"/>
- <point x="300" y="1276" type="line" smooth="yes"/>
- <point x="300" y="1000"/>
- <point x="480" y="780"/>
- <point x="916" y="780" type="curve"/>
- <point x="916" y="1008" type="line"/>
- <point x="756" y="1008"/>
- <point x="688" y="1112"/>
- <point x="688" y="1276" type="curve" smooth="yes"/>
- <point x="688" y="1556" type="line" smooth="yes"/>
- <point x="688" y="1844"/>
- <point x="572" y="2092"/>
- <point x="192" y="2196" type="curve"/>
- </contour>
- <contour>
- <point x="192" y="-496" type="line"/>
- <point x="572" y="-388"/>
- <point x="688" y="-144"/>
- <point x="688" y="148" type="curve"/>
- <point x="688" y="424" type="line"/>
- <point x="688" y="588"/>
- <point x="756" y="696"/>
- <point x="916" y="696" type="curve"/>
- <point x="916" y="924" type="line"/>
- <point x="480" y="924"/>
- <point x="300" y="704"/>
- <point x="300" y="424" type="curve"/>
- <point x="300" y="148" type="line"/>
- <point x="300" y="-40"/>
- <point x="260" y="-196"/>
- <point x="108" y="-252" type="curve"/>
- </contour>
+ <component base="braceleft" xScale="-1" xOffset="1024"/>
</outline>
<lib>
<dict>
diff --git a/src/Interface-Bold.ufo/glyphs/bracketleft.cap.glif b/src/Interface-Bold.ufo/glyphs/bracketleft.cap.glif
new file mode 100644
index 000000000..63d4d79be
--- /dev/null
+++ b/src/Interface-Bold.ufo/glyphs/bracketleft.cap.glif
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="bracketleft.cap" format="1">
+ <advance width="1024"/>
+ <outline>
+ <component base="bracketleft" yOffset="64"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.gridadjust.original</key>
+ <string>{'width': 791, 'leftMargin': 154, 'rightMargin': 20}</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Bold.ufo/glyphs/bracketleft.glif b/src/Interface-Bold.ufo/glyphs/bracketleft.glif
index f516afe09..608bc00fe 100644
--- a/src/Interface-Bold.ufo/glyphs/bracketleft.glif
+++ b/src/Interface-Bold.ufo/glyphs/bracketleft.glif
@@ -5,8 +5,8 @@
<outline>
<contour>
<point x="820" y="2348" type="line"/>
- <point x="204" y="2348" type="line"/>
- <point x="204" y="-480" type="line"/>
+ <point x="240" y="2348" type="line"/>
+ <point x="240" y="-480" type="line"/>
<point x="820" y="-480" type="line"/>
<point x="820" y="-144" type="line"/>
<point x="648" y="-144" type="line"/>
diff --git a/src/Interface-Bold.ufo/glyphs/bracketright.cap.glif b/src/Interface-Bold.ufo/glyphs/bracketright.cap.glif
new file mode 100644
index 000000000..4188085f5
--- /dev/null
+++ b/src/Interface-Bold.ufo/glyphs/bracketright.cap.glif
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="bracketright.cap" format="1">
+ <advance width="1024"/>
+ <outline>
+ <component base="bracketright" yOffset="64"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.gridadjust.original</key>
+ <string>{'width': 791, 'leftMargin': 19, 'rightMargin': 154}</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Bold.ufo/glyphs/bracketright.glif b/src/Interface-Bold.ufo/glyphs/bracketright.glif
index eebd60f1d..da6815542 100644
--- a/src/Interface-Bold.ufo/glyphs/bracketright.glif
+++ b/src/Interface-Bold.ufo/glyphs/bracketright.glif
@@ -1,18 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="bracketright" format="1">
- <advance width="768"/>
+ <advance width="1024"/>
<unicode hex="005D"/>
<outline>
- <contour>
- <point x="76" y="2008" type="line"/>
- <point x="252" y="2008" type="line"/>
- <point x="252" y="-144" type="line"/>
- <point x="76" y="-144" type="line"/>
- <point x="76" y="-480" type="line"/>
- <point x="692" y="-480" type="line"/>
- <point x="692" y="2348" type="line"/>
- <point x="76" y="2348" type="line"/>
- </contour>
+ <component base="bracketleft" xScale="-1" xOffset="1024"/>
</outline>
<lib>
<dict>
diff --git a/src/Interface-Bold.ufo/glyphs/contents.plist b/src/Interface-Bold.ufo/glyphs/contents.plist
index 1c4787244..383e06bcb 100644
--- a/src/Interface-Bold.ufo/glyphs/contents.plist
+++ b/src/Interface-Bold.ufo/glyphs/contents.plist
@@ -468,12 +468,20 @@
<string>blackleftpointingtriangle.glif</string>
<key>braceleft</key>
<string>braceleft.glif</string>
+ <key>braceleft.cap</key>
+ <string>braceleft.cap.glif</string>
<key>braceright</key>
<string>braceright.glif</string>
+ <key>braceright.cap</key>
+ <string>braceright.cap.glif</string>
<key>bracketleft</key>
<string>bracketleft.glif</string>
+ <key>bracketleft.cap</key>
+ <string>bracketleft.cap.glif</string>
<key>bracketright</key>
<string>bracketright.glif</string>
+ <key>bracketright.cap</key>
+ <string>bracketright.cap.glif</string>
<key>breve</key>
<string>breve.glif</string>
<key>breveacutecomb</key>
@@ -1316,12 +1324,16 @@
<string>paragraph.glif</string>
<key>parenleft</key>
<string>parenleft.glif</string>
+ <key>parenleft.cap</key>
+ <string>parenleft.cap.glif</string>
<key>parenleftinferior</key>
<string>parenleftinferior.glif</string>
<key>parenleftsuperior</key>
<string>parenleftsuperior.glif</string>
<key>parenright</key>
<string>parenright.glif</string>
+ <key>parenright.cap</key>
+ <string>parenright.cap.glif</string>
<key>parenrightsub</key>
<string>parenrightsub.glif</string>
<key>parenrightsuperior</key>
diff --git a/src/Interface-Bold.ufo/glyphs/parenleft.cap.glif b/src/Interface-Bold.ufo/glyphs/parenleft.cap.glif
new file mode 100644
index 000000000..29f4a0247
--- /dev/null
+++ b/src/Interface-Bold.ufo/glyphs/parenleft.cap.glif
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="parenleft.cap" format="1">
+ <advance width="1024"/>
+ <outline>
+ <component base="parenleft" yOffset="140"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.guides</key>
+ <array>
+ <dict>
+ <key>angle</key>
+ <integer>0</integer>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>1096</integer>
+ <key>y</key>
+ <integer>1640</integer>
+ </dict>
+ <dict>
+ <key>angle</key>
+ <integer>0</integer>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>804</integer>
+ <key>y</key>
+ <integer>1752</integer>
+ </dict>
+ <dict>
+ <key>angle</key>
+ <real>90.0</real>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>364</integer>
+ <key>y</key>
+ <integer>1692</integer>
+ </dict>
+ <dict>
+ <key>angle</key>
+ <real>90.0</real>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>656</integer>
+ <key>y</key>
+ <integer>1584</integer>
+ </dict>
+ </array>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.gridadjust.original</key>
+ <string>{'width': 993, 'leftMargin': 168, 'rightMargin': 55}</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Bold.ufo/glyphs/parenright.cap.glif b/src/Interface-Bold.ufo/glyphs/parenright.cap.glif
new file mode 100644
index 000000000..3119a85d4
--- /dev/null
+++ b/src/Interface-Bold.ufo/glyphs/parenright.cap.glif
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="parenright.cap" format="1">
+ <advance width="1024"/>
+ <outline>
+ <component base="parenright" yOffset="140"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.guides</key>
+ <array>
+ <dict>
+ <key>angle</key>
+ <real>0.0</real>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>x</key>
+ <real>0.0</real>
+ <key>y</key>
+ <real>1238.875</real>
+ </dict>
+ <dict>
+ <key>angle</key>
+ <real>0.0</real>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>x</key>
+ <real>0.0</real>
+ <key>y</key>
+ <real>763.125</real>
+ </dict>
+ </array>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.gridadjust.original</key>
+ <string>{'width': 993, 'leftMargin': 55, 'rightMargin': 139}</string>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Bold.ufo/lib.plist b/src/Interface-Bold.ufo/lib.plist
index c8ce58c4a..fd11f94ae 100644
--- a/src/Interface-Bold.ufo/lib.plist
+++ b/src/Interface-Bold.ufo/lib.plist
@@ -508,11 +508,17 @@
<string>question</string>
<string>questiondown</string>
<string>parenleft</string>
+ <string>parenleft.cap</string>
<string>parenright</string>
+ <string>parenright.cap</string>
<string>bracketleft</string>
+ <string>bracketleft.cap</string>
<string>bracketright</string>
+ <string>bracketright.cap</string>
<string>braceleft</string>
+ <string>braceleft.cap</string>
<string>braceright</string>
+ <string>braceright.cap</string>
<string>at</string>
<string>numbersign</string>
<string>currency</string>
@@ -2705,11 +2711,17 @@
<string>question</string>
<string>questiondown</string>
<string>parenleft</string>
+ <string>parenleft.cap</string>
<string>parenright</string>
+ <string>parenright.cap</string>
<string>bracketleft</string>
+ <string>bracketleft.cap</string>
<string>bracketright</string>
+ <string>bracketright.cap</string>
<string>braceleft</string>
+ <string>braceleft.cap</string>
<string>braceright</string>
+ <string>braceright.cap</string>
<string>at</string>
<string>numbersign</string>
<string>currency</string>
diff --git a/src/Interface-Regular.ufo/glyphs/braceleft.cap.glif b/src/Interface-Regular.ufo/glyphs/braceleft.cap.glif
new file mode 100644
index 000000000..bf5f8c93c
--- /dev/null
+++ b/src/Interface-Regular.ufo/glyphs/braceleft.cap.glif
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="braceleft.cap" format="1">
+ <advance width="768"/>
+ <outline>
+ <component base="braceleft" yOffset="172"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Regular.ufo/glyphs/braceright.cap.glif b/src/Interface-Regular.ufo/glyphs/braceright.cap.glif
new file mode 100644
index 000000000..2d0f0ab51
--- /dev/null
+++ b/src/Interface-Regular.ufo/glyphs/braceright.cap.glif
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="braceright.cap" format="1">
+ <advance width="768"/>
+ <outline>
+ <component base="braceright" yOffset="172"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Regular.ufo/glyphs/braceright.glif b/src/Interface-Regular.ufo/glyphs/braceright.glif
index 84aa0521e..df81bd622 100644
--- a/src/Interface-Regular.ufo/glyphs/braceright.glif
+++ b/src/Interface-Regular.ufo/glyphs/braceright.glif
@@ -3,42 +3,7 @@
<advance width="768"/>
<unicode hex="007D"/>
<outline>
- <contour>
- <point x="-20" y="2032" type="line"/>
- <point x="196" y="1964"/>
- <point x="260" y="1780"/>
- <point x="260" y="1556" type="curve" smooth="yes"/>
- <point x="260" y="1276" type="line" smooth="yes"/>
- <point x="260" y="1000"/>
- <point x="372" y="792"/>
- <point x="768" y="792" type="curve"/>
- <point x="768" y="956" type="line"/>
- <point x="568" y="956"/>
- <point x="484" y="1080"/>
- <point x="484" y="1276" type="curve" smooth="yes"/>
- <point x="484" y="1556" type="line" smooth="yes"/>
- <point x="484" y="1844"/>
- <point x="420" y="2092"/>
- <point x="40" y="2196" type="curve"/>
- </contour>
- <contour>
- <point x="40" y="-496" type="line"/>
- <point x="420" y="-388"/>
- <point x="484" y="-144"/>
- <point x="484" y="148" type="curve" smooth="yes"/>
- <point x="484" y="424" type="line" smooth="yes"/>
- <point x="484" y="620"/>
- <point x="568" y="748"/>
- <point x="768" y="748" type="curve"/>
- <point x="768" y="908" type="line"/>
- <point x="372" y="908"/>
- <point x="260" y="704"/>
- <point x="260" y="424" type="curve" smooth="yes"/>
- <point x="260" y="148" type="line" smooth="yes"/>
- <point x="260" y="-76"/>
- <point x="196" y="-260"/>
- <point x="-20" y="-328" type="curve"/>
- </contour>
+ <component base="braceleft" xScale="-1" xOffset="768"/>
</outline>
<lib>
<dict>
diff --git a/src/Interface-Regular.ufo/glyphs/bracketleft.cap.glif b/src/Interface-Regular.ufo/glyphs/bracketleft.cap.glif
new file mode 100644
index 000000000..e80b0f206
--- /dev/null
+++ b/src/Interface-Regular.ufo/glyphs/bracketleft.cap.glif
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="bracketleft.cap" format="1">
+ <advance width="640"/>
+ <outline>
+ <component base="bracketleft" yOffset="128"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Regular.ufo/glyphs/bracketleft.glif b/src/Interface-Regular.ufo/glyphs/bracketleft.glif
index ad412f0b0..f7676ceb4 100644
--- a/src/Interface-Regular.ufo/glyphs/bracketleft.glif
+++ b/src/Interface-Regular.ufo/glyphs/bracketleft.glif
@@ -4,14 +4,14 @@
<unicode hex="005B"/>
<outline>
<contour>
- <point x="640" y="2304" type="line"/>
- <point x="128" y="2304" type="line"/>
- <point x="128" y="-384" type="line"/>
- <point x="640" y="-384" type="line"/>
- <point x="640" y="-164" type="line"/>
- <point x="360" y="-164" type="line"/>
- <point x="360" y="2084" type="line"/>
- <point x="640" y="2084" type="line"/>
+ <point x="640" y="2240" type="line"/>
+ <point x="128" y="2240" type="line"/>
+ <point x="128" y="-448" type="line"/>
+ <point x="640" y="-448" type="line"/>
+ <point x="640" y="-228" type="line"/>
+ <point x="360" y="-228" type="line"/>
+ <point x="360" y="2020" type="line"/>
+ <point x="640" y="2020" type="line"/>
</contour>
</outline>
<lib>
diff --git a/src/Interface-Regular.ufo/glyphs/bracketright.cap.glif b/src/Interface-Regular.ufo/glyphs/bracketright.cap.glif
new file mode 100644
index 000000000..6de1774f3
--- /dev/null
+++ b/src/Interface-Regular.ufo/glyphs/bracketright.cap.glif
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="bracketright.cap" format="1">
+ <advance width="640"/>
+ <outline>
+ <component base="bracketright" yOffset="128"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Regular.ufo/glyphs/bracketright.glif b/src/Interface-Regular.ufo/glyphs/bracketright.glif
index 9b5de38ae..273bbd4a3 100644
--- a/src/Interface-Regular.ufo/glyphs/bracketright.glif
+++ b/src/Interface-Regular.ufo/glyphs/bracketright.glif
@@ -3,16 +3,7 @@
<advance width="640"/>
<unicode hex="005D"/>
<outline>
- <contour>
- <point x="0" y="2084" type="line"/>
- <point x="280" y="2084" type="line"/>
- <point x="280" y="-164" type="line"/>
- <point x="0" y="-164" type="line"/>
- <point x="0" y="-384" type="line"/>
- <point x="512" y="-384" type="line"/>
- <point x="512" y="2304" type="line"/>
- <point x="0" y="2304" type="line"/>
- </contour>
+ <component base="bracketleft" xScale="-1" xOffset="640"/>
</outline>
<lib>
<dict>
diff --git a/src/Interface-Regular.ufo/glyphs/contents.plist b/src/Interface-Regular.ufo/glyphs/contents.plist
index 075f9e5ce..af81fdc79 100644
--- a/src/Interface-Regular.ufo/glyphs/contents.plist
+++ b/src/Interface-Regular.ufo/glyphs/contents.plist
@@ -468,12 +468,20 @@
<string>blackleftpointingtriangle.glif</string>
<key>braceleft</key>
<string>braceleft.glif</string>
+ <key>braceleft.cap</key>
+ <string>braceleft.cap.glif</string>
<key>braceright</key>
<string>braceright.glif</string>
+ <key>braceright.cap</key>
+ <string>braceright.cap.glif</string>
<key>bracketleft</key>
<string>bracketleft.glif</string>
+ <key>bracketleft.cap</key>
+ <string>bracketleft.cap.glif</string>
<key>bracketright</key>
<string>bracketright.glif</string>
+ <key>bracketright.cap</key>
+ <string>bracketright.cap.glif</string>
<key>breve</key>
<string>breve.glif</string>
<key>breveacutecomb</key>
@@ -1314,12 +1322,16 @@
<string>paragraph.glif</string>
<key>parenleft</key>
<string>parenleft.glif</string>
+ <key>parenleft.cap</key>
+ <string>parenleft.cap.glif</string>
<key>parenleftinferior</key>
<string>parenleftinferior.glif</string>
<key>parenleftsuperior</key>
<string>parenleftsuperior.glif</string>
<key>parenright</key>
<string>parenright.glif</string>
+ <key>parenright.cap</key>
+ <string>parenright.cap.glif</string>
<key>parenrightsub</key>
<string>parenrightsub.glif</string>
<key>parenrightsuperior</key>
diff --git a/src/Interface-Regular.ufo/glyphs/parenleft.cap.glif b/src/Interface-Regular.ufo/glyphs/parenleft.cap.glif
new file mode 100644
index 000000000..cf436bdfa
--- /dev/null
+++ b/src/Interface-Regular.ufo/glyphs/parenleft.cap.glif
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="parenleft.cap" format="1">
+ <advance width="984"/>
+ <outline>
+ <component base="parenleft" yOffset="192"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.guides</key>
+ <array>
+ <dict>
+ <key>angle</key>
+ <real>90.0</real>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>384</integer>
+ <key>y</key>
+ <integer>-128</integer>
+ </dict>
+ <dict>
+ <key>angle</key>
+ <real>90.0</real>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>584</integer>
+ <key>y</key>
+ <integer>4</integer>
+ </dict>
+ <dict>
+ <key>angle</key>
+ <integer>0</integer>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>388</integer>
+ <key>y</key>
+ <integer>1752</integer>
+ </dict>
+ <dict>
+ <key>angle</key>
+ <integer>0</integer>
+ <key>isGlobal</key>
+ <false/>
+ <key>magnetic</key>
+ <integer>5</integer>
+ <key>name</key>
+ <string></string>
+ <key>x</key>
+ <integer>556</integer>
+ <key>y</key>
+ <integer>1640</integer>
+ </dict>
+ </array>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.width-adjustments</key>
+ <array>
+ <integer>-16</integer>
+ </array>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Regular.ufo/glyphs/parenright.cap.glif b/src/Interface-Regular.ufo/glyphs/parenright.cap.glif
new file mode 100644
index 000000000..f20aee477
--- /dev/null
+++ b/src/Interface-Regular.ufo/glyphs/parenright.cap.glif
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glyph name="parenright.cap" format="1">
+ <advance width="984"/>
+ <outline>
+ <component base="parenright" yOffset="192"/>
+ </outline>
+ <lib>
+ <dict>
+ <key>com.typemytype.robofont.mark</key>
+ <array>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>0.94</real>
+ <real>1.0</real>
+ </array>
+ <key>interface.width-adjustments</key>
+ <array>
+ <integer>-16</integer>
+ </array>
+ </dict>
+ </lib>
+</glyph>
diff --git a/src/Interface-Regular.ufo/lib.plist b/src/Interface-Regular.ufo/lib.plist
index beaccb563..d8547ba71 100644
--- a/src/Interface-Regular.ufo/lib.plist
+++ b/src/Interface-Regular.ufo/lib.plist
@@ -591,11 +591,17 @@
<string>question</string>
<string>questiondown</string>
<string>parenleft</string>
+ <string>parenleft.cap</string>
<string>parenright</string>
+ <string>parenright.cap</string>
<string>bracketleft</string>
+ <string>bracketleft.cap</string>
<string>bracketright</string>
+ <string>bracketright.cap</string>
<string>braceleft</string>
+ <string>braceleft.cap</string>
<string>braceright</string>
+ <string>braceright.cap</string>
<string>at</string>
<string>numbersign</string>
<string>currency</string>
@@ -2783,11 +2789,17 @@
<string>question</string>
<string>questiondown</string>
<string>parenleft</string>
+ <string>parenleft.cap</string>
<string>parenright</string>
+ <string>parenright.cap</string>
<string>bracketleft</string>
+ <string>bracketleft.cap</string>
<string>bracketright</string>
+ <string>bracketright.cap</string>
<string>braceleft</string>
+ <string>braceleft.cap</string>
<string>braceright</string>
+ <string>braceright.cap</string>
<string>at</string>
<string>numbersign</string>
<string>currency</string>
diff --git a/src/features.fea b/src/features.fea
index 0272e80e1..338691e27 100644
--- a/src/features.fea
+++ b/src/features.fea
@@ -21,6 +21,8 @@ languagesystem grek dflt;
@UC_SET1 = [ zero one two three four five six seven eight nine Euro Idotaccent Mu dollar lira sterling afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061 afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10050 Ghestrokecyrillic Zhedescendercyrillic Zedescendercyrillic Kadescendercyrillic Kaverticalstrokecyrillic Kabashkircyrillic Endescendercyrillic Haabkhasiancyrillic Esdescendercyrillic Ustraightcyrillic Ustraightstrokecyrillic Hadescendercyrillic Tetsecyrillic Cheverticalstrokecyrillic Shhacyrillic Cheabkhasiancyrillic Chedescenderabkhasiancyrillic Schwacyrillic Dzeabkhasiancyrillic Imacroncyrillic Obarredcyrillic Umacroncyrillic hryvnia tenge uni20BD numero yen ];
+@UC = [ @UC_ROMAN @UC_SET1 ];
+
@LC_SET2 = [ dotlessi sigma1 mugreek afii10065 becyrillic vecyrillic gecyrillic decyrillic iecyrillic zhecyrillic zecyrillic iicyrillic iishortcyrillic kacyrillic elcyrillic emcyrillic encyrillic ocyrillic pecyrillic ercyrillic escyrillic tecyrillic ucyrillic efcyrillic khacyrillic tsecyrillic checyrillic shacyrillic shchacyrillic hardsigncyrillic yericyrillic softsigncyrillic ereversedcyrillic iucyrillic iacyrillic iocyrillic djecyrillic gjecyrillic ecyrillic dzecyrillic icyrillic yicyrillic jecyrillic ljecyrillic njecyrillic tshecyrillic kjecyrillic ushortcyrillic dzhecyrillic gheupturncyrillic ghestrokecyrillic zhedescendercyrillic zedescendercyrillic kadescendercyrillic kaverticalstrokecyrillic kabashkircyrillic endescendercyrillic haabkhasiancyrillic esdescendercyrillic ustraightcyrillic ustraightstrokecyrillic hadescendercyrillic tetsecyrillic cheverticalstrokecyrillic shhacyrillic cheabkhasiancyrillic chedescenderabkhasiancyrillic schwacyrillic dzeabkhasiancyrillic imacroncyrillic obarredcyrillic umacroncyrillic ];
@@ -831,6 +833,17 @@ feature numr {
sub @frac1 by @frac2;
} numr;
+feature calt {
+ sub braceleft' @UC by braceleft.cap;
+ sub @UC braceright' by braceright.cap;
+
+ sub bracketleft' @UC by bracketleft.cap;
+ sub @UC bracketright' by bracketright.cap;
+
+ sub parenleft' @UC by parenleft.cap;
+ sub @UC parenright' by parenright.cap;
+} calt;
+
# Stylistic set 1: open digits
feature ss01 {
sub four by four.1;