diff --git a/docs/lab/index.html b/docs/lab/index.html index 02e189633..8653db54a 100644 --- a/docs/lab/index.html +++ b/docs/lab/index.html @@ -117,7 +117,7 @@ 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('Contextual alternates', ` +samples.set('Features test', ` (m) (M) (6) [m] [M] [6] {m} {M} {6} m@n M@N 3×5 ×9 8× 3x4 x9 2x @@ -126,11 +126,17 @@ m@n M@N 3=5 =5 8= 3≠5 ≠5 8≠ 8*5 8 * 7 WALLPAPER* B-O B–O B‒O B—O M•N +-Selvece +darest-Selvece b-o b–o b‒o b—o m•n -X→Y X←Y X↑Y X↓Y -x→y x←y x↑y x↓y -A → B ← C ↑ D ↓ E -a → b ← c ↑ d ↓ e +A→B←C⟵D⟶E +a→b←c⟵d⟶e +A → B ← C ⟵ D ⟶ E +a → b ← c ⟵ d ⟶ e +A -> B <- C +A –> B <– C +A —> B <— C +x<-4 x < -4 x<-y 12:35 1.2 34.56.78.90.12 A*Y V*V W*W N*N X*X @@ -289,7 +295,7 @@ da 27. es 38. an 87, in 68, 674 samples.set('Symbols', ` -→ ← ↑ ↓ +→ ⟶ ← ⟵ ↑ ↓ ↖ ↗ ↘ ↙ ► Next (U+25BA) ◀ Previous (U+25C0) ▼ AMZ (U+25BC) @@ -297,12 +303,12 @@ samples.set('Symbols', ` ◆ King (U+25C6) ● Black Circle (U+25CF) ○ White Circle (U+25CB) -⌘C (U+2318) -\uE001 (U+E001) -\uE000 (U+E000) -\uE002 (U+E002) -\uE003 (U+E003) -\uE004 (U+E004) +⌘ Place of interest (U+2318) +\uE001 Registration (private-area, U+E001) +\uE000 White Component (private-area, U+E000) +\uE002 Black Component (private-area, U+E002) +\uE003 Black Component instance (private-area, U+E003) +\uE004 White Component instance (private-area, U+E004) `) samples.set('────── body ──────', null) @@ -826,6 +832,7 @@ samples { padding: 0 24px; min-width:100px; /*max-width:450px;*/ + white-space: pre; } sample p { white-space: pre; diff --git a/src/Interface-Bold.ufo/glyphs/arrowNE_.glif b/src/Interface-Bold.ufo/glyphs/arrowNE_.glif new file mode 100644 index 000000000..3fdaa781e --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowNE_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 1280 + y + 452 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.gridadjust.original + {'width': 950, 'leftMargin': 121, 'rightMargin': 97} + + + diff --git a/src/Interface-Bold.ufo/glyphs/arrowNW_.glif b/src/Interface-Bold.ufo/glyphs/arrowNW_.glif new file mode 100644 index 000000000..8a1e82fce --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowNW_.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 1280 + y + 452 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.gridadjust.original + {'width': 950, 'leftMargin': 121, 'rightMargin': 97} + + + diff --git a/src/Interface-Bold.ufo/glyphs/arrowSE_.glif b/src/Interface-Bold.ufo/glyphs/arrowSE_.glif new file mode 100644 index 000000000..42feaa920 --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowSE_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 1280 + y + 452 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.gridadjust.original + {'width': 950, 'leftMargin': 121, 'rightMargin': 97} + + + diff --git a/src/Interface-Bold.ufo/glyphs/arrowSW_.glif b/src/Interface-Bold.ufo/glyphs/arrowSW_.glif new file mode 100644 index 000000000..a83a10641 --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowSW_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 1280 + y + 452 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.gridadjust.original + {'width': 950, 'leftMargin': 121, 'rightMargin': 97} + + + diff --git a/src/Interface-Bold.ufo/glyphs/arrowleftlong.case.glif b/src/Interface-Bold.ufo/glyphs/arrowleftlong.case.glif new file mode 100644 index 000000000..f6a26b707 --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowleftlong.case.glif @@ -0,0 +1,35 @@ + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 904 + y + 832 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Bold.ufo/glyphs/arrowleftlong.glif b/src/Interface-Bold.ufo/glyphs/arrowleftlong.glif new file mode 100644 index 000000000..2777455ba --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowleftlong.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 904 + y + 832 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Bold.ufo/glyphs/arrowrightlong.case.glif b/src/Interface-Bold.ufo/glyphs/arrowrightlong.case.glif new file mode 100644 index 000000000..7818e13e7 --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowrightlong.case.glif @@ -0,0 +1,35 @@ + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 904 + y + 832 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Bold.ufo/glyphs/arrowrightlong.glif b/src/Interface-Bold.ufo/glyphs/arrowrightlong.glif new file mode 100644 index 000000000..ff9d6a12a --- /dev/null +++ b/src/Interface-Bold.ufo/glyphs/arrowrightlong.glif @@ -0,0 +1,35 @@ + + + + + + + + + com.typemytype.robofont.guides + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 904 + y + 832 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Bold.ufo/glyphs/contents.plist b/src/Interface-Bold.ufo/glyphs/contents.plist index bd903ed7c..ad04c3de0 100644 --- a/src/Interface-Bold.ufo/glyphs/contents.plist +++ b/src/Interface-Bold.ufo/glyphs/contents.plist @@ -396,6 +396,14 @@ approxequal.glif archdblsubnosp archdblsubnosp.glif + arrowNE + arrowNE_.glif + arrowNW + arrowNW_.glif + arrowSE + arrowSE_.glif + arrowSW + arrowSW_.glif arrowdown arrowdown.glif arrowheaddownmod @@ -410,10 +418,18 @@ arrowleft.glif arrowleft.case arrowleft.case.glif + arrowleftlong + arrowleftlong.glif + arrowleftlong.case + arrowleftlong.case.glif arrowright arrowright.glif arrowright.case arrowright.case.glif + arrowrightlong + arrowrightlong.glif + arrowrightlong.case + arrowrightlong.case.glif arrowup arrowup.glif asciicircum diff --git a/src/Interface-Bold.ufo/glyphs/notequal.glif b/src/Interface-Bold.ufo/glyphs/notequal.glif index 77f071017..29cd34acf 100644 --- a/src/Interface-Bold.ufo/glyphs/notequal.glif +++ b/src/Interface-Bold.ufo/glyphs/notequal.glif @@ -4,10 +4,10 @@ - - - - + + + + diff --git a/src/Interface-Bold.ufo/lib.plist b/src/Interface-Bold.ufo/lib.plist index 2a8b56379..dd3f0ade3 100644 --- a/src/Interface-Bold.ufo/lib.plist +++ b/src/Interface-Bold.ufo/lib.plist @@ -697,10 +697,18 @@ zerowidthspace arrowleft arrowleft.case + arrowleftlong + arrowleftlong.case arrowup arrowright arrowright.case + arrowrightlong + arrowrightlong.case arrowdown + arrowNW + arrowNE + arrowSW + arrowSE triagrt triagdn triagup @@ -2423,6 +2431,8 @@ uniE003 placeofinterestsign .notdef + circleblack + circlewhite type glyphList @@ -2917,10 +2927,18 @@ zerowidthspace arrowleft arrowleft.case + arrowleftlong + arrowleftlong.case arrowup arrowright arrowright.case + arrowrightlong + arrowrightlong.case arrowdown + arrowNW + arrowNE + arrowSW + arrowSE triagrt triagdn triagup @@ -4643,6 +4661,8 @@ uniE003 placeofinterestsign .notdef + circleblack + circlewhite diff --git a/src/Interface-Regular.ufo/glyphs/arrowNE_.glif b/src/Interface-Regular.ufo/glyphs/arrowNE_.glif new file mode 100644 index 000000000..66fe64300 --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowNE_.glif @@ -0,0 +1,19 @@ + + + + + + + + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowNW_.glif b/src/Interface-Regular.ufo/glyphs/arrowNW_.glif new file mode 100644 index 000000000..c499124ba --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowNW_.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowSE_.glif b/src/Interface-Regular.ufo/glyphs/arrowSE_.glif new file mode 100644 index 000000000..41dd0eedd --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowSE_.glif @@ -0,0 +1,19 @@ + + + + + + + + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowSW_.glif b/src/Interface-Regular.ufo/glyphs/arrowSW_.glif new file mode 100644 index 000000000..c43d94699 --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowSW_.glif @@ -0,0 +1,19 @@ + + + + + + + + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowleft.glif b/src/Interface-Regular.ufo/glyphs/arrowleft.glif index 0682f9733..7fd3a0cde 100644 --- a/src/Interface-Regular.ufo/glyphs/arrowleft.glif +++ b/src/Interface-Regular.ufo/glyphs/arrowleft.glif @@ -8,11 +8,11 @@ - + - + - + diff --git a/src/Interface-Regular.ufo/glyphs/arrowleftlong.case.glif b/src/Interface-Regular.ufo/glyphs/arrowleftlong.case.glif new file mode 100644 index 000000000..eaade0bb2 --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowleftlong.case.glif @@ -0,0 +1,53 @@ + + + + + + + + + com.typemytype.robofont.guides + + + angle + 0 + isGlobal + + magnetic + 5 + name + + x + 272 + y + 896 + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 668 + y + 1008 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.width-adjustments + + -16 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowleftlong.glif b/src/Interface-Regular.ufo/glyphs/arrowleftlong.glif new file mode 100644 index 000000000..55a3fd8ec --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowleftlong.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.guides + + + angle + 0 + isGlobal + + magnetic + 5 + name + + x + 272 + y + 896 + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 668 + y + 1008 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.width-adjustments + + -16 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowrightlong.case.glif b/src/Interface-Regular.ufo/glyphs/arrowrightlong.case.glif new file mode 100644 index 000000000..e9b29702a --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowrightlong.case.glif @@ -0,0 +1,53 @@ + + + + + + + + + com.typemytype.robofont.guides + + + angle + 0 + isGlobal + + magnetic + 5 + name + + x + 272 + y + 896 + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 668 + y + 1008 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.width-adjustments + + -16 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowrightlong.glif b/src/Interface-Regular.ufo/glyphs/arrowrightlong.glif new file mode 100644 index 000000000..dd4b5937b --- /dev/null +++ b/src/Interface-Regular.ufo/glyphs/arrowrightlong.glif @@ -0,0 +1,54 @@ + + + + + + + + + + com.typemytype.robofont.guides + + + angle + 0 + isGlobal + + magnetic + 5 + name + + x + 272 + y + 896 + + + angle + 90.0 + isGlobal + + magnetic + 5 + name + + x + 668 + y + 1008 + + + com.typemytype.robofont.mark + + 0.8 + 0.94 + 0.95 + 1.0 + + interface.width-adjustments + + -16 + + + + diff --git a/src/Interface-Regular.ufo/glyphs/arrowup.glif b/src/Interface-Regular.ufo/glyphs/arrowup.glif index 0ebac6642..f74160d00 100644 --- a/src/Interface-Regular.ufo/glyphs/arrowup.glif +++ b/src/Interface-Regular.ufo/glyphs/arrowup.glif @@ -10,7 +10,7 @@ - + diff --git a/src/Interface-Regular.ufo/glyphs/contents.plist b/src/Interface-Regular.ufo/glyphs/contents.plist index c9199e868..9b9d1effb 100644 --- a/src/Interface-Regular.ufo/glyphs/contents.plist +++ b/src/Interface-Regular.ufo/glyphs/contents.plist @@ -396,6 +396,14 @@ approxequal.glif archdblsubnosp archdblsubnosp.glif + arrowNE + arrowNE_.glif + arrowNW + arrowNW_.glif + arrowSE + arrowSE_.glif + arrowSW + arrowSW_.glif arrowdown arrowdown.glif arrowheaddownmod @@ -410,10 +418,18 @@ arrowleft.glif arrowleft.case arrowleft.case.glif + arrowleftlong + arrowleftlong.glif + arrowleftlong.case + arrowleftlong.case.glif arrowright arrowright.glif arrowright.case arrowright.case.glif + arrowrightlong + arrowrightlong.glif + arrowrightlong.case + arrowrightlong.case.glif arrowup arrowup.glif asciicircum diff --git a/src/Interface-Regular.ufo/glyphs/notequal.glif b/src/Interface-Regular.ufo/glyphs/notequal.glif index 6f40b4429..7bb2e1eb3 100644 --- a/src/Interface-Regular.ufo/glyphs/notequal.glif +++ b/src/Interface-Regular.ufo/glyphs/notequal.glif @@ -4,10 +4,10 @@ - - - - + + + + diff --git a/src/Interface-Regular.ufo/lib.plist b/src/Interface-Regular.ufo/lib.plist index faab9ead3..bcafab714 100644 --- a/src/Interface-Regular.ufo/lib.plist +++ b/src/Interface-Regular.ufo/lib.plist @@ -781,10 +781,18 @@ zerowidthspace arrowleft arrowleft.case + arrowleftlong + arrowleftlong.case arrowup arrowright arrowright.case + arrowrightlong + arrowrightlong.case arrowdown + arrowNW + arrowNE + arrowSE + arrowSW triagrt triagdn triagup @@ -2506,6 +2514,8 @@ placeofinterestsign.specz.medium uniE001 .notdef + circleblack + circlewhite type glyphList @@ -2997,10 +3007,18 @@ zerowidthspace arrowleft arrowleft.case + arrowleftlong + arrowleftlong.case arrowup arrowright arrowright.case + arrowrightlong + arrowrightlong.case arrowdown + arrowNW + arrowNE + arrowSE + arrowSW triagrt triagdn triagup @@ -4722,6 +4740,8 @@ placeofinterestsign.specz.medium uniE001 .notdef + circleblack + circlewhite diff --git a/src/features.fea b/src/features.fea index ba34678bc..d94663c18 100644 --- a/src/features.fea +++ b/src/features.fea @@ -856,7 +856,12 @@ feature numr { sub @frac1 by @frac2; } numr; -@CASE_L = [ +@CASE_DELIM_L = [ + braceleft braceright + bracketleft bracketright + parenleft parenright +]; +@CASE_NONDELIM_L = [ asterisk at multiply @@ -872,14 +877,18 @@ feature numr { hyphen bullet arrowleft + arrowleftlong arrowright + arrowrightlong notequal - braceleft braceright - bracketleft bracketright - parenleft parenright colon ]; +@CASE_L = [ @CASE_DELIM_L @CASE_NONDELIM_L ]; @CASE_R = [ + braceleft.case braceright.case + bracketleft.case bracketright.case + parenleft.case parenright.case + asterisk.case at.case multiply.case @@ -895,11 +904,10 @@ feature numr { hyphen.case bullet.case arrowleft.case + arrowleftlong.case arrowright.case + arrowrightlong.case notequal.case - braceleft.case braceright.case - bracketleft.case bracketright.case - parenleft.case parenright.case colon.case ]; @@ -909,66 +917,21 @@ feature case { feature calt { @UC = [ @UC_ROMAN @UC_SET1 exclam question ]; + @LC = [ @LC_ROMAN @LC_SET1 ]; - sub @UC at' @UC by at.case; - sub @UC asterisk' by asterisk.case; + sub @UC @CASE_L' by @CASE_R; + ignore sub @LC @CASE_NONDELIM_L' @UC; + sub @CASE_L' @UC by @CASE_R; - sub multiply' @UC by multiply.case; - sub @UC multiply' by multiply.case; - - sub minus' @UC by minus.case; - sub @UC minus' by minus.case; - - sub plus' @UC by plus.case; - sub @UC plus' by plus.case; - - sub plusminus' @UC by plusminus.case; - sub @UC plusminus' by plusminus.case; - - sub divide' @UC by divide.case; - sub @UC divide' by divide.case; - - sub equal' @UC by equal.case; - sub @UC equal' by equal.case; - - sub notequal' @UC by notequal.case; - sub @UC notequal' by notequal.case; - - sub endash' @UC by endash.case; - sub @UC endash' by endash.case; - - sub figuredash' @UC by figuredash.case; - sub @UC figuredash' by figuredash.case; - - sub emdash' @UC by emdash.case; - sub @UC emdash' by emdash.case; - - sub hyphen' @UC by hyphen.case; - sub @UC hyphen' by hyphen.case; - - sub bullet' @UC by bullet.case; - sub @UC bullet' by bullet.case; - - sub arrowleft' @UC by arrowleft.case; - sub @UC arrowleft' by arrowleft.case; - - sub arrowright' @UC by arrowright.case; - sub @UC arrowright' by arrowright.case; - - sub notequal' @UC by notequal.case; - sub @UC notequal' by notequal.case; - - sub braceleft' @UC by braceleft.case; - sub @UC braceright' by braceright.case; - - sub bracketleft' @UC by bracketleft.case; - sub @UC bracketright' by bracketright.case; - - sub parenleft' @UC by parenleft.case; - sub @UC parenright' by parenright.case; - - sub colon' @UC by colon.case; - sub @UC colon' by colon.case; + # ->, <- + @ARROW_DASH = [ hyphen endash emdash ]; + @ARROW_DASH_CASE = [ hyphen.case endash.case emdash.case ]; + sub @ARROW_DASH' greater' by arrowrightlong; + sub @ARROW_DASH_CASE' greater' by arrowrightlong.case; + ignore sub less' @ARROW_DASH' @NUM; + ignore sub less' @ARROW_DASH_CASE' @NUM; + sub less' @ARROW_DASH' by arrowleftlong; + sub less' @ARROW_DASH_CASE' by arrowleftlong.case; sub period' @NUM by period.num; } calt;