aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2020-05-19 18:46:27 +0300
committerEli Zaretskii2020-05-19 18:46:27 +0300
commit4b9fbdb5a713745dfdb13042e33ba2345e6860e1 (patch)
treee32b66e0586a0616597345b80f8dee6b14c27eba
parent03d44acfdda30cf355736de7442cdf2f1a1ba97e (diff)
downloademacs-4b9fbdb5a713745dfdb13042e33ba2345e6860e1.tar.gz
emacs-4b9fbdb5a713745dfdb13042e33ba2345e6860e1.zip
; Update TODO item about ligature support
* etc/TODO: Add the todo item for moving cursor "inside" a ligature.
-rw-r--r--etc/TODO31
1 files changed, 31 insertions, 0 deletions
diff --git a/etc/TODO b/etc/TODO
index 20262a77e97..f983fa27d33 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -264,6 +264,37 @@ of the mode line.
264The prettify-symbols-mode should be deprecated once ligature support 264The prettify-symbols-mode should be deprecated once ligature support
265is in place. 265is in place.
266 266
267A related, but somewhat independent, feature is being able to move the
268cursor "into a ligature", whereby cursor motion commands shows some
269pseudo-cursor on some part of a ligature. For example, if "ffi" is
270displayed as a ligature, then moving by one buffer position should
271show the middle part of the ligature's glyph similar to the cursor
272display: some special background and perhaps also a special
273foreground. There are two possible ways of figuring out the offset at
274which to display the pseudo-cursor:
275
276 . Arbitrarily divide the ligature's glyph width W into N parts,
277 where N is the number of codepoints composed into the ligature, then
278 move that pseudo-cursor by W/N pixels each time a cursor-motion
279 command is invoked;
280 . Use the font information. For example, HarfBuzz has the
281 hb_ot_layout_get_ligature_carets API for that purpose. However,
282 it could be that few fonts actually have that information recorded
283 in them, in which case the previous heuristics will be needed as
284 fallback.
285
286One subtle issue needs to be resolved to have this feature of
287"sub-glyph" cursor movement inside composed characters. The way Emacs
288currently displays the default block cursor is by simply redrawing the
289glyph at point in reverse video. So Emacs currently doesn't have a
290way of displaying a cursor that "covers" only part of a glyph. To
291make this happen, the display code will probably need to be changed to
292draw the cursor as part of drawing the foreground and/or background of
293the corresponding glyph, which is against the current flow of the
294display code: it generally first completely draws the background and
295foreground of the entire text that needs to be redrawn, and only then
296draws the cursor where it should be placed.
297
267** Support for Stylistic Sets 298** Support for Stylistic Sets
268This will allow using "alternate glyphs" supported by modern fonts. 299This will allow using "alternate glyphs" supported by modern fonts.
269For an overview of this feature, see 300For an overview of this feature, see