Subject: Re: bug#28535: 25.2; Composed charater colon slows down Emacs performance while you in buffer with this character

From: Oleksandr Gavenko <[email-masked]>
Date: Thu, 21 Sep 2017 19:12:25 +0300

On Thu, Sep 21, 2017 at 1:50 PM, Eli Zaretskii <[email-masked]> wrote:

> > From: Oleksandr Gavenko <[email-masked]>
> > Date: Thu, 21 Sep 2017 13:35:28 +0300
> >
> > With composed two colon characters Emacs become extremely slow.
> >
> > I figured that out when enabled cfengin3-mode and two colons :: was
> shown as
> > single composed character.
> >
> > With runemacs -Q it slows down when you cross that character by moving
> > pointer.
>
> Please provide a simple reproduction recipe, for reference, if you
> can.
>
> Run native W32 Emacs 25.2.1.

With C-x 8 RET 2237 RET I place "problematic" character into buffer and
Emacs becomes to have problem with responsiveness (when I move cursor,
especially if it cross problematic character).

Possibly it is a problem with redisplaying what is on screen.

That is not a single character that cause problem. I detect a lot of them
inside buffer:

M-x describe-input-method RET TeX RET

It seems that any which isn't same width as "Courier New" - cause a problem.

> >   The component character(s) are displayed by these fonts (glyph codes):
> >    ∷: uniscribe:-outline-MS Gothic-normal-normal-normal-
> mono-13-*-*-*-c-*-gb2312.1980-0 (#x49D)
> >   See the variable ‘reference-point-alist’ for the meaning of the rule.
>
> MS Gothic is known as a trouble-maker in this context.  Can you try
> installing Symbola?  Doing that might eliminate the problem.  Emacs
> will automatically use Symbola, if installed, for such characters.
>
> Another possible remedy is to customize inhibit-compacting-font-caches
> to a non-nil value.
>

With:

(setq inhibit-compacting-font-caches t)

redisplay lags was disappeared on cursor moves.

I searched for suggested font and before figured out how to install fonts
on Windows I looked to charmap.exe and found that I already had Dejavu Sans
Mono which covers special characters.

I ended with adjusting my previous settings ("symbol" part) to:

(cond
 ((eq window-system 'x)
  (if (and (fboundp 'find-font) (find-font (font-spec :name "DejaVu Sans
Mono-11:weight=normal")))
      (set-frame-font "DejaVu Sans Mono-11")
    (set-frame-font "7x14")))
 ((eq window-system 'w32)
  (set-frame-font "Courier New-10:antialias=none")
  (set-fontset-font nil 'cyrillic "Courier New-10:antialias=none")
  (set-fontset-font nil 'greek "Courier New-10:antialias=none")
  (set-fontset-font nil 'phonetic "Courier New-10:antialias=none")
  (set-fontset-font nil 'symbol "DejaVu Sans Mono-10:antialias=none")))

That is better then looking to ugly MS Gothic font.

Is it possible to adjust font choosing preference to try well known fonts
(like DejaVu) before falling to ugly and buggy MS Gothic? So other Emacs
users will have less problems on Windows .