bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#119: modify-frame-parameters in Emacs 23 for fonts


From: Drew Adams
Subject: bug#119: modify-frame-parameters in Emacs 23 for fonts
Date: Thu, 7 Aug 2008 10:38:04 -0700

This bug is marked fixed, but it has not been fixed.
Jason marked it as fixed on 2008-05-08, with this note:

  I've marked this as fixed, since the bug reported will
  be fixed when font-backend is merged.
  I will not close it at this time though, as valid points
  about documentation were raised.

Then, on 2008-06-12, I received a mail saying that it was
closed. In any case, it is *not* fixed - I see the same
thing in this recent build:

GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600)
 of 2008-08-01 on LENNART-69DE564
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt --cflags
 -Ic:/g/include -fno-crossjumping'

There are two things that might be the problem:

(1) `modify-frame-parameters' changes the `font' parameter behind your
back from the value you provide `modify-frame-parameters':

(modify-frame-parameters frame
  (list (cons 'font "-outline-Lucida Console-normal-normal-\
normal-mono-15-*-*-*-c-*-iso8859-1")))

The `font' frame parameter is then:

"-outline-Lucida Console-normal-normal-normal-mono-15-\
*-*-*-c-*-fontset-auto8"

IOW, iso8859-1 gets replaced by fontset-auto8.

(2) `x-list-fonts' returns nil when passed such a font (i.e. with
fontset-auto8).

This breaks my code. Though the frame and the font appear normal,
`x-list-fonts' does not recognize such a font. My code changes the
font name to use a different size (e.g. changes 15 to 14), but it
checks that `x-list-fonts' recognizes the font name before trying to
use it. And `x-list-fonts' does not recognize the name (with
"fontset-auto8") that `modify-frame-parameters' establishes behind the
scene.

The font that I provide to `modify-frame-parameters' is recognized by
`x-list-fonts', and it has the same appearance, but it never appears
as the frame parameter in this context because
`modify-frame-parameters' substitutes a different name.


Below is the pertinent part of the original bug report. The symptom is
the same, but the font that `modify-frame-parameters' substitutes is
slightly different.

Back in April, it substituted: 
"-outline-lucida console-normal-roman-normal-mono-15-\
*-*-*-*-*-fontset-startup"

Now it substitutes:
"-outline-Lucida Console-normal-normal-normal-mono-15-\
*-*-*-c-*-fontset-auto8"

Neither is recognized by `x-list-fonts'.

--------8<---------2008-04-05 report -------------------

(frame-parameter nil 'font) ->
"-*-Lucida Console-normal-r-*-*-14-*-96-96-c-*-iso8859-1"

(modify-frame-parameters
 nil
 (list
  (cons 
   'font
   "-*-Lucida Console-normal-r-*-*-15-*-96-96-c-*-iso8859-1")))

(frame-parameter nil 'font) ->
"-outline-lucida console-normal-roman-normal-mono-15-*-*-*-*-*-fontset-startup"

What's that about? In Emacs 20, 21, and 22, the result is just the font I
specified.

I have code that zooms frames (font size). I change just the point size in the
font spec, using `x-decompose-font-name' and `x-compose-font-name'. I check that
the result is a legitimate font using `x-list-fonts'. If not, I increase or
decrease the increment until I find the font that works with the closest size.

[Yes, I know there are other ways to adjust font size, but I've found that this
method is flexible for users and provides certain benefits.]

My code no longer works without change, because after one call to
`modify-frame-parameters' the font is no longer something recognized by
`x-list-fonts'. I can comment out the part that iterates until it finds a size
that works (recognized by `x-list-fonts'). That works, but I'm still curious
about this. (Is there perhaps a bug in `x-list-fonts' or in
`modify-frame-parameters'?)







reply via email to

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