emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ligatures (was: Unify the Platforms: Cairo+FreeType+Harfbuzz Everywh


From: Eli Zaretskii
Subject: Re: Ligatures (was: Unify the Platforms: Cairo+FreeType+Harfbuzz Everywhere (except TTY))
Date: Mon, 18 May 2020 19:08:45 +0300

> Date: Sun, 17 May 2020 22:17:17 +0300
> From: Eli Zaretskii <address@hidden>
> Cc: address@hidden, address@hidden
> 
> > LibreOffice highlights sub-glyphs of ligatures correctly. I enter
> > "official", and it renders <o> <ffi> <c> <i> <a> <l>. I move the
> > cursor right twice, and it highlights precisely what it should, the
> > middle "f" of the ligature glyph.
> 
> We can do that in Emacs as well.  The information is there, we just
> need to use it.  For Latin ligatures that information will allow the
> display you describe.  Doing that for other scripts would be harder,
> and the results will be less one-to-one.

On second thought, I think I misunderstood you.  If the font that is
used shows "ffi" as a _single_ glyph ffi, and LibreOffice indeed
highlights parts of this glyph, then I'd like to know how it does
that, and how far does this capability extend.  I mean, what does it
do with ligatures like ae, displayed as æ -- does it highlight the
common vertical stroke for both parts?  And what about "st", displayed
as st -- this has a curved "hand" connecting s and t -- to which of the
2 does it belong for the purposes of highlighting?  There's also "hv"
displayed as ƕ, let alone "fs" displayed as ẞ and "fz" displayed as
ß.

IOW, I really don't think I understand how this could work even for
what you call "English ligatures".  Do you know how they do it?

The information I said we get from HarfBuzz is returned when HarfBuzz
produces a grapheme cluster from several font glyphs.  When the result
is a single font glyph, that information just says which of the
original codepoints are to be displayed as that single glyph, it
doesn't provide any sub-glyph information.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]