From fd4f485222883f7d89df6ea3d8ed6c29663ef566 Mon Sep 17 00:00:00 2001 From: belleve Date: Fri, 13 Jul 2018 14:34:32 +0800 Subject: [PATCH] Add Extrabold weight. --- maker.js | 11 ++++- parameters.toml | 21 +++++++++ snapshot/index.html | 13 +++--- snapshot/iosevka-slab.css | 17 +++++++ snapshot/iosevka.css | 17 +++++++ verdafile.js | 93 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 165 insertions(+), 7 deletions(-) create mode 100644 verdafile.js diff --git a/maker.js b/maker.js index 5bc73d5ac..12dee8b0a 100644 --- a/maker.js +++ b/maker.js @@ -3,7 +3,16 @@ const path = require("path"); const argv = require("yargs").argv; const pad = require("pad"); -const possibleWeights = new Set(["thin", "extralight", "light", "book", "medium", "bold", "heavy"]); +const possibleWeights = new Set([ + "thin", + "extralight", + "light", + "book", + "medium", + "bold", + "extrabold", + "heavy" +]); const weights = argv.weights ? argv.weights.split(/ +/g).filter(w => possibleWeights.has(w)) : [...possibleWeights]; diff --git a/parameters.toml b/parameters.toml index daeedcd05..3cceada69 100644 --- a/parameters.toml +++ b/parameters.toml @@ -156,6 +156,27 @@ isBold = true weight = 700 style = 'Bold' +sb = 50 +stroke = 99 +dotsize = 150 +periodsize = 172 +essx = 1.06 +essxq = 1.10 +jut = 87 +vjut = 155 + +barpos = 0.51 +fivebarpos = 0.64 +rbalance = 52 +rbalance2 = 23 +rhook = 93 +smooth = 207 + +[w-extrabold] +isBold = true +weight = 800 +style = 'Extrabold' + sb = 45 stroke = 108 dotsize = 160 diff --git a/snapshot/index.html b/snapshot/index.html index 8003ccdff..ae6f371c1 100644 --- a/snapshot/index.html +++ b/snapshot/index.html @@ -232,14 +232,14 @@
- MagMagMagMagMagMagMag - MagMagMagMagMagMagMag - MagMagMagMagMagMagMag + MagMagMagMagMagMagMagMag + MagMagMagMagMagMagMagMag + MagMagMagMagMagMagMagMag
- MagMagMagMagMagMagMag - MagMagMagMagMagMagMag - MagMagMagMagMagMagMag + MagMagMagMagMagMagMagMag + MagMagMagMagMagMagMagMag + MagMagMagMagMagMagMagMag
@@ -306,6 +306,7 @@ float Fox.quick(h){ is_brown && it_jumps_over(doges.lazy); } float Fox.quick(h){ is_brown && it_jumps_over(doges.lazy); } float Fox.quick(h){ is_brown && it_jumps_over(doges.lazy); } +float Fox.quick(h){ is_brown && it_jumps_over(doges.lazy); } float Fox.quick(h){ is_brown && it_jumps_over(doges.lazy); }
diff --git a/snapshot/iosevka-slab.css b/snapshot/iosevka-slab.css index 9d5c5378f..a54fb9c52 100644 --- a/snapshot/iosevka-slab.css +++ b/snapshot/iosevka-slab.css @@ -97,6 +97,23 @@ font-weight: 700; src: url('assets/iosevka-slab-boldoblique.woff2') format('woff2'), url('assets/iosevka-slab-boldoblique.woff') format('woff'), url('assets/iosevka-slab-boldoblique.ttf') format('truetype'); } +@font-face { + font-family: 'Iosevka Slab'; + font-weight: 800; + src: url('assets/iosevka-slab-extrabold.woff2') format('woff2'), url('assets/iosevka-slab-extrabold.woff') format('woff'), url('assets/iosevka-slab-extrabold.ttf') format('truetype'); +} +@font-face { + font-family: 'Iosevka Slab'; + font-style: italic; + font-weight: 800; + src: url('assets/iosevka-slab-extrabolditalic.woff2') format('woff2'), url('assets/iosevka-slab-extrabolditalic.woff') format('woff'), url('assets/iosevka-slab-extrabolditalic.ttf') format('truetype'); +} +@font-face { + font-family: 'Iosevka Slab'; + font-style: oblique; + font-weight: 800; + src: url('assets/iosevka-slab-extraboldoblique.woff2') format('woff2'), url('assets/iosevka-slab-extraboldoblique.woff') format('woff'), url('assets/iosevka-slab-extraboldoblique.ttf') format('truetype'); +} @font-face { font-family: 'Iosevka Slab'; font-weight: 900; diff --git a/snapshot/iosevka.css b/snapshot/iosevka.css index 6eaf28489..982bebe79 100644 --- a/snapshot/iosevka.css +++ b/snapshot/iosevka.css @@ -97,6 +97,23 @@ font-weight: 700; src: url('assets/iosevka-boldoblique.woff2') format('woff2'), url('assets/iosevka-boldoblique.woff') format('woff'), url('assets/iosevka-boldoblique.ttf') format('truetype'); } +@font-face { + font-family: 'Iosevka'; + font-weight: 800; + src: url('assets/iosevka-extrabold.woff2') format('woff2'), url('assets/iosevka-extrabold.woff') format('woff'), url('assets/iosevka-extrabold.ttf') format('truetype'); +} +@font-face { + font-family: 'Iosevka'; + font-style: italic; + font-weight: 800; + src: url('assets/iosevka-extrabolditalic.woff2') format('woff2'), url('assets/iosevka-extrabolditalic.woff') format('woff'), url('assets/iosevka-extrabolditalic.ttf') format('truetype'); +} +@font-face { + font-family: 'Iosevka'; + font-style: oblique; + font-weight: 800; + src: url('assets/iosevka-extraboldoblique.woff2') format('woff2'), url('assets/iosevka-extraboldoblique.woff') format('woff'), url('assets/iosevka-extraboldoblique.ttf') format('truetype'); +} @font-face { font-family: 'Iosevka'; font-weight: 900; diff --git a/verdafile.js b/verdafile.js new file mode 100644 index 000000000..319926130 --- /dev/null +++ b/verdafile.js @@ -0,0 +1,93 @@ +const { + want, + rule: { task, file, variable }, + macro: { FileList }, + action: { run }, + journal, + argv +} = require("verda"); +const path = require("path"); + +journal("build/.verda-journal.json"); +want(...argv._); + +const PATEL_C = ["node", "./node_modules/patel/bin/patel-c"]; +const GENERATE = ["node", "--expose-gc", "generator"]; +const WEIGHTS = ["thin", "extralight", "light", "book", "medium", "bold", "extrabold", "heavy"]; +const SLANTS = ["upright", "italic", "oblique"]; + +const weightSlantMap = (function() { + let o = {}; + for (const w of WEIGHTS) { + for (const s of SLANTS) { + const suffix = + (w === "book" ? (s === "upright" ? "regular" : "") : w) + + (s === "upright" ? "" : s); + o[suffix] = { weight: w, slant: s }; + } + } + return o; +})(); + +////////////////////////// +////// Font building +////////////////////////// + +file("build/iosevka-*-*.otd").def(async (target, width, suffix) => { + const { weight, slant } = weightSlantMap[suffix]; + await target.need("scripts", "dir:build", "parameters.toml"); + await run(GENERATE, "iosevka", width, `w-${weight}`, `s-${slant}`, "-o", target); +}); +file("build/iosevka-*-*.ttf").def(async (target, width, suffix) => { + const [otd] = await target.need(`build/iosevka-${width}-${suffix}.otd`); + await run("otfccbuild", otd.path, "-o", target); +}); +task("default").def(async target => { + await target.need( + Object.keys(weightSlantMap).map(suffix => `build/iosevka-normal-${suffix}.ttf`) + ); +}); + +////////////////////////// +////// Script building +////////////////////////// + +variable("files:PTL").def( + FileList({ + under: ".", + pattern: "*.ptl|glyphs/**/*.ptl|support/**/*.ptl|meta/**/*.ptl" + }) +); + +variable("files:JS").def( + FileList({ + under: ".", + pattern: "*.js|glyphs/**/*.js|support/**/*.js|meta/**/*.js" + }) +); + +variable("files:JS_FROM_PTL").def(async target => { + const [ptl] = await target.need("files:PTL"); + return target.trackModification(ptl.map(x => x.replace(/\.ptl$/g, ".js"))); +}); + +file("*.js|glyphs/**/*.js|support/**/*.js|meta/**/*.js").def(async target => { + const [jsFromPtl] = await target.need("files:JS_FROM_PTL"); + if (jsFromPtl.indexOf(target.id) >= 0) { + const ptl = target.id.replace(/\.js$/g, ".ptl"); + await target.need(`file-updated:${ptl}`); + await run(PATEL_C, "--optimize", "--strict", ptl, "-o", target.id); + } else { + await target.need(`file-updated:${target.id}`); + } +}); +task("scripts").def(async target => { + const [jsFromPtl] = await target.need("files:JS_FROM_PTL"); + await target.need(jsFromPtl); + const [js] = await target.need("files:JS"); + await target.need(js); +}); + +task("wrong").def(async target => { + throw new Error("Wrong!"); +});