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

2180 Commits

Author SHA1 Message Date
Fini Jastrow
6f1cdb82d9 test-fonts: Allow for 5 digit codes
[why]
The code is hardcoded for 4 (hex-)digit codepoints. If we want to
examine 3 or 5 digit codes it breaks the formatting.

[how]
Switch from \u to \U to allow printing codepoints with more than 4
digits. This works on all machines I tested (Linux/Mac).

Manually pad the codepoint to get a consistent length independent of
actual number of digits. We can not use "%5x" because we want to
underline only the actual digits.
This also makes the output of empty slots nicer because the underline is
skipped if there is no code.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-06-01 07:37:35 +02:00
hasecilu
ed0315e9ae Fix typo: exeucte -> execute 2023-06-01 06:51:57 +02:00
hasecilu
dcbcef0fe6
Update test-fonts.sh version.
- 1.1.0 version.
- Add example command to change column size.
2023-05-31 13:41:19 -06:00
hasecilu
bf4fc58b8b
Update style of for loop, from using seq to C style. 2023-05-31 11:37:06 -06:00
hasecilu
e72d7ba5e7
Update range of font logos 2023-05-31 10:57:37 -06:00
hasecilu
a260711d46
Use single square bracket on if statement. 2023-05-30 23:48:38 -06:00
hasecilu
75960ab56d
Use first arguments as wrapping value.
- Resistant to bad inputs.
- First checks if argument is a number and then checks if its greater than 2, if it's, the `wrapAt` variable is updated.
2023-05-30 23:45:53 -06:00
hasecilu
89dc2f8de7
Rename unused dummy variable 'i' to '_'.
- According to https://www.shellcheck.net/wiki/SC2034 : "For throwaway variables, consider using _ as a dummy".
2023-05-30 20:49:19 -06:00
hasecilu
7ccf229c37
Attend SC2071 error code.
- See: https://www.shellcheck.net/wiki/SC2071
2023-05-30 20:41:20 -06:00
hasecilu
6f7f9e92be
Update wrapAt value to 16.
- Since the format of the values used are normally hexadecimal seems a reasonably election.
2023-05-30 20:36:31 -06:00
hasecilu
283cedb2d4
Update line decoration variables.
- Each variable was splitted in 3 variables containing the start block, middle block and end block respectively.
- Now the wrapAt variable controls programatically the length of the decorations lines, (for loop).
- Minimal wrapAt allowed value is 3.
2023-05-30 20:34:09 -06:00
Finii
64de96062e [ci] Update FontPatcher.zip 2023-05-30 20:05:35 +00:00
Fini
8ea2e71b80
Merge pull request #1261 from ryanoasis/bugfix/codicons-circles
Bugfix Codicon Circles
2023-05-30 22:03:02 +02:00
Fini Jastrow
f3f8da13b7 Revert "font-patcher: Add ScaleGroupVert"
This reverts commit fcf5c84200.

[why]
There is no current usecase for the ScaleGroupVert.
2023-05-30 22:02:06 +02:00
Fini Jastrow
c8dd880154 Codicons: Revert to no Scale grouping
See PR #1261 for details on the reasons.

This mostly reverts commit
  f84a4a46d  font-patcher: Add Codicons scale list

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-30 22:00:19 +02:00
Fini Jastrow
fcf5c84200 font-patcher: Add ScaleGroupVert
Codicons: Maximise all circles

[why]
The scaling works okay for `Nerd Font Mono` fonts, but not for `Nerd Font`
fonts. The later have 'unexpected' left side bearing, which looks even
more out of place because the width is unrelated to the advance width
and might place the majority of the glyph into the next cell.

[how]
In fact we do not want scaling and shifting to be uniform for all glyphs
but the intend was to get the scaling from the biggest (full size)
circle and all the smaller ones would be proportionally smaller.

