Commit graph

470 commits

Author SHA1 Message Date
Fini Jastrow
136a84bc03 font-patcher: Fix Octicon scaling groups
[why]
The Octicon scaling group has two errors, one is a typo (the first digit
of a number is missing), and the second is off by one for some reason.

Reported-by: @aaronbell
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2024-03-14 08:01:20 +01:00
Fini Jastrow
393c66684b font-patcher: Fix debug format string
[why]
The format string is invalid and results in a runtime error if that
particular warning is issued (which is only the case for Terminus).

[how]
A verbatim percent sign must be encoded as '%%'.

[note]
This has already been fixed before with commit
  f81564fad  font-patcher: Fix typo in logger output

but the change has been lost by rebasing :-(

See also #1350

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2024-01-15 18:31:06 +01:00
Fini Jastrow
da4fb70b7e font-patcher: Break alternative unicode links before patching
[why]
The D2Coding font has a lot of glyphs shared between multiple unicode
codepoints.
Usually we just want to change the glyph on one particular codepoint
and not on all linked ones; which will affect codepoints not in our
patching ranges.

For example the glyph FULL BLOCK is used by codepoint 2588 and E286. In
the Exxx range they have a lot of icons, and also a full block.

[how]
Remove all links on glyphs that we are about to patch over, so that we
really just patch the codepoint we want to patch (and have no hidden
'links').

[note]
This could in principle break alts or ligs if they rely on another
codepoint that we removed. But breaking ligs is always a possibility
when patching over existing glyphs.

[note]
I checked several (not all) fonts in our repertoire, and only D2coding
is massively affected.

The only other fonts are these with 2 codepoints each:
heavy_data.ttf Removing alternate unicode on F001 (FB01)
heavy_data.ttf Removing alternate unicode on F002 (FB02)
Tinos-Regular.ttf Removing alternate unicode on F001 (FB01)
Tinos-Regular.ttf Removing alternate unicode on F002 (FB02)

Fixes: 1454

Reported-by: @hdd1013
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2024-01-15 18:31:06 +01:00
Fini Jastrow
19c4162241 font-patcher: Fix crash if no roman characters
[why]
When we can not detect the cell width, for example because there are no
glyphs in the range of extrended-roman that we examine, the width will
be zero and that will result in a crash later on (on rescaling).

[how]
Just abort if height or width are zero or negative.

Related: #1460

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-12-18 15:30:24 +01:00
Finii
b16e67d625 [ci] Bump release version 2023-11-26 17:49:56 +00:00
Fini Jastrow
0e30425dc6 Revert "name-parser: Revert file name change"
This reverts commit 784e892575.
2023-11-26 16:02:57 +01:00
Fini Jastrow
b0b4c34524 Monaspace: Fix naming
[why]
When shortening the rare gases names to the element symbol
Radon is named 'Rd' while it should be 'Rn'.
Atomic number 86 on the periodic table.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-11-21 11:55:54 +01:00
Finii
298f0b53ad [ci] Bump release version 2023-11-21 10:23:08 +00:00
Fini Jastrow
3146f080ec font-patcher: Increase version after new glyphs added
* Font Logos update
* Core set got two more

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-11-21 07:59:37 +01:00
hasecilu
7940f26928 Update Font Logos to 1.1.1
[why]
The font-logos project has been updated including 67 new icons, in which
are included GNU/Linux distributions, desktop environments, window
managers, desktop applications, some organizations and more.

Now the used range is F300-F372, 115 available logos.
2023-11-21 06:58:45 +01:00
Fini Jastrow
a8b9e1da06 Increase Powerline overlap (only triangle)
[why]
We still fight with the faint lines on the big side of the powerline
glyphs. They come from the LCD antialiasing mode that has problems with
the borders.

Other fonts use far more overlap. We use only a modest amount of overlap
(2% of the width).

[how]
As the other fonts do, increase the overlap (to 7% now). We could not do
that before, because we had no full-hight 'landing platforms' on the
outsides and so the triangle would look cut off at not 100% hight.

Now with the landing platforms we can increase the overlap and still
have nice looking triangles that visibly reach the top and bottom of the
line.

Implement this only for the filled triangles to see how it goes.

Related: #1245

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-11-16 18:35:53 +01:00
Fini Jastrow
784e892575 name-parser: Revert file name change
[why]
It is better to have a not-abbreviated file name so that one can make
sense out of the name parts, especially when doing a partial patch.
With the previous commit we ended up with all abbreviated names.

The filename length is hopefully not limited, at least not as severe as
the SFNT table entries.

[how]
We need to store the answers somewhere because the naming is only
understood by the FontnameParser object which we throw away soon.
As fallback we still can parse the SFNT table, for example when the old
renaming is used.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-11-11 23:59:59 +01:00
Fini Jastrow
178cda0629 font-patcher: Allow filename as naming source
[why]
With Martian Mono we have a font that uses aggressive abbreviation for
the weights and styles (two letters mostly) in all name fields. That is
very hard to parse.

[how]
Adding rules that detect these very short abbreviations might trigger in
a lot wrong places. As this is the only font that uses that we do not
want to risk that.

Instead we rewrite the filenames of the source font (Martian Mono) such
that it contains all the necessary information and add a new flag to the
patcher that allows it to use the filename as naming source.
Yes, as in days long past ;-)

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-11-11 23:57:02 +01:00
Fini Jastrow
5615d5e120 font-patcher: Increase after new core icon
[why]
After a new icon has been added to the core set we want to make that
visible via a new version number.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-10-23 13:29:40 +02:00
Fini Jastrow
99f3b20ecf font-patcher: Drop some option alternatives
[why]
It is rather confusing to have so many aliases.

