be5invis / Iosevka

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

Changes in font packaging and distribution in `v29.0.3` impacting documentation and Homebrew Cask #2255

Closed singularitti closed 3 months ago

singularitti commented 3 months ago

I am writing to discuss some changes in the packaging and grouping of fonts in the Iosevka font project, starting from version 29.0.3. According to the principles of Semantic Versioning (SemVer), this release is marked as a bugfix version. However, the changes in font distribution appear to be more significant than what would typically be expected for a patch-level update.

Specifically, it seems that at least the following font packages have been removed in the assets provided:

{'PkgTTC-IosevkaCurly',
 'PkgTTC-IosevkaCurlySlab',
 'PkgTTC-IosevkaSS01',
 'PkgTTC-IosevkaSS02',
 'PkgTTC-IosevkaSS03',
 'PkgTTC-IosevkaSS04',
 'PkgTTC-IosevkaSS05',
 'PkgTTC-IosevkaSS06',
 'PkgTTC-IosevkaSS07',
 'PkgTTC-IosevkaSS08',
 'PkgTTC-IosevkaSS09',
 'PkgTTC-IosevkaSS10',
 'PkgTTC-IosevkaSS11',
 'PkgTTC-IosevkaSS12',
 'PkgTTC-IosevkaSS13',
 'PkgTTC-IosevkaSS14',
 'PkgTTC-IosevkaSS15',
 'PkgTTC-IosevkaSS16',
 'PkgTTC-IosevkaSS17',
 'PkgTTC-IosevkaSS18',
 'PkgTTC-SGr-IosevkaFixedCurly',
 'PkgTTC-SGr-IosevkaFixedCurlySlab',
 'PkgTTC-SGr-IosevkaFixedSS01',
 'PkgTTC-SGr-IosevkaFixedSS02',
 'PkgTTC-SGr-IosevkaFixedSS03',
 'PkgTTC-SGr-IosevkaFixedSS04',
 'PkgTTC-SGr-IosevkaFixedSS05',
 'PkgTTC-SGr-IosevkaFixedSS06',
 'PkgTTC-SGr-IosevkaFixedSS07',
 'PkgTTC-SGr-IosevkaFixedSS08',
 'PkgTTC-SGr-IosevkaFixedSS09',
 'PkgTTC-SGr-IosevkaFixedSS10',
 'PkgTTC-SGr-IosevkaFixedSS11',
 'PkgTTC-SGr-IosevkaFixedSS12',
 'PkgTTC-SGr-IosevkaFixedSS13',
 'PkgTTC-SGr-IosevkaFixedSS14',
 'PkgTTC-SGr-IosevkaFixedSS15',
 'PkgTTC-SGr-IosevkaFixedSS16',
 'PkgTTC-SGr-IosevkaFixedSS17',
 'PkgTTC-SGr-IosevkaFixedSS18',
 'PkgTTC-SGr-IosevkaTermCurly',
 'PkgTTC-SGr-IosevkaTermCurlySlab',
 'PkgTTC-SGr-IosevkaTermSS01',
 'PkgTTC-SGr-IosevkaTermSS02',
 'PkgTTC-SGr-IosevkaTermSS03',
 'PkgTTC-SGr-IosevkaTermSS04',
 'PkgTTC-SGr-IosevkaTermSS05',
 'PkgTTC-SGr-IosevkaTermSS06',
 'PkgTTC-SGr-IosevkaTermSS07',
 'PkgTTC-SGr-IosevkaTermSS08',
 'PkgTTC-SGr-IosevkaTermSS09',
 'PkgTTC-SGr-IosevkaTermSS10',
 'PkgTTC-SGr-IosevkaTermSS11',
 'PkgTTC-SGr-IosevkaTermSS12',
 'PkgTTC-SGr-IosevkaTermSS13',
 'PkgTTC-SGr-IosevkaTermSS14',
 'PkgTTC-SGr-IosevkaTermSS15',
 'PkgTTC-SGr-IosevkaTermSS16',
 'PkgTTC-SGr-IosevkaTermSS17',
 'PkgTTC-SGr-IosevkaTermSS18',
 'SuperTTC-IosevkaCurly',
 'SuperTTC-IosevkaCurlySlab',
 'SuperTTC-IosevkaSS01',
 'SuperTTC-IosevkaSS02',
 'SuperTTC-IosevkaSS03',
 'SuperTTC-IosevkaSS04',
 'SuperTTC-IosevkaSS05',
 'SuperTTC-IosevkaSS06',
 'SuperTTC-IosevkaSS07',
 'SuperTTC-IosevkaSS08',
 'SuperTTC-IosevkaSS09',
 'SuperTTC-IosevkaSS10',
 'SuperTTC-IosevkaSS11',
 'SuperTTC-IosevkaSS12',
 'SuperTTC-IosevkaSS13',
 'SuperTTC-IosevkaSS14',
 'SuperTTC-IosevkaSS15',
 'SuperTTC-IosevkaSS16',
 'SuperTTC-IosevkaSS17',
 'SuperTTC-IosevkaSS18',
 'SuperTTC-SGr-IosevkaFixedCurly',
 'SuperTTC-SGr-IosevkaFixedCurlySlab',
 'SuperTTC-SGr-IosevkaFixedSS01',
 'SuperTTC-SGr-IosevkaFixedSS02',
 'SuperTTC-SGr-IosevkaFixedSS03',
 'SuperTTC-SGr-IosevkaFixedSS04',
 'SuperTTC-SGr-IosevkaFixedSS05',
 'SuperTTC-SGr-IosevkaFixedSS06',
 'SuperTTC-SGr-IosevkaFixedSS07',
 'SuperTTC-SGr-IosevkaFixedSS08',
 'SuperTTC-SGr-IosevkaFixedSS09',
 'SuperTTC-SGr-IosevkaFixedSS10',
 'SuperTTC-SGr-IosevkaFixedSS11',
 'SuperTTC-SGr-IosevkaFixedSS12',
 'SuperTTC-SGr-IosevkaFixedSS13',
 'SuperTTC-SGr-IosevkaFixedSS14',
 'SuperTTC-SGr-IosevkaFixedSS15',
 'SuperTTC-SGr-IosevkaFixedSS16',
 'SuperTTC-SGr-IosevkaFixedSS17',
 'SuperTTC-SGr-IosevkaFixedSS18',
 'SuperTTC-SGr-IosevkaTermCurly',
 'SuperTTC-SGr-IosevkaTermCurlySlab',
 'SuperTTC-SGr-IosevkaTermSS01',
 'SuperTTC-SGr-IosevkaTermSS02',
 'SuperTTC-SGr-IosevkaTermSS03',
 'SuperTTC-SGr-IosevkaTermSS04',
 'SuperTTC-SGr-IosevkaTermSS05',
 'SuperTTC-SGr-IosevkaTermSS06',
 'SuperTTC-SGr-IosevkaTermSS07',
 'SuperTTC-SGr-IosevkaTermSS08',
 'SuperTTC-SGr-IosevkaTermSS09',
 'SuperTTC-SGr-IosevkaTermSS10',
 'SuperTTC-SGr-IosevkaTermSS11',
 'SuperTTC-SGr-IosevkaTermSS12',
 'SuperTTC-SGr-IosevkaTermSS13',
 'SuperTTC-SGr-IosevkaTermSS14',
 'SuperTTC-SGr-IosevkaTermSS15',
 'SuperTTC-SGr-IosevkaTermSS16',
 'SuperTTC-SGr-IosevkaTermSS17',
 'SuperTTC-SGr-IosevkaTermSS18'}

