1
0
mirror of https://github.com/ryanoasis/nerd-fonts.git synced 2024-12-19 20:12:52 +02:00
Commit Graph

309 Commits

Author SHA1 Message Date
Fini Jastrow
f448eba396 gotta-patch-em-all: Fix unfiltered (all) patch run
[why]
When we want to patch all fonts by calling the script without any
options it fails.

[how]
Give the correct regex to find all directories.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-01-05 20:02:18 +01:00
Fini Jastrow
0e434c2b9a generate-font-image-previews: Fit svg canvas to drawing [skip ci]
[why]
The generated svg's canvas is far too big.
I remember shadowy that one had to resize the canvas manually...

[how]
Switch back from Actions to Verbs, because only there we can resize the
canvas automatically.

Note commit
  3444b5755  generate-font-image-previews: Fix and Refactor [skip-ci]

Verbs seem to be still possible. There is currently no Action for the
same thing.
So we revert 3444b5755 to Ryan's original code (in principle) with the
same verbs.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-19 21:19:29 +01:00
Fini Jastrow
2597b4ef3f generate-font-image-previews: Generate Symbols Only preview
[why]
We do not have a preview for the Symbols Only font.
The Symbols Only font appears two times (with 1000 and with 2048 EM).

[how]
Remove one of the occurences of NerdFontSymbolsOnly in the fonts.json.
The font matrix (for CI) still works, and we get only one entry in the
fonts list on the gh-pages.

Change the entry details accordingly.

Create special svg template that includes lots of symbols.

Change the destination filename to be imagePreviewFont instead of the
patchedName + "Nerd Font". The website (gh-pages) expects the former
file names.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-19 21:09:29 +01:00
Fini Jastrow
7aa717a05e generate-font-image-previews: Cleanup
[why]
There are two svg tempates, one with and one without Inkscape metadata.

[how]
The metadataless files is fine and opens ok in Inkscape.
There are no real differences between the two templates.
Drop the Inkscape one.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-19 17:07:20 +01:00
Fini Jastrow
3b1329aefb CI: Fix: Automatically deploy webfonts [skip ci]
[why]
From the name we used the non-Mono Symbols font for the webfonts. But in
the Cheat Sheet we want to display the icons all in nice boxes, all with
the same size. That is not the case for the non-Mono font, here all
glyphs are unscaled and thus do not match each other.

[how]
Use the Nerd Font Mono variant for the webfont, as the icons here all
have the same size and are surrounded by their bounding box, making
working with them a lot easier.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-16 19:08:53 +01:00
Fini Jastrow
aef01c4f4f CI: Automatically deploy webfonts [skip ci]
[why]
The webfonts are needed for the cheat sheet. When we update the sheet
code we probably need also new fonts.
The fonts might contain fixes also if there is no need for a new sheet,
so they have to be updated on every release.

[how]
Add mini-script that generates the woff's from the latest 'ttf'.
This makes it easier to check the woffs manually.

Let the workflow create the woffs, and push them to the gh-pages.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-16 17:14:30 +01:00
Fini Jastrow
4fba05a738 CI: Keep i_seti.sh in sync with autogenerated font
[why]
Although we automatically create a new up to date i_seti.sh on all
original-source.otf updates, we do not push it to the repo together with
the font.

[note]
Also include up-to-date i_seti.sh because the workflow will not trigger
until we have new icons and the font does actually change.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-16 12:23:16 +01:00
Fini Jastrow
3b93c99637 casks: Fix cask generation for 'deep' archives [skip ci]
[why]
Normally the release zip files have a flat directory structure, i.e. all
files are in the base directory and there are no subdirs. The existing
subdirectory structure is removed on zip creation via `archive-fonts.sh`.

If the patch results have two fonts with identical name these flat
archives can not be generated. The `archive-fonts.sh` reports:

    Could not create archive with the path junked (-j option) - likely
    same font names for different paths, zip status: $zipStatus
    Retrying with full path

But now the problem is only delayed. When the font file has the name
name the Family and SubFamily are most likely also the same for both
font files. If we install both the user (and the system) can not really
distinguish the font files anymore.

This turned up with [1] when doing a `brew style *nerd-font*` that
complains in fact about duplicate fonts to install. At that point we had
the additional problem that the subdir-path had been missing in the cask
files. So I'm not sure if it would work from a Cask standpoint (i.e.
font files are installed in subdirs).

Anyhow, this will fail when the user wants to select the font files,
because normally this is done on a Family-name basis. And identical file
name usually means identical Family-SubFamily.

Note that this ONLY happens with GohuFont, which has these subdirs:

    11/complete
    14/complete
    uni-11/complete
    uni-14/complete

The font has embedded bitmaps, but only one size. The "11" ones have
11px bitmap fonts and the "14" ones 14px bitmaps.
The "uni-" variant has much more glyphs.
Otherwise the differences are slim. From the font creation date the
"uni-" ones are newer.

[how]
Each font filename added to a cask is memorized. When the next fontfile
is to be added to the cask it is checked if we already have that
filename installed. Duplicates are then skipped.

If we have a deep archive, the fonts are added to the cask with full
relative path.

In case of Gohu that means the 11/complete variant is added (because all
files are alphabetically sorted before adding). By chance this is the
same variant that has historically been in the Cask, so no change here.

Fixes:

https://github.com/ryanoasis/nerd-fonts/pull/1008#issuecomment-1351170552
https://github.com/Homebrew/homebrew-cask-fonts/pull/6758#issuecomment-1350791208

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 18:49:32 +01:00
Fini Jastrow
4a9282743a casks: Correct some variables to local
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 16:30:02 +01:00
Fini Jastrow
762be5b638 CI: Add new workflow to create all casks [skip-ci]
Now we can create the casks of some specific release ('latest' in this
case) at will, based purely on the artifact files and on nothing in the
repo. We do not even need to fetch the repo.

This is still some kind of WIP, because we do not have the secrets and
not even a proper homebrew fork in our organization.

