Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Important: Changes to File Naming Convention in Version 28 #2029

Closed
be5invis opened this issue Oct 8, 2023 · 14 comments
Closed

Important: Changes to File Naming Convention in Version 28 #2029

be5invis opened this issue Oct 8, 2023 · 14 comments
Milestone

Comments

@be5invis
Copy link
Owner

be5invis commented Oct 8, 2023

To the maintainers of Iosevka packages on various software package platforms:

As the maintainer of the Iosevka project, I would like to inform you about some important changes that will be included in version 28.

Specifically, I will be modifying the way font files are named. Moving forward, all font filenames' components (family name and weight-width-slope suffix) will be written in PascalCase instead of being entirely lowercase. The updated naming schema will better follow the modern convention of font file names. For example:

  • iosevka-curly-slab-semiboldextendeditalic.ttf will be renamed to IosevkaCurlySlab-SemiBoldExtendedItalic.ttf.
  • iosevka.ttc will be renamed to Iosevka.ttc.

The menu names and CSS family names of the fonts will not be changed.

I humbly request you to update your package scripts timely, accommodating the changes in the file naming. It is crucial to make necessary amendments in your scripts related to packaging/publishing and especially updating the portion of your respective "uninstalling old-version font files" scripts.

Your timely response to this modification will ensure a smooth transition and uninterrupted user experience for all Iosevka users across various platforms.

I regret any inconvenience this may cause and sincerely appreciate your cooperation and understanding. Please feel free to leave comments if you need any further information or assistance regarding these changes.

Yours,
Renzhi Li aka be5invis

@be5invis be5invis pinned this issue Oct 8, 2023
@be5invis
Copy link
Owner Author

be5invis commented Oct 8, 2023

Looping people in:

@be5invis be5invis changed the title Important Update: Changes to TTF File Naming Convention in Next Major Release Important: Changes to TTF File Naming Convention in Next Major Release Oct 8, 2023
@be5invis be5invis changed the title Important: Changes to TTF File Naming Convention in Next Major Release Important: Changes to File Naming Convention in Next Major Release Oct 8, 2023
@singularitti
Copy link
Contributor

Got it! 👌

@be5invis
Copy link
Owner Author

@singularitti I will produce some alpha or beta versions before the final release so you could have time to update and validate your scripts and/or pipelines.
ps. As a result of renaming, the ZIP files' names will also be changed -- using PascalCase instead of lowercase. If you are using a pipeline to download the packages then you will need to update it to work on the new versions.

@singularitti
Copy link
Contributor

singularitti commented Oct 31, 2023

Sure, but I am really busy recently. I will update them on Nov 2. You don't have to wait for me, though. There are other contributors on Homebrew.

@be5invis
Copy link
Owner Author

@singularitti Version 27 will sill using the current naming scheme, so you do NOT need to do anything for now. The changes will start on version 28.

@singularitti
Copy link
Contributor

Sure, I understand.

@be5invis be5invis added this to the Backlog milestone Nov 8, 2023
@AndydeCleyre
Copy link

AndydeCleyre commented Nov 13, 2023

EDIT: These aren't right anymore, because sometimes extra variants will be built as part of the process, so dist/*/ matches too much. All my instances of dist/*/ are now replaced by dist/<build-plan-name>/


I use a few globs for some of my packages, and here's how I think they are affected (not fully tested yet):

