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

Add an option to change font family name and/or id #7

Open
psycha0s opened this issue May 13, 2016 · 17 comments
Open

Add an option to change font family name and/or id #7

psycha0s opened this issue May 13, 2016 · 17 comments

Comments

@psycha0s
Copy link

Sometimes there is a need to have installed a couple versions of the same font with different interline spacing. Therefore, OS should be able to treat these fonts as different.

@chrissimpkins
Copy link
Member

This is a great idea Anton. It would also be useful to modify the name in case you want to re-release a modified version of a open font licensed font with a reserved font name. This is not difficult. Will leave this open to remind me to do it when I get back to work on this tool.

@chrissimpkins
Copy link
Member

We just discussed this over here source-foundry/Hack#345 (comment).

I am interested in whether anyone has thoughts about whether we should support an automated approach (e.g. add integer that indicates the percent UPM value passed at the command line to the current font family name - Coolfont 25, Coolfont 15) or user specified at the command line so that you can change the font family name to anything that you would like in order to create your own naming scheme. Either approach should permit side-by-side installs of fonts with different line spacing settings.

Let me know what you think. I am prepared to add this if there is interest in it.

@jesseleite
Copy link

@chrissimpkins Would love to rename font so I could have multiple line heights installed as well.
How hard would this be to add?

@chrissimpkins
Copy link
Member

chrissimpkins commented Nov 16, 2017

On the to do list! I have actually been considering a standalone tool to rename fonts because we need this for other things.

Here is a Python script that will accomplish this until it is in this tool or we have a standalone renaming tool (that will likely be based on the script in the repo below):

https://github.com/chrissimpkins/fontname.py

Let me know if you have any problems with it. Instructions are on the repository readme page.

Note that the script renames the fonts without writing to new file paths so create copies if you intend to keep previous names.

@chrissimpkins
Copy link
Member

@jesseleite if we do add the font renaming to this tool, best to create option to specify name on command line or automate it in some fashion based upon the change in the line spacing?

@jesseleite
Copy link

Hey @chrissimpkins thanks for reply!

Let me know if you have any problems with it.

Probably because I'm new to python, but I am having trouble with fonttools dependency...

if we do add the font renaming to this tool, best to create option to specify name on command line or automate it in some fashion based upon the change in the line spacing?

100% could have optional flag to specify name, like:

font-line percent 120 ~/Downloads/Menlo-Regular.ttf --name="Menlo LG 120"

Or something similar?

@chrissimpkins
Copy link
Member

@jesseleite strange. Mind dropping into the Python2 and Python3 REPL to check the import?:

$ python2
 > import fontTools
$ python3
 > import fontTools

@chrissimpkins
Copy link
Member

Incidentally, you should already have fontTools installed if you are using font-line... It is a dependency and is automatically installed with the font-line install. Maybe it is installed under Py3 for some reason? Let's see what the above shows and can troubleshoot from there.

@chrissimpkins
Copy link
Member

100% could have optional flag to specify name

👍 thanks for the feedback!

@jesseleite
Copy link

Ahh it was python2 I needed to run. Thanks 👍

@chrissimpkins
Copy link
Member

you must default to python3. this is a good thing! time to get rid of py2...

work as a separate install?

@jesseleite
Copy link

jesseleite commented Nov 17, 2017

Yeah learning :) I did get it to work though, thanks!

@chrissimpkins
Copy link
Member

@jesseleite great! enjoy!

@ftCLI
Copy link

ftCLI commented May 30, 2021

On the to do list! I have actually been considering a standalone tool to rename fonts because we need this for other things.

Here is a Python script that will accomplish this until it is in this tool or we have a standalone renaming tool (that will likely be based on the script in the repo below):

https://github.com/chrissimpkins/fontname.py

Let me know if you have any problems with it. Instructions are on the repository readme page.

Note that the script renames the fonts without writing to new file paths so create copies if you intend to keep previous names.

Assuming that the font has all the namerecords correcly set, I'd do the following:

  1. Get old_family_name from nameID 16, and if it's not present use nameID 1 as fallback
  2. Set new_family_name = old_family_name + linegap (or whatever)
  3. Replace the old_family_name with new_family_name in nameIDs 1, 3, 4, 6, 16, 18 (at least these ones, but better in all nemerecords) and CFF names

Since some namerecords contain spaces and other don't, a double replacement is needed:

new_string = old_string.replace(old_family_name, new_family_name).replace(old_family_name.replace(" ", ""), new_family_name.replace(" ", ""))

But I'd not to this by default, leaving the choice to the user.

Anyway, I tested this script yesterday for the first time and it's superb!

@chrissimpkins
Copy link
Member

Assuming that the font has all the namerecords correcly set, I'd do the following:

Get old_family_name from nameID 16, and if it's not present use nameID 1 as fallback
Set new_family_name = old_family_name + linegap (or whatever)
Replace the old_family_name with new_family_name in nameIDs 1, 3, 4, 6, 16, 18 (at least these ones, but better in all nemerecords) and CFF names
Since some namerecords contain spaces and other don't, a double replacement is needed:

new_string = old_string.replace(old_family_name, new_family_name).replace(old_family_name.replace(" ", ""), new_family_name.replace(" ", ""))

But I'd not to this by default, leaving the choice to the user.

Anyway, I tested this script yesterday for the first time and it's superb!

Something that you intend to support in ftCLI?

@ftCLI
Copy link

ftCLI commented May 30, 2021

Yes! I will add an option to allow the user choose if changing the family name or leave it as is.

@ftCLI
Copy link

ftCLI commented May 30, 2021

Done, seems working:

linegap

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

No branches or pull requests

4 participants