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

1877 Commits

Author SHA1 Message Date
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
a07648b1ee install.sh: Add uninstall command
[why]
Maybe people would like to uninstall the fonts installed with the
script.

In fact the uninstall could already be acieved by giving the --clean
option and installing no new font. Well, apart from the fact that the
scripts prevents runs with no installed font. And then the user must
specify the same installpath that has been used for the install, which
is a bit tedious.

[how]
Add new command '--remove' (with no short option).
Make -L / --list option a dry-run option for --remove.
Uninstall both possible installpaths.

Fixes: #407

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-14 12:33:07 +02:00
Fini Jastrow
533e1a2df4 install.sh: Remove patch-selecting options
[why]
We have only 'Complete' in the repo anymore, so it does not make sense
to provide commands to select un-complete patched fonts.

[how]
Leave stub/comment in so that - if there ever is a need to resurrect the
feature - one can find this commit and the deleted code.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-14 12:33:07 +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
fae0b4cb16 Update all readmes to 2.2.2
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-13 08:35:20 +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
eef02c07b6 [ci] Regenerate CSS files [skip ci] 2022-09-11 17:47:06 +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
Finii
3a1d3ee5b3 [ci] Regenerate CSS files 2022-09-11 16:41:12 +02:00
Fini Jastrow
50657caa63 CI: Do not fetch on add-and-commit
[why]
The add-and-commit steps are so unbelievable slow.

[how]
We do not need the other tags, so we do not need a fetch before adding.
See comments on the action's homepage.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 16:41:12 +02:00
Fini Jastrow
134c518892 CI: Generate CSS and push to repo and gh-pages
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 16:41:12 +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
983226a70e font-patcher: Fix scaleGlyph related rounding error
[why]
Sometimes the patched-in symbols are slightly too big, which shows up in
Nerd Font Mono fonts where the destination size is specified exactly.

That issues a warning like:
  Warning: Scaled glyph U+F077 wider than one monospace width

[how]
For the scaleGlyph groups we need to combine the bounding boxes of
several symbol glyphs to determine the 'combined' scale we need.
Unfortunately when the concrete glyph is finally copied over its size
can change minimally.

So we need to measure the glyphs in the scaleGroup _after_ they have
been copied to the to-be-patched font. This is a bit complicated,
because we need to know some glyph slot we can use for that.

[note]
See also commit
  e805b879  font-patcher: Resolve rounding error when rescaling

Fixes: #917

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-08 20:08:44 +02:00
Fini Jastrow
67aa453436 Update fontconfig
[why]
Has not been updated in the last release CI run.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-08 15:44:32 +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
Finii
5454877c01 [ci] Rebuilds patched fonts 2022-09-07 15:57:31 +00: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
aaf2dafda4 [ci] Rebuilds patched fonts 2022-09-07 08:09:42 +00:00
Finii
9c950dc385 [ci] Bump release version 2022-09-07 08:05:53 +00:00
Fini Jastrow
a6e6ee26d8 font-patcher: Correct Family for Mono Windows
[why]
Windows Compatible fonts have the same Family name, regardless if they
are "Nerd Font" or "Nerd Font Mono".

This creates problems for appliations that sort and select fonts by
Family name.

[how]
Just like "Nerd Font" is abbreviated as "NF" in the Windows Family names
(to keep it short because of the 31 character length limit), the
"Nerd Font Mono" are now called "NFM" instead of just (also) "NF".

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 06:58:21 +02:00
Fini Jastrow
ec4c341a9a Trigger Release 2.2.2
Another bugfix release to fix the regression introduced with 2.2.0
that is fixed by #764. Also note #900.

Some other smaller PRs also pulled.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 06:41:55 +02:00
Fini
5226e04be1
Merge pull request #862 from ryanoasis/feature/add-kotlin-icon
Add Kotlin icon
2022-09-07 06:26:30 +02: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
0e45cd66d6 font-patcher: Allow glyphs with altuni for exactEncoding
[why]
Some symbol fonts might come with glyphs that have multiple codepoints.

When we want to patch them with `'Exact': true` (i.e. at their 'original'
codepoints) we want to patch them into the codepoint that has been used
in the selection process. That means between SymStart and SymEnd.

But this is not the case. We patch them in into their 'main' codepoint,
which can be outside the expected range of points.

This came up when patching with FontAwesome V6. It has for example these
glyphs:

Glyph 'music' has a main codepoint 0x1F3B5, but it is present in the
font also on codepoint 0xF001.

Glyph 'heard' has a main codepoint 0x1F9E1, but it is present in the
font also on codepoints 0x2665, 0x2764, 0xF004, 0xF08A, 0x1F499, ...