So we add a new Scale grouping that just takes the scale and the
vertical shift of the combined boundingbox, but individually calculates
the horizontal shift.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-30 21:35:07 +02:00
Fini Jastrow
1b7711564a generate-css: Adapt text
[why]
PR #1252 and this ran slightly out of sync.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-30 19:41:34 +02:00
rszyma
df64f73f2a modify generate-css.sh for changes in #1252 2023-05-30 19:41:34 +02:00
allcontributors[bot]
f01131461f docs: update .all-contributorsrc 2023-05-30 19:23:27 +02:00
allcontributors[bot]
d378c9c086 docs: update CONTRIBUTORS.md 2023-05-30 19:23:27 +02:00
allcontributors[bot]
d04875dc8a docs: update .all-contributorsrc 2023-05-27 15:33:14 +02:00
allcontributors[bot]
0a447096da docs: update CONTRIBUTORS.md 2023-05-27 15:33:14 +02:00
allcontributors[bot]
e41c64763e docs: update .all-contributorsrc 2023-05-27 08:34:23 +02:00
allcontributors[bot]
2e892a4afa docs: update CONTRIBUTORS.md 2023-05-27 08:34:23 +02:00
Finii
ec2e190230 [ci] Update FontPatcher.zip 2023-05-26 11:04:24 +00:00
Fini Jastrow
930eef239c name-parser: Fix some Blex fonts
[why]
IBM Plex uses some abbreviations also in the fullname and we do not try
abbreviations when resolving weights.

[how]
As this is the only font that has such specials we handle it beforehand
and do not try all combinations of abbreviated and long keywords.

And then their abbreviations are also not standard - at least not used
by us or Adobe, etc.

For such a small amount of affected font files it seems in order to
specifically just fix them instead of a general solution.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-26 13:01:58 +02:00
Fini Jastrow
f5e648b873 IBM Plex: Fix "Text" weight
[why]
The 'Text' weight of Plex is handled as 'other', means that this is
added to the font's name and is a distrinct own family.

But in the original font it is used as weight.

[how]
Remove special handling of 'text' in the font name.
Add 'Text' to known_weights list.

"Text" is not a standard naming, but I see no problems when we handle it
as one. This keeps the family relationships in Blex like Plex.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-26 13:01:58 +02:00
Fini Jastrow
2e9caea9cd name-parser: Simplify for CodeClimate
[why]
Function get_name_token has a Cognitive Complexity of 12 (exceeds 9 allowed).
Consider refactoring.

[how]
Remove not really needed special case.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-26 13:01:58 +02:00
Fini Jastrow
07a23bda90 name-parser: Allow dashes between modifier and weight
[why]
Some fonts might have a non-standard (i.e. broken) weight naming scheme:
They put a blank or a dash between the modifier and the weight, for
example "Extra Bold" or "Demi-Condensed", when they mean "ExtraBold"
resp "DemiCondensed".

The former happens with CartographCF, the later with IBM3270.

[how]
Automatically allow a dash between modifier and weight, which comes up
as CamelCase boundary. Insert an optional dash (r'-?') into such
boundaries.
For the further lookup we need to remove the dash in the found keyword,
if there is any, to get back to standard naming.

This might break if the font name ends in a modifier. So we can not
really distinguish

       Font Name Extra Bold Italic
    => Font Name - ExtraBold Italic
    => Font Name Extra - Bold Italic

The known modifiers are 'Demi', 'Ultra', 'Semi', 'Extra'.

It is possible but unlikely that a font name ends in one of these.
For example "Modern Ultra - Bold".

[note]
The question arises if we should not parse the PSname instead of the
Fullname; and stick to the dash there as boundary.
The problem might be prepatched fonts with broken naming, that would be
parsed completely wrong then. So maybe the current approach is still the
best, with the caveat given above (fontnames ending in a modifier).

[note 2]
Funny enough the variable allow_regex_token was not used at all :->
Some leftover? Anyhow we use it now.

[note 3]
We can still not remove the special handling for IBM3270, because the
font initially looks like a PSname and this is parsed as such, which
breaks the name in the incorrect place:

        PSname template  = "Name-StylesWeights"
        Fullname of 3270 = "IBM 3270 Semi-Condensed"

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-26 13:01:58 +02:00
Fini Jastrow
f1c2eea937 name-parser: Fix unify_style_names()
[why]
The code is obviously wrong. No effect has been seen, though.

First we check if a certain string is a key in the dict.
If it is, we retrieve the value with the string lower-cased as key.

This does not make sense.

[how]
All the keys are lower case anyhow, so the code seems unneeded. Maybe it
is a leftover. The styles that go into it _and are in the dict_ all come
from a regex-enabled search and thus are lower-cased.