This modification has led to several broken links in the documentation, adversely affecting the Homebrew cask that I am currently maintaining. The reorganization of font packages, especially the division of combined packages into separate ones, has introduced confusion and compatibility issues.

For instance, the package PkgTTC-IosevkaSS12, which was present in v29.0.2 but absent from v29.0.3, previously included three types of fonts: "Iosevka SS12", "Iosevka Fixed SS12", and "Iosevka Term SS12". In the new release, these seem to be split into separate packages: "PkgTTC-SGr-IosevkaSS12", "PkgTTC-SGr-IosevkaFixed", and "PkgTTC-SGr-IosevkaTerm". However, this separation presents a challenge for users like me, who wish to use the "Iosevka Term SS12" font in applications such as VSCode and iTerm2, as the terminal defaults to using standard style sets instead of the "SS12" variant.

Given these changes, I would like to understand the best approach to configure my settings to replicate the previous behavior. Specifically, how can the settings be adjusted to correctly use the "Iosevka Term SS12" font with the new distribution method? Currently, my configuration looks like this:

"terminal.integrated.fontFamily": "'Iosevka Term SS12', 'IosevkaTerm Nerd Font Mono'",

Moreover, I am interested in knowing whether this change in the distribution method is intended to be permanent. If so, according to Homebrew's contribution guide for fonts, it appears necessary to create individual casks for each binary distribution, which could significantly alter the current cask structure.

