Commit graph

1702 commits

Author SHA1 Message Date
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
22e5b2e98f casks: Create new cask files on CI runs (again)
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
498ebf372b CI: No not run the release workflow on forks
[why]
When you have a fork of this repository and push anything to master the
release workflow is automatically run. This is usually not what people
want. They want to push some changes to the fork's master and create a
Pull Request.

[how]
Only run the release workflow on the original repo.

If they really want to create their own release they would have to
remove this line (or adapt).

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-12-04 12:37:58 +01:00
allcontributors[bot]
86bf937d6c docs: update .all-contributorsrc [skip ci] 2022-12-02 06:53:57 +01:00
allcontributors[bot]
66fbfa8799 docs: update CONTRIBUTORS.md [skip ci] 2022-12-02 06:53:57 +01:00
Chris Long
666b30bd11 doc: Add details on installation via Chocolatey and Scoop 2022-12-02 06:50:12 +01:00
Fini Jastrow
0ab1c4d5d8 Remove profont-x11 from patched-fonts [skip ci]
[why]
We never patched that fonts.

These are bitmap only fonts and we never touched them. We can keep them
for completeness in the src/unpatched-fonts/ProFont/profont-x11
directory, but the empty patched dir is somehow confusing.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-11-29 15:18:09 +01:00
Fini Jastrow
dd143be24a font-patcher: Fix crash on some custom sets
[why]
When a custom set is to be patched and that set contains the .notdef
glyph the script crashes.

[how]
The glyphs has an unicode codepoint of -1, a code that we explicitely
not patch. That leads to confusion when we try to determine the
codepoint to be used for that glyph, because it has none.

Exclude negative codepoint glyphs when we determine the selection of
to-be-patched glyphs.

As last resort for broken custom sets skip over glyphs that come out of
order (which should be impossible).

Fixes: #1005

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-11-26 15:38:12 +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
Ryan L McIntyre
bbdb7377df
Update backers.md 2022-10-29 11:24:05 -07:00
Fini Jastrow
df58a7809e CI: Entice docker to create arm64 container [skip ci]
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-28 19:08:26 +02:00
Fini Jastrow
1322285f3f CI: Tag every created docker with 'latest', really [skip ci]
[why]
Obviouly a type, `auto` vs `true` ....
Can not force push.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-28 11:32:29 +02:00
Fini Jastrow
52799046aa CI: Tag every created docker with 'latest', as before [skip ci]
[why]
Tagging behavior changed with inclusion of the Meta action.
Previously every docker-rebuild has been tagged 'latest', that is now
missing.

[how]
Enforce latest tag.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-28 11:24:11 +02:00
Fini Jastrow
018bedb969 CI: Enable manual docker rebuilds [skip ci]
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-28 11:10:21 +02:00
Fini
229a154628
Merge pull request #985 from sammcj/master
CI: Use standard Docker build Actions, enable builds for ARM architecture
2022-10-28 11:05:38 +02:00
Fini Jastrow
3cc1d20b6b CI: Small changes on docker workflow
[why]
Credentials not needed (I guess).
Workflow is never run on pull-requests, so no check needed.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-28 11:02:12 +02:00
Sam McLeod
3f755e4838 feat: use standard Docker build Actions 2022-10-28 08:20:09 +11:00
Fini Jastrow
925885c8d1 doc: Change Hack's Arch repo
[why]
Obviously the Hack package on AUR vanished and has been replaced by a
community Arch package.

Fixes: #983

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-26 07:41:15 +02:00
Fini
98f009d491
Merge pull request #981 from ryanoasis/bugfix/licenses-in-archives
Bugfix licenses in archives
2022-10-25 19:40:12 +02:00
Fini Jastrow
fd06e48561 doc: Add Codicons license code
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-25 19:32:25 +02: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
4e3f64e22b Add missing LICENSE files (simulate CI)
In fact these would/will be recreated on a gotta-patch-em-all-font-patcher!.sh
run.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-24 14:01:17 +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
c156c4d37d
Merge pull request #978 from ryanoasis/feature/update-seti
Update seti to current version
2022-10-21 14:43:06 +02:00
Fini Jastrow
677aa3ced9 Activate new Seti icons
The end codepoint needs to be shifted, now all new icons are patched in.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-21 13:03:53 +02:00
Finii
9422970663 [ci] Rebuild original-source font 2022-10-20 10:04:28 +00:00
Finii
9cce0fc964 [ci] Simplify original-source source glyphs 2022-10-20 10:04:26 +00:00
Fini Jastrow
7ffc6d976e Fix shell icon
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 12:00:05 +02:00
Fini Jastrow
1ba9a0313c Simplify paths in the svgs
$ ./optimize-original-source.sh doit

Checking for SVG simplifications
  Files might be MODIFIED by this run ('doit' specified)
Found 177 svgs in ../../src/svgs
Simplification for ocaml.svg (5249 -> 3604) 68%
Simplification for apple.svg (3228 -> 2302) 71%
Simplification for pug.svg (5507 -> 4243) 77%
Simplification for jenkins.svg (13014 -> 6406) 49%
Simplification for firefox.svg (6276 -> 4640) 73%
Found 5 svgs to simplify

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 11:36:18 +02:00
Fini Jastrow
912093fcfb Fix prolog icon
This still had a path direction mismatch.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 11:30:41 +02:00
Fini Jastrow
547e009d20 Remove gaps from icons.tsv
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 10:04:58 +02:00
Fini Jastrow
f2c365f469 Fix more complicated issues in svgs
[why]
Some of the svgs still render incorrect in fontforge.

[how]
Different issues, for example wrong direction of the sub-path and still
(forgotten?) multiple layers, etc. Manually tinker until they work.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 10:04:58 +02:00
Fini Jastrow
237d7640a6 Clean up svgs
Outline fonts are a bit picky about the embedded svgs.
Best is if there is only one path.

Ungrouped and path merged in Inkscape manually.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 10:04:58 +02:00
Fini Jastrow
1e75dfac76 Remove more doubles
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 10:04:58 +02:00
Fini Jastrow
974249b534 Actually use new Seti
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 10:04:58 +02:00
Fini Jastrow
2beed43447 Clean up icon doubles
Some icons are now existing twice.

* Their crystal icon looks wrong (rotationwise), compare with https://github.com/crystal-lang/crystal
* Their C logo misses the standard's hex shape
* Their C++ logo misses the standard's hex shape
* Their Elixir icons has a dent in the reflextion?
* Their Elm icon is colored
* Their Git Folder is not a folder
* Their Kotlin icon is colored
* Their Puppet icon is more correct
* Their Pursescript icon is identical
* Their Windows icon is more modern

That means:

* Do not include their crystal, elixir, elm, kotlin, purescript
* Do not include our puppet, windows
* Keeping both c, c++, git-folder

[note]
Keeping their old files around with changed suffix to find this commit
in the future on updates.

Reuse old icons that were labeled as 'seti' but have been vanished as
new custom types with appropriate file naming.

And remove 'red' versions of icons. We have a black and white font...

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 10:04:32 +02:00
Fini Jastrow
589b0dfd9d Mix all custom icons into seti
Add "_nf" suffix to our own svgs.
Add our icons database

Adapt filename in icons database
Just change the filenames of the custom icons to include the new "_nf"
suffix.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-10-20 10:02:52 +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