THIS WILL NOT WORK out of the box. Refer to PR #1008 to get instruction
on additional steps needed to make this run.

[note]
Remove cask generation from normal release workflow.
Later on the release workflow has to trigger the cask workflow.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
1cbe7a1813 generate-casks: Decouple from patched-fonts dir
[why]
It does not really make sense to couple the casks, which checksums are
based on the zip files in the archive directory to files currently
existing in the repo. They could be different from the archived ones.

[how]
Use solely the archives. For this they must be unpacked temporarely so
that the fonts can be examined for family names.
We do not try to automatically determine the release tag of the archive
files. They could in principle we different for each. Instead it usually
has to be specified on the command line.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
c5cb976db8 generate-casks: Simplify jq call
[why]
The json file is transported to jq via pipe AND as file.
That is not needed of course.

[how]
Just use the filename.

[note]
Also some whitespace changes.
Also remove debug output.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
a1c9300076 fetch-archives: Decouple from patched-fonts dir
[why]
It does not really make sense to couple the names of the download files
to some currently existing directories in the repo. They could be
different, especially if current version and requested version differ.

[how]
Complete rewrite. Fetch the release data from Github and examine the
release database.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
44629bf663 fetch-archives: Add option to specify release tag
[why]
It fetches the release we did last, which can be a release candidate.
But we want the latest release, or some other specified one.

[how]
Add parameter for the version tag.

[note]
Also correct some docs.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
2c7c1f53f5 casks: Fix ProFont
[why]
ProFontWindows is missing from the cask, just ProFontIIx is included.

According to their documentation ProFontWindows has been created
specifically for MS Windows, but it can also be useful on Linux or
MacOS. [1]

[how]
Make the filter more strict, so that we only filter out our own Windows
versions and not all fonts that contain "Windows" in the name.

[note]
I'm not sure this ProFontWindows font is useful at all ;-}

[1] https://tobiasjung.name/profont/ paragraph "ProFont for Windows"

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
a4500e21a8 fonts.json: Correct Meslo name
[why]
It is in fact Meslo LG that we consume and produce.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
d5d35456e9 casks: Fix naming of Symbols Only font
[why]
The symbols only font has two entries in the fonts.json and that breaks
generation of the cask.

[how]
Do the queries on a 'first wins' strategy; ignore further entries in the
fonts.json.

[note]
I guess we should remove one of the two instances of Symbols Only from
the database; I have still not figured out why there are two distinct
entries.
And why there are two fonts at all 😬

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
5cda467ce3 casks: Improve cask names
[why]
Sometimes the shortest Family is not a meaningful name, for example

  iMWritingDuo
  iMWritingDuospace
  iMWritingMono
  iMWritingQuattro

Obviously the shortest name is not adequate.

[how]
Instead we find the shortest word stem of the name. The common beginning
of all names. In the example above that is `iMWriting`.

If we have such a case we show in the name that there are multiple
families in the cask, by adding "families" to the name.

[note]
Also always capitalize the font name. Some fonts have a
all-small-letters name, but that seems a bit out of place and has been
changed with the manual naming (previously) already to Capitalized Name.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
dd75219729 Add script to download release artifacts
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
9da563c54a casks: Finalizing touches
Add some more documentation / comments.
Increase version number.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
5978ee385f casks: Find correct FamilyName if font has multiple families
[why]
Some fonts have different and not consistent Family names set,
especially (only) if the `--makegroups` option has not been used for
patching.

Example:
$ fc-query --format='%{family}\n' patched-fonts/Hasklig/Black/complete/Hasklug\ Black\ Nerd\ Font\ Complete.otf
Hasklug Nerd Font,Hasklig Black

See also previous commit's message, bottom.

[how]
We want to use only one of the Family names (fc-query reports all as
csv, unless we specify an index), so query one by one.
Check that it is 'our' name (that contains "Nerd") and not a leftover
from uncomplete patching.

[note]
Also whitespace change: One tab to spaces.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
d6975ea99b casks: Find correct FamilyName base stem
[why]
The code takes the FamilyName out of the first patched font file and
puts that into the cask name field.

This has two problems:

After we joined Mono and non-Mono fonts into one cask the first font
might be a "Nerd Font Complete Mono" and we certainly do not want that
FamilyName in a cask that also contains the non-Mono variants.

We have some fonts with more than one Family, for example
  CaskaydiaCove Nerd Font SemiLight
  CaskaydiaCove Nerd Font Light
  CaskaydiaCove Nerd Font
  CaskaydiaCove Nerd Font ExtraLight

Taking the first encountered Family name is most certainly not want we
want.

[how]
Examine all patched fonts and collect their FamilyName and use the
shortest of them, as that usually is the base stem.

This still fails for somem fonts, like Hasklug
  Hasklig Black
  Hasklig ExtraLight
  Hasklig Light
  Hasklig Medium
  Hasklig Semibold
  Hasklug Nerd Font

But that font's FamilyName is broken anyhow, note that the RFN renaming
does not really work consistently. It would be fixed by using
`font-patcher` with option `--makegroups`, which should become the
default soon.
This will be tackled by the next commit.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
c8cb5c78a7 casks: Hardcode cask names in fonts.json
[why]
We want to replace the existing casks. But they do not have a consistent
way to name the casks. Sometimes blanks are preserved (as dashes):

      "unpatchedName": "DejaVu Sans Mono",
      "patchedName": "DejaVuSansMono",
      "caskName": "dejavu-sans-mono",

The above looks like cask-name == unpatched-name.

Here they introduce blanks out of thin air (the original name does not
have blanks):

      "unpatchedName": "DaddyTimeMono",
      "patchedName": "DaddyTimeMono",
      "caskName": "daddy-time-mono",

Here they add something to the name??!:

      "unpatchedName": "Gohu",
      "patchedName": "Gohu",
      "caskName": "gohufont",

