[why]
We struggle with the pack-committing of patched fonts to the repository
on release. This makes our repo grow extremely big. It would be better
to just use release artifacts for the releases and not commit any
patched font back.
There were different approaches discussed, but the problem remains that
I personally have no rights to implement anything of that - neither can
I force push to the default branch, nor can I create new repos in the
organization.
[how]
To make it still possible to add new fonts without a repo size
explosion we do not release NEW fonts back to the repository as commits,
but old fonts are handled as before.
NEW fonts:
* have a new property set in the fonts.yaml 'database'
* are released as release artifact via release workflow (but not
committed back)
* get a readme in the patched_fonts/ directory that points to the
release artifact page
The solution is not ideal, but for sure better than not adding any fonts
anymore or having the repo grow in size faster and faster.
At some point in time I would like to phase out all in-repo releases,
also for OLD fonts.
This scheme has been (manually) used / introduced for Intel One.
With this change the .gitignore file is automatically adapted to any new
font that is added with the repoRelease flag set to false (which should
be the default for any added font from now on).
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
When a user sets the XDG_DATA_HOME environment variable the default of
$HOME/.local/share should not be used.
https://wiki.archlinux.org/title/XDG_Base_Directory
[how]
Enable XDG_DATA_HOME to override the default user data directory on Unix
and MacOS platforms.
There is some controversy if XDG_DATA_HOME should be honored on MacOS,
see for example platformdirs (link below). But me also working on Linux
and MacOS (and Windows) in parallel, I can not quite follow the
downsides and believe we should allow XDG_DATA_HOME also for MacOS.
Related: https://github.com/platformdirs/platformdirs/issues/4Fixes: #1324
Suggested-by: Anthony Foglia <@afoglia>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Windows seems to construct the font names including the PS weight.
We have some sourcefonts that are broken (i.e. have in fact different
weights but have the same PS weight and/or OS2 weight.
That raises problems with the fonts on Windows.
[how]
Check and compare all weight metadata (except CID) and issue a warning
if they differ too much. That might fail with unusual weight names,
though.
See Issue #1333 and PR #1358.
Reported-by: LeoniePhiline
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Under certain circumjstances Fontforge can not create a font. As the API
does not give any feedback we trudge along afterwards giving confusing
messages.
One example is when the patched font contains too many glyphs.
[how]
Check if the patched font has indeed been generated and is not empty.
Fixes: #1342
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
This is a simulation of the release workflow.
$ ./gotta-patch-em-all-font-patcher\!.sh -j /IntelOneMono
$ ./archive-fonts.sh IntelOneMono
$ git add ../../patched-fonts/IntelOneMono/
$ git commit -s -m 'Add IntelOne patched (i.e. just readme)' -e
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Some fonts will not be released to the repo; but only exist patched as
release atrifacts. This needs adapted readmes.
[how]
If such a font is encountered direct links to the release archives are
put into the readme file.
Decide based on information in the font.json file.
If no info is found in the json file (i.e. all existing fonts) it
defaults to release-also-to-repo behavior.
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
We have a lot duplicated code here.
[how]
As the to and to-dir never changes we can assign that outside all the if
cases.
We can also always just add the extra information to the (only one,
independent of number of incoming data files) output after all the ifs.
Note that this also adds the extra information if we had no readme at
all. Previous code would not add anything to that (for whatever reason).
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
Verbs have been dropped from Inkscape with version 1.2
[how]
Use actions instead. I'm not sure how well that works with older
Inkscapes now, but ... sigh
[note]
Also add missing helper for font filenames for Intel One Mono.
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
-makegroups 0 is not a valid naming mode for releases. The mode is
deprecated and will be removed. Furthermore the mode can produce broken
patched fonts.
[how]
Mode 1 and 2 are too long for some NFP in the family name, so use mode 4.
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
We do not (try to) copy the upstream webpage, but instead link it.
Also add version information (well, there is no difference between
1.2.0 and 1.2.1, but 1.2.1 is the latest right now).
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
If a user specified a name we should probably not camel-casify it.
Fixes (idea mentioned in): #1319
Suggested-by: HUMORCE
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
In the post we used these information sources to determine the name and
weights/styles of the to-be-patched font:
* The filename
* The fullname (ID 4)
* The postscriptname (ID 6)
Usually it is best to use the Fullname of a font to determine its real
name and styles/weights:
The Postscript name has the advantage to have a hyphen between name and
styles/weight; but as it can not contain blanks the correct name can not
be determined by this. To get the styles/weights back we use a list of
all possible (?!) weights and styles and sort all the string parts.
This works reasonably well and the fullname is usually best.
Not so with Input Mono Condensed. Here are its names:
ID4: "InputMonoCondensed LightIta"
IF6: "InputMonoConsensed-LightItalic"
[how]
Add option to select between fullname and postscriptname as font naming
source.
For special purposes, also allow a custom (arbitrary) name input.
If that is given the specified name will be used to name the patched
font without adding any suffix - the user has full control on the name.
Fixes: #1314
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
A lot arguments need one user supplied value, but that is not enforced.
For example
font-patcher src/unpatched-fonts/Agave/Agave-Regular.ttf --out
results in a crash, because the needed output directory has not been
passed, but the default is also not used.
The problem is that the option is defined to take any amount of values,
includeing zero values (and more than one value).
That all does not make sense. The switch does need exactly one value.
[how]
Remove the wrong nargs specification. Instead use the default, which is
'expect one value' for the default action 'store'.
Instead of a crash the user is now presented with this output:
font-patcher: error: argument -out/--outputdir: expected one argument
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
When we rename "Envy Code R" to "EnvyCodeR" this is detected as RFN
relevant name change, which it is not.
[how]
Compare the blank removed lower cased names.
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
The font has RFN, but we are allowed to use the patched name
"Envy Code R Nerd Font", see PR #1318.
Thanks go to Damien Guard!
Fixes: #1205
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
[why]
The readmes in the zip and tar.xz archives differ. The zips have only a
very small and generic `readme.md`. The tar.xz have that readme as well as
the `README.md` from the patched-fonts/ directory. This should be the same
for both.
To have two files with names that just differ in case (`readme.md` and
`README.md`) can be problematic on some platforms.
[how]
Combine both readmes into one file - put the generic info in the top of
the readme.
Also include the RELEASE_VERSION if known into the readme. That makes it
more easy to identify which Nerd Font release that archive came from.
RELEASE_VERSION is set in the release workflow.
Fixes: #1284
Reported-by: Jan Klass <kissaki@posteo.de>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>