Screenshot: https://0x0.st/Hwru.jpg
In this Screenshot you see the frames of two Emacs processes. The left frame has been
started by emacs -q, while the right frame has been started by emacs -Q. So no
personal configuration (besides .Xresources) is used. The version is Emacs 29.1.,
X11, Linux.
The left frame shows the font I'd like to use, and used since many years with Emacs
already. But the left frame also shows a "distorted" display of example characters.
The important character is …. It is clearly visible in this screenshot, that Emacs
changes the font (glyph?) to display this character if the character needs to be
rendered in bold. (similar things happen to other characters or itallic)
Each frame has 3 windows. The top window shows an org buffer with various
characters.
The second from top window is the output of what-cursor-position, of the normal
rendered character.
The bottom window shows the output of what-cursor-position with a bold character
where Emacs changed the font to display this character. (This lines are much wider
and taller, even though they contain the same number of monospaced letters.)
Emacs did not had this behavior of changing fonts to display certain characters in
versions v28.x and older (at least I never noticed it). I did not change OS installed
packages, fonts, setting and stuff, so I'm pretty sure it's an Emacs v28.x to v29.1
related change.
What can I do to make Emacs behave like in older versions, i.e. not changing fonts to
display those characters?
I tried various things (i.e. disabling HarfBuzz), but I am clueless what I need to
configure.
I know that the problematic setting is a *font: line in my .Xresources file. But
finding a suitable font was some time consuming frustrating process, because I didn't
like other fonts for various (mostly readability or size) reasons.
TL;DR: Question: how can I make Emacs v29.1 to not change fonts to display certain
characters?
That's is a good idea! Despite what all others say. I'm doing this since years with my Linux box(es).
But you need to know, that self compiled programms should be stored below the filesystem tree
/usr/local/.There is a tool called
stow, it has a package in most Linux distributions.Install
stowinto host and VM and create a directory/usr/local/stow/in both (host an VM).When compiling Emacs or other programs use the
--prefixoption ofconfigure. E.g.cd emacs-src; ./configure --prefix=/usr/local/stow/emacs-v29.1. Then compile Emacs and install it in the virtual machine. After that, tar the folder/usr/local/stow/emacs-v29.1and unpack it onto the host into the same directory. Then change dir into/usr/local/stowand runsudo stow emacs-v29.1. Maybe you need to install some libraries onto the host, useldd /usr/local/bin/emacsto see, what libs you need. Then you are ready to use emacs. It is possible to have multiple versions of emacs installed and only one needs to be "activated" via stow.