Skip to main content

noto-cjk

Install Noto CJK fonts on demand from PyPI, and locate them from Python.

The noto-cjk package is a meta-package: it ships no font files by default and provides only a small Python API. The actual fonts live in a family of noto-cjk-* packages, one per font file, so you install only what you need instead of a single multi-hundred-megabyte download.

$ pip install "noto-cjk"                    # API only, no fonts
$ pip install "noto-cjk[sans-sc]"           # Sans, Simplified Chinese, Regular + Bold
$ pip install "noto-cjk[serif-jp-regular]"  # Serif, Japanese, Regular
$ pip install "noto-cjk[sans]"              # Sans OpenType Collection (all languages)

The 1 + N model

Package Contents
noto-cjk Python API only, no fonts.
noto-cjk-sans-sc-regular, … One NotoSansCJK..-*.otf file each (16 packages).
noto-cjk-serif-..-.., … One NotoSerifCJK..-*.otf file each (16 packages).
noto-cjk-sans-otc, noto-cjk-serif-otc The NotoSansCJK-Regular.ttc / NotoSerifCJK-Regular.ttc collections.

Fonts are bundled Regular + Bold for four languages: Simplified Chinese (sc), Traditional Chinese (tc), Japanese (jp), Korean (kr).

The Sans OpenType Collection (NotoSansCJK-Regular.ttc) additionally embeds the Mono sub-fonts, as published upstream.

Extras

The noto-cjk package exposes a three-level extra matrix:

Level Form Example Installs
family {family} sans, serif the OTC (all four languages, one .ttc)
language {family}-{lang} sans-sc, serif-jp Regular + Bold OTFs
single font {family}-{lang}-{style} sans-sc-regular, serif-jp-bold one OTF

Where family ∈ {sans, serif}, lang ∈ {sc, tc, jp, kr}, and style ∈ {regular, bold}.

$ pip install "noto-cjk[sans]"             # -> noto-cjk-sans-otc
$ pip install "noto-cjk[sans-sc]"          # -> noto-cjk-sans-sc-regular + noto-cjk-sans-sc-bold
$ pip install "noto-cjk[sans-sc-regular]"  # -> noto-cjk-sans-sc-regular

Python API

from noto_cjk import list_fonts, font_path, otc_path, get

for f in list_fonts():          # 16 OTF fonts
    print(f.family, f.lang, f.style, f.installed, f.path)

font_path("sans", "sc", "regular")  # -> Path(.../NotoSansCJKsc-Regular.otf)
otc_path("sans")                    # -> Path(.../NotoSansCJK-Regular.ttc)

f = get("serif", "jp", "bold")
print(f.package)                    # 'noto-cjk-serif-jp-bold'
print(f.extra)                      # 'serif-jp-bold'

Requesting a font that is not installed raises FontNotInstalled with a ready-to-run install hint:

noto-cjk-sans-sc-regular is not installed.
Install it with: pip install 'noto-cjk[sans-sc-regular]'

Naming convention

Every font is identified by a (family, lang, style) triple. The distribution name, module name, and extra all derive mechanically from it:

  • distribution — noto-cjk-{family}-{lang}-{style} (e.g. noto-cjk-sans-sc-regular)
  • module — noto_cjk_{family}_{lang}_{style} (e.g. noto_cjk_sans_sc_regular)
  • extra — {family}-{lang}-{style} (e.g. sans-sc-regular)

The OpenType Collections are noto-cjk-{family}-otc with the extra {family}.

Font versions

Family Upstream version
Noto Sans CJK 2.004
Noto Serif CJK 2.003

All noto-cjk-* packages in a release share the same package version and are published together.

License

The noto-cjk code is Apache-2.0. The bundled fonts are licensed under the SIL Open Font License, Version 1.1 (see each noto-cjk-* package).

Release files for noto-cjk 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for noto-cjk 0.0.1
File Interpreter ABI Platform
noto_cjk-0.0.1-py3-none-any.whl Python 3 none any Details

Release files / noto_cjk-0.0.1-py3-none-any.whl

Download URL noto_cjk-0.0.1-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f60e4c7f60de762d605aa7c1f41b2f2c783723914824a8de419c284370103884
BLAKE2b-256 checksum
How to use checksums
47470a2ec6fe2f0066719ba4e93465d7dd1471418ef9433388a1fce635ffad01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.0.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page