Old Glob New Glob Notes
dist/*/*.css dist/*/*.css No change
dist/*/ttf/*.ttf dist/*/TTF/*.ttf -
dist/*/woff2/*.woff2 dist/*/WOFF2/*.woff2 Untested, guessed based on the above

@be5invis
Copy link
Owner Author

v28.0.0-alpha.1 has been published into prereleases.

@singularitti
Copy link
Contributor

I'm aware of it. Homebrew will probably only take stable releases, though.

@be5invis
Copy link
Owner Author

@singularitti You can test your script updates using the preview versions before v28 stable is out.

@be5invis be5invis changed the title Important: Changes to File Naming Convention in Next Major Release Important: Changes to File Naming Convention in Version 28 Nov 19, 2023
@AndydeCleyre
Copy link

My scripts are working with all the new namings except: I'm unexpectedly getting IosevkaCustom in addition to IosevkaTermCustom when I try to build only the latter. Build plans for both are in private-build-plans.toml, but the command being run is

npm run build -- ttf::IosevkaTermCustom
private-build-plans.toml
[buildPlans.IosevkaCustom]
family = "Iosevka Custom"
exportGlyphNames = false
buildTextureFeature = true
spacing = "normal"
[buildPlans.IosevkaCustom.ligations]
inherits = "dlig"
[buildPlans.IosevkaCustom.variants.design]
# ...
[buildPlans.IosevkaCustom.weights.regular]
shape = 600
menu = 400
css = 400
[buildPlans.IosevkaCustom.weights.bold]
shape = 800
menu = 700
css = 700
[buildPlans.IosevkaCustom.slopes.Upright]
angle = 0
shape = "upright"
menu  = "upright"
css   = "normal"
[buildPlans.IosevkaCustom.slopes.Italic]
angle = 9.4
shape = "italic"
menu  = "italic"
css   = "italic"


[buildPlans.IosevkaTermCustom]
family = "Iosevka Term Custom"
exportGlyphNames = false
buildTextureFeature = true
spacing = "term"
[buildPlans.IosevkaTermCustom.ligations]
inherits = "dlig"
[buildPlans.IosevkaTermCustom.variants.design]
# ...
[buildPlans.IosevkaTermCustom.weights.regular]
shape = 600
menu = 400
css = 400
[buildPlans.IosevkaTermCustom.weights.bold]
shape = 800
menu = 700
css = 700
[buildPlans.IosevkaTermCustom.slopes.Upright]
angle = 0
shape = "upright"
menu  = "upright"
css   = "normal"
[buildPlans.IosevkaTermCustom.slopes.Italic]
angle = 9.4
shape = "italic"
menu  = "italic"
css   = "italic"


[buildPlans.IosevkaFcmCustom]
family = "Iosevka FCM Custom"
exportGlyphNames = false
buildTextureFeature = true
spacing = "fontconfig-mono"
[buildPlans.IosevkaFcmCustom.ligations]
inherits = "dlig"
[buildPlans.IosevkaFcmCustom.variants.design]
# ...
[buildPlans.IosevkaFcmCustom.weights.regular]
shape = 600
menu = 400
css = 400
[buildPlans.IosevkaFcmCustom.weights.bold]
shape = 800
menu = 700
css = 700
[buildPlans.IosevkaFcmCustom.slopes.Upright]
angle = 0
shape = "upright"
menu  = "upright"
css   = "normal"
[buildPlans.IosevkaFcmCustom.slopes.Italic]
angle = 9.4
shape = "italic"
menu  = "italic"
css   = "italic"


[buildPlans.IosevkaFixedCustom]
family = "Iosevka Fixed Custom"
exportGlyphNames = false
buildTextureFeature = true
spacing = "fixed"
[buildPlans.IosevkaFixedCustom.ligations]
inherits = "dlig"
[buildPlans.IosevkaFixedCustom.variants.design]
# ...
[buildPlans.IosevkaFixedCustom.weights.regular]
shape = 600
menu = 400
css = 400
[buildPlans.IosevkaFixedCustom.weights.bold]
shape = 800
menu = 700
css = 700
[buildPlans.IosevkaFixedCustom.slopes.Upright]
angle = 0
shape = "upright"
menu  = "upright"
css   = "normal"
[buildPlans.IosevkaFixedCustom.slopes.Italic]
angle = 9.4
shape = "italic"
menu  = "italic"
css   = "italic"


[buildPlans.IosevkaQpCustom]
family = "Iosevka QP Custom"
exportGlyphNames = false
buildTextureFeature = true
spacing = "quasi-proportional"
[buildPlans.IosevkaQpCustom.ligations]
inherits = "dlig"
[buildPlans.IosevkaQpCustom.variants.design]
# ...
[buildPlans.IosevkaQpCustom.weights.regular]
shape = 600
menu = 400
css = 400
[buildPlans.IosevkaQpCustom.weights.bold]
shape = 800
menu = 700
css = 700
[buildPlans.IosevkaQpCustom.slopes.Upright]
angle = 0
shape = "upright"
menu  = "upright"
css   = "normal"
[buildPlans.IosevkaQpCustom.slopes.Italic]
angle = 9.4
shape = "italic"
menu  = "italic"
css   = "italic"


[buildPlans.IosevkaQpeCustom]
family = "Iosevka QPE Custom"
exportGlyphNames = false
buildTextureFeature = true
spacing = "quasi-proportional-extension-only"
[buildPlans.IosevkaQpeCustom.ligations]
inherits = "dlig"
[buildPlans.IosevkaQpeCustom.variants.design]
# ...
[buildPlans.IosevkaQpeCustom.weights.regular]
shape = 600
menu = 400
css = 400
[buildPlans.IosevkaQpeCustom.weights.bold]
shape = 800
menu = 700
css = 700
[buildPlans.IosevkaQpeCustom.slopes.Upright]
angle = 0
shape = "upright"
menu  = "upright"
css   = "normal"
[buildPlans.IosevkaQpeCustom.slopes.Italic]
angle = 9.4
shape = "italic"
menu  = "italic"
css   = "italic"

@be5invis
Copy link
Owner Author

be5invis commented Nov 26, 2023

@AndydeCleyre Unable to repro. You WILL get the fonts in dist/IosevkaTermCustom, even if it builds dist/IosevkaCustom before it and run a special "spacing derivation" script.

If you did not get artifacts under dist/IosevkaTermCustom then maybe you can run npm run clean before building (which will invalidate all the caches and remove all existing build artifacts).

@AndydeCleyre
Copy link

Yes, I do get the IosevkaTermCustom fonts I'm after, I'm saying I unexpectedly get IosevkaCustom built, additionally.

So I think from your comment I'm getting that this is actually expected behavior in v28, and that I need to adjust my scripts to only collect the font artifacts I want, and avoid any other variants that might be built as part of the process.

@be5invis
Copy link
Owner Author

Version 28 stable is out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants