Commit graph

19 commits

Author SHA1 Message Date
Fini Jastrow
4642ab095c Rename Bitstream Vera (due to RFN)
[why]
The license of Bitstream Vera requires patched fonts to contain neither
"Bitstream" nor "Vera" in the name. It explicitly requires that also
for fonts that (only) add some glyphs.

Yes, we are rather late to notice this :-( Sorry.

[how]
Rename Bitstream Vera to BitstromWera, and also drop the Sans Mono part
of the name. The new name looks and sounds similar enough to get the
reference, while being shorter and somewhat logical.

Fixes: #1173

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-27 18:59:32 +02:00
Fini Jastrow
f603633536 name-parser: Fix Oblique handling
[why]
Oblique is not detected correctly anymore.

[how]
With commit
  ae656bad8 name-parser: Further formalize style handling

'Oblique' has been taken out of the direct 'known_names' which has been
replaced by a more detailed list of known name parts. It ended up in
known_slopes.

But known_sloped is not taken into consideration as 'weight' when parsing
the font name - no it ends up in 'rest'.

This has been obviously overlooked.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-24 19:52:27 +02:00
Fini
20e7a8e390
Merge pull request #1028 from ryanoasis/feature/reorganize-naming
Pull 'Mono' to front in names and other naming changes
2023-04-24 18:42:33 +02:00
Fini Jastrow
4921e59554 Drop iA Writer Duospace
[why]
We have both
 iA Writer Duospace
 iA Writer Duo S

These are the same fonts, Duospace is just the former name of Duo S.

Duospace is version 1.005
Duo S (and Mono and Quattro) is version 2.000

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-21 19:55:57 +02:00
Fini Jastrow
0ffb095ffe name-parser: Add more renaming rules
[why]
Some fonts have so long base names that we can not, even very
abbreviated as 'NF', add the Nerd Font designator anymore.

In this case we need to rename the font even if it has no RFN just to
make it shorter.

[note]
As '(TTF)' is dropped now from Terminus we do not need to handle it
specifically anymore.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-21 19:55:57 +02:00
Fini Jastrow
fd7773c092 Update Anonymous Pro
[why]
We use a prepatched font not the original Anonymous Pro.
The prepatched font contains no bitmaps and is thus like
Anonymous Pro Minus. Also some font internals that fontforge does not
copy out of the box are differing.

And we miss the Bold and Italic variants.

[how]
Crossgrade to original Anonymous Pro as source and add the missing
weight/style.

Add Anonymous to SIL.
Handle 'Pro' naming parts (do not detect 'r' as short for 'Regular').

[note]
Maybe related: #1174

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-21 13:07:50 +02:00
Fini Jastrow
1da85df08b font-parser: Fix CodeClimate workaround
[why]
CodeClimate does not allow 'complicated' functions. In a previous commit
we added more if-s to a function that afterwards was rejected by
CodeClimate. To fix that the if-s have been replaced with arithmetic.

That is
a) less readable than if-s
b) has a bug

[how]
Change the code back to if-s but put them into yet another function.
Hopefully we do not blow up CodeClimate's maximum number of functions
per file limit now...

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-20 12:09:50 +02:00
Fini Jastrow
83bd265b32 name-parser: Fix BigBlueTerminal 437 shortening
[why]
The shortened name is not as expected "BigBlueTerminal437 Nerd Font"
but some obscure "c7 Nerd Font".

[how]
The backreference marker `\1` is directly in front of the string `437`
which yields the replacement `\1437`. Python is not smart enough to
correctly handle that (but 'sed' for example is).

Instead use a named backreference which does not clash with the
following digits.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-19 18:47:24 +02:00
Fini Jastrow
0265034054 name-parser: Tweak mild name shortening
[why]
When we have a weight/width that can take a modifier, and a modifier is
present we always take the shortest form of the weight/width.

This is not how it is customarily done.

Experienced:
  ExtraCondensed ExtraBold -> ExtCd ExtBd
Expected:
  ExtraCondensed ExtraBold -> ExtCond ExtBd

[how]
In case a modifier is present:
Use the shortest form for weights.
Use the longer short form for widths.