Whatever, to have the correct code we use the lower-cased string for
both, checking for existance and retrieving the value - this is the only
sane approach.
Also change to dict.get() method instead of a self made if code.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-26 13:01:58 +02:00
Fini Jastrow
b0e5a35477 name-parser: Remove filename parsing code
[why]
Patching CartographCF-Bold.ttf creates this naming:

    Family (ID 1)      : CartographF Nerd Font Condensed
    SubFamily (ID 2)   : Bold
    Fullname (ID 4)    : CartographF Nerd Font Condensed Bold
    PSN (ID 6)         : CartographFNF-CondensedBold
    PrefFamily (ID 16) : CartographF Nerd Font
    PrefStyles (ID 17) : Condensed Bold

    CartographF Nerd Font Condensed Bold
    \===> 'CartographFNerdFont-CondensedBold.ttf'

[how]
The font-patcher historically used the file name of the to-be-patched
font to come up with the new name. When the FontnameParser has been
developed that mechanics has been copied at least for fallback. The
earliest tests compared old and new naming with all the filenames.

Later, when the FontnameParser has been used to really apply name
changes it has always based the parsing on the Fullname or the PSname,
because they really hold the information (or at least should hold);
while the filename might be completely random.

Still code the dealt with specific problems in FILEnames prevailed. The
Ubuntu font for example has a file name like 'Ubuntu-C.ttf', and we
needed to convert the C to Condensed.

As that requirement vanished we can drop all the code that has been
added specifically only for parsing the Ubuntu font filenames.

Side note: USUALLY font filenames should be roughly equal to the PSname.

Fixes: #1258

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-26 13:01:58 +02:00
Fini Jastrow
1050729d6b font-patcher: Improve some debug messages [skip ci]
[why]
The order in which the advance widths are reported is rather misleading.
It also does not differentiate properly between basic and extended latin
range.

[how]
Reorder advance width details in output.
Change log entries to one-liners.
Also report monospaced and final cell size result.

[note]
No functional change.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-24 13:02:38 +02:00
Finii
7e596997f6 [ci] Update FontPatcher.zip 2023-05-22 11:34:37 +00:00
Fini Jastrow
438843d57a FontnameParser: Fix fsSelection for --has-no-italic
[why]
For fonts that have no Italic but an Oblique - i.e. when Oblique shall
replace the Italic role in RIBBI font grouping (classic group of 4) -
that grouping fails.

This affects DejaVu on Putty.

[how]
For RIBBI grouping only the classic bits are considered. That means that
for fonts that have Oblique instead of Italic (and not additionally) we
need to set the ITALIC bit and the OBLIQUE bit. This has been
overlooked.

Cite from the specs:

> This bit, unlike the ITALIC bit (bit 0), is not related to style-linking
> in applications that assume a four-member font-family model comprised
> of regular, italic, bold and bold italic. It may be set or unset
> independently of the ITALIC bit. In most cases, if OBLIQUE is set, then
> ITALIC will also be set, though this is not required.

[note]
Also increase font-patcher version.

Fixes: #1249

Reported-by: Huifeng Shen <liaoya@gmail.com>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-22 13:32:11 +02:00
Fini Jastrow
6903e2f393 font-patcher: Fix DaddyTimeMono NFM
[why]
Although DaddyTimeMono is monospaced it has one glyph (napostrophe at
0x149) that is in fact two spaces wide. This breaks the created Nerd
Font Mono font.

[how]
Add that glyph to the list of non-standard glyphs that are ignored.

Fixes: #1243

Reported-by: fabestah
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-22 13:30:06 +02:00
Finii
0fc23725fb [ci] Update FontPatcher.zip 2023-05-13 11:30:07 +00:00
Fini Jastrow
ec79b8bc7d Update changelog to v3.0.1
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-13 13:04:53 +02:00
Fini Jastrow
91f8156937 doc: Update font-patcher usage in readme.md
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-13 12:54:06 +02:00
Fini Jastrow
711c20d2ed Regenerate CSS files
$ ./generate-css.sh

Generated CSS, json, and Cheat Sheet HTML
../../css/nerd-fonts-generated.css
../../css/nerd-fonts-generated.min.css                 [needs to also go into gh-pages:_includes/css/]
../../css/nerd-fonts-generated-removed.min.css         [needs to only go into gh-pages:_includes/css/]
../../temp/2017-01-04-icon-cheat-sheet.md              [needs to only go into gh-pages:_posts/]
../../glyphnames.json

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-13 12:54:05 +02:00
Fini Jastrow
ee7e22d885 Rebuild patched fonts (manually)
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-13 12:54:05 +02:00
Fini Jastrow
fe9a2d70f3 casks: Add zap stanza comment
[why]
Casks without zap stanza are flagged; all casks should contain them.

