be5invis / Iosevka

Versatile typeface for code, from code.
http://be5invis.github.io/Iosevka
SIL Open Font License 1.1
19.12k stars 567 forks source link

Iosevka Customizer website feature request: Ability to generate & download the font based on the variants chosen in ZIP archive. #2204

Open ToddIndry37 opened 7 months ago

ToddIndry37 commented 7 months ago

Hi! I think customizing the Iosevka with different style variants is really cool & fun, but there is missing something. Maybe you can add ability to generate the font variants that user chosen & download the customized Iosevka into ZIP archives. This request was inspired from Commit Mono's customize webpage that they could download their own customized Commit Mono without generating them manually. I mean, not all people could generate their customized Iosevka without setting up NPM & the whole stuff to get started.

screenshot-1708147098602

be5invis commented 7 months ago

If @lemzwerg provides a WASM version of ttfautohint then I could probably make it... However, building Iosevka without a cache is very slow. Your browser may freeze for hours for an ab-initio build.

lemzwerg commented 7 months ago

Well, I won't provide a WASM version by myself but I invite interested parties to work on that...

ToddIndry37 commented 7 months ago

Oh, I see there. Maybe some folks probably could contribute their WASM version of ttfautohint to this though, hopefully.

Also, I'll keep this open until some folks might gonna contribute WASM of ttfautohint to this project.

ToddIndry37 commented 7 months ago

Hey @be5invis, I think I found a thing for probably for my suggestions. I think you're interested with FontFreeze. It's similar to the Iosevka Customizer & that Commit Mono's customize webpage, but it can generate the font without compromising user's browser cache & automatically downloads the results.

Maybe you can modify the code just for generating & download those results for your Iosevka font customization webpage.

be5invis commented 7 months ago

@ToddIndry37 Iosevka's variant selector system is VERY COMPLICATED and require a lot of fine programming of the GSUB (like, it will decompose all the letters with diacritics...), so conventional font "freezer" won't work.

ToddIndry37 commented 7 months ago

Oh, I see… maybe you can grab those generate font function thing & probably little modify it I guess?

On 21 Feb 2024, at 16.35, Belleve @.***> wrote:

@ToddIndry37 Iosevka's variant selector system is VERY COMPLICATED and require a lot of fine programming of the GSUB (like, it will decompose all the letters with diacritics...), so conventional font "freezer" won't work.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.

AndydeCleyre commented 7 months ago

FWIW I have a git repo who's purpose is to ease having GitHub Actions build Iosevka for you, and can be used with the output of the customizer site.

ToddIndry37 commented 7 months ago

FWIW I have a git repo who's purpose is to ease having GitHub Actions build Iosevka for you, and can be used with the output of the customizer site.

@AndydeCleyre Wait, is that really possible to get the output for Iosevka Customizer generator without using ttfautohint?

AndydeCleyre commented 7 months ago

@AndydeCleyre Wait, is that really possible to get the output for Iosevka Customizer generator without using ttfautohint?

No, it uses ttfautohint, sorry I didn't understand you were trying to avoid it.

ToddIndry37 commented 7 months ago

@AndydeCleyre Wait, is that really possible to get the output for Iosevka Customizer generator without using ttfautohint?

No, it uses ttfautohint, sorry I didn't understand you were trying to avoid it.

Ah, I see. I mean, I don't mean to avoiding ttfautohint, I'm just curious because I have no experience exporting or generating the font ever like this.

alexeyten commented 7 months ago

@ToddIndry37

is that really possible to get the output for Iosevka Customizer generator without using ttfautohint?

You could build ttf-unhinted::IosevkaCustom

github-actions[bot] commented 5 months ago

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 15 days.

ToddIndry37 commented 5 months ago

Are there any updates for this? Also, I have some ideas after looking back my suggestion:

  1. First of all, I think using GitHub Actions for exporting custom Iosevka font kinda neat though (thanks to @alexeyten for that idea!). Maybe I'll suggest you add some buttons on Customizer webpage to make those process happened, and then notify to the user who requested the customized Iosevka typeface after those export process completed via e-mail or GitHub notifications.
  2. Secondly, this probably little off topic to this issue, but since Iosevka typeface kinda big (nearly 10 MB of size after extracting from archive), I think you need to little decrease those font files because it kinda cost a lot of storage when installing the font. Just little complain there.
  3. Third, add more font styles! Like serif variant & probably the non-monospace version of Iosevka! It'll be awesome & add it to Iosevka Customizer (if you plan to do that).
  4. And lastly, please add the live preview of those glyphs were changed in the Customizer as #2305 mentioned.

That's it for now. Let me know if there's something I missed for suggestion for this issue (or literally any Iosevka topic related).

be5invis commented 5 months ago

@ToddIndry37 Your goal 2 and 3 are conflicting... Iosevka is this bug because it is this complex. For goal 4 there's already a live preview in the customizer. At the right half of the screen. image Not having a textarea is because, well, Harfbuzz (the thing under the hood that applies variant glyphs) dislikes appliying too many featurea at one time, so textareas will be broken...

ToddIndry37 commented 5 months ago

Ah, I see there. But I'll see if my first & second goal could achieve in the future of Iosevka Customizer thing. I'll keep this open until the suggestion has been implemented.