diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore index 726d2d6..2bbdbfe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -result .direnv +result diff --git a/flake.nix b/flake.nix index ae3db19..df7c710 100644 --- a/flake.nix +++ b/flake.nix @@ -60,7 +60,7 @@ set = "aile"; privateBuildPlan = { family = "Iosevka Aile Iaso"; - spacing = "quasi-proportional-extension-only"; + spacing = "quasi-proportional"; no-ligation = true; no-cv-ss = true; variants = { @@ -86,14 +86,9 @@ }; }; weights.regular = { - shape = 400; - menu = 400; - css = 400; - }; - widths.normal = { - shape = 550; - menu = 7; - css = "expanded"; + shape = 300; + menu = 300; + css = 300; }; inherit metric-override; }; @@ -144,11 +139,6 @@ menu = 400; css = 400; }; - widths.normal = { - shape = 600; - menu = 7; - css = "expanded"; - }; inherit metric-override; }; }; @@ -157,6 +147,8 @@ for ttf in ${iosevka-curly}/share/fonts/truetype/*.ttf ${iosevka-aile}/share/fonts/truetype/*.ttf ${iosevka-etoile}/share/fonts/truetype/*.ttf; do cp $ttf . + echo "processing $ttf" + name=`basename -s .ttf $ttf` pyftsubset \ $ttf \ @@ -168,14 +160,23 @@ --unicodes="U+0000-00A0,U+00A2-00A9,U+00AC-00AE,U+00B0-00B7,U+00B9-00BA,U+00BC-00BE,U+00D7,U+00F7,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-21BB,U+2212,U+2215,U+F8FF,U+FEFF,U+FFFD" mv *.ttf ttf done + + ${pkgs.zip}/bin/zip ttf.zip ttf/*.ttf + + ${pkgs.python3}/bin/python3 ${./src/specimen.py} ''; installPhase = '' mkdir -p $out cp *.woff2 $out - cp ttf/*.ttf $out + cp ttf.zip $out cp ${src/family.css} $out/family.css + cp *.html $out ''; }; + + devShells.default = pkgs.mkShell { + buildInputs = [pkgs.python3]; + }; }); } diff --git a/src/family.css b/src/family.css index df5206e..45d8628 100644 --- a/src/family.css +++ b/src/family.css @@ -1,22 +1,36 @@ -@font-face { - font-family: "Iosevka Etoile Iaso"; - font-weight: 100 900; - src: local("Iosevka Etoile Iaso") - , url("iosevka-etoile-regular.woff2") format("woff2") - , url("iosevka-etoile-italic.woff2") format("woff2"); -} - @font-face { font-family: "Iosevka Aile Iaso"; font-weight: 100 900; + font-style: normal; + src: local("Iosevka Aile Iaso") + , url("iosevka-aile-regular.woff2") format("woff2"); +} +@font-face { + font-family: "Iosevka Aile Iaso"; + font-weight: 100 900; + font-style: italic; src: local("Iosevka Aile Iaso") - , url("iosevka-aile-regular.woff2") format("woff2") , url("iosevka-aile-italic.woff2") format("woff2"); } - + @font-face { font-family: "Iosevka Curly Iaso"; font-weight: 100 900; src: local("Iosevka Curly Iaso") , url("iosevka-curly-regular.woff2") format("woff2"); } + +@font-face { + font-family: "Iosevka Etoile Iaso"; + font-weight: 100 900; + font-style: normal; + src: local("Iosevka Etoile Iaso") + , url("iosevka-etoile-regular.woff2") format("woff2"); +} +@font-face { + font-family: "Iosevka Etoile Iaso"; + font-weight: 100 900; + font-style: italic; + src: local("Iosevka Etoile Iaso") + , url("iosevka-etoile-italic.woff2") format("woff2"); +} diff --git a/src/specimen.py b/src/specimen.py new file mode 100644 index 0000000..0fedc30 --- /dev/null +++ b/src/specimen.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python + +header = ''' + + + + Iosevka Iaso Specimen + + + + + + +
+

Iosevka Iaso Specimen

+

This page will demonstrate the Iosevka Iaso font family.

+ +

Usage

+

To use this font family, import this CSS:

+
<link rel="stylesheet" href="https://cdn.xeiaso.net/static/css/iosevka/family.css" />
+

Then use the fonts as normal.

+''' + +footer = ''' + +
+ + +''' + +blurbs = { + "Aile": "Designed for body text. A quasi-proportional font that evokes moods of the terminal days gone past.", + "Curly": "Designed for code. The hacker's canvas and ink.", + "Etoile": "Designed for titles. A serifed font that oozes modernity and classic sensibilities.", +} + +with open("specimen.html", "w") as fout: + fout.write(header) + + for family in ["Aile", "Curly", "Etoile"]: + fout.write(f''' +

{family}

+

{blurbs[family]}

+ Sphinx of black quartz, hear my vow!
+ SPHINX OF BLACK QUARTZ, HEAR MY VOW!
+ sphinx of black quartz, hear my vow!
+ + ''') + + i = 0 + for ch in range(0x20, 0xA0): + if i == 10: + fout.write("") + i = 0 + + fout.write(f'''''') + i += 1 + + for ch in range(0xA2, 0xA9): + if i == 10: + fout.write("") + i = 0 + + fout.write(f'''''') + i += 1 + + for ch in range(0xAC, 0xAE): + if i == 10: + fout.write("") + i = 0 + + fout.write(f'''''') + i += 1 + + fout.write("
&#x{ch:02x}
0x{ch:02x}
&#x{ch:02x}
0x{ch:02x}
&#x{ch:02x}
0x{ch:02x}
") + + fout.write(footer) + + +