FYI - This bug appears to be fixed in the Emacs 23 pretest (22.2.91). Thanks very much. > From: Drew Adams Sent: Thursday, August 07, 2008 10:38 AM > > 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'?)