Set use_system_wcwidth to no by default

I am tired of seeing the endless bug reports from people running on
systems with outdated wcwidth() implementations.
This commit is contained in:
Kovid Goyal 2017-12-09 10:53:13 +05:30
parent 111c7fa57c
commit f223cd4b56
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 24 additions and 2 deletions

View File

@ -388,6 +388,28 @@ without needing to install all of kitty.
This applies to creating packages for kitty for macOS package managers such as
brew or MacPorts as well.
== Frequently Asked Questions
=== Some special symbols are rendered small/truncated in kitty?
The number of cells a unicode character takes up are controlled by the
`wcwidth()` system function. If wcwidth() returns 2 then kitty will render the
character in two cells, otherwise it will render it in one cell. Often the
system `wcwidth()` is old/outdated. You can use the `use_system_width=no`
setting in your kitty.conf to workaround this. But note that it might cause
other issues, since now kitty and the programs running inside it may not agree
on how wide characters should be. When a symbol does not fit, it will either be
rescaled to be smaller or truncated (depending on how much extra space it
needs). This is often different from other terminal which just let the
character overflow into neighboring cells, leading to ugly artifacts.
Additionally, some things like powerline use square icons via private use
unicode codepoints that are single width. The correct solution for this is to
use either use different icons that are not square, or to use a font that
defines ligatures with the space character for these symbols. See #182 for a
discussion of this approach.
== A tribute
While over the decades I am sure many people have contributed to the

View File

@ -155,8 +155,8 @@ open_url_with default
# problem is that system implementations often are based on outdated unicode
# standards and get the width of many characters, such as emoji, wrong. So if
# you are using kitty with programs that have their own up-to-date wcwidth()
# implementation, set this option to no.
use_system_wcwidth yes
# implementation, set this option to no, otherwise set it to yes.
use_system_wcwidth no
# The value of the TERM environment variable to set
term xterm-kitty