For example, I should have each of them per cask, is that correct?

 'SuperTTC-Iosevka',
 'SuperTTC-IosevkaAile',
 'SuperTTC-IosevkaEtoile',
 'SuperTTC-IosevkaSlab',
 'SuperTTC-SGr-Iosevka',
 'SuperTTC-SGr-IosevkaCurly',
 'SuperTTC-SGr-IosevkaCurlySlab',
 'SuperTTC-SGr-IosevkaFixed',
 'SuperTTC-SGr-IosevkaFixedSlab',
 'SuperTTC-SGr-IosevkaSlab',
 'SuperTTC-SGr-IosevkaSS01',
 'SuperTTC-SGr-IosevkaSS02',
 'SuperTTC-SGr-IosevkaSS03',
 'SuperTTC-SGr-IosevkaSS04',
 'SuperTTC-SGr-IosevkaSS05',
 'SuperTTC-SGr-IosevkaSS06',
 'SuperTTC-SGr-IosevkaSS07',
 'SuperTTC-SGr-IosevkaSS08',
 'SuperTTC-SGr-IosevkaSS09',
 'SuperTTC-SGr-IosevkaSS10',
 'SuperTTC-SGr-IosevkaSS11',
 'SuperTTC-SGr-IosevkaSS12',
 'SuperTTC-SGr-IosevkaSS13',
 'SuperTTC-SGr-IosevkaSS14',
 'SuperTTC-SGr-IosevkaSS15',
 'SuperTTC-SGr-IosevkaSS16',
 'SuperTTC-SGr-IosevkaSS17',
 'SuperTTC-SGr-IosevkaSS18',
 'SuperTTC-SGr-IosevkaTerm',
 'SuperTTC-SGr-IosevkaTermSlab'

So the current casks:

homebrew/cask-fonts/font-iosevka                                       homebrew/cask-fonts/font-iosevka-ss07
homebrew/cask-fonts/font-iosevka-aile                                  homebrew/cask-fonts/font-iosevka-ss08
homebrew/cask-fonts/font-iosevka-comfy                                 homebrew/cask-fonts/font-iosevka-ss09
homebrew/cask-fonts/font-iosevka-curly                                 homebrew/cask-fonts/font-iosevka-ss10
homebrew/cask-fonts/font-iosevka-curly-slab                            homebrew/cask-fonts/font-iosevka-ss11
homebrew/cask-fonts/font-iosevka-etoile                                homebrew/cask-fonts/font-iosevka-ss12
homebrew/cask-fonts/font-iosevka-nerd-font                             homebrew/cask-fonts/font-iosevka-ss13
homebrew/cask-fonts/font-iosevka-slab                                  homebrew/cask-fonts/font-iosevka-ss14
homebrew/cask-fonts/font-iosevka-ss01                                  homebrew/cask-fonts/font-iosevka-ss15
homebrew/cask-fonts/font-iosevka-ss02                                  homebrew/cask-fonts/font-iosevka-ss16
homebrew/cask-fonts/font-iosevka-ss03                                  homebrew/cask-fonts/font-iosevka-ss17
homebrew/cask-fonts/font-iosevka-ss04                                  homebrew/cask-fonts/font-iosevka-ss18
homebrew/cask-fonts/font-iosevka-ss05                                  homebrew/cask-fonts/font-iosevka-term-nerd-font
homebrew/cask-fonts/font-iosevka-ss06                                  homebrew/cask-fonts/font-iosevka-term-slab-nerd-font

Should have 4 fonts added: font-iosevka-term, font-iosevka-term-slab, font-iosevka-fixed, font-iosevka-fixed-slab added?

In light of these developments, I kindly request your guidance on the following points:

  1. Confirmation on the permanence of the new font distribution method and its implications for Homebrew casks.
  2. Assistance in updating the existing Homebrew cask configurations to align with the new distribution, especially concerning the addition of font-iosevka-term, font-iosevka-term-slab, font-iosevka-fixed, and font-iosevka-fixed-slab.
  3. Recommendations for users to adjust their configurations to accommodate these changes, particularly for integrating specific font styles such as "Iosevka Term SS12" into their workflows with the new packages.
be5invis commented 3 months ago

@singularitti I will remove 29.0.3 from releases for now and republish a fix as 29.0.4.

be5invis commented 3 months ago

Something was broken in the last release build... Sorry.

singularitti commented 3 months ago

Cool, thank you!

be5invis commented 3 months ago

@singularitti 29.0.4 is out. You can update to 29.0.4 direcrtly.