diff --git a/README.md b/README.md index 488a42981..47fb73700 100644 --- a/README.md +++ b/README.md @@ -57,32 +57,87 @@ Iosevka supports accessing all letter variants using OpenType features, includin Iosevka’s default ligation set is assigned to `calt` feature, though not all of them are enabled by default. +Iosevka supports Language-Specific Ligations, which is the ligation set enabled only under certain languages. These ligation sets are assigned to custom feature tags. To use them, you need to turn **off** `calt` and enable the corresponded feature. The feature list is: + -Iosevka supports Language-Specific Ligations, which is the ligation set enabled only under certain languages. These ligation sets are assigned to custom feature tags. To use them, you need to turn **off** `calt` and enable the corresponded feature. The feature list is: - -- `dlig`: Discretionary ligatures. -- `CLIK`: C-Like. -- `JSPT`: JavaScript. -- `PHPX`: PHP. -- `MLXX`: ML. -- `FSHP`: F#. -- `FSTA`: F*. -- `HSKL`: Haskell. -- `IDRS`: Idris. -- `ELMX`: Elm. -- `PURS`: PureScript. -- `SWFT`: Swift. -- `COQX`: Coq. -- `MTLB`: Matlab. -- `VRLG`: Verilog. -- `WFLM`: Wolfram Language (Mathematica). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dligDiscretionary ligatures
CLIK; JSPT; PHPXC-Like, JavaScript, PHP
MLXX; FSHPML, F#
FSTAF*
HSKL; IDRS; ELMX; PURSHaskell, Idris, Elm, PureScript
SWFTSwift
COQXCoq
MTLBMatlab
VRLGVerilog
WFLMWolfram Language (Mathematica)
-![Ligations Sample](images/ligations.png) - +Please note that, due to the complex interactions when forming ligations, cherry-picking ligation groups will require a custom Iosevka build. The instructions could be seen below. ## Building from Source diff --git a/changes/4.0.0-alpha.1.md b/changes/4.0.0-alpha.1.md index d3696d3c1..90e4e7c95 100644 --- a/changes/4.0.0-alpha.1.md +++ b/changes/4.0.0-alpha.1.md @@ -1,5 +1,6 @@ - * \[**Breaking**\] Change implementation of character variants to `cv##` and alternate substitutions. + * \[**Breaking**\] Change implementation of character variants to `cv##` and alternate substitutions (#572). * \[**Breaking**\] Change the building configuration format -- now we use dicts instead of “array of styles”. * \[**Breaking**\] Cleanup of weight levels and increase contrast under heavier weights. * Fix the shape of hook-top V's. - * Add half-filled stars (`U+2BE8` ... `U+2BEB`, #708). \ No newline at end of file + * Add half-filled stars (`U+2BE8` ... `U+2BEB`, #708). + * Add ligation set for Verilog (#710). diff --git a/images/charvars.png b/images/charvars.png index 32d74285c..dbf3f5a2c 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 a67739216..b17f1ad9d 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 9554ab8f6..37d924df7 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 8c1dd8702..b8b3c509c 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 181ed7774..97a9bd6e3 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 a89b10f5c..d4a490e4a 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 cd948edca..c2967e5b8 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 ad69c5df7..17dc58756 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 84531dfc1..02617416a 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 d4a240009..104745b6f 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 aef3fc730..0bfddebab 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 53c1357f5..102d608ca 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 3e2cf7b0a..21162e63e 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 af364f414..0a4780728 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 a225268ad..9fe68273e 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 b7c947294..92df7ad3d 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 53999ce32..80c7c26a7 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 bb873b308..572bb80db 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 2355d6848..3e07cf98a 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 5ccd2b501..f9a6ad512 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 f6fb47243..11048b221 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 81989b828..349f3e779 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 10e5166e8..9aa02b864 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 6c9906cf4..1c4ffe86e 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 f2d854737..194e743cc 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 0b835a641..9b5723487 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 614b3c710..2ec742c8f 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 d4367ce14..964eb0321 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 f4bd15fd0..6f5f448f1 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 1dfb3af34..8c13e3ac8 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 8e4f742df..b8181d799 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 cd6c5201d..e3a180715 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 3922e11c5..4c0a5af61 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 f90bfed3f..e9c98d6bb 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 cea4861a5..9bd27606b 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 7adc0463b..92d151d86 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 57f6868b0..1e1f36eb9 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 3891c0a06..86a1c1391 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 98cf86514..d27f398bb 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 8a65b822d..d731e665b 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 c8eaaaec9..62ec93f9a 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 850826176..d59b9dd2d 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 cfd3e7f35..e75eec9b0 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 4b5100c2a..038f33a1b 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 d7e0d228b..05bd3b053 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 1ac27f5ac..0e4daf3e1 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 a440588e1..f3dd00983 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 bc4bb67ac..0008c3b32 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 b267c66c2..5c983bf9b 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 7bee86f2b..3ce63a1a7 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 d38acdaca..2e836f1e2 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 30d482b9a..d24f8b249 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 ed1cfdf78..bf94d3edc 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 94811a475..e64dd341d 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 0822181ae..0830505ee 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 8b28755c0..534e22fa9 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 63bf3a983..4c4e8c6f6 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 86e3a8444..f9a4f759e 100644 Binary files a/images/iosevka.png and b/images/iosevka.png differ diff --git a/images/languages.png b/images/languages.png index f99dee944..f483703c4 100644 Binary files a/images/languages.png and b/images/languages.png differ diff --git a/images/ligations.png b/images/ligations.png deleted file mode 100644 index d722ed0f8..000000000 Binary files a/images/ligations.png and /dev/null differ diff --git a/images/ligset-CLIK-1.png b/images/ligset-CLIK-1.png new file mode 100644 index 000000000..f13e25c43 Binary files /dev/null and b/images/ligset-CLIK-1.png differ diff --git a/images/ligset-COQX-1.png b/images/ligset-COQX-1.png new file mode 100644 index 000000000..5f01e149e Binary files /dev/null and b/images/ligset-COQX-1.png differ diff --git a/images/ligset-ELMX-1.png b/images/ligset-ELMX-1.png new file mode 100644 index 000000000..8e2ad07b2 Binary files /dev/null and b/images/ligset-ELMX-1.png differ diff --git a/images/ligset-FSHP-1.png b/images/ligset-FSHP-1.png new file mode 100644 index 000000000..3a26e2f79 Binary files /dev/null and b/images/ligset-FSHP-1.png differ diff --git a/images/ligset-FSTA-1.png b/images/ligset-FSTA-1.png new file mode 100644 index 000000000..5d952b54d Binary files /dev/null and b/images/ligset-FSTA-1.png differ diff --git a/images/ligset-HSKL-1.png b/images/ligset-HSKL-1.png new file mode 100644 index 000000000..b8454c48a Binary files /dev/null and b/images/ligset-HSKL-1.png differ diff --git a/images/ligset-IDRS-1.png b/images/ligset-IDRS-1.png new file mode 100644 index 000000000..7f4107af1 Binary files /dev/null and b/images/ligset-IDRS-1.png differ diff --git a/images/ligset-JSPT-1.png b/images/ligset-JSPT-1.png new file mode 100644 index 000000000..cfff2aa76 Binary files /dev/null and b/images/ligset-JSPT-1.png differ diff --git a/images/ligset-MLXX-1.png b/images/ligset-MLXX-1.png new file mode 100644 index 000000000..9712f0fd6 Binary files /dev/null and b/images/ligset-MLXX-1.png differ diff --git a/images/ligset-MTLB-1.png b/images/ligset-MTLB-1.png new file mode 100644 index 000000000..c467a13eb Binary files /dev/null and b/images/ligset-MTLB-1.png differ diff --git a/images/ligset-PHPX-1.png b/images/ligset-PHPX-1.png new file mode 100644 index 000000000..49c58a346 Binary files /dev/null and b/images/ligset-PHPX-1.png differ diff --git a/images/ligset-PURS-1.png b/images/ligset-PURS-1.png new file mode 100644 index 000000000..233dd4cba Binary files /dev/null and b/images/ligset-PURS-1.png differ diff --git a/images/ligset-SWFT-1.png b/images/ligset-SWFT-1.png new file mode 100644 index 000000000..06a66e74a Binary files /dev/null and b/images/ligset-SWFT-1.png differ diff --git a/images/ligset-VRLG-1.png b/images/ligset-VRLG-1.png new file mode 100644 index 000000000..7107ca051 Binary files /dev/null and b/images/ligset-VRLG-1.png differ diff --git a/images/ligset-WFLM-1.png b/images/ligset-WFLM-1.png new file mode 100644 index 000000000..351d0197d Binary files /dev/null and b/images/ligset-WFLM-1.png differ diff --git a/images/ligset-calt-0.png b/images/ligset-calt-0.png new file mode 100644 index 000000000..6fb21b3ec Binary files /dev/null and b/images/ligset-calt-0.png differ diff --git a/images/ligset-calt-1.png b/images/ligset-calt-1.png new file mode 100644 index 000000000..0933b6793 Binary files /dev/null and b/images/ligset-calt-1.png differ diff --git a/images/ligset-dlig-1.png b/images/ligset-dlig-1.png new file mode 100644 index 000000000..86afee8ed Binary files /dev/null and b/images/ligset-dlig-1.png differ diff --git a/images/matrix.png b/images/matrix.png index 188e94a15..eaa29b3e8 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 377ee80de..9f3559dc6 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 bcf9e164c..bdbb4fb74 100644 Binary files a/images/stylesets.png and b/images/stylesets.png differ diff --git a/images/weights.png b/images/weights.png index 7700693ed..55a073ae0 100644 Binary files a/images/weights.png and b/images/weights.png differ diff --git a/snapshot-src/index.js b/snapshot-src/index.js index 1593c4d15..1b1876fa9 100644 --- a/snapshot-src/index.js +++ b/snapshot-src/index.js @@ -5,6 +5,7 @@ const windowHeight = window.innerHeight; const dpi = window.devicePixelRatio; const ipc = require("electron").ipcRenderer; const packagingTasks = require("./packaging-tasks.json"); +const auxData = require("./index.data.json"); let onScroll = function () {}; ipc.on("scroll", function () { @@ -18,13 +19,52 @@ ipc.on("complete", function () { onComplete.apply(this, arguments); }); +const captureCallbacks = { + "amend-ligset-sampler-contents": cbAmendLigsetSamplerContents +}; +function cbAmendLigsetSamplerContents(element, p) { + element.innerHTML = ""; + if (p.tag === "calt") element.style.fontFeatureSettings = `'${p.tag}' ${p.rank}`; + else element.style.fontFeatureSettings = `'calt' off, '${p.tag}' ${p.rank}`; + + const groupSet = new Set(p.ligSets); + for (const row of auxData.ligation.samples) { + const line = document.createElement("div"); + element.appendChild(line); + for (let m = 0; m < row.length; m++) { + if (m > 0) line.appendChild(document.createTextNode(" ")); + const item = row[m]; + let rank = 0; + for (let k = item.tags.length; k-- > 0; ) { + if (groupSet.has(item.tags[k])) { + rank = k + 1; + break; + } + } + if (rank) { + const run = document.createElement("em"); + run.appendChild(document.createTextNode(item.s)); + run.className = `rank-${rank}`; + line.appendChild(run); + } else { + const run = document.createElement("s"); + run.appendChild(document.createTextNode(item.s)); + run.className = `rank-${rank}`; + line.appendChild(run); + } + } + } +} + function captureElement(options, callback) { window.scroll(0, 0); setTimeout(function () { const element = document.querySelector(options.el); if (options.applyClass) element.className = options.applyClass; if (options.applyFeature) element.style = "font-feature-settings:" + options.applyFeature; - + if (options.applyCallback) { + captureCallbacks[options.applyCallback](element, options.applyCallbackArgs); + } const rect = element.getBoundingClientRect(); onScroll = function (event, arg) { window.scrollTo(0, arg); @@ -55,7 +95,7 @@ window.onload = function () { { el: "#matrix", name: "matrix" }, { el: "#previews", name: "preview-all" }, { el: "#weights", name: "weights" }, - { el: "#ligations", name: "ligations", doubleTrim: "white" }, + // { el: "#ligations", name: "ligations", doubleTrim: "white" }, ...packagingTasks ]; let current = 0; diff --git a/snapshot-src/index.styl b/snapshot-src/index.styl index b7a1773c1..afbba9f4e 100644 --- a/snapshot-src/index.styl +++ b/snapshot-src/index.styl @@ -352,28 +352,10 @@ section.style-sets font-weight: normal; color: #c33500; -#ligations > table - border-spacing: 0; - border-top: 2px solid black; - border-bottom: 2px solid black; - margin: 1em auto; - - th - white-space: nowrap; - - pre - margin: 0; - - th, td - padding: 0.4em 1em; - text-align: left; - - tr.note - td - border-top: 1px solid black; - - font-style: italic; - color: #c33500; +#ligation-sampler + font-size: 12px; + width: 42em; + padding: 1em; em font-style: normal; @@ -382,13 +364,10 @@ section.style-sets &.rank-2 color: #c33500; - s, .nolig + s text-decoration: none; opacity: 0.25; - .nolig - font-feature-settings: 'calt' 0; - #packaging-sampler width: 18rem; padding: 1rem; diff --git a/snapshot-src/templates/partial/ligation.ejs b/snapshot-src/templates/partial/ligation.ejs index 7b556ac85..f49cab429 100644 --- a/snapshot-src/templates/partial/ligation.ejs +++ b/snapshot-src/templates/partial/ligation.ejs @@ -1,28 +1,9 @@ -
- - - - <%_ for(const group of ligation.sets) { _%> - <%_ const tagSet = new Set(group.ligSets); _%> - <%_ const featureSettings = group.tag === 'calt' ? `style="font-feature-settings:'${group.tag}' ${group.rank}"` : `style="font-feature-settings: 'calt' off, '${group.tag}' ${group.rank}"` _%> - - - - - - - - <%_ } _%> - -
Feature TagDescription
<%= group.tagName || group.tag %><%= group.rank === 1 ? '' : group.rank === 0 ? ' off' : ' ' + rank %><%= group.desc %>
> - <%_ for(const line of ligation.samples) { _%> -
<%_ for(let i =  0; i < line.length; i++) { _%>
-							<%_     const item = line[i]; _%>
-							<%_     if(i > 0) { _%><%= " " %><%_ } _%>
-							<%_     if (tagSet.has(item.tags[1]) || tagSet.has(item.tags[2])) { _%><%= item.s %><%_ _%>
-							<%_     } else if (tagSet.has(item.tags[0])) { _%><%= item.s %><%_ _%>
-							<%_     } else { _%><%= item.s %><%_ } _%>
-							<%_ } _%>
- <%_ } _%> -
+
+ <%_ for(const line of ligation.samples) { _%> +
<%_ for(let i = 0; i < line.length; i++) { _%> + <%_ const item = line[i]; _%> + <%_ if(i > 0) { _%><%= " " %><%_ } _%> + <%= item.s %> + <%_ } _%>
+ <%_ } _%>
\ No newline at end of file diff --git a/utility/amend-readme/fragments/description-ot-ligation-tags.md b/utility/amend-readme/fragments/description-ot-ligation-tags.md deleted file mode 100644 index 66efff5eb..000000000 --- a/utility/amend-readme/fragments/description-ot-ligation-tags.md +++ /dev/null @@ -1 +0,0 @@ -Iosevka supports Language-Specific Ligations, which is the ligation set enabled only under certain languages. These ligation sets are assigned to custom feature tags. To use them, you need to turn **off** `calt` and enable the corresponded feature. The feature list is: diff --git a/utility/amend-readme/index.js b/utility/amend-readme/index.js index c9a19b644..9cbe9ddfb 100644 --- a/utility/amend-readme/index.js +++ b/utility/amend-readme/index.js @@ -161,13 +161,18 @@ async function processLigSetPreDef() { async function processLigSetOt() { const ligData = await parseLigationData(); const md = new MdCol("Section-OT-Ligation-Tags"); - const headerPath = path.resolve(__dirname, "fragments/description-ot-ligation-tags.md"); - md.log(await fs.readFile(headerPath, "utf-8")); - for (const ls of ligData.nonMergeSets) { + md.log(``); + for (const ls of ligData.sets) { if (!ls.rank || ls.tag === "calt") continue; - const longDesc = ls.desc; - md.log(`- \`${ls.tag}\`: ${longDesc}.`); + md.log(``); + md.log(``); + md.log(``); + md.log(``); + md.log(``); + md.log(``); + md.log(``); } + md.log(`
${ls.tagName.map(x => `${x}`).join("; ")}${ls.desc}
`); return md; } diff --git a/utility/export-data/ligation-data.js b/utility/export-data/ligation-data.js index 77601d1b7..79a59f334 100644 --- a/utility/export-data/ligation-data.js +++ b/utility/export-data/ligation-data.js @@ -261,13 +261,13 @@ function buildLigationSet(ligData, getKey) { tag: comp.tag, rank: 1, ligSets: [...ligSets], - tagName: comp.tag, + tagName: [comp.tag], desc: comp.desc, brief: comp.brief || comp.desc }; ligationSets.set(key, item); } else { - item.tagName += ", " + comp.tag; + item.tagName = [...item.tagName, comp.tag]; item.desc += ", " + comp.desc; item.brief += ", " + comp.brief; } diff --git a/utility/generate-snapshot-page/index.js b/utility/generate-snapshot-page/index.js index 1e6b61034..6c3cb5873 100644 --- a/utility/generate-snapshot-page/index.js +++ b/utility/generate-snapshot-page/index.js @@ -9,6 +9,7 @@ const execMain = require("../shared/execMain"); const inputPath = process.argv[2]; const outputPath = process.argv[3]; +const outputDataPath = process.argv[4]; execMain(main); @@ -17,9 +18,11 @@ execMain(main); async function main() { const weightGrades = [100, 200, 300, 400, 500, 600, 700, 800, 900]; const templatePath = path.join(inputPath, "index.ejs"); + const variationData = await await parseVariantsData(); + const ligationData = await getLigationData(); const html = await ejs.renderFile(templatePath, { - ...(await parseVariantsData()), - ligation: await getLigationData(), + ...variationData, + ligation: ligationData, weights: weightGrades, buildSsHtml(body, hc) { const hcs = new Set(hc); @@ -30,4 +33,5 @@ async function main() { } }); await fs.writeFile(outputPath, html); + await fs.writeJson(outputDataPath, { ligation: ligationData }, { spaces: " " }); } diff --git a/verdafile.js b/verdafile.js index 9c1288876..b5485e25c 100644 --- a/verdafile.js +++ b/verdafile.js @@ -736,8 +736,8 @@ const SampleImagesPre = task(`sample-images:pre`, async target => { await cp(`${DIST}/${sparkle}`, `${SNAPSHOT_TMP}/${sparkle}`); }); -const PackageSnapshotConfig = computed(`package-snapshot-image-config`, async target => { - const [plan] = await target.need(BuildPlans); +const PackageSnapshotConfig = computed(`package-snapshot-config`, async target => { + const [plan, sh] = await target.need(BuildPlans, SnapShotHtml); const cfg = []; for (const key in plan.buildPlans) { const p = plan.buildPlans[key]; @@ -749,6 +749,18 @@ const PackageSnapshotConfig = computed(`package-snapshot-image-config`, async ta name: key }); } + + const de = JSON.parse(fs.readFileSync(`${sh.dir}/${sh.name}.data.json`)); + for (const ls of de.ligation.nonMergeSets) { + cfg.push({ + el: "#ligation-sampler", + applyClass: "iosevka", + applyFeature: `'${ls.tag}' ${ls.rank}`, + name: `ligset-${ls.tag}-${ls.rank}`, + applyCallback: `amend-ligset-sampler-contents`, + applyCallbackArgs: ls + }); + } return cfg; }); const SnapShotJson = file(`${SNAPSHOT_TMP}/packaging-tasks.json`, async (target, out) => { @@ -764,7 +776,8 @@ const SnapShotHtml = file(`${SNAPSHOT_TMP}/index.html`, async (target, out) => { `node`, `utility/generate-snapshot-page/index.js`, "snapshot-src/templates", - out.full + out.full, + `${out.dir}/${out.name}.data.json` ); await run(`node`, `utility/amend-readme/index`, cm.full, cmi.full, cmo.full); }); @@ -797,7 +810,6 @@ const SampleImages = task(`sample-images`, async target => { await target.need( ScreenShot("charvars"), ScreenShot("languages"), - ScreenShot("ligations"), ScreenShot("matrix"), ScreenShot("preview-all"), ScreenShot("stylesets"),