Here the cask-name follows the RFN renaming:

      "unpatchedName": "Hasklig",
      "patchedName": "Hasklug",
      "caskName": "hasklug",

Here they do not follow the RFN renaming:

      "unpatchedName": "Liberation",
      "patchedName": "LiterationMono",
      "caskName": "liberation",

And there are a lot more ... strangenesses.
I guess the casks have been created by different people following
different ideas.

[how]
All these inconsistencies makes setting up rules how to determine the
cask name from the other names very complicated and brittle.

If we want to preserve the existing cask names the simplest and most
stable approach is to explicitely specify them in the fonts.json
database:
Introduce a new data field "caskName", like shown above.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
0d21cade68 casks: Create unified Casks, with Mono and non-Mono
[why]
The existing Casks _all_ contain both the Mono and non-Mono variants.

I believe splitting would be a good idea, but that would break existing
uses.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
7acade38e1 casks: Add unpatched fontname in cask description
[why]
People might want to know how the original/unpatched font really is
called. This is done for most current casks.

[how]
Utilize jq and the fonts.json database to retrieve the name (which is
stored nowhere else). Put it in the parens in the name field.

Update some `unpatchedName`s.

[note]
Examples from current casks:

homebrew-cask-fonts/Casks$ find . -name '*nerd-font*' -exec grep " name" {} \; | sort
  name "3270 Nerd Font (3270)"
  name "Agave Nerd Font (Agave)"
  name "Anonymice Nerd Font (Anonymous Pro)"
  name "Arimo Nerd Font (Arimo)"
  name "AurulentSansMono Nerd Font (Aurulent Sans Mono)"
  name "BigBlue_Terminal Nerd Font families (BigBlue Terminal)"
  name "BitstreamVeraSansMono Nerd Font (Bitstream Vera Sans Mono)"
  name "BlexMono Nerd Font (IBM Plex Mono)"
  name "CaskaydiaCove Nerd Font (Caskaydia code)"
  name "CodeNewRoman Nerd Font (Code New Roman)"
  name "Cousine Nerd Font (Cousine)"
  name "DaddyTimeMono Nerd Font (DaddyTimeMono)"
  name "DejaVuSansMono Nerd Font (DejaVu Sans Mono)"
  name "DroidSansMono Nerd Font (Droid Sans Mono)"
  name "FantasqueSansMono Nerd Font (Fantasque Sans Mono)"
  name "FiraCode Nerd Font (Fira Code)"
  name "FiraMono Nerd Font (Fira)"
  name "GohuFont Nerd Font (Gohu)"
  name "GoMono Nerd Font (Go)"
  name "Hack Nerd Font (Hack)"
  name "Hasklug Nerd Font (Hasklig)"
  name "HeavyData Nerd Font (Heavy Data)"
  name "Hurmit Nerd Font (Hermit)"
  name "iMWriting Nerd Font families (iA Writer)"
  name "InconsolataGo Nerd Font (Inconsolata Go)"
  name "InconsolataLGC Nerd Font (Inconsolata LGC)"
  name "Inconsolata Nerd Font (Inconsolata)"
  name "Iosevka Nerd Font (Iosevka)"
  name "JetBrainsMono Nerd Font (JetBrains Mono)"
  name "Lekton Nerd Font (Lekton)"
  name "Literation Nerd Font families (Liberation)"
  name "MesloLG Nerd Font families (Meslo LG)"
  name "Monofur Nerd Font (Monofur)"
  name "Monoid Nerd Font (Monoid)"
  name "Mononoki Nerd Font (Mononoki)"
  name "mplus Nerd Font (M+)"
  name "Nerd Font Symbols Template (Symbols Only)"
  name "Noto Nerd Font families (Noto)"
  name "OpenDyslexic Nerd Font families (OpenDyslexic)"
  name "Overpass Nerd Font (Overpass)"
  name "ProFont Nerd Font families (ProFont)"
  name "ProggyCleanTT Nerd Font families (ProggyCleanTT)"
  name "RobotoMono Nerd Font (RobotoMono)"
  name "SauceCodePro Nerd Font (Source Code Pro)"
  name "ShureTechMono Nerd Font (Share Tech Mono)"
  name "SpaceMono Nerd Font (Space Mono)"
  name "TerminessTTF Nerd Font (Terminus)"
  name "Tinos Nerd Font (Tinos)"
  name "UbuntuMono Nerd Font (Ubuntu Mono)"
  name "Ubuntu Nerd Font (Ubuntu)"
  name "VictorMono Nerd Font (Victor Mono)"

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
659fe757c5 casks: Prettify output
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
48e5201c66 casks: Modernize
* Remove appcast
* Process fonts in alphabetical order
* Skip fonts where no checksum can be determined
* Add livecheck
* Add description
* Fail generation on any error in the script

[notes]
* The code to work without checksum (:no_check) did not work anyhow

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
bafbb372c3 casks: Clean up whitespace
[why]
Several different indentations methods used here. That confuses me and I
want to edit this file.

[how]
Unify to '4 blanks' as used in other (recently edited) files.
Unify if-then and while-do syntax.

Also replace single quotes with double quite in the cask file.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-14 09:45:59 +01:00
Fini Jastrow
31f09b9a77 doc: Fix RFN entries in readme [skip ci]
[why]
Some fonts in the readme source font tables are marked as 'no RFN' while
they infact have a RFN (and we act on that, so that is just a
documentation issue).

[how]
Also add updated fonts.json, that contains RFN information and correct
unpatchedFont names, compare gh-pages commit
  4f78d656  download: Fix RFN detection

The updated fonts.json is also needed for an upcoming Casks creation
fix.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-11-26 12:57:03 +01:00
Fini Jastrow
3d8d673cb5 patch-em-all: Purge old license files
[why]
Old (renamed) license files are not cleaned up automatically.
The new files will be put into the patched-fonts dir, but old ones not
removed.

[how]
With commit
  afd7ba10  patch-em-all: Purge destination dirs if possible

