1
1
mirror of https://github.com/wez/wezterm.git synced 2024-11-10 15:04:32 +03:00
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
Go to file
Wez Furlong a063d20cf0 wezterm: improve shaping of emoji
This is one of those massive time sinks that I almost regret...
As part of recent changes to dust-off the allsorts shaper, I noticed
that the harfbuzz shaper wasn't shaping as well as the allsorts one.

This commit:

* Adds emoji-test.txt, a text file you can `cat` to see how well
  the emoji are shaped and rendered.

* Fixes (or at least, improves) the column width calculation for
  combining sequences such as "deaf man" which was previously calculated
  at 3 cells in width when it should have just been 2 cells wide, which
  resulted in a weird "prismatic" effect during rendering where the
  glyph would be rendered with an extra RHS portion of the glyph across
  3 cells.

* Improved/simplified the clustering logic used to compute fallbacks.
  Previously we could end up with some wonky/disjoint sequence of
  undefined glyphs which wouldn't be successfully resolved from a
  fallback font.  We now make a better effort to consolidate runs of
  undefined glyphs for fallback.

* For sequences such as "woman with veil: dark skin tone" that occupy a
  single cell, the shaper may return 3 clusters with 3 glyphs in the
  case that the font doesn't fully support this grapheme.  At render
  time we'd just take the last glyph from that sequence and render it,
  resulting in eg: a female symbol in this particular case.  It is
  generally a bit more useful to show the first glyph in the sequence
  (eg: person with veil) rather than the gender or skin tone, so the
  renderer now checks for this kind of overlapping sequence and renders
  only the first glyph from the sequence.
2020-11-23 13:45:38 -08:00
.cargo build static on windows for static openssl linkage 2020-02-02 13:03:07 -08:00
.github More fun with actions-rs/toolchain 2020-11-17 12:03:24 -08:00
assets wezterm-font: bundle a last resort font 2020-11-22 16:12:20 -08:00
async_ossl fixup tls mux sessions 2020-10-04 21:47:12 -07:00
base91 dyn everywhere 2019-06-08 21:28:11 -07:00
bintree wezterm: improve pane resize logic 2020-09-27 16:07:08 -07:00
ci More fun with actions-rs/toolchain 2020-11-17 12:03:24 -08:00
codec Change cell api to avoid direct access to hyperlink/image 2020-10-11 13:12:46 -07:00
config wezterm-font: bundle a last resort font 2020-11-22 16:12:20 -08:00
deps deps: update bundled harfbuzz to 2.7.2 2020-11-23 08:43:53 -08:00
docs deps: update bundled harfbuzz to 2.7.2 2020-11-23 08:43:53 -08:00
env-bootstrap wezterm: add env bootstrap to mux server, too 2020-10-24 23:33:31 -07:00
filedescriptor fix filedescriptor::poll on macos 2020-09-10 13:58:14 -07:00
licenses macOS: bundle and use MetalANGLE to enable Metal rendering 2020-10-17 09:34:01 -07:00
luahelper deps: remove unused deps 2020-11-20 12:37:38 -08:00
mux wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
promise deps: remove unused deps 2020-11-20 12:37:38 -08:00
pty deps: normalize the lazy-static version 2020-11-13 08:15:35 -08:00
rangeset mux: reintroduce server side state to gate pushes 2020-01-10 08:56:27 -08:00
ratelim move ratelim to its own crate 2020-10-03 11:15:57 -07:00
strip-ansi-escapes move strip-ansi-escapes into its own crate 2020-10-03 11:15:57 -07:00
tabout Change cell api to avoid direct access to hyperlink/image 2020-10-11 13:12:46 -07:00
term wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
termwiz wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
test-data wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
tmux-cc tmux: attach control mode parser to terminal 2020-11-20 09:24:50 -08:00
umask Move server to its own wezterm-mux-server binary 2020-10-03 11:15:57 -07:00
vtparse avoid panic if someone cats a PNG to the terminal 2020-10-16 13:09:50 -07:00
wezterm wezterm: add wezterm set-working-directory 2020-11-13 09:27:14 -08:00
wezterm-client mux/wezterm: move Renderable into Pane 2020-11-20 09:24:56 -08:00
wezterm-font wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
wezterm-gui wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
wezterm-gui-subcommands wezterm: add --class option to specify window class 2020-11-13 08:15:35 -08:00
wezterm-mux-server mux/wezterm: move Renderable into Pane 2020-11-20 09:24:56 -08:00
window window: fix build when opengl is not enabled 2020-11-22 09:24:07 -08:00
.cirrus.yml ci: moar freebsd 2020-10-06 09:53:45 -07:00
.gitignore docs: add colorschemes + screenshots 2020-10-20 00:40:25 -07:00
.gitmodules fix CI: savannah is down, use a github mirror for freetype 2019-11-24 13:28:02 -08:00
.rustfmt.toml Make rustfmt happy about "async move" 2020-01-20 13:58:21 -08:00
Cargo.lock wezterm: improve shaping of emoji 2020-11-23 13:45:38 -08:00
Cargo.toml tmux: attach control mode parser to terminal 2020-11-20 09:24:50 -08:00
CONTRIBUTING.md Add get-deps script for installing dependencies 2018-02-25 09:24:56 -08:00
get-deps Don't hard-code architecture in debian package 2020-11-11 20:31:18 -08:00
LICENSE.md wezterm: bundle JetBrains Mono and Noto Color Emoji fonts 2020-09-29 22:05:18 -07:00
README.md docs: add a bit about contributing 2020-06-16 22:16:56 -07:00
wt-record make it a bit easier to consume wt-record 2020-06-12 08:51:15 -07:00
wt-replay update record/play scripts for macos 2019-03-22 20:41:50 -07:00

Wez's Terminal

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

User facing home page at: https://wezfurlong.org/wezterm/

Screenshot

Screenshot of wezterm on macOS, running vim

Installation

https://wezfurlong.org/wezterm/installation.html

Getting help

This is a spare time project, so please bear with me. There are two channels for support:

The Matrix/Gitter room is probably better suited to questions than it is to bug reports, but don't be afraid to use whichever you are most comfortable using and we'll work it out.