If you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based. https://sw.kovidgoyal.net/kitty/
Find a file
Strykar ee937bdd1b
freetype: route FC_MATRIX through cairo for color glyphs
Color glyphs (COLR/CBDT/SVG) go through cairo on a second FT_Face,
self->face_for_cairo, opened in ensure_cairo_resources. That face
never receives the FT_Set_Transform installed on self->face in
face_from_descriptor (#9990): cairo owns FT_Set_Transform on its own
face and derives it from the font matrix on every render
(_cairo_ft_unscaled_font_set_scale in cairo-ft-font.c). The only
channel that reaches color-glyph rasterization is the cairo font
matrix, not the FT face transform, so FC_MATRIX is silently dropped on
that path. Stock fontconfig rules do not apply FC_MATRIX to color
fonts, so this is a hand-built config edge case.

Factor the two cairo_set_font_size() call sites in set_cairo_font_size
and fit_cairo_glyph into apply_cairo_font_size(), which calls
cairo_set_font_matrix() with size * FC_MATRIX when has_matrix is set,
and falls through to cairo_set_font_size() otherwise. The non-matrix
path is bit-identical to before. For pure shears (xx=1, yy=1)
cairo_scaled_font_glyph_extents reads the post-shear bbox so the
shrink loop bounds the destination correctly; the user-visible effect
is that a sheared color glyph reports a wider bbox and shrinks more
aggressively to fit a cell than its upright sibling. Acceptable for
the hand-built edge case this PR scopes to.

FT_Matrix stores xx,xy,yx,yy in row-major order;
cairo_matrix_init takes xx,yx,xy,yy. Same matrix, transposed argument
order - pinned with a comment because it is easy to flip.

Refs: #9990
2026-05-13 19:36:36 +05:30
.github Ignore inapplicable CVE 2026-05-13 15:03:17 +05:30
3rdparty ... 2024-07-14 12:34:24 +05:30
bypy ... 2026-04-18 14:08:54 +05:30
docs Cleanup previous PR 2026-05-13 11:51:18 +05:30
gen Add detection for dnd protocol 2026-05-06 08:48:26 +05:30
glad More robust detection of support for GL_FRAMEBUFFER_SRGB 2025-08-11 09:13:49 +05:30
glfw Ensure drag finish timer doesnt fire will waiting for remote item data 2026-05-13 10:59:44 +05:30
kittens Fix hints kitten breaking multi-byte UTF-8 characters when overlaying hint labels 2026-05-13 17:09:42 +08:00
kitty freetype: route FC_MATRIX through cairo for color glyphs 2026-05-13 19:36:36 +05:30
kitty_tests More work on dnd kitten 2026-05-12 12:23:57 +05:30
logo macOS: Switch to Tahoe style application icon 2026-04-18 13:28:22 +05:30
shell-integration Fix test_fish_sudo_parser: fix fish sudo function bugs 2026-05-05 04:25:37 +00:00
terminfo Update Se terminfo entry to reset cursor to configured default 2026-04-26 17:50:16 -05:00
tools Fix silent failure when pager (less) is not installed 2026-05-13 00:37:55 +08:00
.editorconfig Fix indentation in codeql yml file 2025-04-14 10:21:10 +05:30
.gitattributes Move parsing of colors fully into C 2025-12-31 14:21:45 +05:30
.gitignore Add XI2 smooth scrolling support for X11 backend 2026-01-09 17:13:24 +05:30
__main__.py Make shebangs consistent 2023-11-11 08:32:05 +05:30
benchmark.py Make mypy 1.16 happy 2025-05-30 10:06:38 +05:30
Brewfile See if dropping pkgconf fixes CI build 2024-11-23 19:48:05 +05:30
build-terminfo Make the terminfo database available in the compiled module 2024-03-21 10:16:50 +05:30
CHANGELOG.rst
CONTRIBUTING.md
count-lines-of-code Update the list of nerd font names when updating other unicode data as well 2025-05-21 13:19:27 +05:30
dev.sh
embeds.go Code to serialize/unserialize loaded images 2025-10-07 17:25:47 +05:30
go.mod Bump the all-go-deps group with 4 updates 2026-05-11 03:48:34 +00:00
go.sum Bump the all-go-deps group with 4 updates 2026-05-11 03:48:34 +00:00
INSTALL.md
key_encoding.json
LICENSE
Makefile
publish.py Fix pkill invocation 2026-02-24 07:47:22 +05:30
pyproject.toml Update minimum python to 3.11 from 3.10 2026-04-19 21:41:58 +05:30
README.asciidoc Update some docs 2025-10-07 20:20:19 +05:30
rsync-and-build.sh Slightly improve rsync script 2025-05-09 15:33:22 +05:30
SECURITY.md ... 2025-09-14 21:31:43 +05:30
session.vim Switch to LSP for mypy 2024-03-28 19:36:07 +05:30
setup.py macOS: Switch to Tahoe style application icon 2026-04-18 13:28:22 +05:30
shell.nix Update shell.nix 2026-03-23 17:26:53 -04:00
staticcheck.conf
test.py
update-on-ox Allow turning off stripping in update-on-ox 2024-08-18 15:30:38 +05:30

= kitty - the fast, feature-rich, cross-platform, GPU based terminal

If you live in the terminal, *kitty* is made for **you**!

See https://sw.kovidgoyal.net/kitty/[the kitty website].

image:https://github.com/kovidgoyal/kitty/workflows/CI/badge.svg["Build status", link="https://github.com/kovidgoyal/kitty/actions?query=workflow%3ACI"]

https://sw.kovidgoyal.net/kitty/faq/[Frequently Asked Questions]

To ask other questions about kitty usage, use either the https://github.com/kovidgoyal/kitty/discussions/[discussions on GitHub] or the
https://www.reddit.com/r/KittyTerminal[Reddit community]

Packaging status in various repositories:

image:https://repology.org/badge/vertical-allrepos/kitty-terminal.svg?columns=3&header=kitty["Packaging status", link="https://repology.org/project/kitty-terminal/versions"]