diff --git a/glyphs/letters-unified-basic.aki b/glyphs/letters-unified-basic.aki index 0d82ff6..6d299b3 100644 --- a/glyphs/letters-unified-basic.aki +++ b/glyphs/letters-unified-basic.aki @@ -127,7 +127,7 @@ symbol-block 'J' create-glyph 'J.straight' : glyph-construction set-width WIDTH include capitalMarks - set-anchor 'overlay' BASE (RIGHTSB - STROKE * CORRECTION_HX - JBALANCE2) (CAP * BARPOS) + set-anchor 'overlay' BASE (RIGHTSB - STROKE * CORRECTION_HX * 0.75 - JBALANCE2) (CAP * BARPOS) local slope (STROKE * 0.00092) local expand 0.35 @@ -1360,7 +1360,7 @@ symbol-block 'r' alsothru 0.75 0.25 straight.down.end (rbar - fine * CORRECTION_HX) (XH * 0.53 + (SMALLSMOOTH - SMALLSMOOTHA)) [widths.heading fine 0 DOWNWARD] include : VBarRight rbar 0 XH - set-anchor 'overlay' BASE rbar (XH * 0.5) + set-anchor 'overlay' BASE (rbar - STROKE * 0.25) (XH * 0.5) if SLAB : begin include : rBottomSerif 0 diff --git a/glyphs/letters-unified-extended.aki b/glyphs/letters-unified-extended.aki index 7e0fdb2..7ee2457 100644 --- a/glyphs/letters-unified-extended.aki +++ b/glyphs/letters-unified-extended.aki @@ -395,7 +395,7 @@ symbol-block 'pi' flat m2 XH [heading DOWNWARD] curl m2 hook arcvh - flat [Math.min (RIGHTSB - HALFSTROKE) (m2 + hook - HALFSTROKE)] HALFSTROKE [heading RIGHTWARD] + flat [Math.min (RIGHTSB - STROKE * 0.25) (m2 + hook - HALFSTROKE)] HALFSTROKE [heading RIGHTWARD] curl RIGHTSB HALFSTROKE [heading RIGHTWARD] define {SigmaShape} : symbol-block 'Sigma' diff --git a/glyphs/symbol-math.aki b/glyphs/symbol-math.aki index ac80d16..1eea5af 100644 --- a/glyphs/symbol-math.aki +++ b/glyphs/symbol-math.aki @@ -67,9 +67,9 @@ symbol-block 'Letter-like Mathematical Symbols' include : dispiro widths.lhs OPERATORSTROKE flat (RIGHTSB - OX) SMALLSMOOTHA - curl (RIGHTSB - OX) (XH - SMALLSMOOTHB) - hookend CAPO 0.6 - g4 [mix SB RIGHTSB 0.075] [mix XH CAP 0.8] + curl (RIGHTSB - OX) (CAP - SMALLSMOOTHB) + hookend CAPO + g4 SB (CAP - HOOK) symbol-block 'Mathematical Operators' create-glyph 'plus' : glyph-construction diff --git a/onegroup.mk b/onegroup.mk index 3bf7ecf..7222222 100644 --- a/onegroup.mk +++ b/onegroup.mk @@ -19,8 +19,8 @@ endif NODE_FDT = node --expose-gc NODE = node -UPRIGHT = $(OBJDIR)/$(PREFIX)-thin.ttf $(OBJDIR)/$(PREFIX)-extralight.ttf $(OBJDIR)/$(PREFIX)-light.ttf $(OBJDIR)/$(PREFIX)-regular.ttf $(OBJDIR)/$(PREFIX)-bold.ttf $(OBJDIR)/$(PREFIX)-heavy.ttf -ITALIC = $(OBJDIR)/$(PREFIX)-thinitalic.ttf $(OBJDIR)/$(PREFIX)-extralightitalic.ttf $(OBJDIR)/$(PREFIX)-lightitalic.ttf $(OBJDIR)/$(PREFIX)-italic.ttf $(OBJDIR)/$(PREFIX)-bolditalic.ttf $(OBJDIR)/$(PREFIX)-heavyitalic.ttf +UPRIGHT = $(OBJDIR)/$(PREFIX)-thin.ttf $(OBJDIR)/$(PREFIX)-extralight.ttf $(OBJDIR)/$(PREFIX)-light.ttf $(OBJDIR)/$(PREFIX)-regular.ttf $(OBJDIR)/$(PREFIX)-medium.ttf $(OBJDIR)/$(PREFIX)-bold.ttf $(OBJDIR)/$(PREFIX)-heavy.ttf +ITALIC = $(OBJDIR)/$(PREFIX)-thinitalic.ttf $(OBJDIR)/$(PREFIX)-extralightitalic.ttf $(OBJDIR)/$(PREFIX)-lightitalic.ttf $(OBJDIR)/$(PREFIX)-italic.ttf $(OBJDIR)/$(PREFIX)-mediumitalic.ttf $(OBJDIR)/$(PREFIX)-bolditalic.ttf $(OBJDIR)/$(PREFIX)-heavyitalic.ttf EXTUPRG = EXTITAL = OUTPUTS = $(UPRIGHT) $(ITALIC) @@ -67,6 +67,10 @@ $(OBJDIR)/.pass0-$(PREFIX)-regular.fdt : $(SCRIPTS) | $(OBJDIR) $(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-book s-upright $(STYLE_UPRIGHT) $(STYLE_SUFFIX) $(OBJDIR)/.pass0-$(PREFIX)-italic.fdt : $(SCRIPTS) | $(OBJDIR) $(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-book s-italic $(STYLE_ITALIC) $(STYLE_SUFFIX) +$(OBJDIR)/.pass0-$(PREFIX)-medium.fdt : $(SCRIPTS) | $(OBJDIR) + $(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-medium s-upright $(STYLE_UPRIGHT) $(STYLE_SUFFIX) +$(OBJDIR)/.pass0-$(PREFIX)-mediumitalic.fdt : $(SCRIPTS) | $(OBJDIR) + $(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-medium s-italic $(STYLE_ITALIC) $(STYLE_SUFFIX) $(OBJDIR)/.pass0-$(PREFIX)-bold.fdt : $(SCRIPTS) | $(OBJDIR) $(NODE_FDT) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-upright $(STYLE_UPRIGHT) $(STYLE_SUFFIX) $(OBJDIR)/.pass0-$(PREFIX)-bolditalic.fdt : $(SCRIPTS) | $(OBJDIR) diff --git a/parameters.toml b/parameters.toml index e56daa4..7df5474 100644 --- a/parameters.toml +++ b/parameters.toml @@ -13,6 +13,7 @@ xheight = 530 # X-height #descender = -205 # Unnecessary contrast = 1.11111 # Stroke width contrast +essx = 1.12 # Contrast of the middle of 'S' italicangle = 0 # Slant angle, in degrees @@ -84,7 +85,6 @@ stroke = 18 sb = 80 dotsize = 50 periodsize = 55 -essx = 1.12 cthin = 0.9 cthinb = 0.9 @@ -98,7 +98,6 @@ stroke = 36 sb = 72 dotsize = 70 periodsize = 77 -essx = 1.12 cthin = 0.75 cthinb = 0.75 @@ -107,14 +106,10 @@ cthinb = 0.75 weight = 300 style = 'Light' -stroke = 54 +stroke = 58 sb = 63 -dotsize = 90 -periodsize = 99 -essx = 1.12 - -cthin = 0.75 -cthinb = 0.75 +dotsize = 95 +periodsize = 103 [w-book] isBold = false @@ -125,7 +120,22 @@ sb = 60 stroke = 72 dotsize = 125 periodsize = 140 -essx = 1.12 + +[w-medium] +weith = 500 +style = 'Medium' + +sb = 50 +stroke = 83 +dotsize = 140 +periodsize = 145 +essx = 1.07 + +ahook = 127 +hook = 153 +rbalance = 58 +rbalance2 = 19 +smooth = 200 [w-bold] isBold = true @@ -150,7 +160,6 @@ rbalance = 50 rbalance2 = 25 rhook = 95 smooth = 210 -smallsmooth = 230 jbalance2 = 60 tbalance = 50 sbalance = 0.5 @@ -178,7 +187,6 @@ rbalance = 50 rbalance2 = 25 rhook = 95 smooth = 210 -smallsmooth = 230 jbalance2 = 60 tbalance = 50 sbalance = 0.5 diff --git a/support/spirokit.aki b/support/spirokit.aki index 8431715..18aed26 100644 --- a/support/spirokit.aki +++ b/support/spirokit.aki @@ -85,7 +85,7 @@ export : define [SetupBuilders args] : begin fallback raf unimportant return rs - + define DEFAULT_STEPS 8 define {jhv, jvh} : let [cache {}] : begin local [build samples] : begin local hv {} @@ -104,8 +104,8 @@ export : define [SetupBuilders args] : begin if [not cache.(samples)] : build samples return cache.(samples).vh list hv vh - define [archv samples notiny k raf] : alsothruthem [jhv [fallback samples 12]] raf - define [arcvh samples notiny k raf] : alsothruthem [jvh [fallback samples 12]] raf + define [archv samples notiny k raf] : alsothruthem [jhv [fallback samples DEFAULT_STEPS]] raf + define [arcvh samples notiny k raf] : alsothruthem [jvh [fallback samples DEFAULT_STEPS]] raf define [complexThru] : begin local a : {}.slice.call arguments @@ -138,6 +138,7 @@ export : define [SetupBuilders args] : begin return {.knots [flatten knots] .closed closed .lastafs lastafs} define QUAD false + define PRECISION 1 define [dispiro] : begin local s : new SpiroExpansionContext set s.gizmo globalTransform @@ -152,16 +153,16 @@ export : define [SetupBuilders args] : begin local {.lhs lhs .rhs rhs} : s.expand [fallback s.contrast CONTRAST] if closed : then local g : new Glyph - libspiro.spiroToBezierOnContext [lhs.slice 0 (-1)] true g QUAD 0.5 + libspiro.spiroToBezierOnContext [lhs.slice 0 (-1)] true g QUAD PRECISION local lhsContour g.contours.0 set g.contours {} - libspiro.spiroToBezierOnContext [rhs.reverse :.slice 0 (-1)] true g QUAD 0.5 + libspiro.spiroToBezierOnContext [rhs.reverse :.slice 0 (-1)] true g QUAD PRECISION 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 QUAD 0.5 + libspiro.spiroToBezierOnContext [lhs.concat : rhs.reverse] true g QUAD PRECISION set g.knots knots set g.lhsknots lhs set g.rhsknots rhs diff --git a/testdrive/index.html b/testdrive/index.html index b3cfda6..443a031 100644 --- a/testdrive/index.html +++ b/testdrive/index.html @@ -48,6 +48,17 @@ font-style: italic; src: url('assets/iosevka-italic.woff') format('woff'), url('assets/iosevka-italic.ttf') format('truetype'); } + @font-face { + font-family: IosevkaWEB; + font-weight: 500; + src: url('assets/iosevka-medium.woff') format('woff'), url('assets/iosevka-medium.ttf') format('truetype'); + } + @font-face { + font-family: IosevkaWEB; + font-style: italic; + font-weight: 500; + src: url('assets/iosevka-mediumitalic.woff') format('woff'), url('assets/iosevka-mediumitalic.ttf') format('truetype'); + } @font-face { font-family: IosevkaWEB; font-weight: 700; @@ -112,6 +123,17 @@ font-style: italic; src: url('assets/iosevka-slab-italic.woff') format('woff'), url('assets/iosevka-slab-italic.ttf') format('truetype'); } + @font-face { + font-family: IosevkaSlabWEB; + font-weight: 500; + src: url('assets/iosevka-slab-medium.woff') format('woff'), url('assets/iosevka-slab-medium.ttf') format('truetype'); + } + @font-face { + font-family: IosevkaSlabWEB; + font-style: italic; + font-weight: 500; + src: url('assets/iosevka-slab-mediumitalic.woff') format('woff'), url('assets/iosevka-slab-mediumitalic.ttf') format('truetype'); + } @font-face { font-family: IosevkaSlabWEB; font-weight: 700; @@ -170,11 +192,12 @@ font-size: 2rem; width: 68rem; } - .thin { font-weight: 100 } + .thin { font-weight: 100 } .extralight { font-weight: 200 } - .light { font-weight: 300 } - .bold { font-weight: 700 } - .heavy { font-weight: 900 } + .light { font-weight: 300 } + .medium { font-weight: 500 } + .bold { font-weight: 700 } + .heavy { font-weight: 900 } .italic { font-style: italic } .show table.block { width: 68rem; @@ -350,6 +373,8 @@ {name: 'iosevka-lightitalic', cls:'light italic', display: 'Iosevka Light Italic'}, {name: 'iosevka-slab-lightitalic', cls:'slab light italic', display: 'Iosevka Slab Light Italic'} ], [ {name: 'iosevka-regular', cls: '', display: 'Iosevka'}, {name: 'iosevka-slab-regular', cls: 'slab', display: 'Iosevka Slab'}, {name: 'iosevka-italic', cls:'italic', display: 'Iosevka Italic'}, {name: 'iosevka-slab-italic', cls:'slab italic', display: 'Iosevka Slab Italic'} ], + [ {name: 'iosevka-medium', cls: 'medium', display: 'Iosevka Medium'}, {name: 'iosevka-slab-medium', cls: 'slab medium', display: 'Iosevka Slab Medium'}, + {name: 'iosevkamediumitalic', cls:'medium italic', display: 'Iosevka Medium Italic'}, {name: 'iosevka-slab-mediumitalic', cls:'slab medium italic', display: 'Iosevka Slab Medium Italic'} ], [ {name: 'iosevka-bold', cls: 'bold', display: 'Iosevka Bold'}, {name: 'iosevka-slab-bold', cls: 'slab bold', display: 'Iosevka Slab Bold'}, {name: 'iosevka-bolditalic', cls:'bold italic', display: 'Iosevka Bold Italic'}, {name: 'iosevka-slab-bolditalic', cls:'slab bold italic', display: 'Iosevka Slab Bold Italic'} ], [ {name: 'iosevka-heavy', cls: 'heavy', display: 'Iosevka Heavy'}, {name: 'iosevka-slab-heavy', cls: 'slab heavy', display: 'Iosevka Slab Heavy'},