1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-22 12:51:31 +03:00
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
Go to file
Wez Furlong c4d19afa75 adventures in shaping
This commit is a result of debugging a problem with a particular font
where a VS2 variation of a glyph produced incorrect shaping.

Further investigation showed that this was specific to using freetype
font functions and that switching to opentype functions produces the
correct shaping information in that case.

Further-further investigation showed that this difference in behavior
was really due to the font file being out of spec and freetype returning
unexpected data as a result.

This commit allows switching to using harfbuzz's own opentype font+face
(rather than freetype) and/or switching the freetype-based font to using
opentype font functions.  These two options don't yield equivalent
results in the wezterm integration: a couple of our shaping tests
fail due to the x-advances not being the same. Those can be drastically
different in some cases (eg: I seem to get 0 for certain bitmap strikes,
and for Roboto the value is off by a factor of about 1.5).

This is incomplete and not something I want to turn on by default at
the moment, but I don't want to lose this work, hence this commit.

refs: https://github.com/wez/wezterm/issues/2475
refs: https://github.com/harfbuzz/harfbuzz/issues/3806
2022-09-03 08:34:19 -07:00
.cargo build static on windows for static openssl linkage 2020-02-02 13:03:07 -08:00
.github ci: nth time's the charm for winget tag pr thing 2022-08-07 11:31:46 -07:00
assets update shell completion info 2022-09-01 08:39:11 -07:00
async_ossl Raise minimum Rust version to 1.51, de-vendor openssl on unix 2021-03-25 09:43:50 -07:00
base91 dyn everywhere 2019-06-08 21:28:11 -07:00
bidi bidi version bump for publish to crates.io 2022-08-01 18:38:44 -07:00
bintree Add SplitPane assignment 2022-05-21 21:09:11 -07:00
ci docs: CopyMode assignments now have their own individual pages 2022-08-21 11:05:56 -07:00
codec codec: bump version 2022-08-30 09:43:32 -07:00
color-types color types version bump for crates.io 2022-08-01 18:41:52 -07:00
config change text cursor to fa_lock when entering passwords 2022-09-02 09:00:28 -07:00
deps harfbuzz: revise build and bindings 2022-09-03 08:20:53 -07:00
docs change text cursor to fa_lock when entering passwords 2022-09-02 09:00:28 -07:00
env-bootstrap posix: prefer to resolve shell via the password database 2022-08-31 20:40:06 -07:00
filedescriptor Add missing license files 2022-08-17 07:19:12 -07:00
frecency char selector: track recently selected emoji and use frecency to show it 2022-08-31 22:56:58 -07:00
licenses macOS: bundle and use MetalANGLE to enable Metal rendering 2020-10-17 09:34:01 -07:00
lua-api-crates macos: report max_fps in ScreenInfo 2022-08-19 21:02:51 -07:00
luahelper cargo update 2022-08-21 08:51:16 -07:00
mux fix build on windows 2022-09-02 09:53:20 -07:00
procinfo Added winapi feature "shellapi" to procinfo 2022-06-23 09:08:05 -07:00
promise lua: add wezterm.time.call_after and wezterm.reload_configuration 2022-07-18 07:37:41 -07:00
pty change text cursor to fa_lock when entering passwords 2022-09-02 09:00:28 -07:00
rangeset rangeset: fix accidentally quadratic complexity 2022-07-24 12:48:02 -07:00
ratelim deps: migrate from ratelimit_meter -> governor 2022-06-07 22:55:01 -07:00
strip-ansi-escapes deps: structopt -> clap 3 2022-05-28 07:07:52 -07:00
sync-color-schemes new color scheme: poimandres 2022-08-30 18:02:14 -07:00
tabout Add missing license files 2022-08-17 07:19:12 -07:00
term move shape & quad caching to hang off Line appdata 2022-08-26 21:49:33 -07:00
termwiz Adjust render caching; switch to LFU caches from LRU 2022-08-28 10:28:26 -07:00
test-data adventures in shaping 2022-09-03 08:34:19 -07:00
umask Take care to restore the original umask 2021-01-07 09:20:13 -08:00
vtparse Add missing license files 2022-08-17 07:19:12 -07:00
wezterm improve error message in case wezterm-gui cannot be run 2022-08-27 15:58:14 -07:00
wezterm-client add Pane::get_metadata 2022-09-01 21:27:49 -07:00
wezterm-dynamic Add missing license files 2022-08-17 07:19:12 -07:00
wezterm-font adventures in shaping 2022-09-03 08:34:19 -07:00
wezterm-gui change text cursor to fa_lock when entering passwords 2022-09-02 09:00:28 -07:00
wezterm-gui-subcommands add wezterm ls-fonts --rasterize-ascii --text foo 2022-08-06 12:46:01 -07:00
wezterm-input-types win32: fix encoding of delete and backspace keys 2022-07-08 20:49:19 -07:00
wezterm-mux-server cargo update 2022-08-21 08:51:16 -07:00
wezterm-mux-server-impl mux: adjust window size after attach 2022-08-05 07:53:44 -07:00
wezterm-ssh ssh: add trace logging when we send a signal 2022-08-31 20:40:06 -07:00
wezterm-toast-notification deps: update zbus 2022-08-21 09:18:32 -07:00
window deps: xkbcommon-rs released 0.5 2022-09-02 09:25:20 -07:00
.cirrus.yml Ensure /run/sshd exists, explicitly set username in sshd fixture, add back use_privilege_mode no 2021-10-10 14:54:45 -07:00
.gitignore docs: CopyMode assignments now have their own individual pages 2022-08-21 11:05:56 -07:00
.gitmodules repoint to my freetype mirror 2021-02-03 21:56:30 -08:00
.rustfmt.toml encoding my preferred import grouping in the rustfmt config 2022-01-17 13:50:51 -07:00
Cargo.lock deps: xkbcommon-rs released 0.5 2022-09-02 09:25:20 -07:00
Cargo.toml cargo update 2022-08-21 08:51:16 -07:00
CONTRIBUTING.md Update rust by example url 2022-07-29 13:18:53 -07:00
get-deps don't recompile dependencies we've already got 2022-08-07 14:28:45 -07:00
LICENSE.md Bundle Symbols Nerd Font Mono 2022-01-16 16:04:35 -07:00
README-DISTRO-MAINTAINER.md add distro-defaults feature 2022-07-10 16:34:43 -07:00
README.md Add sponsor button to readme 2022-06-16 12:45:35 -07:00
wt-record fixup wt-record on darwin 2021-03-20 20:14:17 -07:00
wt-replay update record/play scripts for macos 2019-03-22 20:41:50 -07:00

Wez's Terminal

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

User facing docs and guide 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 a couple of channels for support:

  • You can use the GitHub issue tracker to see if someone else has a similar issue, or to file a new one.
  • Start or join a thread in our GitHub Discussions; if you have general questions or want to chat with other wezterm users, you're welcome here!
  • There is a Matrix room via Element.io for (potentially!) real time discussions.

The GitHub Discussions and Element/Gitter rooms are better suited for questions than bug reports, but don't be afraid to use whichever you are most comfortable using and we'll work it out.

Supporting the Project

If you use and like WezTerm, please consider sponsoring it: your support helps to cover the fees required to maintain the project and to validate the time spent working on it!

Sponsor WezTerm