the script purges old font files from the patched-fonts directory to get
rid of renamed font files. This has been deliberately limited to ttf and
otf files.

But as all license files are automatically copied over we can also
remove them.

This (finally) remove the possibility to manually put any files in those
directories. This can be good or bad.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-24 14:15:03 +02:00
Fini Jastrow
2ace3de8ad archive-fonts: Fix missing licence files
[why]
We have 'license' is the archives, but the 'licence' files are missing.
We allow all-caps and all-lowercase, but not camelcase 'License'.
Sometimes we have OFL.txt which is missing.

[how]
Enable both spellings and also camelcase.
Enable OTF text files.

Also fix misunderstanding of regex vs glob ([] vs {}), where the glob
needs a comma and the regex does not.

Add missing LICENSE files for 2 fonts.

Fixes: #979

Reported-by: Jeremy Thorn <moralground>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-24 13:55:45 +02:00
Fini Jastrow
148b0c4455 Sunset ligature removal
[why]
Keeping the ligature removal tables up to date with source font updates
is quite a maintenance burden.

Usually if a terminal supports ligatures at all it has an option to
disable them.

Present ligatures do not prevent monospaced fonts and monospaced
detection.

It was only present in v2.0.0, and the code has been broken with v2.1.0.

[note]
Updated example ligature removal table to the one for Iosevka.
Left stubs in relevant code passages to facilitate finding this commit.

Fixes: #976
Fixes: #975
Fixes: #973

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 08:44:55 +02:00
Fini Jastrow
7860afd295 Unify descriptive text in fonts.json
[why]
The description is displayed like this:

* Info: <description>

Sometimes the description text starts with lowercase, sometimes with
caps. This looks weird.

[how]
Always start the description with uppercase.

[note]
Also correct missing(?) description for one font.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-18 19:12:20 +02:00
Fini Jastrow
55e5666821 Remove wrong "Ubuntu" font preview link
[why]
Both, Ubuntu and Ubuntu Mono link to the #Ubuntu preview on
ProgrammingFonts.org. But that ends up in Ubuntu Mono. You can not
preview the proportional version.

[note]
This commit must be synched to branch gh-pages manually.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-18 18:39:27 +02:00
Fini Jastrow
b82bd819aa Remove mentions of master branch [skip ci]
[why]
If we ever switch the default branch the links would break. So just say
'default branch' directly, whichever that may be.

[note]
CI workflows not changed, I do not know if there is an alias for the
default branch available.

Fixes: #971 (partially)

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-17 11:50:53 +02:00
Fini Jastrow
4bca7849fe gotta-patch-em-all: Fix config_has_powerline
[why]
There is code that shall read the config file and act on
config_has_powerline.

Usually it is set to "1", but Ubuntu has this "0".

Regardless the content, if the variable has content the code assumes the
value is true. That is probably not wanted.

[how]
Use a numeric comparison.

[note]
```
git blame UbuntuMono/config.cfg
4abe6c77b0 Ubuntu/Bold-Italic/config.cfg (Ryan L McIntyre 2017-07-23 17:17:21 -0400 1) config_has_powerline=0
```

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-12 10:01:06 +02:00
Finii
cdcf7a5a30 [ci] Bump release version 2022-10-07 11:55:35 +00:00
Fini Jastrow
feafa89bb3 font-patcher: Prevent --mono on proportional fonts
[why]
When the source font is proportional we can not really create a
monospaced (patched) font from it. The glyph width is for example very
small for 'i' but wide for 'W'.
The glyphs are all left aligned, leaving very strange separation between
smallish glyphs.
Even if we would center the glyphs, the look would be strange and
completely differenmt from the source font's look.

[how]
For proportional fonts do not allow to patch with `--mono`.

The fact if a source font is monospaced is determined by examining some
(very few) glyphs. But testing all our source fonts in the repo shows
that it is sufficient.
Furthermore the Panose flag is checked and differences between the flag
and what the glyph examination found are reported.

The user can enforce `Nerd Font Mono` generation with double specifying
the command line option `--mono --mono`. Still a warning will be issued.

[note]
Because `gotta-patch-em-all-font-patcher!.sh` does not really count the
variations but calculates them in a separate loop it does not know
anymore how many variations are created per family. The numbers are
wrong.
But probably we should count the result font files in the end anyhow.

Because the information is not needed (in an automated manner) this is
not corrected here.

It seems wrong anyhow:
  total_variation_count=$((total_variation_count+combination_count))
  total_count=$((total_count+complete_variations_per_family+combination_count))

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-24 16:56:30 +02:00
Fini Jastrow
cb5f8ccbb8 query_names: Unify field widths
[why]
For some fonts with long names the fields are not long enough and for
example a 'Mono' can not be seen.

[how]
Use same field widths as `name_parser_test2`.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-24 13:53:48 +02:00
Fini Jastrow
b255bc1d71 Update documentation 2022-09-21 13:54:42 +02:00
Fini Jastrow
cc2b547703 generate-original-source: Remove FFTM table
[why]
When the CI triggers a rebuild of the original-source and the font
contents is unchanged we do not want to commit the new version back to
the repo.

But because fontforge puts the creation date into the font file it will
always differ on every run, and we would needlessly create commits.

[how]
We could use the SOURCE_DATE_EPOCH approach and set the dates to the
relevant change (commit) times like so:

cd src/svgs
export SOURCE_DATE_EPOCH="$(git log -1 --format=%ct -- *.svg)"

and only afterwards call the generator script / fontforge.

But that would need a complete git repo checkout and not just a shallow
one (which is faster and thus is used by github action/checkout).

Instead we can instruct fontforge to not put any timestamp into the
file. The timestamps are anyhow a fontforge proprietary extension.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-20 10:23:05 +02:00
Fini Jastrow
73ae4a96b4 CI: Optimize original glyph svgs
[why]
Often the SVGs are rather detailed and result in a big
original-source.otf, which then again results in bigger than needed
patched fonts.

