From 744145f392730ab19f46bd51adf008e5b7a60e64 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 23 Jan 2025 14:16:33 +0530 Subject: [PATCH] Add cairo and pixman as deps on Linux Needed to render COLRv1 fonts. Which are needed because bitmap emoji fonts dont render well at large font sizes such as can be used with multicell chars. --- .github/workflows/ci.py | 2 +- bypy/linux/__main__.py | 2 +- bypy/sources.json | 20 ++++++++++++++++++++ docs/build.rst | 4 ++++ setup.py | 3 ++- 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.py b/.github/workflows/ci.py index 3c3b5bf78..b838bf977 100644 --- a/.github/workflows/ci.py +++ b/.github/workflows/ci.py @@ -96,7 +96,7 @@ def install_deps() -> None: run('sudo apt-get install -y libgl1-mesa-dev libxi-dev libxrandr-dev libxinerama-dev ca-certificates' ' libxcursor-dev libxcb-xkb-dev libdbus-1-dev libxkbcommon-dev libharfbuzz-dev libx11-xcb-dev zsh' ' libpng-dev liblcms2-dev libfontconfig-dev libxkbcommon-x11-dev libcanberra-dev libxxhash-dev uuid-dev' - ' libsimde-dev libsystemd-dev zsh bash dash systemd-coredump gdb') + ' libsimde-dev libsystemd-dev libcairo2-dev zsh bash dash systemd-coredump gdb') # for some reason these directories are world writable which causes zsh # compinit to break run('sudo chmod -R og-w /usr/share/zsh') diff --git a/bypy/linux/__main__.py b/bypy/linux/__main__.py index 028d45df5..777d7dd5b 100644 --- a/bypy/linux/__main__.py +++ b/bypy/linux/__main__.py @@ -26,7 +26,7 @@ def binary_includes(): return tuple(map(get_dll_path, ( 'expat', 'sqlite3', 'ffi', 'z', 'lzma', 'png16', 'lcms2', 'ssl', 'crypto', 'crypt', 'iconv', 'pcre2-8', 'graphite2', 'glib-2.0', 'freetype', 'xxhash', - 'harfbuzz', 'xkbcommon', 'xkbcommon-x11', + 'pixman-1', 'cairo', 'harfbuzz', 'xkbcommon', 'xkbcommon-x11', # fontconfig is not bundled because in typical brain dead Linux # distro fashion, different distros use different default config # paths for fontconfig. diff --git a/bypy/sources.json b/bypy/sources.json index a4767ec2d..f4efc326c 100644 --- a/bypy/sources.json +++ b/bypy/sources.json @@ -239,6 +239,16 @@ } }, + { + "name": "pixman", + "os": "linux", + "unix": { + "filename": "pixman-0.44.2.tar.xz", + "hash": "sha256:50baf820dde0c5ff9714d03d2df4970f606a3d3b1024f5404c0398a9821cc4b0", + "urls": ["https://www.cairographics.org/releases/pixman-0.44.2.tar.xz"] + } + }, + { "name": "freetype", "os": "linux", @@ -259,6 +269,16 @@ } }, + { + "name": "cairo", + "os": "linux", + "unix": { + "filename": "cairo-1.18.2.tar.xz", + "hash": "sha256:a62b9bb42425e844cc3d6ddde043ff39dbabedd1542eba57a2eb79f85889d45a", + "urls": ["https://www.cairographics.org/releases/cairo-1.18.2.tar.xz"] + } + }, + { "name": "harfbuzz", "unix": { diff --git a/docs/build.rst b/docs/build.rst index 071d82081..2f2104c8b 100644 --- a/docs/build.rst +++ b/docs/build.rst @@ -91,6 +91,8 @@ Run-time dependencies: * ``liblcms2`` * ``libxxhash`` * ``openssl`` +* ``pixman`` (not needed on macOS) +* ``cairo`` (not needed on macOS) * ``freetype`` (not needed on macOS) * ``fontconfig`` (not needed on macOS) * ``libcanberra`` (not needed on macOS) @@ -115,6 +117,7 @@ Build-time dependencies: - ``libpython3-dev`` - ``libxxhash-dev`` - ``libsimde-dev`` + - ``libcairo2-dev`` .. _x11-dev-libs: @@ -127,6 +130,7 @@ Build-time dependencies: - ``libxinerama-dev`` - ``libgl1-mesa-dev`` - ``libxkbcommon-x11-dev`` + - ``libfontconfig-dev`` - ``libx11-xcb-dev`` diff --git a/setup.py b/setup.py index 851d56163..99ea058ba 100755 --- a/setup.py +++ b/setup.py @@ -640,8 +640,9 @@ def kitty_env(args: Options) -> Env: # warnings about it cppflags.append('-DGL_SILENCE_DEPRECATION') else: - cflags.extend(pkg_config('fontconfig', '--cflags-only-I')) + cflags.extend(pkg_config('cairo-fc', '--cflags-only-I')) platform_libs = [] + platform_libs.extend(pkg_config('cairo-fc', '--libs')) cflags.extend(pkg_config('harfbuzz', '--cflags-only-I')) platform_libs.extend(pkg_config('harfbuzz', '--libs')) pylib = get_python_flags(args, cflags)