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).
+
+
+dlig |
+Discretionary ligatures |
+
+
+ |
+
+
+CLIK ; JSPT ; PHPX |
+C-Like, JavaScript, PHP |
+
+
+ |
+
+
+MLXX ; FSHP |
+ML, F# |
+
+
+ |
+
+
+FSTA |
+F* |
+
+
+ |
+
+
+HSKL ; IDRS ; ELMX ; PURS |
+Haskell, Idris, Elm, PureScript |
+
+
+ |
+
+
+SWFT |
+Swift |
+
+
+ |
+
+
+COQX |
+Coq |
+
+
+ |
+
+
+MTLB |
+Matlab |
+
+
+ |
+
+
+VRLG |
+Verilog |
+
+
+ |
+
+
+WFLM |
+Wolfram Language (Mathematica) |
+
+
+ |
+
+
-
-
+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 @@
-
-
- Feature Tag | Description |
-
- <%_ 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}"` _%>
-
- <%= 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(`${ls.tagName.map(x => `${x} `).join("; ")} | `);
+ md.log(`${ls.desc} | `);
+ md.log(`
`);
+ md.log(``);
+ md.log(` | `);
+ md.log(`
`);
}
+ md.log(`
`);
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"),