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

Installation on macOS via brew-cask-fonts #1

Closed
shamindras opened this issue Jun 7, 2022 · 14 comments
Closed

Installation on macOS via brew-cask-fonts #1

shamindras opened this issue Jun 7, 2022 · 14 comments

Comments

@shamindras
Copy link

Hi @protesilaos,

Many thanks for making this package and for your wonderful emacs videos! I've just setup your modus-themes package on emacs and am enjoying it.

I'm on a macOS (Monterey v12.1), and wanted to install this cool font. A couple of questions:

  1. How do I locally install this on my macOS?
  2. Are you able to add an installer via brew-cask-fonts? If so this would mean a simple command line installation for macOS users as follows:
    $ brew tap homebrew/cask-fonts         # You only need to do this once!
    $ brew install font-iosevka-comfy
    

Sorry if this has already been answered before, but I thought to just check with you.

@shamindras shamindras changed the title Installation on mac via brew Installation on mac via brew-cask-fonts Jun 7, 2022
@shamindras shamindras changed the title Installation on mac via brew-cask-fonts Installation on macOS via brew-cask-fonts Jun 7, 2022
@protesilaos
Copy link
Owner

Hello @shamindras!

Many thanks for making this package and for your wonderful emacs
videos! I've just setup your modus-themes package on emacs and am
enjoying it.

You are welcome!

I'm on a macOS (Monterey v12.1), and wanted to install this cool
font. A couple of questions: [...]

Unfortunately, I do not have access to macOS and am not familiar with
how it works.

I am happy to add this information to the README, if someone knows the
answers. And, more generally, I can facilitate linking to other sources
if people want to maintain packages/recipes.

@shamindras
Copy link
Author

shamindras commented Jun 7, 2022

Thanks @protesilaos - appreciate your prompt and thoughtful response.

