changelog: updates to “grapheme shaping”

This commit is contained in:
Daniel Eklöf 2021-06-24 14:04:08 +02:00
parent 415ecfc6fa
commit f19797a5af
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -39,14 +39,14 @@ browser, viewer or editor).
Grapheme cluster segmentation is the art of splitting up text into
grapheme clusters, where a cluster may consist of more than one
Unicode codepoint. For example, 🙂 is a single codepoint, while 👩🏽‍🚀
consists of 5 codepoints (_Woman_ + _Medium skin tone_ + _Zero width
consists of 4 codepoints (_Woman_ + _Medium skin tone_ + _Zero width
joiner_ + _Rocket_). The goal is to _cluster_ codepoints belonging to
the same grapheme in the same cell in the terminal.
Previous versions of foot implemented a simple grapheme cluster
segmentation technique that **only** handled zero-width
codepoints. This allowed us to cluster composed characters (e.g. q́ -
_q_ + _COMBINING ACUTE ACCENT_).
codepoints. This allowed us to cluster composed characters, like q́
(_q_ + _COMBINING ACUTE ACCENT_).
Once we have a grapheme cluster, we need to _shape_ it.
@ -72,7 +72,7 @@ For full support, the following is required:
This feature is _experimental_ mostly due to the “wcwidth” problem;
how many cells should foot allocate for a grapheme cluster? While the
answer may seem simple, the problem is that, whatever the answer is,
the client application **must** have come up with the **same**
the client application **must** come up with the **same**
answer. Otherwise we get cursor synchronization issues.
In this release, foot simply adds together the `wcwidth()` of all
@ -80,6 +80,11 @@ codepoints in the grapheme cluster. This is equivalent to running
`wcswidth()` on the entire cluster. **This is likely to change in the
future**.
Finally, note that grapheme shaping is not the same thing as text (or
text run) shaping. In this version, foot only shapes individual
graphemes, not entire text runs. That means e.g. ligatures are **not**
supported.
### Added