diff --git a/README.md b/README.md index b2d2c49..508ec7c 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ Coders' typeface, built from code. Quit your editor/program. Unzip and open the folder. -* **Mac + Linux (with font-viewer)** : Select the .ttf files and double click → Follow the on-screen guide. -* **Windows** : Right click the .ttf files → Install. -* **Linux (manually)** : Copy the .ttf files to your fonts-directory → Run `sudo fc-cache`. + * **Mac + Linux (with font-viewer)** : Select the .ttf files and double click → Follow the on-screen guide. + * **Windows** : Right click the .ttf files → Install. + * **Linux (manually)** : Copy the .ttf files to your fonts-directory → Run `sudo fc-cache`. ### Detailed Instructions * [How to](http://www.howtogeek.com/192980/how-to-install-remove-and-manage-fonts-on-windows-mac-and-linux/) Install, Remove, and Manage Fonts on Windows, Mac, and Linux. @@ -29,7 +29,7 @@ You will find ttfs in the `build/` directory. ## Build your own style -![](https://cloud.githubusercontent.com/assets/240091/10895370/cc80f088-81ee-11e5-919b-a6daefdbc3f0.png) +![Styles Preview](https://cloud.githubusercontent.com/assets/240091/10895370/cc80f088-81ee-11e5-919b-a6daefdbc3f0.png) Iosevka comes with several visual styles, however they are inactive using the default build. To build these variants you should use style variables in the `make` procedure: diff --git a/buildglyphs.patel b/buildglyphs.patel index 7ea6779..acccc8d 100644 --- a/buildglyphs.patel +++ b/buildglyphs.patel @@ -465,19 +465,18 @@ define [buildFont para recursive] : begin libspiro.spiroToBezierOnContext knots closed s foreach af [items-of lastafs] : if af : af.call s local {.lhs lhs .rhs rhs} : s.expand CONTRAST - if closed - then - local g : new Glyph - libspiro.spiroToBezierOnContext [lhs.slice 0 (-1)] true g true - local lhsContour g.contours.0 - set g.contours {} - libspiro.spiroToBezierOnContext [rhs.reverse :.slice 0 (-1)] true g true - local rhsContour g.contours.0 - set g.contours {[lhsContour.concat rhsContour]} - else - local g : new Glyph - lhs.0.type = rhs.0.type = lhs.(lhs.length - 1).type = rhs.(rhs.length - 1).type = 'corner' - libspiro.spiroToBezierOnContext [lhs.concat : rhs.reverse] true g true + if closed : then + local g : new Glyph + libspiro.spiroToBezierOnContext [lhs.slice 0 (-1)] true g true + local lhsContour g.contours.0 + set g.contours {} + libspiro.spiroToBezierOnContext [rhs.reverse :.slice 0 (-1)] true g true + local rhsContour g.contours.0 + set g.contours {[lhsContour.concat rhsContour]} + : else + local g : new Glyph + lhs.0.type = rhs.0.type = lhs.(lhs.length - 1).type = rhs.(rhs.length - 1).type = 'corner' + libspiro.spiroToBezierOnContext [lhs.concat : rhs.reverse] true g true local r g.contours r.knots = knots return r diff --git a/glyphs/common-shapes.patel b/glyphs/common-shapes.patel index 89cb678..bd70d6b 100644 --- a/glyphs/common-shapes.patel +++ b/glyphs/common-shapes.patel @@ -106,13 +106,14 @@ define [AIHSerifs top _left _right] : glyph-construction include : AIVSerifs top _left _right include : CenterBottomSerif (left + STROKE * sideSerifK * CORRECTION_HX) 0 JUT include : CenterBottomSerif (right - STROKE * sideSerifK * CORRECTION_HX) 0 JUT -define [AINSerifs top _left _right] : glyph-construction +define [AINSerifs top _left _right sw xn] : glyph-construction local left : fallback _left SB local right : fallback _right RIGHTSB + local jut : JUT * [fallback xn 1] if SLAB : begin - include : LeftwardTopSerif (left + STROKE * (sideSerifK - 0.5) * CORRECTION_HX) top SIDEJUT - include : CenterTopSerif (right - STROKE * sideSerifK * CORRECTION_HX) top JUT - include : CenterBottomSerif (left + STROKE * sideSerifK * CORRECTION_HX) 0 JUT + include : LeftwardTopSerif (left + sw * (sideSerifK - 0.5) * CORRECTION_HX) top (jut - sw / 2 * CORRECTION_HX) + include : CenterTopSerif (right - sw * sideSerifK * CORRECTION_HX) top jut + include : CenterBottomSerif (left + sw * sideSerifK * CORRECTION_HX) 0 jut tag-contour 'serifLB' #include : CenterdBottomSerif (right - STROKE * (sideSerifK - 0.5) * CORRECTION_HX) 0 (JUT / 2) define [AICyrISerifs top _left _right] : glyph-construction @@ -447,6 +448,11 @@ define [vdual newid unicode id spacing] : create-glyph [fallback newid : 'double apply-transform : Translate 0 (spacing / 2) apply-transform : Italify +define [composite newid unicode parts] : create-glyph [fallback newid ('glyph' + [set nTemp (nTemp + 1)])] : glyph-construction + if unicode : assign-unicode unicode + include parts.0 AS_BASE + foreach [part : items-of [parts.slice 1]] : include part + # Full-width derivatives define [fwl newid unicode id] : create-glyph [fallback newid : 'fwl' + id] : glyph-construction if unicode : assign-unicode unicode diff --git a/glyphs/cyrillic-basic.patel b/glyphs/cyrillic-basic.patel index 22a1b5b..df5ec39 100644 --- a/glyphs/cyrillic-basic.patel +++ b/glyphs/cyrillic-basic.patel @@ -1,5 +1,10 @@ ###### Cyrillic glyphs +# Style parameters +define [CyrDescender x shift] : glyph-construction + local descenderOverflow : if SLAB SIDEJUT ((RIGHTSB - SB) * [fallback shift 0.1]) + include : VBarRight (x + descenderOverflow) (HALFSTROKE - LONGJUT) STROKE +# Copy and turned characters alias 'cyrA' 0x410 'A' alias 'cyra' 0x430 'a' alias 'cyrVe' 0x412 'B' @@ -237,18 +242,23 @@ create-glyph 'cyrghe.serbian' : glyph-construction italic-variant 'cyrghe' 0x433 define [CyrDeShape top] : glyph-construction - local cutleft : mix SB RIGHTSB 0.2 - local cutright : mix SB RIGHTSB 0.92 - include : HBar (SB + O * 2) RIGHTSB HALFSTROKE - include : VBar (cutright - HALFSTROKE * CORRECTION_HX) 0 top - include : halfXStrand (cutleft + STROKE * CORRECTION_HX) top (SB + HALFSTROKE * CORRECTION_HX) HALFSTROKE 0.1 0.75 0.5 - include : VBar (SB + HALFSTROKE * CORRECTION_HX + O * 2) (-LONGJUT + HALFSTROKE) 0 - include : VBar (RIGHTSB - HALFSTROKE * CORRECTION_HX) (-LONGJUT + HALFSTROKE) 0 + local descenderOverflow : if SLAB SIDEJUT ((RIGHTSB - SB) * 0.05) + local cutleft : if SLAB SB (SB + descenderOverflow) + local cutright : if SLAB RIGHTSB (RIGHTSB - descenderOverflow) + local topleft : mix cutleft cutright 0.15 + include : HBarBottom (cutleft - descenderOverflow) (cutright + descenderOverflow) 0 + include : VBarRight cutright 0 top + include : halfXStrand (topleft + STROKE * CORRECTION_HX) top (cutleft + HALFSTROKE * CORRECTION_HX) HALFSTROKE 0.1 0.75 0.5 + include : VBarLeft (cutleft - descenderOverflow) (-LONGJUT + HALFSTROKE) 0 + include : VBarRight (cutright + descenderOverflow) (-LONGJUT + HALFSTROKE) 0 if SLAB : then - include : HBarTop (cutleft - (RIGHTSB - cutright)) RIGHTSB top + include : dispiro + widths.rhs + flat (topleft - descenderOverflow) top + curl (cutright + descenderOverflow) top : else - include : HBarTop cutleft cutright top + include : HBarTop topleft cutright top create-glyph 'cyrDe' : glyph-construction assign-unicode 0x414 @@ -263,18 +273,18 @@ create-glyph 'cyrde.italic' : glyph-construction include bMarks include : dispiro widths.lhs - flat (RIGHTSB - O) SMALLSMOOTHA - curl (RIGHTSB - O) (XH - SMALLSMOOTHB) + flat (RIGHTSB - OX) SMALLSMOOTHA + curl (RIGHTSB - OX) (XH - SMALLSMOOTHB) arcvh g4 (MIDDLE - CORRECTION_OMIDS) (CAP * 0.7 - O) archv - flat.ai (SB + O) (XH - SMALLSMOOTHA) - curl.ai (SB + O) SMALLSMOOTHB + flat.ai (SB + OX) (XH - SMALLSMOOTHA) + curl.ai (SB + OX) SMALLSMOOTHB arcvh g4 (MIDDLE + CORRECTION_OMIDS) O archv - flat (RIGHTSB - O) SMALLSMOOTHA - curl (RIGHTSB - O) (XH - SMALLSMOOTHB) + flat (RIGHTSB - OX) SMALLSMOOTHA + curl (RIGHTSB - OX) (XH - SMALLSMOOTHB) quadcontrols 0 0.8 g4 (SB + STROKE * 1.1) CAP @@ -379,7 +389,7 @@ define [CyrTseShape top] : glyph-construction include : VBarLeft SB 0 top include : HBarBottom SB RIGHTSB 0 include : VBarRight RIGHTSB 0 top - include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE + include : CyrDescender RIGHTSB 0.05 if SLAB : begin include : AIVSerifs top include : LeftwardBottomSerif SB 0 SIDEJUT @@ -396,7 +406,7 @@ create-glyph 'cyrtse.italic' : glyph-construction include eMarks include glyphs.u eject-contour 'serifLT' - include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE + include : CyrDescender RIGHTSB 0.05 italic-variant 'cyrtse' 0x446 define [CyrCheShape top _barp] : glyph-construction @@ -448,7 +458,7 @@ italic-variant 'cyrsha' 0x448 define [CyrShchaShape top] : glyph-construction include : CyrShaShape top eject-contour 'serifRB' - include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE + include : CyrDescender RIGHTSB 0.05 create-glyph 'cyrShcha' : glyph-construction assign-unicode 0x429 @@ -462,7 +472,7 @@ create-glyph 'cyrshcha.italic' : glyph-construction include eMarks include glyphs.'cyrsha.italic' eject-contour 'serifLT' - include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE + include : CyrDescender RIGHTSB 0.05 italic-variant 'cyrshcha' 0x449 define [CyrYerShape top] : glyph-construction diff --git a/glyphs/cyrillic-extended.patel b/glyphs/cyrillic-extended.patel index 2cab9c3..2423493 100644 --- a/glyphs/cyrillic-extended.patel +++ b/glyphs/cyrillic-extended.patel @@ -31,7 +31,7 @@ create-glyph 'cyrdzhe' : glyph-construction define [CyrLjeShape top] : glyph-construction local xlefttop : mix SB RIGHTSB 0.075 local jut : JUT * 0.72 - include : LegShape xlefttop [mix SB RIGHTSB 0.025] [mix SB 0 [if SLAB 0.25 0.5]] top 0 MVERTSTROKE + include : LegShape xlefttop [mix SB RIGHTSB 0.025] [mix SB 0 [if SLAB 0.75 0.5]] top 0 MVERTSTROKE include : CyrYeriShape top (MIDDLE - MVERTSTROKE / 2 * CORRECTION_HX) (RIGHTSB - O) MVERTSTROKE jut include : HBarTop xlefttop MIDDLE top if SLAB : begin @@ -139,4 +139,18 @@ alias 'cyrUe' 0x4AE 'Y' alias 'cyrQa' 0x51A 'Q' alias 'cyrqa' 0x51B 'q' alias 'cyrWe' 0x51C 'W' -alias 'cyrwe' 0x51D 'w' \ No newline at end of file +alias 'cyrwe' 0x51D 'w' + + +composite nothing 0x4A2 { glyphs.cyrEn [CyrDescender RIGHTSB] } +composite nothing 0x4A3 { glyphs.cyren [CyrDescender RIGHTSB] } +composite nothing 0x4B2 { glyphs.cyrHa [CyrDescender RIGHTSB] } +composite nothing 0x4B3 { glyphs.cyrha [CyrDescender RIGHTSB] } +composite nothing 0x4B6 { glyphs.cyrChe [CyrDescender RIGHTSB] } +composite nothing 0x4B7 { glyphs.cyrche [CyrDescender RIGHTSB] } +composite nothing 0x49A { glyphs.cyrKa [CyrDescender (RIGHTSB - O)] } +composite nothing 0x49B { glyphs.cyrka [CyrDescender (RIGHTSB - O)] } +composite nothing 0x4AC { glyphs.cyrTe [CyrDescender (MIDDLE + HALFSTROKE * CORRECTION_HX)] ifMarks} +composite nothing 0x4AD { glyphs.cyrte [CyrDescender (MIDDLE + HALFSTROKE * CORRECTION_HX)] pMarks} +composite nothing 0x496 { glyphs.cyrZhe [CyrDescender (RIGHTSB - O * 4)] } +composite nothing 0x497 { glyphs.cyrzhe [CyrDescender (RIGHTSB - O * 4)] } \ No newline at end of file diff --git a/glyphs/greek.patel b/glyphs/greek.patel index bf6edcb..7ea1c24 100644 --- a/glyphs/greek.patel +++ b/glyphs/greek.patel @@ -215,20 +215,21 @@ create-glyph 'alpha' : glyph-construction assign-unicode 0x3B1 include eMarks - local middle : mix SB RIGHTSB 0.5 + local middle : mix SB RIGHTSB 0.42 local fine : adviceBlackness 3.25 local k1 0.25 local k2 0.5 local k3 0.35 include : dispiro widths.rhs fine - g4 (RIGHTSB - OX * 1.5) XH [heading DOWNWARD] + g4 (RIGHTSB - OX * 1.75) XH [heading DOWNWARD] bezcontrols k1 k2 k3 1 6 - g4 (middle + CORRECTION_OMIDS) O [widths 0 STROKE] - g4 (SB + OX) SMALLSMOOTHB unimportant - g4 (SB + OX - (RIGHTSB - SB) * 0.006) [mix SMALLSMOOTHB (XH - SMALLSMOOTHA) 0.5] - g4 (SB + OX) (XH - SMALLSMOOTHA) unimportant - g4 (middle - CORRECTION_OMIDS) XO [widths 0 STROKE] + g4.left.mid (middle + CORRECTION_OMIDS) O [widths 0 STROKE] + archv + flat.ai (SB + OX) SMALLSMOOTHB + curl.ai (SB + OX) (XH - SMALLSMOOTHA) + arcvh + g4.right.mid (middle - CORRECTION_OMIDS) XO [widths 0 STROKE] bezcontrols (1 - k3) 0 (1 - k1) (1 - k2) 6 g4 (RIGHTSB - OX * 2) 0 [widths.heading 0 fine DOWNWARD] diff --git a/glyphs/latin-basic-capital.patel b/glyphs/latin-basic-capital.patel index aa71daa..a3f9d48 100644 --- a/glyphs/latin-basic-capital.patel +++ b/glyphs/latin-basic-capital.patel @@ -427,8 +427,8 @@ select-variant 'I' 'I' 'serifed' define [TShape top] : glyph-construction include : VBar MIDDLE 0 top - local l : SB + OX - local r : RIGHTSB - OX + local l : SB + OXE + local r : RIGHTSB - OXE include : HBarTop l r top if SLAB : begin include : DownwardRightSerif r top VJUT MVERTSTROKE @@ -520,7 +520,7 @@ create-glyph 'J.serifed' : glyph-construction select-variant 'J' 'J' 'serifed' ### M N -define [NShape top left right coward diagcoward] : glyph-construction +define [NShape top left right coward diagcoward xn] : glyph-construction local topstroke : adviceBlackness [fallback diagcoward 4] local stroke : adviceBlackness [fallback coward 1] local halftopstroke : topstroke / 2 @@ -536,7 +536,7 @@ define [NShape top left right coward diagcoward] : glyph-construction include : dispiro flat (left + halftopstroke) top [widths.heading topstroke 0 DOWNWARD] curl (right - halftopstroke) 0 [widths.heading 0 topstroke DOWNWARD] - include : AINSerifs top left right + include : AINSerifs top left right stroke xn create-glyph 'N' : glyph-construction set-width WIDTH diff --git a/glyphs/symbol-letter.patel b/glyphs/symbol-letter.patel index cca4c7f..4339b77 100644 --- a/glyphs/symbol-letter.patel +++ b/glyphs/symbol-letter.patel @@ -75,7 +75,7 @@ create-glyph 'numero' : glyph-construction assign-unicode 0x2116 local fine : adviceBlackness 4.5 include : smallo XH (fine * 2) (MIDDLE + fine / 2) [mix RIGHTSB WIDTH 0.5] fine (SMOOTHA * fine / STROKE) (SMOOTHB * fine / STROKE) - include : NShape CAP (SB / 2) MIDDLE 4.5 5.5 + include : NShape CAP (SB / 2) MIDDLE 4.5 5.5 0.7 include : HBarBottom (MIDDLE + fine / 2) [mix RIGHTSB WIDTH 0.5] 0 fine alias 'Ohm' 0x2126 'Omega' diff --git a/glyphs/symbol-math.patel b/glyphs/symbol-math.patel index 3772563..032096a 100644 --- a/glyphs/symbol-math.patel +++ b/glyphs/symbol-math.patel @@ -71,8 +71,8 @@ create-glyph 'partial' : glyph-construction include : smallo (CAP * 0.65) 0 SB RIGHTSB OPERATORSTROKE include : dispiro widths.lhs OPERATORSTROKE - flat (RIGHTSB - O) SMALLSMOOTHA - curl (RIGHTSB - O) (XH - SMALLSMOOTHB) + flat (RIGHTSB - OX) SMALLSMOOTHA + curl (RIGHTSB - OX) (XH - SMALLSMOOTHB) hookend CAPO 0.6 g4 [mix SB RIGHTSB 0.075] [mix XH CAP 0.8] diff --git a/parameters.toml b/parameters.toml index 386c204..4dfaabb 100644 --- a/parameters.toml +++ b/parameters.toml @@ -1,7 +1,7 @@ [iosevka] family = 'Iosevka' -version = '1.0-beta9' -codename = 'Tshai-Lieng' +version = '1.0' +codename = 'Tabris' copyright = 'Copyright (c) 2015 Belleve Invis.' licence = '''This font software is licenced under the SIL Open Font Licence, Version 1.1. This is licence is avaliable with a FAQ at: http://scripts.sil.org/OFL. This font software is distributes on an 'AS IS' basis, without warranties or conditions of any kind, either express or implied. See the SIL Open Font licence fot the specific language, premissions and limitations governing your use of this font software.''' @@ -143,19 +143,25 @@ sbalance = 0.53 [x-slab-regular] style = 'Regular' -sb = 65 +sb = 70 +rbalance = 60 [x-slab-bold] style = 'Bold' +sb = 55 +rbalance = 80 [x-slab-italic] style = 'Italic' -sb = 65 +sb = 70 +rbalance = 60 [x-slab-bolditalic] style = 'Bold Italic' ebalance = 0.375 sbalance = 0.53 +sb = 55 +rbalance = 80 # Variants [v-l-hooky.variantSelector]