[how]
Typically people suggest using svgo to make SVGs smaller, but that just
tackles the representation of the icon, i.e. the actual svg file. That
does not help us at all. We do not need small svg files, we need simple
icons with few points and lines. svgo does not have that capability.

Instead Inkscape's 'Simplify' is used. Repeated use can destroy a glyph,
so we need a scale down margin to stop 'over-simplification'.

The values given for the margin at the moment are purely empirical, the
current glyphs survive repeated use of the new simplification script and
still look good.

The resultant original-source.otf file size is approximately similar to
the previously achieved by Ryan's manual work.

[note]
We need a newer Inkscape, thus update to Ubuntu 22.04

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-19 16:08:22 +02:00
Fini Jastrow
328b8a2d22 Add original-source.otf generator script
[why]
When we add a custom glyph (or want to update Seti) the process is
rather laborious and we are needed to change the font and the
accompanying `i_seti.sh` in sync.

[how]
We use a data file to map icon (svg) filenames to codepoints and
readable names.

That file is parsed and the font and info file is created (overwritten
in the repo); and could then be easily committed. This can be a CI
workflow.

Having a dedicated mapping file (`icons.tsv`) enables us to have stable
codepoints for the same symbol over time. Changes in codepoint
allocation can be checked in git.

Having the font autogenerated help guarantee that the icons are all
likely scaled. We rescale them all to the same size and mid-position.
That is not needed for font-patcher, because it rescales and shifts
again based on to-be-patched font metrics. But it certainly is better
for a view into the original-source font.

Sizes and position are still roughly equivalent to the hand positioned
glyphs.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-19 12:02:24 +02:00
Fini Jastrow
5a9b44749f Add documentation to bin/scripts/ directory
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-16 11:18:48 +02:00
Fini Jastrow
993730682a Fix i_cod.sh docu
[why]
With commits

  ef8c12e28 Document and update cheat sheet data
  bcef53dad Update cheat sheet

the README has not been updated, and i_cod.sh is still
listed as 'not existing'.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-16 10:57:58 +02:00
Fini Jastrow
3444b5755f generate-font-image-previews: Fix and Refactor [skip-ci]
[why]
The script is not running with current (i.e. year 2022) release versions
of Inkscape.

The script does not warn if a font is not installed (and creates a
garbage preview instead).

[how]
Rewrite the script that is uses Inkscape actions instead of verbs. Verbs
are already removed in Inkscape HEAD.

Check if needed font is indeed installed.

Do not generate useless Symbols Only font preview (it needs a specific
different one, I suppose).

Disable `svgo`. Maybe we should generate PNGs instead?

Change path for created images, so that it is already correct for the
gh-pages and we could use the github-pages-deploy-action to publish them.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-13 12:13:16 +02:00
Fini Jastrow
92fbcdb143 Rename 'Font Linux' to 'Font Logos'
[why]
The glyphs set's name changed, we should reflect that.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-13 08:05:14 +02:00
Fini
d45a9b29c2
Correct sankey instructions formatting 2022-09-12 17:43:00 +02:00
Fini Jastrow
6a8dc7d50a Update sankey diagram
Some icons where added to Seti (number change).
Some numbers numbers where wrong.
Add new Codicons section.

Also add new instructions how to create.

Fixes: #846

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-12 17:06:02 +02:00
Fini Jastrow
a67edd47dd generate-css: Generate full cheat sheet file [skip ci]
[why]
The script just creates the 'database' or the cheat sheet, but the
surrounding elements have to be added manually.

We do not like 'manually'.

[how]
Take the current cheat sheet code and rip top and bottom off, to glue it
to the generated 'database'.

Also change the filename like the final file would be named.

Well this is still not automated, but at least this is the first step in
that direction.

On the GH pages, there release and everyting is manual at the moment.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 19:56:37 +02:00
Fini Jastrow
018f006a6d generate-css: Move data files into subdir
[why]
We already have 2 data files to assemble the css file, and that clutters
the scripts/ directory; and there will come more for the cheat sheet.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 18:23:02 +02:00
Fini Jastrow
27225ac14a generate-css: Fix font name
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 17:46:18 +02:00
Fini Jastrow
41e0b16a4d generate-css: Do not rely on external minimalizer
[why]
The generated file `nerd-fonts-generated.css` is made smaller with an
external service as manual step...

  # [Nerd Fonts]  The following is generated from the build script, then through https://www.minifier.org/

We do not want any manual steps.

[how]
Luckily the difference is just to remove whitespaces and unneeded
semicoli. We can do the same while generating.

[note]
At first I tried to postprocess the generated file with sed, but of
course the strings that have blanks in them made that rather
complicated.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 16:41:12 +02:00
Fini Jastrow
61f59453f6 generate-css: Prepare for CI usage
[why]
The file that would be created in temp/ is probably not needed
There is a lot out noise

[how]
Create the txt file only if we already have a temp/ dir.
Make that clear in the final output message.
Remove debugging outputs.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 16:41:12 +02:00
Fini Jastrow
ef8c12e285 Document and update cheat sheet data
[why]
Codicons is completely missing...

[how]
After creating a stub file for Codicons, use _their_ definition file:

curl -O https://raw.githubusercontent.com/microsoft/vscode-codicons/main/dist/codicon.csv
cat codicon.csv | tail -n +2 | sort -k 3 -t ',' | sed -E "s/([^,]*),([^,]*),(.*)/i='\2' i_cod_\1=\$i/" | tr '-' '_' >> i_cod.sh

Because they have new additional icons remove some lines in the bottom.
And add the final `unset i`.

I still have not figured out how the cheat sheet works and how we get
the data into that... There is a `generate-css.sh`. Hmm.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 16:41:12 +02:00
Fini Jastrow
76cb86f66f Add query_mono debugging script
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 16:41:12 +02:00
Fini Jastrow
487fc793bc CI: Fix fontconfig creation
[why]
Despite the fact that the workflow generates a new fontconfig, it is
never committed back to the repo.