[how]
Remove some long forms and some alternatives, to make the help page
easier to read.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-10-13 12:42:46 +02:00
Fini Jastrow
9bfe6d165a font-patcher: Sort and regroup help message
[why]
It can be hard to find the 'usual' options in between all the expert
options.

[how]
Regroup the options and sort them alphabetically (most of the time).
Not sure if this helps, but in my personal view this makes it easier.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-10-13 12:32:12 +02:00
Fini Jastrow
c7b7cc97bb font-patcher: Add option to force patching in box drawing glyphs
[why]
When the original font designer's idea of cell height differs from the
height we deduce the box drawing glyphs come out with the wrong size (if
we do not touch them, for example because the font already has a
complete set).

[how]
Add option that enforces patch-in of the box set.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-10-13 11:52:27 +02:00
Fini Jastrow
72fb7fb814 font-patcher: Add option to select metrics source
[why]
If the font has contradicting baseline to baseline metrics the patcher
tries to find a sane value and use that. That automatism gets it right
in most cases, but there might be fonts where the user wants a different
metric to be used.

At the moment the use would need to use `font-line` to adjust the
metrics, which is not very convenient.

[how]
Add option to select one of the metricses.
Use that metrics when setting up the patched font.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-10-13 11:52:27 +02:00
Fini Jastrow
809101da32 font-patcher: Improve weight checking
[why]
When the font does not have a PSweight string the font-patcher bugs.

[how]
Rewrite the code to be more robust against unexpected weight values.
Also make detected problems non-fatal.

