#1041312 fonts-noto: Migrate to new upstream sources, and split the fonts according to upstream

#1041312#5
Date:
2023-07-17 10:19:49 UTC
From:
To:
Dear Maintainer,

Upstream has new sources of fonts-noto:

https://notofonts.github.io/

https://github.com/notofonts/notofonts.github.io

You can see from that website that upstream releases individual font files. So
please try to re-package the font files in Debian accordingly.

Please also notice that noto-cjk now has its own source repository:
https://github.com/notofonts/noto-cjk

So please package noto-cjk in its own source package if possible.

Best,
Amr

#1041312#10
Date:
2023-09-12 12:23:19 UTC
From:
To:
Hi Amr,

Am 2023-07-17 12:19, schrieb Amr Ibrahim:

the fonts appear to be organized into different subdirectories with
varying content.

Do you know upstream's stance on this? Is hinted/ttf always preferable
over unhinted/* and what's the matter with the fonts in googlefonts/*?
And how about the unhinted/variable-ttf, unhinted/slim-variable-ttf and
unhinted/otf variants?

They offer a snapshow of the entire repository for download in the
Releases section:

https://github.com/notofonts/notofonts.github.io/releases

These could be downloaded, have the undesired fonts stripped off, get
repacked and split up into indiviual Debian packages.

I have to admit that I just tried this for the fun, but gave up when the
download size reached 1GB. o_O

Cheers,

  - Fabian

#1041312#15
Date:
2023-09-12 13:07:43 UTC
From:
To:
Hi Amr,

Quoting Amr Ibrahim (2023-07-17 12:19:49)
ago - I remember upstream also reaching out about it, but cannot easily
locate now where that conversation took place.

The URI you point at is confusing, however: Upstream use git both to
track _sources_ for the Noto fonts and as a means to _distribute_
precompiled fonts - and notofonts.github.io is (mainly, at least) about
the latter.

The change needed is not only to shift to a different source location,
but also to change to actually compile the fonts from source, not only
redistribute precompiled font files as has been done until now.

I have a draft source package lying around since a few years now, but
have not yet set aside the time to organize it for use with those
several hundred source packages that fonts-noto will become...
bundled, as it is much easier to merge if issues turns out to be too
similar than to split a bundled of issues being discussed together.

Regarding this issue specifically, don't bother, however: It is a
duplicate of an ancient issue already solved since quite some time - see
bug#805021 or the source package fonts-noto-cjk).


 - Jonas

#1041312#20
Date:
2023-09-12 20:59:01 UTC
From:
To:
Hi Jonas,

Yes, it's kind of confusing.

True. If you go to https://notofonts.github.io/ and look at any font, you'll see
that there is a "Source repository" selection, which opens the font's source on
GitHub.

For example, Noto Arabic <https://notofonts.github.io/#arabic> has its source at
<https://github.com/notofonts/arabic>, and so on.

Sorry, my mistake. noto-cjk has already been packaged separately at
<https://tracker.debian.org/pkg/fonts-noto-cjk>, and now pointing to the new
upstream location on GitHub.


Best,
Amr

#1041312#25
Date:
2023-09-12 21:13:42 UTC
From:
To:
Hi Fabian,

True. If you go to https://notofonts.github.io/ and look at any font, you'll see
that there is a "Source repository" selection, which opens the font's source on
GitHub.

For example, Noto Arabic <https://notofonts.github.io/#arabic> has its source at
<https://github.com/notofonts/arabic>, and so on.

Sorry, I don't have answers to that.

Or the individual fonts can be packaged from their own sources, which I
mentioned above. Whichever the Debian maintainer finds more practical.


Best,
Amr

#1041312#30
Date:
2025-07-11 16:03:16 UTC
From:
To:
Hello everyone,

I would like to renew interest in migrating the Noto fonts to the new
GitHub upstream sources and splitting the packages as necessary.

https://notofonts.github.io/

https://github.com/notofonts

As each font now has its own GitHub repository, they can be built from the
source code and updated to the latest Git snapshot. The best time to start
this migration would be shortly after the release of Debian 13.

Best,
Amr

#1041312#35
Date:
2025-08-23 13:58:25 UTC
From:
To:
[Please do not cross-post]
[Please reply *only* to 1041312@bugs.debian.org]

Quoting Amr Ibrahim (2025-07-11 18:03:16)

Yes, it is still my plan to restructure the fonts-noto packaging now
after the release of Debian 13.

Please do not cross-post. Please reply to this email *only* to the
address 1041312@bugs.debian.org to limit the noise on other bugreports.

 - Jonas

#1041312#40
Date:
2025-11-05 16:07:47 UTC
From:
To:
Hi,

Am 23.08.25 03:58, schrieb Jonas Smedegaard:

As you wish.. I consider this bad practice, though, since one doesn't
know whether one actually reads the ml if he's neither in Maintainer nor
an Uploader...

Is there any status on this? There's more and more testsuite checks just
assuming a current Noto (as shipped as "code copy", which I obviously
and of course do not do) and our old Noto gets cumbersome in that way,
too, except containing "too much".

Regards,

Rene

#1041312#45
Date:
2025-12-31 15:17:48 UTC
From:
To:
This issue currently awaits ftpmaster approval of python-notobuilder.

Quoting Rene Engelhard (2025-11-05 17:07:47)
(continued, arguably fine to do so initially) to multiple issues.

See top-posted bits (done like that to have that paragraph figure as
current summary for this issue, by way of `bts issue ...`).

Sorry for my late reply.


 - Jonas

#1041312#50
Date:
2025-12-31 15:38:24 UTC
From:
To:
Hi,

Am 31.12.25 um 16:17 schrieb Jonas Smedegaard:

Saw that, yes...


[ And then any new source package will also need NEW ttbomk (even more so when they build newly named binary font packages).

Ideally all of them should be in NEW (which is possible if you upload all that to experimental, if the ftp people accept one without a needed one they shoud be told. and if it breaks it's only in experimental...).


Otherwise you still would need the undefined NEW waiting time for the actual font uploads, too. ]


Regards,


Rene

#1041312#59
Date:
2026-02-09 11:35:31 UTC
From:
To:
This issue is currently blocked by bug#1127472 (ftpmaster approval of
ufomerge, bug#1113937).

 - Jonas

#1041312#68
Date:
2026-02-09 11:50:16 UTC
From:
To:
This issue is currently blocked by bug#1127472 (DFSG team approval of
ufomerge, bug#1113937).

[adjust titulation of those processing the NEW queue]

 - Jonas

#1041312#77
Date:
2026-02-17 14:38:34 UTC
From:
To:
This issue is currently at a standstill: seemingly the used helper tool
gftools at its core rely on network access to infuse subsets from other
font sources during compilation of a font. Help figuring out how to
build Noto fonts offline (with gftools or bypassing it) is much
appreciated.

This is the kind of error I get:

python3 -m notobuilder sources/config-sans-chorasmian.yaml
INFO:fontmake.font_project:Building master UFOs and designspace from Glyphs source
INFO:glyphsLib.parser:Parsing .glyphs file
INFO:glyphsLib.builder:Running 'align_alternate_layers' transformation
INFO:glyphsLib.builder:Running 'propagate_all_anchors' transformation
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern1.small_aleph-chor.calt0 found in kerning rules.
INFO:fontmake.font_project:Saving /build/fonts-noto-chorasmian-1.004+ds/sources/NotoSansChorasmian.designspace
INFO:fontmake.font_project:Saving /build/fonts-noto-chorasmian-1.004+ds/sources/NotoSansChorasmian-Regular.ufo.json
INFO:fontmake.font_project:Loading 1 DesignSpace source UFOs
[1/8] instantiateUfo
fontmake -i Noto Sans Chorasmian Regular -o ufo -m NotoSansChorasmian.designspace --ufo-structure=json --output-dir instance_ufos
[2/8] addSubset
FAILED: [code=1] full-designspace/NotoSansChorasmian.designspace
/usr/bin/python3 -m gftools.builder.jobrunner gftools-add-ds-subsets --allow-sparse -j -y /tmp/tmpos9euuc_ -o full-designspace/NotoSansChorasmian.designspace NotoSansChorasmian.designspace

Command failed:
gftools-add-ds-subsets --allow-sparse -j -y /tmp/tmpos9euuc_ -o full-designspace/NotoSansChorasmian.designspace NotoSansChorasmian.designspace

INFO:gftools.subsetmerger:Downloading notofonts/latin-greek-cyrillic main
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 204, in _new_conn
    sock = connection.create_connection(
        (self._dns_host, self.port),
    ...<2 lines>...
        socket_options=self.socket_options,
    )
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 60, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
               ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/socket.py", line 977, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
               ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno -3] Temporary failure in name resolution

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
        conn,
    ...<10 lines>...
        **response_kw,
    )
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 488, in _make_request
    raise new_e
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 464, in _make_request
    self._validate_conn(conn)
    ~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 1093, in _validate_conn
    conn.connect()
    ~~~~~~~~~~~~^^
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 759, in connect
    self.sock = sock = self._new_conn()
                       ~~~~~~~~~~~~~~^^
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 211, in _new_conn
    raise NameResolutionError(self.host, self, e) from e
urllib3.exceptions.NameResolutionError: HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 644, in send
    resp = conn.urlopen(
        method=request.method,
    ...<9 lines>...
        chunked=chunked,
    )
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 841, in urlopen
    retries = retries.increment(
        method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
    )
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 535, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /notofonts/latin-greek-cyrillic/archive/main.zip (Caused by NameResolutionError("HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/gftools-add-ds-subsets", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/usr/lib/python3/dist-packages/gftools/scripts/add_ds_subsets.py", line 168, in main
    ).add_subsets()
      ~~~~~~~~~~~^^
  File "/usr/lib/python3/dist-packages/gftools/subsetmerger.py", line 318, in add_subsets
    added_subsets |= self.add_subset(input_descriptor, subset)
                     ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/gftools/subsetmerger.py", line 342, in add_subset
    donor_ufo = self.obtain_upstream(subset["from"], input_descriptor)
  File "/usr/lib/python3/dist-packages/gftools/subsetmerger.py", line 405, in obtain_upstream
    self.download_for_subsetting(repo, ref)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/gftools/subsetmerger.py", line 500, in download_for_subsetting
    repo_zip = ZipFile(download_file(repo_zipball))
                       ~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/gftools/utils.py", line 243, in download_file
    request = requests.get(url, stream=True, headers=headers)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 677, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='github.com', port=443): Max retries exceeded with url: /notofonts/latin-greek-cyrillic/archive/main.zip (Caused by NameResolutionError("HTTPSConnection(host='github.com', port=443): Failed to resolve 'github.com' ([Errno -3] Temporary failure in name resolution)"))

[3/8] buildTTF
fontmake --output-path ../fonts/NotoSansChorasmian/unhinted/ttf/NotoSansChorasmian-Regular.ttf -o ttf -u instance_ufos/NotoSansChorasmian-Regular.ufo.json --filter ... --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter
ninja: build stopped: subcommand failed.
make[1]: *** [debian/rules:7: override_dh_auto_build] Error 1


 - Jonas

#1041312#86
Date:
2026-03-03 11:56:47 UTC
From:
To:
The subsetmerger operation has support for local files.
Basically, you have to hit this code path:
https://salsa.debian.org/fonts-team/gftools/-/blame/debian/0.9.991+dfsg-2/Lib/gftools/subsetmerger.py?ref_type=tags#L403

You should achieve this by having "../subset-files/notofonts/latin-greek-cyrillic/main/sources/NotoSans.glyphspackage" available.

#1041312#91
Date:
2026-03-03 13:21:22 UTC
From:
To:
Quoting Bastian Germann (2026-03-03 12:56:47)

Thanks, that sounds like a quite helpful clue.

 - Jonas