A fast, lightweight and minimalistic Wayland terminal emulator
Find a file
Daniel Eklöf 858a0d9906
font: initial support for double-width *and* color emoji glyphs
Fonts are now loaded with FT_LOAD_COLOR and we recognize and support
the FT_PIXEL_MODE_BGRA pixel mode.

This is mapped to a CAIRO_FORMAT_ARGB32 surface, that is blitted
as-is (instead of used as a mask like we do for gray and mono glyphs).

Furthermore, since many emojis are double-width, we add initial
support for double-width glyphs.

These are assumed to always be utf8. When PRINT:ing an utf8 character,
we check its width, and add empty "spacer" cells after the cell with
the multi-column glyph.

When rendering, we render the columns in each row backwards. This
ensures the spacer cells get cleared *before* we render the glyph (so
that we don't end up erasing part of the glyph).

Finally, emoji fonts are usually bitmap fonts with *large*
glyphs. These aren't automatically scaled down. I.e. even if we
request a glyph of 13 pixels, we might end up getting a 100px glyph.

To handle this, fontconfig must be configured to scale bitmap
fonts. When it is, we can look at the 'scalable' and 'pixelsizefixup'
properties, and use these to scale the rendered glyph.
2019-07-31 18:03:35 +02:00
.gitignore initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
base64.c base64: implement encode() 2019-07-19 14:19:42 +02:00
base64.h base64: implement encode() 2019-07-19 14:19:42 +02:00
commands.c render: add render_refresh() 2019-07-24 20:11:41 +02:00
commands.h scrollback: initial support for mouse scrolling 2019-07-10 09:15:37 +02:00
config.c config: remove commented out code 2019-07-30 22:03:07 +02:00
config.h font: add support for fallback fonts 2019-07-30 18:04:28 +02:00
csi.c vt: remove almost all abort() calls 2019-07-30 21:42:46 +02:00
csi.h performance improvements 2019-07-07 16:32:18 +02:00
font.c font: initial support for double-width *and* color emoji glyphs 2019-07-31 18:03:35 +02:00
font.h font: initial support for double-width *and* color emoji glyphs 2019-07-31 18:03:35 +02:00
foot.desktop Add .desktop file 2019-07-15 15:29:17 +02:00
foot.info csi: implement \E[Z - back tab 2019-07-22 20:33:50 +02:00
footrc footrc: add 'workers' 2019-07-30 22:03:13 +02:00
grid.c render: add a 'clean' bit to each cell; only render cells that aren't clean 2019-07-30 18:03:03 +02:00
grid.h grid: prefetch cells in grid_row() 2019-07-10 19:52:30 +02:00
input.c input: fix 'comparison ... is always true' warning (clang) 2019-07-30 20:27:19 +02:00
input.h input: mouse events 2019-07-05 10:44:57 +02:00
keymap.h keymap: fix sequences for PageDown 2019-07-22 18:45:14 +02:00
LICENSE add license 2019-06-12 20:10:12 +02:00
log.c log: syslog: tag unused function arguments as unused 2019-07-30 21:50:08 +02:00
log.h initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
main.c font: initial support for double-width *and* color emoji glyphs 2019-07-31 18:03:35 +02:00
meson.build font: set FT load and render flags from FontConfig properties 2019-07-29 20:10:55 +02:00
osc.c osc: reduce flash interval to 50ms 2019-07-30 22:08:58 +02:00
osc.h ocs: renamed parameter size -> required_size in osc_ensure_size() 2019-07-19 09:56:00 +02:00
PKGBUILD font: load FreeType face, and set it's pixel sizes 2019-07-28 12:09:22 +02:00
render.c font: initial support for double-width *and* color emoji glyphs 2019-07-31 18:03:35 +02:00
render.h wip: initial multithreaded renderer 2019-07-29 20:13:26 +02:00
selection.c selection: add a couple of word-breaking characters 2019-07-30 21:57:48 +02:00
selection.h selection: add text_from_clipboard() 2019-07-19 14:20:00 +02:00
shm.c wip: initial multithreaded renderer 2019-07-29 20:13:26 +02:00
shm.h wip: initial multithreaded renderer 2019-07-29 20:13:26 +02:00
slave.c main: allow user to override shell on the command line 2019-07-17 09:55:36 +02:00
slave.h main: allow user to override shell on the command line 2019-07-17 09:55:36 +02:00
terminal.c term: break out 'flash' to a separate 'term' function 2019-07-30 22:06:02 +02:00
terminal.h term: break out 'flash' to a separate 'term' function 2019-07-30 22:06:02 +02:00
tllist.h initial commit: maps an XDG toplevel window 2019-06-12 20:08:54 +02:00
tokenize.c slave: break out command line tokenizer 2019-07-17 09:46:45 +02:00
tokenize.h slave: break out command line tokenizer 2019-07-17 09:46:45 +02:00
vt.c font: initial support for double-width *and* color emoji glyphs 2019-07-31 18:03:35 +02:00
vt.h vt: add vt_to_slave() 2019-07-15 15:42:00 +02:00