Subject: bug#40733: 28.0.50; Emacs locks up on paste (yank) of unicode characters

From: Robert Pluim <[email-masked]>
Date: Tue, 21 Apr 2020 15:19:08 +0200

>>>>> On Tue, 21 Apr 2020 07:19:56 -0500, Will Bush <[email-masked]> said:
    Will> I verified it several times. When I remove google-fonts, Firefox renders the
    Will> character fine and Emacs yanks it without issue. When I add google-fonts
    Will> back
    Will> Firefox doesn't render the character and Emacs yanking it lags like crazy.

Thatʼs interesting to know. Which font specifically does emacs end up
using for that character? Emacs ends up using 'Noto Sans CJK KR' for
me here. BTW, if you want to ignore that font, you can set
'face-ignored-fonts' to match it, and you won't have to uninstall it.

    Will> The google-fonts Nix expression is here:
    Will> https://github.com/NixOS/nixpkgs/blob/master/pkgs/data/fonts/google-fonts/default.nix

    Will> I tried Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.17) (A
    Will> version that just happens to be in nixpkgs) again to see what it would do
    Will> when
    Will> yanking that character with and without google-fonts installed.

    Will> With google-fonts installed it doesn't have latency issues, but it inserts
    Will> an
    Will> empty whitespace looking character (wider than a normal space). Without
    Will> google-fonts installed, it renders the character fine with no latency.

    Will> So I suspect even if there is an issue with google-fonts, there's still a
    Will> regression in Emacs since 26.3. I'll try newer versions of Emacs later to
    Will> try to
    Will> narrow the version gap between 26.3 and 28.0.50.

I donʼt think thereʼs much point in that: emacs-26 uses Xft for font
handling, emacs-27 uses Cairo+Harfbuzz[1]; theyʼre fundamentally doing
very different things, so I donʼt think this is caused by a single
identifiable change.

Robert

Footnotes:
[1]  Although you can still build it with Xft if you want, but I
     wouldnʼt recommend that, since it will crash once you start
     processing Emojis and other 'interesting' Unicode characters.