[how]
As usual people rely on $PWD, which is not set in CI runs.
Use the subshell call $(pwd) instead, as that works always.

Reported-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-08 15:44:32 +02:00
Fini Jastrow
bdc28aa88f generate-fontconfig: Create entries for all encountered families
[why]
Some (the most basic) Families are not added.

[how]
The used shell array search is string based and can/will fail when we
search for a short string that is present in a array entry as substring.

Use explicit search instead.

[note]
Also remove some debugging output.

Fixes: #918

Reported-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-08 15:44:32 +02:00
Fini Jastrow
629b29507d generate-fontconfig: Fix sorted config
[why]
Table is still unsorted.

[how]
First we ran on '.', which includes all fonts, and then the font
directories one by one, but we have traversed them already ...

Do not run on '.' :-}

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-08 15:44:32 +02:00
Fini Jastrow
d58fa371fe patch-em-all: Fix counting font files
[why]
Does not calculate the number of files:
find: ‘/home/runner/work/nerd-fonts/nerd-fonts/../../patched-fonts/*’: No such file or directory

[how]
Use $sd instead of $PWD

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 13:39:10 +02:00
Fini Jastrow
26d656fcaa patch-em-all: Fix postprocess with AppImage-fontforge
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 13:27:18 +02:00
Fini Jastrow
ef1f35368e patch-em-all: Display error messages if patching fails
[why]
All error stream outputs of `font-patcher` are suppressed, because they
are very noisy and usually are ignored.
But when the patching fails for some reason we do not know why.
Especially if that happens during CI runs.

[how]
Instead of dropping the stderr we store it in an envvar; and output it
to stdout if patching failed.

`printf` is needed because `echo` is lousy with multiple lines.

Redirection magic:
https://stackoverflow.com/questions/962255/how-to-store-standard-error-in-a-variable
https://stackoverflow.com/a/56577569

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 13:08:07 +02:00
Finii
9c950dc385 [ci] Bump release version 2022-09-07 08:05:53 +00:00
Fini Jastrow
604c41253a Add Kotlin icon to Seti & Custom
[why]
It's not available anywhere else (it seems).

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 06:15:30 +02:00
Fini
86c2247ee2
Merge pull request #833 from ashfinal/icon-emacs
Add icons for Emacs and Orgmode
2022-09-07 05:48:55 +02:00
Fini Jastrow
110d19853c CI: Reduce running time
[why]
The CI runs takes hours... 4 to 5?

[how]
With the recent changes we can half the number of patcher runs, because
we can create a normal and a Windows Compatible font version from one
patching process.

The export is done twice still (just the actual patching is avoided),
so the reduction will be less. But still!

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-01 12:15:00 +02:00
Fini Jastrow
6c2d3ec752 CI: Fix cask artifact upload
[why]
The casks-artifact is empty.

[how]
Supply the correct path for the upload.
For this the generator script prints the output pathname(s),
which in turn are used in the CI.

Also drop unneeded '/' from path end.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-30 10:46:51 +02:00
Finii
aff362ab36 [ci] Bump release version 2022-08-26 22:15:32 +00:00
Finii
572221ec32 [ci] Bump release version 2022-08-26 16:44:55 +00:00
Fini Jastrow
c292e7e8c6 generate-fontconfig: Create sorted config
[why]
Even when the logical content does not change we will get a new commit
on recreation because the order can/will be different.

[how]
Put the fonts in alphabetical order in the config file.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-26 09:32:26 +02:00
Fini Jastrow
4c69402911 generate-casks: Fix separation of non-mono and mono fonts
[why]
The filter expects 'Mono' to be the last part of the font filename. With
font-patcher's --makegroups that is not the case anymore, because in
fact 'Mono' is part of the font name and the font filename ends in the
style (i.e. 'Italic').

[how]
Because we do only create 'Complete' fonts, and 'Mono' is always after
'Complete' (i.e. 'Complete Mono') for both veriants created by the
font-patcher, we can use that to select mono fonts.

[note]
Also bump script version after several changes.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-26 09:32:26 +02:00
Fini Jastrow
e188061e04 generate-casks: Fix display of currently processed font
[why]
The script shows
  # [Nerd Fonts]  Generating cask for: .
for any font it processes.

[how]
Well, the variable naming is a bit strange, maybe that is the reason for
the bug? We already have the font name in another variable, use that.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-26 09:32:26 +02:00
Fini Jastrow
e7af933fdf generate-casks: Allow to specify pattern
[why]
The CI uses the script with the font-matrix name, to regenerate the cask
of just one font. But the script is ignoring the parmeter and generates
all casks.

[how]
Allow to specify a regex pattern as first parameter and limit the
processing to that font(s), as done in archive-fonts.sh

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-26 09:32:26 +02:00
Fini Jastrow
e7722458fc archive-fonts: Fix missing readme in archive
[why]
When run on more than one font the mini-readme is only added to the
first created archive.

[how]
Remove the readme file only after all archives have been generated.

[note]
Also rewrite `find` command, to actually do some work. The formulation
was rather odd, using a shell glob to find the directories and `find` to
select one.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-26 09:32:26 +02:00
Fini Jastrow
7b81d7c84a CI: Fix version bump
[why]
This can not work.

Issue 1:
It is unspecified in which order the font matrix jobs run, so the
version number changes somewhen.

The changed (version-bumped) files are never committed and written back,
so this would have to be done manually anyhow.

The version-bump script itself has issues because the regexes for the
change are a bit too loose and other version like strings are changes
also (like the Script Version).

Issue 2:
The script changed versions that should not be changed like the script version
in the scripts (rather than the NF release version).

In bin/scripts/generate-glyph-info-from-set.py pumping has been
forgotten/omitted completely.

[how]
In the version-bump script:
* Use more modern regex
* Instead of copying the code use a loop

Create a commit with the bumped version information in all scripts.
This can only be done with the final job, because we have a problem to
checkout the modified version with actions/checkout.

We need to bump the version on every patch job, because we need the correct
information already in the script when we patch.

[note]
This does not prevent to have multiple commits attempts that change to the same
version. But if the change is empty, no commit will be added and the
step is silently ignored.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-24 10:50:06 +02:00
Fini Jastrow
d2b94f557b CI: Use GH action to upload release files
[why]
The self-written upload-archives script is some issues, for example it
does not replace preexisting release files with new ones when a release
is re-triggered. The error messages are rudimentary at best.

[how]
Use https://github.com/softprops/action-gh-release instead.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-24 10:50:06 +02:00
Fini Jastrow
1f971c7661 name-parser: Update test results
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
080a86e966 name-parser: Fix Python2 compatibility
[why]
The naming has bizarre blanks strewn in sometimes,
or is all caps. For example
`C a s k a y d i a   C o v e` or
`CASKAYDIACOVE-Regular`

[how]
When run under Python2 all strings are unicode strings because
`unicode_literals` is imported by `font-patcher`.
Unfortunately the code checks for type str; but that will all become
type unicode with the import.

One check is suboptimal anyhow and can be dropped, while the other is
turned around.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
c92396150d font-patcher: Add FontnameParser to font-patcher.zip
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
20609652ea name-parser: Specify python version
[why]
Sometimes scripts can not be run.

[how]
Depending on installed python versions and 'alternatives' setup the
script's shebang needs to point to python3 of course.

Also the files need the executable bit set.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
49d99fe883 name-parser: Rename font-patcher option
[why]
The option `--parser` instructs `font-patcher` to come up with the font
naming by utilizing the FontnameParser object.

This sounds logical from a programmers perspective, but the option name
is not descriptive for end users of `font-patcher`

[how]
As usual naming is hard. A short but maybe more descriptive name for the
option can be `--makegroups`; as it describes what the option means for
the end user: functioning font grouping.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
f2e9ef6541 name-parser: Fix doc
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
6be4335a59 name-parser: Create more usable short (Windows) names
[why]
The fontname for Windows can be quite unusable, for example
  `CaskaydiaCoveNerdFontCompleteM-`
for several different fonts, as this is the maximum allowed length of 31
characters that is enforced.

The style/weight is completely lost.

[how]
Split the name into base and style (at a dash `-`) and just shrink the
base name. Result for example:
  `CaskaydiaCoveN-ExtraLightItalic`

Use equal approach for the PostScriptName (although it is less likely
that length limit is ever met).

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
cc099ec965 font-patcher: Finally set fsSelection
fontforge has an undocumented call to set the fsSelection bits.
Never rely on documentation :-(

Found this here:
https://github.com/fontforge/fontforge/issues/3174

And the readback values are actually not read from the source font, so
we do not use them.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
263b1693c9 font-patcher: Remove WWS names
[why]
Under certain circumstances the WWS names (Family and Subfamily) are
used to identify a font. We do not touch these SFNT table entries, so
when the font is renamed these are wrong (have the original name).
Font-grouping will go wrong then.

[how]
The typographic ('Preferred') Family and Styles are set correctly
already and they follow the WWS pattern, so the WWS fields can be (and
should) be empty. They exist to allow font grouping in the case where
the typographic names do not follow that pattern.

Remove preexisting WWS entries (because they are not needed anymore,
otherwise we would need to write the corrected new names there).

We already set the WWS bit in fsSelection that is needed:
    def fs_selection(self, fs):
        """Modify a given fsSelection value for current name, bits 0, 5, 6, 8, 9 touched"""
        [...]
        b |= WWS # We assert this by our naming process
        return b

Unfortunately we have no way (jet) to set fsSelection.

This is only the case for Iosevka for all fonts in src/unpatched-fonts.

Reported-by: Rui Ming (Max) Xiong <xsrvmy>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
6d86114a38 Draft: Introduce a file name parser
DO NOT MERGE

[why]
A lot of the fonts have incorrect naming after patching. A completely
different approach can help to come up with a consistent naming scheme.

[how]
See bin/scripts/name-parser/README.md

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-22 10:53:05 +02:00
Fini Jastrow
953ec87918 patch-em-all: Fix purging for font names that have blanks
[why]
The detection if all fonts of a given directory are to be processed is
broken if the font files contain blanks
(like 'Symbols-1000-em Nerd Font Complete Mono Windows Compatible.ttf')

[how]
Need to put name argument in quotes...
Also fix counting for sfd files (but we never generate them anyhow)

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-20 19:33:29 +02:00
Fini Jastrow
821ac68173 Create symbols only font directly from sfd template
[why]
The symbol only fonts Symbols-1000-em Nerd Font Complete.ttf
and 2048-em in `NerdFontsSymbolsOnly/` are generated from
some 'almost' empty source fonts, that are assumable in turn generated
from the sfd font descriptions in `src/glyphs/`?

The process is not documented and we have issues in the generated font
(for example the glyph for capital `E` is defined (and empty) #581 #765).

[how]
Use the existing font definitions from `src/glyphs/*.sfd` directly as
source font. That needs a change in font-patcher because the empty
fonts have no glyphs that can be used to orient the scaling upon. In
that case scale on the source font definitions EM.

Then we need patch-em-all to also patch *.sfd fonts.

And finally we need patch-em-all to take a font specific command line
switch for font-patcher (compare 9e2bc9a26 of #723) to instruct it to
create a ttf rather than a sfd font file.

In the sfd file we additionally set the Panose type.
And the UnderlinePosition is adjusted to match the current patched font.

[note]
Also fix wrong glob pattern in patch-em-all `*.[o,t]tf`. The comma is
for sure some leftover from a '{}' shell pattern, that is not used
anymore. (This comment is probably outdated, due to rebasing.)

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-20 19:33:29 +02:00
Fini Jastrow
5ceb1b2395 patch-em-all: Allow to specify font specific options
[why]
We want to patch some fonts with different font-patcher options.

[how]
Use the config.cfg file that each source font can have to specify one
arbitrary option to the font-patcher calls.

[note]
This is partially commit 9e2bc9a26 from #723.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-20 19:33:29 +02:00
Fini Jastrow
89907120d9 CI: Add Lilex to release
[why]
Lilex is missing from the 2.2.0 RC and is not automagically patched.

[how]
Add Lilex to the font metadata database :->

[note]
Lilex's licence has no RFN given.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-20 18:28:04 +02:00
Fini Jastrow
47b0c083d5 gotta-patch-em-all: Fix filename parsing (part 2)
[why]
The new 'pathname' pattern always added a '*' glob to the end.

So when we wanted to (just) recreate "Inconsolata" (by specifying
"/Inconsolata") that means "/Inconsolata*/*.[to]tf".