The font casks do not really need zap.

[how]
What is the right way to say 'we considered zap, but do not need it'?

It seems that other people add a comment (the same comment).
For example here:
https://github.com/Homebrew/homebrew-cask/pull/119090

And that seems rather widespread.

        git/homebrew-cask/Casks$ git grep '# No zap stanza required' | wc -l
        101

Include the same in our casks.

[note]
https://github.com/Homebrew/homebrew-cask/issues/88469

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-13 12:53:15 +02:00
Fini Jastrow
d812d153ab Start release v3.0.1
Edit ./package.json
Run version-bump.sh 3.0.1

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-13 07:49:58 +02:00
Fini Jastrow
b3ec51c1b0 CascadiaCode: Correct version string
[why]
With commit
  b6301e590  CascadiaCode: Rehint and use ttf

we replaced the hints done upstream by ttfautohint with hints done via
Visual TrueType, because they render the text more similar to the
variable fonts (hints).

But the version string still mentions 'ttfautohint' because we did not
touch the font files at all except opening, hinting, closing in VTT.
This can be confusing.

[how]
Change the version string to "Version 2111.001; VTT 6.35" via:

* `ttx -i *.ttf`
* Edit `ttx` files and replace version, see above
* `ttx -b *.ttx`
* Move new fonts over old fonts

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-12 17:23:50 +02:00
Finii
1be89753e1 [ci] Update FontPatcher.zip 2023-05-12 14:26:03 +00:00
Fini Jastrow
43b9ae15d2 Codicons: Preserve smaller icons
[why]
The codicons have 3 obvious (from the name) pairs of regular and small
icons. The size difference is slight but visible.

When we maximize all individual icons the differences are mostly lost.

[how]
Put each pair into one ScaleGroup to keep their individual scaling.

Fixes: #1214

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-12 16:23:10 +02:00
Finii
d4bd51ffde [ci] Update FontPatcher.zip 2023-05-12 11:23:36 +00:00
Fini Jastrow
3dfa80eaa1 font-patcher: Do not maximize heavy brackets in Mono
[why]
The added heavy brackets are maximized within the cell size as all
normal other symbols. But in fact they should not be maximized but
rather be the size of 'normal brackets'.

Furthermore they are all scaled individually, making the size
differences less.

With some proportional fonts the brackets look tiny.

[how]
Introduce new y-padding parameter (because a negative overlap also acts
in x direction, what we do not want (and it distorts)).

Pad the brackets with 30% (15% top and 15% bottom).

This is used for all fonts (monospaced or not) so that the new glyphs
fit nicely with the existing ones. For some definitions of 'nicely', but
that is as good as we can get with automatism. It's not worse than
font-fallback.

Fixes: #1229

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-12 13:21:20 +02:00
Fini Jastrow
e5c880c2c4 font-patcher: Allow ScaleRules with a non 'pa' stretch
[why]
When the Heavy Brackets are scaled we want them to be scaled according
to 'pa1!' (i.a. preserve-aspect, only-one-cell, scale-always).

This is not possible because the glyphs have a ScaleRule and that
always assumes pure 'pa' and nothing else.

[how]
When the first glyph of the group is encountered the group scaling is
determined. This now takes the stretch rule of THAT glyph (instead of
just 'pa') to prepare the scale of the complete group.
2023-05-12 13:21:20 +02:00
Fini Jastrow
f17700946c Add script to create sample set
[why]
After changing something in the patch process it is unclear if all the
prepatched fonts will look ok later. It would be nice to produce one
font from each input font (and not the complete set of each of the faces
of that font) to have some hopefully representative example how symbols will
blend into the font.

[how]
Add a script with explicit list of representative fonts.
Evaluate the config.cfg and execute one patcher run.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-12 13:21:20 +02:00
Fini Jastrow
41521254f1 gotta-patch-em: Fix wrong config setting
[why]
The config.cfg settings can be wrong if the to-be-patched font does not
set its own. The previous settings are never cleared, so that the flags
leak into the next font(s).

This is only relevant when the run is not parallel (i.e. no -j given) and
all fonts are patched sequentially in the same shell.
On parallel runs (like the release process) this is not a problem
because each patcher runs in its own subshell.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-12 13:21:20 +02:00