Thanks for the benchmarking function. Here are the results I get running it three times on a fresh start of Emacs on src/xdisp.c: with smart kerning: GCs: 2 Elapsed time: 14.546864 seconds GCs: 1 Elapsed time: 9.899920 seconds GCs: 1 Elapsed time: 9.880759 seconds without smart kerning GCs: 2 Elapsed time: 12.188979 seconds GCs: 0 Elapsed time: 7.264108 seconds GCs: 1 Elapsed time: 7.346031 seconds So it’s about a third slower. The difference is noticable. > Btw, why aren't digit characters 0-9 in the regexp you use in sm-safe-table? More generally, why not all of the ASCII characters are there? isn't smart kerning performed for them as well? Come to think about that, what about Latin non-ASCII characters like á etc.? The font I’m using, Commit Mono, only does smart kerning on a limited set of characters: https://github.com/eigilnikolajsen/commit-mono/blob/main/src/features/kern_smartkerning.fea commit-mono/src/features/kern_smartkerning.fea at main · eigilnikolajsen/commit-mono github.com > On Mar 15, 2024, at 2:46 AM, Eli Zaretskii wrote: > >> From: Stephen Molitor >> Date: Thu, 14 Mar 2024 17:10:37 -0500 >> >> Not that I’ve noticed. >> >> I mean maybe it does, but I haven’t noticed. I have a fast machine. Is there an easy way to measure? > > Yes, of course. Here's one example: > > (defun scroll-up-benchmark () > (interactive) > (let ((oldgc gcs-done) > (oldtime (float-time))) > (condition-case nil (while t (scroll-up) (redisplay)) > (error (message "GCs: %d Elapsed time: %f seconds" > (- gcs-done oldgc) (- (float-time) oldtime)))))) > > Run this on a large file (I use src/xdisp.c) with and without your > set-char-table-range customization, and compare the results. > > Btw, why aren't digit characters 0-9 in the regexp you use in > sm-safe-table? More generally, why not all of the ASCII characters > are there? isn't smart kerning performed for them as well? Come to > think about that, what about Latin non-ASCII characters like á etc.?