But that includes also "IncolsolataGo" and "InconsolataLCG" :-(

[how]
Just remove the globbing after the pathname. If a pathname is specified
it must be the correct pathname and no star is added per default.

Users could still specify "/Incon*" to get all Inconsolatas in the
pathname based filter mode.
2022-08-19 13:24:39 +02:00
Fini Jastrow
5ff4f92a23 CI: Use fontforge March 2022 AppImage
[why]
It might be easier to use the precompiled application than to build it
ourselves.

[how]
The AppImage has the typical problem with relative paths, so we need to
change some small calls.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-19 13:24:39 +02:00
Fini Jastrow
e957f9f217 gotta-patch-em-all: Fix filename parsing
[why]
The find predicate (e.g. -iname) and predicate parameter (the actual
pattern) are in one variable and will be handed over to find as one
parameter instead of two.

How could this ever work?

[how]
Pass predicate mode and predicate parameter as two shell variables.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-18 12:20:06 +02:00
Fini Jastrow
afd7ba1017 patch-em-all: Purge destination dirs if possible
[why]
When the file names of the source files change which happened for example
with these commits:
  ac432eb20 Updated Inconsolata source to latest upstream version of 2.001 (WIP #289)
  9c5ad2c78 Updated Inconsolata source to latest upstream version of 2.001 (WIP #289)

or the patched font files naming changes because of any other reason:

The patched-font directory will contain the new files along with the
unchanged old ones (because they where not overwritten).

Typically when manually updating the patched-fonts this is not a
problem, as the maintainer can clean this up by hand (if it is noticed).
But with a github action we might want to have that automatized.

To not deter the usability of the script for end-users or for patching
single fonts of a collection we do NOT want to purge 'all old files'
because we can not know if they are really old or not.

[how]
For each directory that we process from the source fonts we check if all
font files therein match our search criterion (pattern, $2). If we are
going to patch _all_ files that are in that source directory we delete all
font files in the destination directory; expecting that all files will
be recreated.
If we do _not_ patch _all_ files, we can do nothing, because we can not
decide if the existing files originate from one of the
not-to-be-processed source font files or are zombies.

Fixes: #786

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-18 11:19:19 +02:00
Fini Jastrow
f9f3612e80 Update Font Logos to 1.0.0
[why]
Before Font Logos 1.0.0 there was no stable-codepoint guarantee, and the
later revisions (0.18) reassigned the codepoints. That makes updating
for us very hard, because we would have to resort the icons or follow
the codepoint changes.

With 1.0.0 this changed. That new major release introduced not only a
codepoint guarantee, but it also shifted the codepoints from the F100
region to the F300 region, where we put them anyhow (in most cases).
That is one subset less with 'dynamic base codepoint'.

The reassignment of codepoints in Font Logos kept the codepoints stable
for the icons we already have in release 2.1.0. But at the moment the
2.2.0 Release Candidate (which updated Font Logos with commit 557b8da)
have added glyphs, which are on different points as compared with the
Font Logos 1.0.0 release.

What I want to say, we need to get this straight, before our 2.2.0 RC
turns into a Release 2.2.0.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-18 11:16:44 +02:00
Fini Jastrow
7bc729e27a gotta-patch-em-all: Allow to specify directory filter
[why]
We can limit the font files to patch with the gotta-patch-em-all script
to some specific file names; the case insensitive beginning of the
basename of the font file, to be specific.

Sometimes we do not know how the actual font files are named, we just
know the directory name.

[how]
The old filter checked for the beginning of a file name, so we keep this
behavior and allow to check for the beginning of a directory name.

As differentiator the first character of the passed filter is used. As a
slash is not allowed in the file name filters: If the first char is a
slash, we search for font files in a directory that begins with that
name. The file name is not considered in this case.

Examples:

gotta-patch-em-all-font-patcher!.sh Fira

  Patches all font files that begin (case insensitive) with 'fira'.
  It must be the basename of the font file, the path to the file is not
  considered. (Old behavior.)
  Translated to a glob this is roughly **/Fira*.[ot]tf

gotta-patch-em-all-font-patcher!.sh /Fira

  Patches all font files that are in directories that begin (case
  insensitive) with 'fira'. It can not be the beginning of the font
  file basename.
  Translated to a glob this is roughly **/Fira*/**/*.[ot]tf

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-18 11:14:12 +02:00
Fini Jastrow
f287b97048 gotta-patch-em-all: Return error when no file patched
[why]
When we do CI we probably want to raise an error if no font file could
be found.

[how]
Check how many font files have been generated and return with exit
code 1 if the number is zero.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-08-18 11:14:12 +02:00
RL-S
f18c02f345 Allow running gotta-patch-em-all from any dir
The script assumes that it's run from inside bin/scripts, by setting source and target directories according to the output of pwd. It doesn't perform any checks whether it's run from the right directory, so it just doesn't find the fonts if the working directory is different.
Now it sets the directories relative to the script directory.
2022-07-26 15:40:45 +02:00
ashfinal
7f04248439 Add icons for Emacs and Orgmode 2022-05-21 17:17:44 +08:00
Ryan L McIntyre
d2aa06473e RC: use all fonts for matrix 2022-01-03 05:50:16 -08:00