[note]
Also circumvent CodeClimate issue by replacing if-s with formulas.
And adding one nonsense entry to the data tables, because they were
too 'similar' :rolleyes:

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-19 18:19:54 +02:00
Fini Jastrow
9be4835c29 font-patcher: Introduce less severe family name shortening
[why]
We want to keep "Nerd Font" in the font name if possible and instead
shorten the weight part with accepted abbreviations. But these abbrevs
are hard to read and sometimes a more mild abbreviating might be
sufficient to get the desired name length.

[how]
Introduce a new shortening method for the weight parts of a family name.
It takes a longer word (often un-shortened) when a weight stands on its
own, but when a modifier is used together with the weight the more
aggressive two-letter abbreviations are used.

That new shortening method becomes the default and all the functions get
a new parameter to enforce completely aggressive shortening, i.e. always
use the shortest possible form.

The new way to shorten is exposed all the way out to the font-patcher
user who can select the shortening method as parameter to the
--makegroups option. That option is undocumented because I expect some
changes later on, still.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-19 15:57:50 +02:00
Fini Jastrow
725df33434 name-parser: Allow generic renaming parts
[why]
Some name parts occur in several fonts but they take too much length
that we need to add 'Nerd Font' to the font name.

This can be handled as 'generic' SIL table parts, but the algorithm
stops searching for replacements one it has found one.

[how]
Always evaluate all rules of the SIL table.

Add entries for generics to the SIL table.
Add rule for BigBlueTerminal (437TT).
Also fix rule for MPlus that underwent a naming change with its update.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-15 21:14:00 +02:00
Fini Jastrow
0558b14525 CI: Fix codeclimate issues
[why]
Cognitive burden of shorten_style_name() is 13 (allowed 9).

Duplicate code
        if self.use_short_families[1]:
            weights = FontnameTools.short_styles(weights)
            styles = FontnameTools.short_styles(styles)

[how]
I do not really buy the duplicate code issue (but circumvent it anyway).

shorten_style_name() was really hard to grasp, maybe use of a helper
function makes it more readable.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-15 20:57:08 +02:00
Fini Jastrow
ae656bad83 name-parser: Further formalize style handling
[why]
Some styles can not take modifiers. We handle the shortening as if they
can. That is not a problem but mighht be unexpected.

Do detect weights we have a fixed list, but that is missing a lot
weights that we would be able to shorten.

The shortening does not work for 'Retina', which is imho a more recent
'invention' (after the paper of the previous commit has been written).

[how]
Separate known weights and make them accessible from other functions.
Use these data tables also for weight detection.
Introduce 'Retina' in the weights table.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-15 20:57:07 +02:00
Fini Jastrow
81e2e1f988 name-parser: Generalize and shorten style-shortening
[why]
We really struggle to keep the font names below the length limits. To
achieve this some styles are abbreviated. The abbreviations have been
taken from Noto and were initially used to mimic Noto's naming scheme.

But a bit shorter names would help in some instances to produce short
enough name entries. Also some styles that are used by fonts other than
Noto are not abbreviated at all.

[how]
In document [1] Adobe gives examples of very short style abbreviations.
We just implement all these.

Example: 'ExtraCondensed' now becomes 'XCn' instead of the more readable
but longer 'ExtCond' that Noto uses.

[1] https://adobe-type-tools.github.io/font-tech-notes/pdfs/5088.FontNames.pdf

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-15 20:57:07 +02:00
Fini Jastrow
44ffebcaa3 name-parser: Add Extended to known styles
[why]
This is missing, for example for
  iosevka-extendedextralightoblique

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-04-14 08:01:12 +02:00
Fini Jastrow
e5d835080e Drop 'IBM' from 3270's names
[why]
The font was always called 3270.
Having a big company's name in the fontname is scary 😬

See
https://github.com/rbanffy/3270font/issues/60

[how]
Add renaming rule.

Fixes: #1012

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-01-17 15:44:20 +01:00
Fini Jastrow
b52f0a7cb1 Fix 3270 naming
[why]
Somehow the `IBM 3270 SemiCondensed` font turn out as
`IBM3270Semi Nerd Font Condensed`.

The 3270 font always had the quirk to have a non-standard style with a
dash. We have specific code to circumvent that.

[how]
After updating 3270 the 'Narrow' had been renamed to 'Condensed' and so
our specific patch did not work anymore.

Adapt the regex to find the new style that needs correction.

[note]
https://github.com/ryanoasis/nerd-fonts/issues/1012#issuecomment-1385497230

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-01-17 15:31:59 +01: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
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