Reported-by: František Hanzlík <frantisek_hanzlik@protonmail.com>
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-10-07 13:02:20 +02:00
Fini Jastrow
99688c40c7 font-patcher: Introduce weight check
[why]
Windows seems to construct the font names including the PS weight.
We have some sourcefonts that are broken (i.e. have in fact different
weights but have the same PS weight and/or OS2 weight.

That raises problems with the fonts on Windows.

[how]
Check and compare all weight metadata (except CID) and issue a warning
if they differ too much. That might fail with unusual weight names,
though.

See Issue #1333 and PR #1358.

Reported-by: LeoniePhiline
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-09-27 05:46:33 +02:00
Fini Jastrow
3053972f86 font-patcher: Abort if fontforge did not generate patched font
[why]
Under certain circumjstances Fontforge can not create a font. As the API
does not give any feedback we trudge along afterwards giving confusing
messages.

One example is when the patched font contains too many glyphs.

[how]
Check if the patched font has indeed been generated and is not empty.

Fixes: #1342

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-09-23 11:25:11 +02:00
Fini Jastrow
f81564fadf font-patcher: Fix typo in logger output
Fixes: #1350

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-09-18 11:12:35 +02:00
Dennis Prazak
5d85a45a93 Add Intel One Mono 2023-07-26 15:02:27 +02:00
Fini Jastrow
12b51f51e2 font-patcher: Allow blanks in '--name'
[why]
If a user specified a name we should probably not camel-casify it.

Fixes (idea mentioned in): #1319

Suggested-by: HUMORCE
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-07-19 11:41:03 +02:00
Fini Jastrow
64cf3e9d93 font-patcher: Add option to select postscript name as name source
[why]
In the post we used these information sources to determine the name and
weights/styles of the to-be-patched font:
* The filename
* The fullname (ID 4)
* The postscriptname (ID 6)

Usually it is best to use the Fullname of a font to determine its real
name and styles/weights:

The Postscript name has the advantage to have a hyphen between name and
styles/weight; but as it can not contain blanks the correct name can not
be determined by this. To get the styles/weights back we use a list of
all possible (?!) weights and styles and sort all the string parts.

This works reasonably well and the fullname is usually best.

Not so with Input Mono Condensed. Here are its names:
ID4: "InputMonoCondensed LightIta"
IF6: "InputMonoConsensed-LightItalic"

[how]
Add option to select between fullname and postscriptname as font naming
source.

For special purposes, also allow a custom (arbitrary) name input.
If that is given the specified name will be used to name the patched
font without adding any suffix - the user has full control on the name.

Fixes: #1314

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-07-17 11:58:21 +02:00
Fini Jastrow
2f5c6ab6c6 font-patcher: Correct --makegroups help
Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-07-17 11:58:21 +02:00
Fini Jastrow
98c14701b0 font-patcher: Fix command line argument specs
[why]
A lot arguments need one user supplied value, but that is not enforced.
For example
    font-patcher src/unpatched-fonts/Agave/Agave-Regular.ttf --out

results in a crash, because the needed output directory has not been
passed, but the default is also not used.

The problem is that the option is defined to take any amount of values,
includeing zero values (and more than one value).
That all does not make sense. The switch does need exactly one value.

[how]
Remove the wrong nargs specification. Instead use the default, which is
'expect one value' for the default action 'store'.

Instead of a crash the user is now presented with this output:
    font-patcher: error: argument -out/--outputdir: expected one argument

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-07-17 11:58:21 +02:00
Fini Jastrow
12bf79d5fe font-patcher: Fix unify logging calls [skip ci]
[why]
The debug messages appear two times.

[how]
Do not use the root logger as we can not get rid of it afterwards.
Instead set up a normal logger just for the startup and forget it after
we have a proper logger.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-06-14 08:39:14 +02:00
Fini Jastrow
df626d3440 font-patcher: Unify logging calls [skip ci]
[why]
Usually the variable `logger` holds the logger object and all logging
calls got through that.

But because we use the font filename as loggername that logger object
can only be set up after the arguments have been parsed. If some
messages are to be logged before the call needs to go to the root logger
called as `logging` class.

This means one needs to take `logger` or `logging` based on the time
when someting is to be logged. That can be confusing and is easily
wrong, especially if code is shifted.

[how]
Always use the `logger` variable and just let that point to the root
logger until we set up a concrete logger.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-06-06 08:31:57 +02:00
lolicon0930
d3856031c8 Fix typo in font-patcher. 2023-06-06 08:31:57 +02:00
Finii
ef6fe05754 [ci] Bump release version 2023-06-04 20:32:30 +00:00
Fini Jastrow
8fc3a7c15a font-patcher: Add option to suppress renaming
[why]
Sometimes a user might want to keep the original name.

This is escpecially true as Visual Studio seems to look at the font
names directly and enables special handling for 'Cascadia Code'.
Users might want to self-patch without renaming.

[how]
Add additional value to makegroups option.

That option should probably be renamed into 'naming scheme' or
something, as it is not really a fitting description of what it does.

Fixes: #1242 (some aspect of it)

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-06-04 13:24:52 +02:00
Fini Jastrow
decb6d0e3d font-patcher: Fix crash when no xavgwidth data available
[why]
When we did not collect xavgwidth data for some font and want to tweak
it the font-patcher crashes.

[how]
Check if we have a number before accessing it in the array.

[note]
This happens when font_patcher.patch() has not been called.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-06-04 13:24:52 +02:00
Fini Jastrow
7a31c67670 font-patcher: Fix wrong data source
[why]
For tweaking we use the self.sourceFont, but in the loop the real
correct value is the local sourceFont. Usually it's the same, but from a
logical standpoint this is wrong.

The name is a bit unfortunate and C++ would have generated a warning.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-06-04 13:24:52 +02:00
Fini Jastrow
3ecf7f1ef8 font-patcher: Fix incomplete separation of naming and patching
[why]
The font_patcher object should be self contained, and code outside of it
should not depend on stuff done within it that does not have to do
anything with patching.
In fact the code should run even if font_patcher.patch() has not been
called.

[how]
Pull name backup out of the patching process.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-06-04 13:24:52 +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
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
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
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
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
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
a3ec4bb22b font-patcher: Fix vanishing fi ligature
[why]
With Ubuntu-Regular the fi and fl ligatures are replaced by some font
awesome icons.

The problem is that the font uses the non-standard F001 and F002
codepoints as intermediate referencve to create the actual ligatures
that are at codepoints FB01 to FB04.

[how]
All the normal ligature codepoints (FB00-FB06) are added to the glyph
reference checker and codepoints that are referenced by these are not
patched.

This means that F001 and F002 stay on the original ligatures and the
Font Awesome icons are missing, but this can not be fixed automatically
and would need to 'rewrite' the references inside the font.

Fixes: #1221

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-10 13:01:37 +02:00
Fini Jastrow
1820d4e341 Octicons: Create missing file-symlink-directory (1/2)
[why]
Some people, for example the `lsd` project, need an icon with a symlink
directory. That has been dropped by Octicons. Our repacking put some
unrelated bookmark icon on that codepoint; but even an empty glyph would
be not ideal.

[how]
Design a file-symlink-directory from file-symlink-file and
file-directory. In this way it fits nicely into the current design of
Octicons.

Sneak that into the unpacked Octicons archive.
Adapt mapping manually to keep as much as possible constant.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-10 12:49:14 +02:00
Fini Jastrow
af2573aac2 Fix: font-patcher: Allow to specify custom symbolfont with absolute path [skip ci]
[why]
While the commit
  7cda32651 font-patcher: Allow to specify custom symbolfont with absolute path

would have allowed to specify the custom glyph font with an absolute
path, it is in fact still not possible.

[how]
The file-exists checks also need to observe the absolute path.

[note]
Normally (with a relative path) the custom font is search for in the
ordinary glyphs directory - but that would mean people need to copy it
there.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-10 12:05:13 +02:00
Fini Jastrow
de78d08077 font-patcher: Be not needlessly careful
[why]
When a user want to patch some glyph in, and at that position is already
a glyph, there is no way to overwrite it.

The reason is that --custom glyphs are always patched in --careful, and
there is no --not-careful option to override that.

[how]
Add glyphs via --custom always, except --careful has also been given.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2023-05-10 12:01:07 +02:00