diff --git a/font-src/glyphs/auto-build/composite.ptl b/font-src/glyphs/auto-build/composite.ptl index b77688917..8a3a2120f 100644 --- a/font-src/glyphs/auto-build/composite.ptl +++ b/font-src/glyphs/auto-build/composite.ptl @@ -33,7 +33,7 @@ glyph-block Autobuild-Enclosure-Shared : begin local rs : new Set local gniPart : fnBuildup gidPart local grs : AnyDerivingCv.query [query-glyph gidPart] - if grs : foreach gr [items-of grs] : begin + if (para.enableCvSs && grs) : foreach gr [items-of grs] : begin local relatedGidPart : gr.get [query-glyph gidPart] local gniRelated : fnBuildup relatedGidPart if [query-glyph gniPart] : begin @@ -54,7 +54,7 @@ glyph-block Autobuild-Enclosure-Shared : begin local restInfo : demand.slice 2 local origJobGlyphGn : CircName unicode prefix parts suffix - local demandDecomposable globallyDecomposable + local demandDecomposable : para.enableCvSs && globallyDecomposable foreach part [items-of parts] : if [query-glyph part] : begin local g : query-glyph part local relatedGlyphs : AnyDerivingCv.query g @@ -66,12 +66,14 @@ glyph-block Autobuild-Enclosure-Shared : begin local jobsRel : if demandDecomposable decomposableRelJobs nonDecomposable jobsOrig.push { origJobGlyphGn unicode parts :: restInfo } - local mesh : getGrMesh parts AnyDerivingCv query-glyph - foreach {gr fromParts toParts} [items-of mesh] : do - local fromGn : CircNameNoCheck unicode prefix fromParts suffix - local toGn : CircName unicode prefix toParts suffix - jobsRel.push { toGn null toParts :: restInfo } - if [not demandDecomposable] : relApplications.push : list gr fromGn toGn + if para.enableCvSs : begin + local mesh : getGrMesh parts AnyDerivingCv query-glyph + foreach {gr fromParts toParts} [items-of mesh] : do + local fromGn : CircNameNoCheck unicode prefix fromParts suffix + local toGn : CircName unicode prefix toParts suffix + jobsRel.push { toGn null toParts :: restInfo } + if [not demandDecomposable] : relApplications.push { gr fromGn toGn } + return : object nonDecomposable decomposableJobs decomposableRelJobs relApplications glyph-block-export CreateDerivedFontFromJobs @@ -1047,17 +1049,17 @@ glyph-block Autobuild-Pnonetic-Ligatures : if [not recursive] : begin foreach [{unicode c1 c2 mak} : items-of records] : begin local glyphName : PhoneticLigatureGlyphName c1 c2 - define [maskOut] : new-glyph : glyph-proc - local s 0 - local step (-OX) - local dist (Stroke * 2) - define dfg1 : df1.queryByNameEnsured c1 - define dfg2 : df2.queryByNameEnsured c2 - while (s < dist) : begin + local maskOuts {} + local s 0 + local step (-OX) + local dist (Stroke * 2) + while (s < dist) : do + maskOuts.push : new-glyph : glyph-proc + define dfg1 : df1.queryByNameEnsured c1 + define dfg2 : df2.queryByNameEnsured c2 include dfg2 - include : Translate step 0 - set s : s + step - include : Translate (dfg1.advanceWidth * wadj1 - kern) 0 + include : Translate (s + dfg1.advanceWidth * wadj1 - kern) 0 + set s : s + step create-glyph glyphName unicode : glyph-proc set-width CWidth @@ -1068,11 +1070,9 @@ glyph-block Autobuild-Pnonetic-Ligatures : if [not recursive] : begin local refW : sumChildrenWidth - kern include dfg2 include : Translate (dfg1.advanceWidth * wadj1 - kern) 0 - include : difference - intersection - Rect (CAP * 2) (Descender * 2) (-CWidth) (dfg1.advanceWidth * wadj1 - kern + dfg2.advanceWidth * wadj2 / 2) - glyph-proc : include dfg1 - maskOut + local leftHalf : intersection dfg1 + Rect (CAP * 2) (Descender * 2) (-CWidth) (dfg1.advanceWidth * wadj1 - kern + dfg2.advanceWidth * wadj2 / 2) + include : difference.apply null { leftHalf :: maskOuts} include : Upright include : Translate (-refW / 2) 0 include : Scale [clamp 0 1 ((CWidth - SB * 1.25) / (CWidth - SB * 2) * CWidth / refW)] 1 diff --git a/font-src/glyphs/index.ptl b/font-src/glyphs/index.ptl index 28397d433..f3b7acb0d 100644 --- a/font-src/glyphs/index.ptl +++ b/font-src/glyphs/index.ptl @@ -74,7 +74,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin glyphObject.setWidth Width glyphObject.gizmo = GlobalTransform glyphObject.include actions true true - warnAboutBrokenGlyph glyphObject ensuredGlyphName + warnAboutBrokenGlyph glyphObject ensuredGlyphName saveGlyphName if saveGlyphName : begin if (saveGlyphName.0 != '.' && [glyphStore.queryByName saveGlyphName]) @@ -86,7 +86,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin return glyphObject - define [warnAboutBrokenGlyph g ensuredGlyphName] : begin + define [warnAboutBrokenGlyph g ensuredGlyphName saveGlyphName] : begin local complexity 0 local broken false if g.contours : begin @@ -95,9 +95,10 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin if [not : isFinite z.x] : set broken true if [not : isFinite z.y] : set broken true - if ([not recursive] && (broken || complexity > 0x7fff)) : begin + if ([not recursive] && (broken || complexity > 4096)) : begin console.log 'Possible broken shape found in' ensuredGlyphName 'Complexity' complexity console.log 'Family' para.naming.family para.naming.weight para.naming.width para.naming.slope + if saveGlyphName : throw : new Error "Overcomplicated \(saveGlyphName)" define [$assignUnicodeImpl$ g unicode] : begin local u unicode diff --git a/font-src/glyphs/letter/greek.ptl b/font-src/glyphs/letter/greek.ptl index c635ef497..9e7d69658 100644 --- a/font-src/glyphs/letter/greek.ptl +++ b/font-src/glyphs/letter/greek.ptl @@ -217,7 +217,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin define StdBlend 0.65 define [SmallEpsilonShapeDim top bot blend] : begin - local stroke : adviceBlackness2 2.875 2 (top - bot) + local stroke : adviceBlackness2 2 3 (top - bot) local midx : mix SB RightSB blend local midy : mix bot top OverlayPos local sma : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothB / (SmoothA + SmoothB))] - TanSlope * HVContrast * stroke @@ -261,7 +261,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin include : SmallEpsilonShape CAP 0 StdBlend Hook define [CyrZeShapeDim top bot blend] : begin - local stroke : adviceBlackness2 2.875 2 (top - bot) + local stroke : adviceBlackness2 2 3 (top - bot) local midx : mix RightSB SB blend local midy : mix bot top OverlayPos local smb : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothA / (SmoothA + SmoothB))] + TanSlope * HVContrast * stroke diff --git a/font-src/glyphs/letter/latin.ptl b/font-src/glyphs/letter/latin.ptl index dca97a36e..d1caf4092 100644 --- a/font-src/glyphs/letter/latin.ptl +++ b/font-src/glyphs/letter/latin.ptl @@ -965,7 +965,7 @@ glyph-block Letter-Latin-Lower-A : begin glyph-block-import Marks : markHalfStroke glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend - define ADoubleStoreyStroke : adviceBlackness2 2.875 2 XH + define ADoubleStoreyStroke : adviceBlackness2 2 3 XH define ADoubleStoreySmoothA : SmoothAOf (Smooth * [StrokeWidthBlend 0.9 0.81 ADoubleStoreyStroke]) Width define ADoubleStoreySmoothB : SmoothBOf (Smooth * [StrokeWidthBlend 0.9 0.81 ADoubleStoreyStroke]) Width @@ -1365,7 +1365,7 @@ glyph-block Letter-Latin-X : begin : else : begin local height : Math.abs (lefty - righty) - local slabClearance : if slab [adviceBlackness2 3 2 height] 0 + local slabClearance : if slab [adviceBlackness2 2 3 height] 0 local turnyleft : mix lefty righty [if slab [Math.max turn (slabClearance / height)] turn] local cyleft : mix turnyleft righty tension local straightxleft : mix leftx rightx pStraight @@ -2104,7 +2104,7 @@ glyph-block Letter-Latin-Upper-B : begin glyph-block-import Letter-Shared-Metrics : BowlXDepth define [BShape] : params [top [barPos 0.52] [topArcShift 0] [topArcInnerShift 0]] : glyph-proc - local stroke : adviceBlackness2 2.875 2 top + local stroke : adviceBlackness2 2 3 top local bowl : top * barPos + stroke * (1 - barPos) local barleft SB local mockBowlDepth : BowlXDepth top (bowl - stroke) barleft RightSB stroke @@ -2163,7 +2163,7 @@ glyph-block Letter-Latin-Upper-B : begin include : LeftHook SB CAP define [ItalicCyrveShape top] : glyph-proc - local stroke : adviceBlackness2 2.875 2 top + local stroke : adviceBlackness2 2 3 top local mid : mix RightSB SB 0.65 local midy : top * HBarPos local smb : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothA / (SmoothA + SmoothB))] + TanSlope * HVContrast * stroke @@ -2189,7 +2189,7 @@ glyph-block Letter-Latin-Upper-B : begin curl mid (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward] define [ClosedEpsilonShape top] : glyph-proc - local stroke : adviceBlackness2 2.875 2 top + local stroke : adviceBlackness2 2 3 top local mid : mix SB RightSB 0.65 local midy : top * HBarPos local sma : top - [mix (midy + stroke / 2) (top - O - stroke) (SmoothB / (SmoothA + SmoothB))] - TanSlope * HVContrast * stroke @@ -2236,7 +2236,7 @@ glyph-block Letter-Latin-Upper-B : begin create-glyph 'Bbar' 0x243 : glyph-proc include [refer-glyph 'B'] AS_BASE - local stroke : adviceBlackness2 2.875 2 CAP + local stroke : adviceBlackness2 2 3 CAP include : HOverlayBar mix SB 0 0.7 mix SB RightSB 0.5 @@ -2884,13 +2884,14 @@ glyph-block Letter-Latin-Lower-R : begin glyph-block-import Common-Derivatives glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend + local dfN : DivFrame 1 local dfR : DivFrame para.diversityF local rStraight 0 local rSerifed 1 local rNarrow 2 local rEarless 3 - define [RDim mode] : begin + define [RDim df mode] : begin local rBalanceMultiplier : match mode [0 1] [1 (4 / 3)] [2 (1 / 2)] [3 1] local rHookMultiplier : match mode [0 1] [1 (2 / 3)] [2 1] [3 1] local rHookSwMultiplier : match mode [0 0] [1 (1 / 4)] [2 0] [3 0] @@ -2907,11 +2908,11 @@ glyph-block Letter-Latin-Lower-R : begin local [rTopSerif y] : tagged 'serifLT' LeftwardTopSerif rSerifX y (rSerifLeftJut + HalfStroke * HVContrast) local fine : ShoulderFine * CThin - local rHookX : dfR.rightSB + RBalance2 * rBalanceMultiplier - (OX - O) + local rHookX : df.rightSB + RBalance2 * rBalanceMultiplier - (OX - O) local rmiddle : match mode 0 : mix (rbar - fine) rHookX (0.54 + 2 * TanSlope * Stroke / Width) 1 : mix (rbar - fine) rHookX (0.59 + 2 * TanSlope * Stroke / Width) - 2 : mix rHookX dfR.width (3 / 8) + 2 : mix rHookX df.width (3 / 8) 3 : mix (rbar - Stroke * HVContrast) rHookX 0.5 local mixpin : match mode 0 : 0.65 + 4 * TanSlope * Stroke / Width @@ -2924,7 +2925,7 @@ glyph-block Letter-Latin-Lower-R : begin return : object rbar rBottomSerif rTopSerif fine rmiddle skew rHookX rHookY hookSuperness define [StandardLowerRShape df md doTopSerif doBottomSerif] : glyph-proc - define [object rbar rBottomSerif rTopSerif fine rmiddle skew rHookX rHookY hookSuperness] : RDim md + define [object rbar rBottomSerif rTopSerif fine rmiddle skew rHookX rHookY hookSuperness] : RDim df md include : dispiro widths.lhs g4.up.start rHookX (XH - rHookY - Stroke * 0.5) [heading Upward] @@ -2938,7 +2939,7 @@ glyph-block Letter-Latin-Lower-R : begin if doTopSerif : include : rTopSerif XH define [NarrowLowerRshape df md doTopSerif doBottomSerif] : glyph-proc - define [object rbar fine rmiddle] : RDim md + define [object rbar fine rmiddle] : RDim df md include : dispiro widths.lhs g4.left.mid (rmiddle - CorrectionOMidS * [linreg 72 0.75 108 1 Stroke]) (XH - O) @@ -2948,7 +2949,7 @@ glyph-block Letter-Latin-Lower-R : begin set-base-anchor 'overlay' (rbar - Stroke * 0.25) (XH * 0.5) define [EarlessCornerLowerRShape df md doTopSerif doBottomSerif] : glyph-proc - define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim md + define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim df md include : dispiro widths.lhs g4.up.start rHookX (XH - rHookY - Stroke * 0.5) [heading Upward] @@ -2959,7 +2960,7 @@ glyph-block Letter-Latin-Lower-R : begin set-base-anchor 'overlay' (rbar - Stroke * 0.25) (XH * 0.5) define [EarlessRoundedLowerRShape df md doTopSerif doBottomSerif] : glyph-proc - define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim md + define [object rbar rmiddle rHookX rHookY hookSuperness] : RDim df md local hx : Math.max rHookX (rbar + 1.25 * Stroke) include : dispiro widths.lhs @@ -2972,11 +2973,11 @@ glyph-block Letter-Latin-Lower-R : begin create-glyph : glyph-proc set-width dfR.width include : dfR.markSet.e - create-derived "r.straight" : StandardLowerRShape dfR rStraight 0 0 - create-derived "r.serifed" : StandardLowerRShape dfR rSerifed 1 1 - create-derived "r.top-serifed" : StandardLowerRShape dfR rSerifed 1 0 - create-derived "r.earlessCorner" : EarlessCornerLowerRShape dfR rEarless 0 0 - create-derived "r.earlessRounded" : EarlessRoundedLowerRShape dfR rEarless 0 0 + create-derived "r.straight" : StandardLowerRShape dfN rStraight 0 0 + create-derived "r.serifed" : StandardLowerRShape dfN rSerifed 1 1 + create-derived "r.top-serifed" : StandardLowerRShape dfN rSerifed 1 0 + create-derived "r.earlessCorner" : EarlessCornerLowerRShape dfN rEarless 0 0 + create-derived "r.earlessRounded" : EarlessRoundedLowerRShape dfN rEarless 0 0 create-glyph 'r.narrow' : glyph-proc set-width dfR.width @@ -2985,105 +2986,108 @@ glyph-block Letter-Latin-Lower-R : begin select-variant 'r' 'r' - define [TurnRMarks] : compositeBaseAnchors [dfR.markSet.e] - begin {.baseAnchors {.bottomright {.x (dfR.rightSB - RBalance) .y 0}}} - turned 'turnr' 0x279 'r' dfR.middle (XH / 2) [TurnRMarks] + define [HalfAdvance] : this.advanceWidth / 2 + define [TurnRMarks k] : glyph-proc + local df : DivFrame (currentGlyph.advanceWidth / Width) + local mx : compositeBaseAnchors [df.markSet.(k)] + begin {.baseAnchors {.bottomright {.x (df.rightSB - RBalance) .y 0}}} + include mx + + turned 'turnr' 0x279 'r' HalfAdvance (XH / 2) [TurnRMarks 'e'] do - define [SmallRLongLegShape F mode doTopSerif] : glyph-proc - define [object rbar rBottomSerif] : RDim mode - include : F dfR mode doTopSerif 0 + define [SmallRLongLegShape F df mode doTopSerif] : glyph-proc + set-width df.width + include : df.markSet.p + define [object rbar rBottomSerif] : RDim df mode + include : F df mode doTopSerif 0 eject-contour 'serifLB' include : VBarRight rbar Descender 0 if SLAB : include : rBottomSerif Descender - create-glyph : glyph-proc - set-width dfR.width - include : dfR.markSet.p - create-derived 'rlongleg.straight' - SmallRLongLegShape StandardLowerRShape rStraight 0 - create-derived 'rlongleg.serifed' - SmallRLongLegShape StandardLowerRShape rSerifed 1 - create-derived 'rlongleg.top-serifed' - SmallRLongLegShape StandardLowerRShape rSerifed 1 - create-derived 'rlongleg.earlessCorner' - SmallRLongLegShape EarlessCornerLowerRShape rEarless 0 - create-derived 'rlongleg.earlessRounded' - SmallRLongLegShape EarlessRoundedLowerRShape rEarless 0 - create-derived 'rlongleg.narrow' - SmallRLongLegShape NarrowLowerRshape rNarrow 0 + create-glyph 'rlongleg.straight' + SmallRLongLegShape StandardLowerRShape dfN rStraight 0 + create-glyph 'rlongleg.serifed' + SmallRLongLegShape StandardLowerRShape dfN rSerifed 1 + create-glyph 'rlongleg.top-serifed' + SmallRLongLegShape StandardLowerRShape dfN rSerifed 1 + create-glyph 'rlongleg.earlessCorner' + SmallRLongLegShape EarlessCornerLowerRShape dfN rEarless 0 + create-glyph 'rlongleg.earlessRounded' + SmallRLongLegShape EarlessRoundedLowerRShape dfN rEarless 0 + create-glyph 'rlongleg.narrow' + SmallRLongLegShape NarrowLowerRshape dfR rNarrow 0 select-variant 'rlongleg' 0x27C (follow -- 'r') - define [TurnRLongLegMarks] : compositeBaseAnchors [dfR.markSet.b] - begin {.baseAnchors {.bottomright {.x (dfR.rightSB - RBalance) .y 0}}} - turned 'turnrlongleg' 0x27A 'rlongleg' dfR.middle (XH / 2) [TurnRLongLegMarks] + turned 'turnrlongleg' 0x27A 'rlongleg' HalfAdvance (XH / 2) [TurnRMarks 'b'] do - define [SmallRRTailShape F mode doTopSerif] : glyph-proc - define [object rbar] : RDim mode - include : F dfR mode doTopSerif 0 + define [SmallRRTailShape F df mode doTopSerif] : glyph-proc + set-width df.width + include : df.markSet.p + define [object rbar] : RDim df mode + include : F df mode doTopSerif 0 eject-contour 'serifLB' include : new-glyph : glyph-proc include : refer-glyph "rtailBR" include : Upright include : Translate rbar 0 include : Italify - create-glyph : glyph-proc - set-width dfR.width - include : dfR.markSet.p - create-derived 'rrtail.straight' - SmallRRTailShape StandardLowerRShape rStraight 0 - create-derived 'rrtail.serifed' - SmallRRTailShape StandardLowerRShape rSerifed 1 - create-derived 'rrtail.top-serifed' - SmallRRTailShape StandardLowerRShape rSerifed 1 - create-derived 'rrtail.earlessCorner' - SmallRRTailShape EarlessCornerLowerRShape rEarless 0 - create-derived 'rrtail.earlessRounded' - SmallRRTailShape EarlessRoundedLowerRShape rEarless 0 - create-derived 'rrtail.narrow' - SmallRRTailShape NarrowLowerRshape rNarrow 0 + create-glyph 'rrtail.straight' + SmallRRTailShape StandardLowerRShape dfN rStraight 0 + create-glyph 'rrtail.serifed' + SmallRRTailShape StandardLowerRShape dfN rSerifed 1 + create-glyph 'rrtail.top-serifed' + SmallRRTailShape StandardLowerRShape dfN rSerifed 1 + create-glyph 'rrtail.earlessCorner' + SmallRRTailShape EarlessCornerLowerRShape dfN rEarless 0 + create-glyph 'rrtail.earlessRounded' + SmallRRTailShape EarlessRoundedLowerRShape dfN rEarless 0 + create-glyph 'rrtail.narrow' + SmallRRTailShape NarrowLowerRshape dfR rNarrow 0 select-variant 'rrtail' 0x27D (follow -- 'r') - turned 'smallLetterTurnedRWithTail' 0x2C79 'rrtail' dfR.middle (XH / 2) [dfR.markSet.b] + turned 'smallLetterTurnedRWithTail' 0x2C79 'rrtail' HalfAdvance (XH / 2) : glyph-proc + local df : DivFrame (currentGlyph.advanceWidth / Width) + include : df.markSet.b do - define [TurnRRTailShape F mode doBottomSerif] : glyph-proc - define [object rbar] : RDim mode - include : F dfR mode 0 doBottomSerif + define [TurnRRTailShape F df mode doBottomSerif] : glyph-proc + set-width df.width + include : df.markSet.p + define [object rbar] : RDim df mode + include : F df mode 0 doBottomSerif eject-contour 'serifLT' - include : FlipAround dfR.middle (XH / 2) + include : FlipAround df.middle (XH / 2) include : new-glyph : glyph-proc include : refer-glyph "rtailBR" include : Upright - include : Translate (dfR.rightSB - rbar + dfR.leftSB + Stroke * HVContrast) 0 + include : Translate (df.rightSB - rbar + df.leftSB + Stroke * HVContrast) 0 include : Italify - create-glyph : glyph-proc - set-width dfR.width - include : dfR.markSet.p - create-derived 'turnrrtail.straight' - TurnRRTailShape StandardLowerRShape rStraight 0 - create-derived 'turnrrtail.serifed' - TurnRRTailShape StandardLowerRShape rSerifed 1 - create-derived 'turnrrtail.top-serifed' - TurnRRTailShape StandardLowerRShape rSerifed 0 - create-derived 'turnrrtail.narrow' - TurnRRTailShape NarrowLowerRshape rNarrow 0 + + create-glyph 'turnrrtail.straight' + TurnRRTailShape StandardLowerRShape dfN rStraight 0 + create-glyph 'turnrrtail.serifed' + TurnRRTailShape StandardLowerRShape dfN rSerifed 1 + create-glyph 'turnrrtail.top-serifed' + TurnRRTailShape StandardLowerRShape dfN rSerifed 0 + create-glyph 'turnrrtail.narrow' + TurnRRTailShape NarrowLowerRshape dfR rNarrow 0 select-variant 'turnrrtail' 0x27B create-glyph 'rflap.straight' : glyph-proc - set-width dfR.width - include : dfR.markSet.e - define [object rBottomSerif] : RDim rEarless - include : EarlessRoundedLowerRShape dfR rEarless 0 0 + set-width dfN.width + include : dfN.markSet.e + define [object rBottomSerif] : RDim dfN rEarless + include : EarlessRoundedLowerRShape dfN rEarless 0 0 create-derived 'rflap.serifed' : rBottomSerif 0 create-glyph 'rflap.narrow' : glyph-proc set-width dfR.width include : dfR.markSet.e - define [object rbar rBottomSerif rmiddle] : RDim rNarrow + define [object rbar rBottomSerif rmiddle] : RDim dfR rNarrow include : dispiro widths.lhs @@ -3225,7 +3229,7 @@ glyph-block Letter-Latin-C : begin create-glyph 'ccurlytail' 0x255 : glyph-proc include : MarkSet.e - local stroke : adviceBlackness2 2.875 2 XH + local stroke : adviceBlackness2 2 3 XH local fine : adviceBlackness2 3 3 XH local rinner : ((XH * 0.45) - fine * 1.5) / 2 local m1 : SB + O + stroke * HVContrast @@ -3252,11 +3256,11 @@ glyph-block Letter-Latin-C : begin create-glyph 'cyrl/Ye' 0x404 : glyph-proc include [refer-glyph "C"] AS_BASE - include : HBar SB [mix RightSB SB 0.25] (CAP / 2) [adviceBlackness2 4 2 CAP] + include : HBar SB [mix RightSB SB 0.25] (CAP / 2) [adviceBlackness2 2 4 CAP] create-glyph 'cyrl/ye' 0x454 : glyph-proc include [refer-glyph "c"] AS_BASE - include : HBar SB [mix RightSB SB 0.25] (XH / 2) [adviceBlackness2 4 2 XH] + include : HBar SB [mix RightSB SB 0.25] (XH / 2) [adviceBlackness2 2 4 XH] create-glyph 'grek/sigma' 0x3C3 : glyph-proc include : MarkSet.e @@ -3487,7 +3491,7 @@ glyph-block Letter-Latin-Lower-G : begin define l : mix 0 SB 0.3 define r : mix Width RightSB 0.3 define bwDoubleStorey : Math.min [adviceBlackness 5] (0.5 / 3 * (CAP - Stroke * 4)) - define bwSingleStorey : adviceBlackness2 4 2 XH + define bwSingleStorey : adviceBlackness2 2 4 XH create-glyph 'gbar.doubleStorey' : glyph-proc include [refer-glyph "g.doubleStorey"] AS_BASE include : HBar l r [query-glyph "g.doubleStorey"].baseAnchors.overlay.y bwDoubleStorey @@ -4381,7 +4385,7 @@ glyph-block Letter-Latin-Lower-M : begin define [SmallMBottomRightSerif df top rbot] : glyph-proc if (df.width > para.refJut * 7) : begin - if [not para.isItalic] : begin + if para.isItalic : begin include : tagged 'serifRB' : intersection CenterBottomSerif (df.rightSB - 0.5 * df.mvs * HVContrast) rbot Jut df.mvs Rect top rbot (df.rightSB + O) df.width @@ -4917,7 +4921,7 @@ glyph-block Letter-Latin-Upper-F : begin return { jutTop jutBot } define [FShape] : params [top pyBar noSerif] : glyph-proc - define stroke : adviceBlackness2 2.875 2 CAP + define stroke : adviceBlackness2 2 3 CAP define xFBarLeft : SB * 1.5 include : VBarLeft (xFBarLeft) 0 top stroke include : HBarTop (xFBarLeft - O) RightSB top stroke @@ -4930,7 +4934,7 @@ glyph-block Letter-Latin-Upper-F : begin include : DownwardRightSerif RightSB top jutTop define [RevFShape] : params [top pyBar noSerif] : glyph-proc - define stroke : adviceBlackness2 2.875 2 CAP + define stroke : adviceBlackness2 2 3 CAP define xFBarRight : Width - SB * 1.5 include : VBarRight (xFBarRight) 0 top stroke include : HBarTop SB (xFBarRight + O) top stroke @@ -5260,7 +5264,7 @@ glyph-block Letter-Latin-Upper-E : begin glyph-block-export EShape define [EShape] : params [top pyBar noSerif] : glyph-proc - define stroke : adviceBlackness2 2.875 2 CAP + define stroke : adviceBlackness2 2 3 CAP define xEBarLeft : SB * 1.5 include : FShape top pyBar true include : HBarBottom (xEBarLeft - O) RightSB 0 stroke @@ -5273,7 +5277,7 @@ glyph-block Letter-Latin-Upper-E : begin glyph-block-export RevEShape define [RevEShape] : params [top pyBar noSerif] : glyph-proc - define stroke : adviceBlackness2 2.875 2 CAP + define stroke : adviceBlackness2 2 3 CAP define xEBarRight : Width - SB * 1.5 include : RevFShape top pyBar true include : HBarBottom SB (xEBarRight + O) 0 stroke @@ -5329,11 +5333,11 @@ glyph-block Letter-Latin-Lower-E : begin create-glyph 'e' 'e' : glyph-proc include : MarkSet.e - include : SmallEShape XH [adviceBlackness2 2.875 2 XH] + include : SmallEShape XH [adviceBlackness2 2 3 XH] create-glyph 'Schwa' 0x18F : glyph-proc include : MarkSet.capital - include : SmallEShape CAP [adviceBlackness2 2.875 2 CAP] + include : SmallEShape CAP [adviceBlackness2 2 3 CAP] include : FlipAround Middle (CAP / 2) alias 'cyrl/ie' 0x435 'e' @@ -5362,7 +5366,7 @@ glyph-block Letter-Latin-Lower-E : begin create-glyph 'reve' 0x258 : glyph-proc include : MarkSet.e - include : RevSmallEShape XH [adviceBlackness2 2.875 2 XH] + include : RevSmallEShape XH [adviceBlackness2 2 3 XH] glyph-block Letter-Latin-Upper-T : begin @@ -5574,7 +5578,7 @@ glyph-block Letter-Latin-S : begin return : alsoThruThem {{(0.5 - dist) tension} {(0.5 + dist) (1 - tension)}} [widths.center stroke] define [SStroke] : begin - local stroke : adviceBlackness2 2.875 2 CAP + local stroke : adviceBlackness2 2 3 CAP local ess : Ess * stroke / Stroke define smooth : adviceSSmooth CAP (-1) stroke return : dispiro @@ -5588,7 +5592,7 @@ glyph-block Letter-Latin-S : begin g4 (SB + SOBot) Hook define [RevSStroke] : begin - local stroke : adviceBlackness2 2.875 2 CAP + local stroke : adviceBlackness2 2 3 CAP local ess : Ess * stroke / Stroke local smooth : adviceSSmooth CAP 0.5 stroke return : dispiro @@ -5602,8 +5606,8 @@ glyph-block Letter-Latin-S : begin g4 (RightSB - SOBot) Hook define [sStroke] : begin - define stroke : adviceBlackness2 2.875 2 XH - define ess : adviceBlackness2 3.2 2.2 XH + define stroke : adviceBlackness2 2 3 XH + define ess : adviceBlackness2 2.2 3.2 XH define strokeCoeff : StrokeWidthBlend 0 1 stroke define smooth : adviceSSmooth XH (-1) stroke return : dispiro @@ -5617,8 +5621,8 @@ glyph-block Letter-Latin-S : begin g4 (SB + SOBot) SHook define [sStrokePhoneticRight] : begin - define stroke : adviceBlackness2 2.875 2 XH - define ess : adviceBlackness2 3.2 2.2 XH + define stroke : adviceBlackness2 2 3 XH + define ess : adviceBlackness2 2.2 3.2 XH define strokeCoeff : StrokeWidthBlend 0 1 stroke define smooth : adviceSSmooth XH (-1) stroke return : dispiro @@ -5633,8 +5637,8 @@ glyph-block Letter-Latin-S : begin curl SB 0 define [RevsStroke] : begin - define stroke : adviceBlackness2 2.875 2 XH - define ess : adviceBlackness2 3.2 2.2 XH + define stroke : adviceBlackness2 2 3 XH + define ess : adviceBlackness2 2.2 3.2 XH define strokeCoeff : StrokeWidthBlend 0 1 stroke define smooth : adviceSSmooth XH 0.75 stroke return : dispiro @@ -5691,7 +5695,7 @@ glyph-block Letter-Latin-S : begin local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1) include : new-glyph : glyph-proc - local sw : adviceBlackness2 2.875 2 XH + local sw : adviceBlackness2 2 3 XH include : refer-glyph "rtailBR" include : Upright include : Translate (start.x + sw * HVContrast) 0 @@ -5705,7 +5709,7 @@ glyph-block Letter-Latin-S : begin local stroke : [SStroke].call currentGlyph local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1) - local sw : adviceBlackness2 2.875 2 CAP + local sw : adviceBlackness2 2 3 CAP include : dispiro widths.lhs [adviceBlackness 4.5] g4 start.x start.y @@ -5719,7 +5723,7 @@ glyph-block Letter-Latin-S : begin local stroke : [sStroke].call currentGlyph local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1) - local sw : adviceBlackness2 2.875 2 XH + local sw : adviceBlackness2 2 3 XH include : dispiro widths.lhs [adviceBlackness 4.5] g4 start.x start.y @@ -6009,7 +6013,7 @@ glyph-block Letter-Latin-Eszet : begin SB + swOuter * HVContrast + (RightSB - SB - Stroke) * 0.1 mix SB RightSB 0.3 define widthInner : Width - swOuter * HVContrast - (RightSB - SB - Stroke) * 0.1 - define swInner : adviceBlackness2 3 2 XH (widthInner / Width) + define swInner : adviceBlackness2 2 3 XH (widthInner / Width) define sTopY : XH + swInner / 8 define smooth : SmoothBOf (swInner + (widthInner / Width) * ([adviceSSmooth XH (-1) swInner] - swInner)) widthInner define sTurnX : Math.max sEndX [mix SB RightSB 0.3] @@ -6076,7 +6080,7 @@ glyph-block Letter-Latin-Upper-AE-OE : begin define eBarPos : designParameters.upperEBarPos SLAB define sw : Math.min df.mvs : adviceBlackness2 3 3 CAP df.div define eleft : df.middle - sw * 0.25 * HVContrast - define fine : adviceBlackness2 4 3 CAP df.div + define fine : adviceBlackness2 3 4 CAP df.div define swVJut : Math.min sw ((df.rightSB - eleft - sw * HVContrast) * (4 / 5)) set-width df.width @@ -6454,7 +6458,7 @@ glyph-block Letter-Latin-Ezh : begin include : MarkSet.e local p (SmallSmoothB / (SmallSmoothA + SmallSmoothB)) include : EzhShape XH Descender nothing nothing p - local fine : adviceBlackness2 5 3 (XH - Descender) + local fine : adviceBlackness2 3 5 (XH - Descender) local rinner : (XH * 0.4 - fine * 1.5) / 2 local m1 : RightSB - Stroke * HVContrast - OX local x2 : RightSB - HalfStroke diff --git a/font-src/glyphs/marks/index.ptl b/font-src/glyphs/marks/index.ptl index e95f9434b..590658616 100644 --- a/font-src/glyphs/marks/index.ptl +++ b/font-src/glyphs/marks/index.ptl @@ -15,9 +15,9 @@ glyph-block Marks : begin ### Combining marks glyph-block-export markExtend markHalfStroke markFine local markExtend (AccentX * 0.5) - local markHalfStroke : 0.5 * [adviceBlackness2 3.5 3.375 XH] + local markHalfStroke : 0.5 * [adviceBlackness2 3.375 3.5 XH] local markStress : markHalfStroke * 1.1 - local markFine : markHalfStroke * 0.9 + local markFine : Math.min (markHalfStroke * 0.9) (0.5 * [adviceBlackness2 3.875 4.25 XH]) glyph-block-export markMiddle local markMiddle (-Middle) @@ -1045,16 +1045,17 @@ glyph-block Marks : begin define [HornShape attX attY overshootX overshootY yrP] : glyph-proc local [object radius hornFine hornStroke startX startY] : HornDim attX attY overshootX overshootY yrP + local swStart : Math.min (radius / 2) ShoulderFine include : union - RingAt (startX - radius) startY (radius + OX / 2) + RingAt (startX - radius) startY (radius + OX) dispiro - g4.down.start (startX + OX) (startY) [widths.rhs.heading [Math.min (radius / 2) ShoulderFine] Downward] + g4.down.start (startX + OX) (startY) [widths.rhs.heading swStart Downward] arcvh - g4.left.mid (startX - radius) (startY - radius) [heading Leftward] + g4.left.mid (startX - radius) (startY - radius) [widths.rhs.heading [mix swStart hornFine 0.25] Leftward] archv - g4.up.mid (startX - 2 * radius) (startY) [heading Upward] + g4.up.mid (startX - 2 * radius) (startY) [widths.rhs.heading [mix swStart hornFine 0.5] Upward] arcvh - g4.right.mid (startX - radius) (startY + radius) [heading Rightward] + g4.right.mid (startX - radius) (startY + radius) [widths.rhs.heading [mix swStart hornFine 0.75] Rightward] archv g4.down.mid startX startY [widths.rhs.heading hornFine Downward] quadcontrols.g4 0 0.75 16 : object : blend : lambda [t] diff --git a/font-src/glyphs/number/index.ptl b/font-src/glyphs/number/index.ptl index 086816c69..a4e6b652b 100644 --- a/font-src/glyphs/number/index.ptl +++ b/font-src/glyphs/number/index.ptl @@ -543,7 +543,7 @@ glyph-block Digits-Eight : begin local EightPr : StrokeWidthBlend 0.85 0.925 define [EightShape top] : begin - local stroke : adviceBlackness2 2.875 2 CAP + local stroke : adviceBlackness2 2 3 CAP local p 0.96 local l (SB + OX) local r (RightSB - OX) diff --git a/font-src/glyphs/symbol/arrow.ptl b/font-src/glyphs/symbol/arrow.ptl index 8145ac018..52dc02eea 100644 --- a/font-src/glyphs/symbol/arrow.ptl +++ b/font-src/glyphs/symbol/arrow.ptl @@ -258,7 +258,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1 MkArrow [HookArrowShape 1] [MangleName 'hookarrowdownleft'] [MangleUnicode 0x2926] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot do "Half Circle Arrow" - local arcSW : adviceBlackness 4 MosaicWidthScalar + local arcSW : Math.min OperatorStroke [adviceBlackness 4 MosaicWidthScalar] local headSize : mix arcSW arrowSize 0.5 local hsx0 : HVContrast * arcSW / 2 local hsx : hsx0 + headSize / 2 diff --git a/font-src/glyphs/symbol/punctuation.ptl b/font-src/glyphs/symbol/punctuation.ptl index b9bea1230..6147ca1dd 100644 --- a/font-src/glyphs/symbol/punctuation.ptl +++ b/font-src/glyphs/symbol/punctuation.ptl @@ -1452,7 +1452,7 @@ glyph-block Symbol-Punctuation-Percentages : begin local m : mix l r (1 / 2) local sma : SmoothA * 0.5 * para.diversityM local smb : SmoothB * 0.5 * para.diversityM - local sw : adviceBlackness2 5 4 CAP para.diversityM + local sw : adviceBlackness2 4 5 CAP para.diversityM local fine : adviceBlackness2 5 5 CAP para.diversityM local cor : HVContrast / [Math.sqrt (1 - [Math.pow ((r - l - sw) / (CAP - 0)) 2])] local pTerm : (fine / 2) / [Math.hypot CAP (r - l)] @@ -1475,7 +1475,7 @@ glyph-block Symbol-Punctuation-Percentages : begin local fill : ((r2 - l1) - gap) / 2 local r1 : l1 + fill local l2 : r1 + gap - local swp : adviceBlackness 4 + local swp : adviceBlackness2 4 5 CAP para.diversityM include : OShape otop 0 l1 r1 swp sma smb include : OShape otop 0 l2 r2 swp sma smb @@ -1488,7 +1488,7 @@ glyph-block Symbol-Punctuation-Percentages : begin local l2 : r1 + gap local r2 : l2 + fill local l3 : r2 + gap - local swp : adviceBlackness2 5 6.5 CAP para.diversityM + local swp : adviceBlackness2 6 5 CAP para.diversityM local smap : SmoothA * (1/3) * para.diversityM local smbp : SmoothB * (1/3) * para.diversityM include : OShape otop 0 l1 r1 swp smap smbp diff --git a/font-src/meta/aesthetics.ptl b/font-src/meta/aesthetics.ptl index 487d682a4..e086b6154 100644 --- a/font-src/meta/aesthetics.ptl +++ b/font-src/meta/aesthetics.ptl @@ -76,15 +76,16 @@ export : define [calculateMetrics para] : begin # We will estimate blackness using lower-case 'e' define DarknessMockWidth : if (Width < HalfUPM) (HalfUPM * [Math.pow (Width / HalfUPM) 0.5]) Width define DarknessMockWidth2 : HalfUPM * [Math.pow (Width / HalfUPM) 0.5] - define BaseFillRate : 1 / 2 + para.stroke / ([Math.max HalfUPM DarknessMockWidth2] - SB * 2) - define [InverseCrowdedness c] : [Math.tanh c] / c - define [adviceBlackness crowdedness div mul] : begin + define [BaseFillRate con] : 1 / 2 + para.stroke / ([Math.max HalfUPM DarknessMockWidth2] - SB * 2) + define [InverseCrowdedness con cow] : [Math.tanh (cow * [Math.sqrt con])] / (cow * [Math.sqrt con]) + define [adviceBlacknessImpl con cow div mul] : begin local gap : DarknessMockWidth * [fallback div 1] - SB * 2 - local shrink : BaseFillRate * [InverseCrowdedness crowdedness] + local shrink : [BaseFillRate con] * [InverseCrowdedness con cow] return : Math.min para.stroke ([fallback mul 1] * gap * shrink) + define [adviceBlackness cow div mul] : adviceBlacknessImpl HVContrast cow div mul define [adviceBlackness2 cowX cowY refH div] : Math.min - adviceBlackness cowX (refH / DarknessMockWidth2) - adviceBlackness cowY div + adviceBlacknessImpl HVContrast cowX div + adviceBlacknessImpl 1 cowY (refH / DarknessMockWidth2) define Stroke : adviceBlackness 2 diff --git a/images/charvars.png b/images/charvars.png index 43f0acf8c..32d74285c 100644 Binary files a/images/charvars.png and b/images/charvars.png differ diff --git a/images/iosevka-aile.png b/images/iosevka-aile.png index 72de3a5f9..a67739216 100644 Binary files a/images/iosevka-aile.png and b/images/iosevka-aile.png differ diff --git a/images/iosevka-curly-slab.png b/images/iosevka-curly-slab.png index 3a7658b34..9554ab8f6 100644 Binary files a/images/iosevka-curly-slab.png and b/images/iosevka-curly-slab.png differ diff --git a/images/iosevka-curly.png b/images/iosevka-curly.png index c243ac1f6..8c1dd8702 100644 Binary files a/images/iosevka-curly.png and b/images/iosevka-curly.png differ diff --git a/images/iosevka-etoile.png b/images/iosevka-etoile.png index 36922c3d9..181ed7774 100644 Binary files a/images/iosevka-etoile.png and b/images/iosevka-etoile.png differ diff --git a/images/iosevka-fixed-curly-slab.png b/images/iosevka-fixed-curly-slab.png index 645f7fe75..a89b10f5c 100644 Binary files a/images/iosevka-fixed-curly-slab.png and b/images/iosevka-fixed-curly-slab.png differ diff --git a/images/iosevka-fixed-curly.png b/images/iosevka-fixed-curly.png index 7898e361e..cd948edca 100644 Binary files a/images/iosevka-fixed-curly.png and b/images/iosevka-fixed-curly.png differ diff --git a/images/iosevka-fixed-slab.png b/images/iosevka-fixed-slab.png index 5e18b177b..ad69c5df7 100644 Binary files a/images/iosevka-fixed-slab.png and b/images/iosevka-fixed-slab.png differ diff --git a/images/iosevka-fixed-ss01.png b/images/iosevka-fixed-ss01.png index 69ae12deb..84531dfc1 100644 Binary files a/images/iosevka-fixed-ss01.png and b/images/iosevka-fixed-ss01.png differ diff --git a/images/iosevka-fixed-ss02.png b/images/iosevka-fixed-ss02.png index d9334edba..d4a240009 100644 Binary files a/images/iosevka-fixed-ss02.png and b/images/iosevka-fixed-ss02.png differ diff --git a/images/iosevka-fixed-ss03.png b/images/iosevka-fixed-ss03.png index b8969d324..aef3fc730 100644 Binary files a/images/iosevka-fixed-ss03.png and b/images/iosevka-fixed-ss03.png differ diff --git a/images/iosevka-fixed-ss04.png b/images/iosevka-fixed-ss04.png index 562044d16..53c1357f5 100644 Binary files a/images/iosevka-fixed-ss04.png and b/images/iosevka-fixed-ss04.png differ diff --git a/images/iosevka-fixed-ss05.png b/images/iosevka-fixed-ss05.png index 03bff09c5..3e2cf7b0a 100644 Binary files a/images/iosevka-fixed-ss05.png and b/images/iosevka-fixed-ss05.png differ diff --git a/images/iosevka-fixed-ss06.png b/images/iosevka-fixed-ss06.png index 305cd4a34..af364f414 100644 Binary files a/images/iosevka-fixed-ss06.png and b/images/iosevka-fixed-ss06.png differ diff --git a/images/iosevka-fixed-ss07.png b/images/iosevka-fixed-ss07.png index 36a0f468d..a225268ad 100644 Binary files a/images/iosevka-fixed-ss07.png and b/images/iosevka-fixed-ss07.png differ diff --git a/images/iosevka-fixed-ss08.png b/images/iosevka-fixed-ss08.png index 875588ba0..b7c947294 100644 Binary files a/images/iosevka-fixed-ss08.png and b/images/iosevka-fixed-ss08.png differ diff --git a/images/iosevka-fixed-ss09.png b/images/iosevka-fixed-ss09.png index 571a2b529..53999ce32 100644 Binary files a/images/iosevka-fixed-ss09.png and b/images/iosevka-fixed-ss09.png differ diff --git a/images/iosevka-fixed-ss10.png b/images/iosevka-fixed-ss10.png index 89d97d19c..bb873b308 100644 Binary files a/images/iosevka-fixed-ss10.png and b/images/iosevka-fixed-ss10.png differ diff --git a/images/iosevka-fixed-ss11.png b/images/iosevka-fixed-ss11.png index 49bf519c0..2355d6848 100644 Binary files a/images/iosevka-fixed-ss11.png and b/images/iosevka-fixed-ss11.png differ diff --git a/images/iosevka-fixed-ss12.png b/images/iosevka-fixed-ss12.png index b919de4a3..5ccd2b501 100644 Binary files a/images/iosevka-fixed-ss12.png and b/images/iosevka-fixed-ss12.png differ diff --git a/images/iosevka-fixed-ss13.png b/images/iosevka-fixed-ss13.png index 033101503..f6fb47243 100644 Binary files a/images/iosevka-fixed-ss13.png and b/images/iosevka-fixed-ss13.png differ diff --git a/images/iosevka-fixed-ss14.png b/images/iosevka-fixed-ss14.png index cdbf149d1..81989b828 100644 Binary files a/images/iosevka-fixed-ss14.png and b/images/iosevka-fixed-ss14.png differ diff --git a/images/iosevka-fixed.png b/images/iosevka-fixed.png index e1471e96d..10e5166e8 100644 Binary files a/images/iosevka-fixed.png and b/images/iosevka-fixed.png differ diff --git a/images/iosevka-slab.png b/images/iosevka-slab.png index d91ea3f63..6c9906cf4 100644 Binary files a/images/iosevka-slab.png and b/images/iosevka-slab.png differ diff --git a/images/iosevka-sparkle.png b/images/iosevka-sparkle.png index 248a69eb2..f2d854737 100644 Binary files a/images/iosevka-sparkle.png and b/images/iosevka-sparkle.png differ diff --git a/images/iosevka-ss01.png b/images/iosevka-ss01.png index 343754fa3..0b835a641 100644 Binary files a/images/iosevka-ss01.png and b/images/iosevka-ss01.png differ diff --git a/images/iosevka-ss02.png b/images/iosevka-ss02.png index d6d9470f9..614b3c710 100644 Binary files a/images/iosevka-ss02.png and b/images/iosevka-ss02.png differ diff --git a/images/iosevka-ss03.png b/images/iosevka-ss03.png index 95ae73d67..d4367ce14 100644 Binary files a/images/iosevka-ss03.png and b/images/iosevka-ss03.png differ diff --git a/images/iosevka-ss04.png b/images/iosevka-ss04.png index a338435e8..f4bd15fd0 100644 Binary files a/images/iosevka-ss04.png and b/images/iosevka-ss04.png differ diff --git a/images/iosevka-ss05.png b/images/iosevka-ss05.png index 52bcac98d..1dfb3af34 100644 Binary files a/images/iosevka-ss05.png and b/images/iosevka-ss05.png differ diff --git a/images/iosevka-ss06.png b/images/iosevka-ss06.png index 861206fc8..8e4f742df 100644 Binary files a/images/iosevka-ss06.png and b/images/iosevka-ss06.png differ diff --git a/images/iosevka-ss07.png b/images/iosevka-ss07.png index 0fb98f091..cd6c5201d 100644 Binary files a/images/iosevka-ss07.png and b/images/iosevka-ss07.png differ diff --git a/images/iosevka-ss08.png b/images/iosevka-ss08.png index 23fc68f97..3922e11c5 100644 Binary files a/images/iosevka-ss08.png and b/images/iosevka-ss08.png differ diff --git a/images/iosevka-ss09.png b/images/iosevka-ss09.png index e4b235f88..f90bfed3f 100644 Binary files a/images/iosevka-ss09.png and b/images/iosevka-ss09.png differ diff --git a/images/iosevka-ss10.png b/images/iosevka-ss10.png index 40dbf2936..cea4861a5 100644 Binary files a/images/iosevka-ss10.png and b/images/iosevka-ss10.png differ diff --git a/images/iosevka-ss11.png b/images/iosevka-ss11.png index 305031525..7adc0463b 100644 Binary files a/images/iosevka-ss11.png and b/images/iosevka-ss11.png differ diff --git a/images/iosevka-ss12.png b/images/iosevka-ss12.png index 245857da6..57f6868b0 100644 Binary files a/images/iosevka-ss12.png and b/images/iosevka-ss12.png differ diff --git a/images/iosevka-ss13.png b/images/iosevka-ss13.png index 70e6fbdda..3891c0a06 100644 Binary files a/images/iosevka-ss13.png and b/images/iosevka-ss13.png differ diff --git a/images/iosevka-ss14.png b/images/iosevka-ss14.png index fd0ad57b7..98cf86514 100644 Binary files a/images/iosevka-ss14.png and b/images/iosevka-ss14.png differ diff --git a/images/iosevka-term-curly-slab.png b/images/iosevka-term-curly-slab.png index 5e61578e9..8a65b822d 100644 Binary files a/images/iosevka-term-curly-slab.png and b/images/iosevka-term-curly-slab.png differ diff --git a/images/iosevka-term-curly.png b/images/iosevka-term-curly.png index f72279f4b..c8eaaaec9 100644 Binary files a/images/iosevka-term-curly.png and b/images/iosevka-term-curly.png differ diff --git a/images/iosevka-term-slab.png b/images/iosevka-term-slab.png index dcec63f47..850826176 100644 Binary files a/images/iosevka-term-slab.png and b/images/iosevka-term-slab.png differ diff --git a/images/iosevka-term-ss01.png b/images/iosevka-term-ss01.png index 40f8c7f04..cfd3e7f35 100644 Binary files a/images/iosevka-term-ss01.png and b/images/iosevka-term-ss01.png differ diff --git a/images/iosevka-term-ss02.png b/images/iosevka-term-ss02.png index 705284b21..4b5100c2a 100644 Binary files a/images/iosevka-term-ss02.png and b/images/iosevka-term-ss02.png differ diff --git a/images/iosevka-term-ss03.png b/images/iosevka-term-ss03.png index 50821a398..d7e0d228b 100644 Binary files a/images/iosevka-term-ss03.png and b/images/iosevka-term-ss03.png differ diff --git a/images/iosevka-term-ss04.png b/images/iosevka-term-ss04.png index 9f3344d54..1ac27f5ac 100644 Binary files a/images/iosevka-term-ss04.png and b/images/iosevka-term-ss04.png differ diff --git a/images/iosevka-term-ss05.png b/images/iosevka-term-ss05.png index 0f92dcd6f..a440588e1 100644 Binary files a/images/iosevka-term-ss05.png and b/images/iosevka-term-ss05.png differ diff --git a/images/iosevka-term-ss06.png b/images/iosevka-term-ss06.png index a8218fbe0..bc4bb67ac 100644 Binary files a/images/iosevka-term-ss06.png and b/images/iosevka-term-ss06.png differ diff --git a/images/iosevka-term-ss07.png b/images/iosevka-term-ss07.png index 9e48b23e2..b267c66c2 100644 Binary files a/images/iosevka-term-ss07.png and b/images/iosevka-term-ss07.png differ diff --git a/images/iosevka-term-ss08.png b/images/iosevka-term-ss08.png index bbe5d9d1a..7bee86f2b 100644 Binary files a/images/iosevka-term-ss08.png and b/images/iosevka-term-ss08.png differ diff --git a/images/iosevka-term-ss09.png b/images/iosevka-term-ss09.png index b368b1958..d38acdaca 100644 Binary files a/images/iosevka-term-ss09.png and b/images/iosevka-term-ss09.png differ diff --git a/images/iosevka-term-ss10.png b/images/iosevka-term-ss10.png index 1027211c7..30d482b9a 100644 Binary files a/images/iosevka-term-ss10.png and b/images/iosevka-term-ss10.png differ diff --git a/images/iosevka-term-ss11.png b/images/iosevka-term-ss11.png index 00f405228..ed1cfdf78 100644 Binary files a/images/iosevka-term-ss11.png and b/images/iosevka-term-ss11.png differ diff --git a/images/iosevka-term-ss12.png b/images/iosevka-term-ss12.png index 38197c3d4..94811a475 100644 Binary files a/images/iosevka-term-ss12.png and b/images/iosevka-term-ss12.png differ diff --git a/images/iosevka-term-ss13.png b/images/iosevka-term-ss13.png index 6111b2519..0822181ae 100644 Binary files a/images/iosevka-term-ss13.png and b/images/iosevka-term-ss13.png differ diff --git a/images/iosevka-term-ss14.png b/images/iosevka-term-ss14.png index 67c3d8d2b..8b28755c0 100644 Binary files a/images/iosevka-term-ss14.png and b/images/iosevka-term-ss14.png differ diff --git a/images/iosevka-term.png b/images/iosevka-term.png index 0d3c05910..63bf3a983 100644 Binary files a/images/iosevka-term.png and b/images/iosevka-term.png differ diff --git a/images/iosevka.png b/images/iosevka.png index c0530f175..86e3a8444 100644 Binary files a/images/iosevka.png and b/images/iosevka.png differ diff --git a/images/languages.png b/images/languages.png index c796364b0..f99dee944 100644 Binary files a/images/languages.png and b/images/languages.png differ diff --git a/images/ligations.png b/images/ligations.png index 145e01501..d722ed0f8 100644 Binary files a/images/ligations.png and b/images/ligations.png differ diff --git a/images/matrix.png b/images/matrix.png index 14ce77046..188e94a15 100644 Binary files a/images/matrix.png and b/images/matrix.png differ diff --git a/images/preview-all.png b/images/preview-all.png index a358cf7f0..377ee80de 100644 Binary files a/images/preview-all.png and b/images/preview-all.png differ diff --git a/images/stylesets.png b/images/stylesets.png index 6fb4b86f0..bcf9e164c 100644 Binary files a/images/stylesets.png and b/images/stylesets.png differ diff --git a/images/weights.png b/images/weights.png index 267928406..7700693ed 100644 Binary files a/images/weights.png and b/images/weights.png differ diff --git a/params/parameters.toml b/params/parameters.toml index 9c0701322..94d954a0c 100644 --- a/params/parameters.toml +++ b/params/parameters.toml @@ -26,8 +26,6 @@ plusSize = 0.52 # Size of plus and arith symbols pictSize = 1.10 # Size of pictograms arrowHeight = 1.50 # Height of arrows -contrast = 1.11111 # Stroke width contrast. - slopeAngle = 0 # slope angle, in degrees. derivedSlopeAngle = 10 # Slope angle of derived letters requiring italics diff --git a/params/shape-weight.toml b/params/shape-weight.toml index 48c77d25e..7d17f7183 100644 --- a/params/shape-weight.toml +++ b/params/shape-weight.toml @@ -1,17 +1,18 @@ [shapeWeight.blend.400] -stroke = 72 # Primary stroke width -sb = 60 # Primary sidebearings -essx = 1.12 # Proportion of widen of center of "S" -dotsize = 125 # Size of dots -periodsize = 140 # Size of period +stroke = 72 # Primary stroke width +contrast = 1.11 # Stroke width contrast +sb = 60 # Primary sidebearings +essx = 1.12 # Proportion of widen of center of "S" +dotsize = 125 # Size of dots +periodsize = 140 # Size of period -jut = 85 # Length of slab serif -refJut = 85 # Reference JUT, used in `m` -vjut = 145 # Length of vertical slab serif -longjut = 175 # Length of long serifs, like that in `i`. +jut = 85 # Length of slab serif +refJut = 85 # Reference JUT, used in `m` +vjut = 145 # Length of vertical slab serif +longjut = 175 # Length of long serifs, like that in `i`. -smooth = 195 # Vertical arc size in capital letters. -smallsmooth = 200 # Vertical arc size in lowercase letters. +smooth = 195 # Vertical arc size in capital letters. +smallsmooth = 200 # Vertical arc size in lowercase letters. rbalance = 60 rbalance2 = 15 @@ -21,7 +22,7 @@ jbalance = 63 fbalance = 6 onebalance = 30 -hook = 155 # Hook depth in most letters. +hook = 155 # Hook depth in most letters. ahook = 130 shook = 110 jhook = 135 @@ -34,115 +35,61 @@ cthinb = 0.5 vtipfine = 0.8 vtipfineSlab = 0.9 + [shapeWeight.blend.100] +stroke = 18 +contrast = 1.08 +sb = 72 +essx = 1.12 +dotsize = 53 +periodsize = 55 + jut = 70 vjut = 145 smooth = 195 -rhook = 110 rbalance = 60 rbalance2 = 15 cthin = 0.9 cthinb = 0.9 vtipfine = 1 vtipfineSlab = 1 -stroke = 18 -sb = 72 -dotsize = 53 -periodsize = 55 + [shapeWeight.blend.200] -jut = 75 -vjut = 145 -smooth = 195 -rhook = 110 -rbalance = 60 -rbalance2 = 15 cthin = 0.75 cthinb = 0.75 vtipfine = 1 vtipfineSlab = 1 -stroke = 36 -sb = 68 -dotsize = 70 -periodsize = 77 [shapeWeight.blend.300] -jut = 80 -vjut = 145 -smooth = 195 -rhook = 110 -rbalance = 60 -rbalance2 = 15 cthin = 0.75 cthinb = 0.5 vtipfine = 0.9 vtipfineSlab = 0.9 -stroke = 56 -sb = 64 -dotsize = 100 -periodsize = 115 [shapeWeight.blend.500] -essx = 1.12 -jut = 85 -vjut = 157 -smooth = 200 -rhook = 110 rbalance = 60 rbalance2 = 15 -stroke = 84 -sb = 57 -dotsize = 135 -periodsize = 160 [shapeWeight.blend.600] -essx = 1.07 -jut = 85 -vjut = 170 -smooth = 203 -rhook = 110 -rbalance = 55 -rbalance2 = 20 -stroke = 97 -sb = 54 -dotsize = 145 -periodsize = 168 +# Interpolated [shapeWeight.blend.700] -essx = 1.06 -jut = 89 -vjut = 179 -smooth = 206 -rhook = 95 -rbalance = 52 -rbalance2 = 23 -stroke = 106 -sb = 50 -dotsize = 157 -periodsize = 180 +# Interpolated [shapeWeight.blend.800] -essx = 1.05 -jut = 96 -vjut = 189 -smooth = 210 -rhook = 97 -rbalance = 50 -rbalance2 = 25 -stroke = 116 -sb = 45 -dotsize = 167 -periodsize = 188 +# Interpolated [shapeWeight.blend.900] -essx = 1.03 -jut = 100 -vjut = 199 -smooth = 215 -rhook = 105 -rbalance = 50 -rbalance2 = 25 -stroke = 126 +stroke = 116 +contrast = 1.16 sb = 42 +essx = 1.05 dotsize = 180 periodsize = 200 + +jut = 95 +vjut = 200 +smooth = 215 +rbalance = 50 +rbalance2 = 25