When doing a `'Exact': true` patch (i.e. exactEncoding = true) the
glyphs is patched into the target font at its (the glyph's) main
codepoint, regardless of our patch-codepoint-range.

[how]
We examine all codepoints that a glyph occupies in the symbol font. From
all these codepoints we take the nearest to the last glyph be patched
in. Nearest means from the possible codepoints the lowest that come
after the previous used codepoint.

For example the 'heard':

Last patched in codepoint was 0xF003.
Main codepoint: 0x1F9E1
Alternate codepoints: 0x2665, 0x2764, 0xF004, 0xF08A, 0x1F499, ...
-=> 0xF004

Later in the patching process we might encounter the same glyph again,
but this time the previous codepoint was 0xF089, so we need to take
0xF08A.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 05:42:02 +02:00
Fini Jastrow
f97d729b34 font-patcher: Check if glyph source is available
[why]
When users just download the script (and not the source glyphs) the
script fails with an obscure error message.

[how]
Check if the glyphdir exists at all. If not give a hint to download the
glyphs.

Check if the individual glyph font exists and is readable. Bail out if
not.

[note]
Cherry picked, was part of #741

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 05:37:33 +02:00
Fini Jastrow
7cda326515 font-patcher: Allow to specify custom symbolfont with absolute path
[why]
When one wants to use a custom symbol font and specifies it with an
absolute path, the glyphdir is still prepended.

That means that the argument to `--custom` is always used as relative
path (to `--glyphdir`), even when it starts with `/`. That is somehow
unexpected or at least inconvenient.

Example:
fontforge font-patcher --custom ~/Downloads/fa6.otf Inconsolata-Regular.otf

fa6.otf is searched for in ./src/glyphs/home/username/Downloads

[how]
Use Python function that handles joining path fragments. If a component is
an absolute path, all previous components are thrown away.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-07 05:19:17 +02:00
Fini Jastrow
64d53b8247 font-patcher: Fix Python problem
[why]
I'm not sure why, but maybe the CI's Python is another version where the
syntax is not supported.

This has been introduced with commit
  4a61afc83  font-patcher: Do not overwrite glyphs that are needed for basic glyphs

[how]
Use less sophisticated syntax.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-06 16:49:29 +02:00
Fini Jastrow
b2fa537e7f font-patcher: Correct mono scaling of thin glyphs
[why]
Some glyphs that are tall and thin, are too big in the resulting patched
font, i.e. are higher than our 'line'.

At least for --mono fonts. The non-mono fonts do not rescale the
inserted glyphs at all, so there is no definition of 'too tall/wide'.

[how]
We want all glyphs to fit into the box defined by *_dim['height'] and
*_dim['widths'], as it also defines our powerline-glyph scaling and
horizontal and vertical advance widths.

So we need to take that value (instead of EM) for the scaling
calculation. The history of the use of EM here is a bit obscure, more
explanations in the PR.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-06 15:40:25 +02:00
Fini Jastrow
4a61afc83a font-patcher: Do not overwrite glyphs that are needed for basic glyphs
[why]
Sometimes the basic glyphs ([a-zA-Z] etc) are constructed in the font
from other glyphs via references. To keep those basic glyphs intact we
must not touch the referenced glyphs.

[how]
Crate a list of all glyphs referenced by the basic glyphs.
When patching in some new symbol - if that codepoint is in the list do
not overwrite it. Overwriting would break a basic glyph.

The user does not get the glyph that we would have patched in, but that
can not be helped if we want to keep the basic glyphs intact and not
'redesign' the complete font.

Fixes: #400

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-06 15:30:58 +02:00
Fini Jastrow
ac60053b3a font-patcher: Correct python module missing message
[why]
When the fontforge python bindings are not installed we fail while
importing psMat. The message suggests that fontforge itself is not
installed - which is not the real reason. One can use the libfontforfge
with the python-fontforge without having the GUI program fontforge.

Furthermore we link to outdated installation instructions.

[how]
We already check and report correctly what needs to be done with the
fontforge module import. As both modules are often in the same package
we should probably report the same message. That message holds correct
hints for Debian/Ubuntu. It does not have a link to fontforge, though.

[note]
Also update Debian package name.

Fixes: #725

Reported-by: Aniket Teredesai <a@aniketteredesai.com>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-06 15:28:05 +02:00
Fini
6564e71fce
Merge pull request #764 from ryanoasis/bugfix/Make-NerdFonts-Monospaced-Again
font-patcher: Make Nerd Fonts Monospaced Again
2022-09-06 15:22:11 +02:00
Fini Jastrow
f67de4d7b0 font-patcher: Fix glyphs with overlap
[why]
For some powerline symbols we add a certain amount of overlap into the
previous or next character to cover up a small gap between the symbols
that otherwise can show up as ugly thin (usually colored) line.

But after we carefully design that glyph with a bit overlap (over-sized
and having negative bearings) we remove all bearings. That breaks of
course the glyph and no actual overlap on the left side happens.

[how]
Just do not remove negative bearings on overlap-enabled glyphs. As they
are rescaled in both directions anyhow all bearings are wanted and must
be kept.

Reported-by: Mihail Ivanchev <@MIvanchev>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-06 14:39:20 +02:00
Fini Jastrow
8f8776cf30 font-patcher: Make patch_set[attributes][params] a dict
[why]
The params are half way handled as dict, but if unset it is an empty
string. That makes accessing it needlessly complicated.

[how]
With no functional change the params becomes now a dict, also when it
does not contain any particular information.

At the moment that seems not nessecary, as it can only contain one key:
'overlap'. We could also rename 'params' to 'overlap' and just store the
value.

But we keep the generic params dictionary as it might come in handy some
time in the far future when more parameters are added.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-06 14:39:20 +02:00
Jason Chen
30605d4d49 Add chezbgone as contributor for docs 2022-09-05 13:25:08 +02:00
Jason Chen
4414bd4b24 Update readme for Hasklig to reflect current version 2022-09-05 13:25:08 +02:00
Fini Jastrow
f4d96f2258 Update readme files
Reported-by: Saumyajyoti Mukherjee <saumyajyoti>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-01 12:43:36 +02:00