I looked into this (I'm an emacs and brew-cask-fonts newb), but these are the essential steps needed.

Since ioveska-comfy is a family of fonts, one can mimick the example given for the fantasque-sans font family via the following ruby script:

cask "font-fantasque-sans-mono" do
  version :latest
  sha256 :no_check

  url "https://github.com/protesilaos/iosevka-comfy/archive/refs/tags/v#{version}.zip"
  appcast "https://github.com/protesilaos/iosevka-comfy/releases.atom"
  name "Iosevka-Comfy"
  homepage "https://github.com/protesilaos/iosevka-comfy"

  font "iosevka-comfy/ttf/iosevka-comfy-bold.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-bolditalic.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-extrabold.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-extrabolditalic.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-italic.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-light.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-lightitalic.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-regular.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-semilight.ttf"
  font "iosevka-comfy/ttf/iosevka-comfy-semilightitalic.ttf"
end

I'm not sure how to set the appcast field in this case, but here are the details.

This can be automated using their font_casker script. Asking the font-casker developers here may help speed up this process, if you should wish to undertake it.

Finally iosevka-comfy comes in many 'flavors', e.g., iosevka-comfy-wide, iosevka-comfy-duo. It may be sufficient just to make the main iosevka-comfy ttf fonts available to macOS users.

What do you think?

@protesilaos
Copy link
Owner

I looked into this (I'm an emacs and brew-cask-fonts newb), but these are the essential steps needed.

Since ioveska-comfy is a family of fonts, we could mimick the example given for the fantasque-sans font family via the following ruby script:

cask "font-fantasque-sans-mono" do
  version :latest
  sha256 :no_check

  url "https://github.com/protesilaos/iosevka-comfy/archive/refs/tags/v#{version}.zip"
  appcast "https://github.com/belluzj/fantasque-sans/releases.atom"
  name "Iosevka-Comfy"
  homepage "https://github.com/protesilaos/iosevka-comfy"

  font "osevka-comfy/ttf/iosevka-comfy-bold.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-bolditalic.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-extrabold.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-extrabolditalic.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-italic.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-light.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-lightitalic.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-regular.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-semilight.ttf"
  font "osevka-comfy/ttf/iosevka-comfy-semilightitalic.ttf"
end

This looks like a promising start. Thank you!

I'm not sure how to set the appcast field in this case, but here are the details.

This can be automated using their font_casker script. Asking the font-casker developers here may help speed up this process, if you should wish to undertake it.

I will need to review these tomorrow. Right now I am about to go to bed. The appcast must be the Atom feed of the tagged releases, so: https://github.com/protesilaos/iosevka-comfy/releases.atom

Finally iosevka-comfy comes in many 'flavors', e.g., iosevka-comfy-wide, iosevka-comfy-duo. It may be sufficient just to make the main iosevka-comfy ttf fonts available to macOS users.

I am not sure what the brew-cask-fonts policy is here. Does the project expect one font per cask, or can it take multiple fonts at once?

In principle, these "wide" and "duo" etc. are separate fonts due to minor differences between them. I am fine with whatever works best, though I assume someone who is interested in Iosevka Comfy might want to try all or at least some of the fonts in the family.

@shamindras
Copy link
Author

shamindras commented Jun 7, 2022

This looks like a promising start. Thank you!

No problems - glad it is useful 👍🏾 .

I will need to review these tomorrow. Right now I am about to go to bed. The appcast must be the Atom feed of the tagged releases, so: protesilaos/iosevka-comfy/releases.atom

Right, I had edited my original post shortly to reflect this 😄 . Good to know that this seems like the right value for this field.

I am not sure what the brew-cask-fonts policy is here. Does the project expect one font per cask, or can it take multiple fonts at once?

In principle, these "wide" and "duo" etc. are separate fonts due to minor differences between them. I am fine with whatever works best, though I assume someone who is interested in Iosevka Comfy might want to try all or at least some of the fonts in the family.

Since ioveska-comfy comes in five variants, I believe a separate such script will need to be created for each variant.

My expectation as a macOS user is to then install all variants as follows:

$ brew tap homebrew/cask-fonts         # You only need to do this once!
$ brew install font-iosevka-comfy
$ brew install font-iosevka-comfy-wide
$ brew install font-iosevka-comfy-wide-fixed
$ brew install font-iosevka-comfy-fixed
$ brew install font-iosevka-comfy-duo

For example I currently run the following for iosevka:

$ brew tap homebrew/cask-fonts         # You only need to do this once!
$ brew install font-iosevka
$ brew install font-iosevka-slab

So I believe the above is the 'right' approach for the iosevka-comfy variants. It would be good to file an issue with the cask-font team to clarify.

If you agree with the above, then there is one further issue that needs to be clarified with the cask-font team, namely that for each of the five iosevka-comfy variants, you have a unhinted and base font subtype. I'm not sure if each of the five variants should be split into these two subtypes, or whether just the base variant subtype should be released here.

Hope this is useful. And thanks again for considering this - appreciate all your efforts.

@protesilaos
Copy link
Owner

So I believe the above is the 'right' approach for the iosevka-comfy variants. It would be good to file an issue with the cask-font team to clarify.

Agreed! Since Iosevka is already done that way, I don't think we need to ask for further clarification: we just follow the established precedent. If the maintainers have other ideas, we act accordingly.

If you agree with the above, then there is one further issue that needs to be clarified with the cask-font team, namely that for each of the five iosevka-comfy variants, you have a unhinted and base font subtype. I'm not sure if each of the five variants should be split into these two subtypes, or whether just the base variant subtype should be released here.

The "base" should be fine. I assume this is how other fonts do it as well.


Will you prepare a PR for homebrew-cask-fonts? I don't think I should do it, because I have no means of testing this. Plus, you already did all the research and deserve to be acknowledged for it.

Once we have this in place, we need to update our README to provide installation instructions. If you want, prepare a PR, otherwise I will do it.

@shamindras
Copy link
Author

shamindras commented Jun 8, 2022

Agreed! Since Iosevka is already done that way, I don't think we need to ask for further clarification: we just follow the established precedent. If the maintainers have other ideas, we act accordingly.

Thanks for clarifying your preference. The hinted fonts (formerly referred to as base) make more sense for googlefonts (more on this below).

Will you prepare a PR for homebrew-cask-fonts? I don't think I should do it, because I have no means of testing this. Plus, you already did all the research and deserve to be acknowledged for it.

I can definitely help. However, upon further reading I think there is a much simpler and more elegant solution. Namely, I think it is best to push iosevka-comfy to google-fonts.

The reason for this is from this section (emphasis mine)

The preferred way to add a font to this repository is to submit it to Google Fonts. Shortly after its inclusion, a Cask will be automatically generated and updated on this repository.

In short I believe google-fonts will give these fonts a bigger platform and you get cask-fonts updated for free!

Based on the contributing guide for new font families, I believe it would be easiest for you (as the official font author, and this repo owner) to initiate an issue with google-fonts team directly and get their thoughts. If you amend this repo to meet their guidelines, I image the PR should be quite smooth. They have an example font template repo here and an actual font repo here. I believe it is not hard to amend this repo to match this template.

In short, I feel like google-fonts is a much more universal approach to distributing this font.

What do you think?

@protesilaos
Copy link
Owner

I have my reservations about the Google Fonts part, because Iosevka Comfy is not an original design and I am not sure what the legal implications could be. The project basically is a remix of Iosevka: it uses the resources found in iosevka.git.

Beside that, there are some practical difficulties with a potential contribution to Google Fonts.

[ Commenting on their CONTRIBUTING.md ]

  • All font files must be built with a scripted build process, and should use fontmake

We are using Iosevka's npm-based build process. This is what I get on the command-line:

I cannot find any indication that fontmake is used.

I don't know what this entails. Though it is a later step in the process.

The FONTLOG is outside the scope of Iosevka Comfy because it is a derivative of Iosevka. Put differently, we do not control which glyphs are added, removed, revised.

@shamindras
Copy link
Author

shamindras commented Jun 8, 2022

I have my reservations about the Google Fonts part, because Iosevka Comfy is not an original design and I am not sure what the legal implications could be. The project basically is a remix of Iosevka: it uses the resources found in iosevka.git.

Beside that, there are some practical difficulties with a potential contribution to Google Fonts.

That's reasonable - I see your point.

We can then go back to the original plan, i.e., setup cask-fonts for each of the five iosevka-comfy hinted variants.

I'm happy to help file an issue with the cask-fonts team to get this process started. But please keep in mind that I don't really know much about brew, fonts etc. Also I will be doing this outside of my usual research work. So things may take longer than expected.

Is the above all fine with you? If so, then I can then start the cask-fonts issue and tag you in.

@protesilaos
Copy link
Owner

Is the above all fine with you? If so, then I can then start the cask-fonts issue and tag you in.

Yes, please proceed. I will be active in the issue and help you however I can. I just can't do it myself because if I ever need to test anything, I have no means of doing it.

@shamindras
Copy link
Author

Yes, please proceed. I will be active in the issue and help you however I can. I just can't do it myself because if I ever need to test anything, I have no means of doing it.

Sounds good! Let's try it.

I'm currently reading the documentation for homebrew PR and here. It is a little more involved than I thought. So will take some time to play with it.

I'll update you once I have some progress.

@protesilaos
Copy link
Owner

I'm currently reading the documentation for homebrew PR and here. It is a little more involved than I thought. So will take some time to play with it.

Oh, I see. This will not be an ordinary patch.

I'll update you once I have some progress.

Sure, take as much time as you need. I am ready to help however I can.

@dabrahams
Copy link

@protesilaos FWIW, you can use homebrew on Linux, so that may improve your local testing.

@dabrahams
Copy link

dabrahams commented Dec 21, 2022

Here's a PR for the cask.

@protesilaos
Copy link
Owner

Thank you @dabrahams! I am monitoring it. Once it is done, we can mention it in our README.

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