[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#43148: 27.1; Widget text seems to disappear when building with Cairo
From: |
YAMAMOTO Mitsuharu |
Subject: |
bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw |
Date: |
Sat, 05 Dec 2020 15:51:30 +0900 |
User-agent: |
Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (Gojō) APEL/10.8 EasyPG/1.0.0 Emacs/26.3 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) |
On Fri, 04 Dec 2020 18:28:24 +0900,
tastytea wrote:
>
> [1 <text/plain; UTF-8 (quoted-printable)>]
> On 2020-12-04 17:41+0900 YAMAMOTO Mitsuharu
> <mituharu@math.s.chiba-u.ac.jp> wrote:
>
> > On Thu, 03 Dec 2020 17:18:15 +0900,
> > tastytea wrote:
> > >
> > > On 2020-12-03 11:13+0900 YAMAMOTO Mitsuharu
> > > <mituharu@math.s.chiba-u.ac.jp> wrote:
> > >
> > > > On Tue, 01 Dec 2020 22:10:32 +0900,
> > > > tastytea wrote:
> > > > >
> > > > > On 2020-11-28 17:22+0900 YAMAMOTO Mitsuharu
> > > > > <mituharu@math.s.chiba-u.ac.jp> wrote:
> > > > >
> > > > > > On Wed, 25 Nov 2020 11:30:07 +0900,
> > > > > > Basil L. Contovounesios wrote:
> > > > > > >
> > > > > > > Robert Pluim <rpluim@gmail.com> writes:
> > > > > > >
> > > > > > > >>>>>> On Tue, 01 Sep 2020 17:09:18 +0300, Eli Zaretskii
> > > > > > > >>>>>> <eliz@gnu.org> said:
> > > > > > > >
> > > > > > > > >> From: Pouar Dragon <pouar@pouar.net>
> > > > > > > > >> Date: Mon, 31 Aug 2020 21:34:46 -0500
> > > > > > > > >>
> > > > > > > > >> widgets when building with Xaw and Cairo seem to
> > > > > > > > >> have missing text, looking like this
> > > > > > > > >>
> > > > > > > > >> problem seems to go away when
> > > > > > > > >> 5f4e8e2e088de9fb76cb631077c6eddd3219f594 is
> > > > > > > > >> reverted
> > > > > > > >
> > > > > > > > Eli> Thanks. I hope Yamamoto-san will be able to
> > > > > > > > Eli> take a look at this.
> > > > > > > >
> > > > > > > > Putting on my 'let's simplify' hat, is this really a
> > > > > > > > combination we want to spend time on? Lucid + Xaw + Cairo
> > > > > > > > is decidedly non-mainstream (Iʼm surprised it even
> > > > > > > > builds).
> > > > > > >
> > > > > > > FWIW, I've been happily using Lucid + Xaw3D for several
> > > > > > > years, and Cairo ever since it became stable in Emacs 27
> > > > > > > and the default configuration in Emacs 28.
> > > > > > >
> > > > > > > I usually have menu-bar-mode off, but like other reports in
> > > > > > > this thread, the menus look fine when I do open them, e.g.
> > > > > > > after 'emacs -Q'.
> > > > > > >
> > > > > > > Could the issue depend on e.g. the version of Cairo? (I
> > > > > > > seem to have an older version than the OP.)
> > > > > >
> > > > > > Possibly. The OP seems to use cairo 1.17.3, which is not a
> > > > > > release version (the latest is 1.16.0) and even not the
> > > > > > snapshot one (the latest is 1.17.2 according to
> > > > > > https://cairographics.org).
> > > > >
> > > > > I experience the same issue as the OP with lucid and cairo
> > > > > 1.16.0, with and without xaw3d, on Gentoo Linux. The problem
> > > > > goes away if I disable cairo.
> > > > > The same happens with 28.0.50, commit
> > > > > 1a3aa6043a51e5bb4007889dd7dcabb55dc44132.
> > > >
> > > > So, only digits are shown with "$ emacs -Q" ?
> > >
> > > Yes, exactly like the screenshot in the first message.
> > >
> > > > Could you show us the output of "$ fc-match -s sans" ?
> > > >
> > > > I tried the latest snapshot cairo 1.17.4 on XQuartz/macOS, and I
> > > > don't see any problems. On my side, "$ fc-match -s sans" reports
> > > > Arial Unicode.ttf at the first line.
> > >
> > > The list is huge, are the first 10 lines enough?
> > >
> > > SourceSansPro-Regular.otf: "Source Sans Pro" "Regular"
> > > NotoColorEmoji.ttf: "Noto Color Emoji" "Regular"
> > > LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
> > > DejaVuSans.ttf: "DejaVu Sans" "Book"
> > > DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
> > > DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
> > > DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
> > > luxisr.ttf: "Luxi Sans" "Regular"
> > > l048013t.pfa: "Luxi Sans" "Regular"
> > > n019003l.pfb: "Nimbus Sans L" "Regular"
> >
> > Thanks. I conjectured Noto Color Emoji, which contains digit glyphs
> > but not for letter ones, would come first. But that is not the case.
> > I don't know why Source Sans Pro is not used then (libotf is for
> > handling OTF features and not necessary just for displaying).
> >
> > Anyway, could you try if the following patch works?
>
> With the patch I get rectangles instead of letters.
>
> I removed Noto Color Emoji from my font configuration in
> ~/.config/fontconfig/fonts.conf and that did the trick. The menus are
> showing text now with and without the patch. But I have no idea why,
> all other programs work fine with that configuration:
I could reproduce the problem with your configuration.
Could you try the patch below?
YAMAMOTO Mitsuharu
mituharu@math.s.chiba-u.ac.jp
diff --git a/lwlib/lwlib-utils.c b/lwlib/lwlib-utils.c
index f15cb603a8..2b3aa55c3e 100644
--- a/lwlib/lwlib-utils.c
+++ b/lwlib/lwlib-utils.c
@@ -148,6 +148,7 @@ XtWidgetBeingDestroyedP (Widget widget)
crxft_font_open_name (Display *dpy, int screen, const char *name)
{
XftFont *pub = NULL;
+ FcPattern *match = NULL;
FcPattern *pattern = FcNameParse ((FcChar8 *) name);
if (pattern)
{
@@ -162,12 +163,18 @@ crxft_font_open_name (Display *dpy, int screen, const
char *name)
FcPatternAddDouble (pattern, FC_DPI, dpi);
}
FcDefaultSubstitute (pattern);
+ FcResult result;
+ match = FcFontMatch (NULL, pattern, &result);
+ FcPatternDestroy (pattern);
+ }
+ if (match)
+ {
cairo_font_face_t *font_face
- = cairo_ft_font_face_create_for_pattern (pattern);
+ = cairo_ft_font_face_create_for_pattern (match);
if (font_face)
{
double pixel_size;
- if ((FcPatternGetDouble (pattern, FC_PIXEL_SIZE, 0, &pixel_size)
+ if ((FcPatternGetDouble (match, FC_PIXEL_SIZE, 0, &pixel_size)
!= FcResultMatch)
|| pixel_size < 1)
pixel_size = 10;
@@ -177,7 +184,7 @@ crxft_font_open_name (Display *dpy, int screen, const char
*name)
cairo_matrix_init_scale (&font_matrix, pixel_size, pixel_size);
cairo_matrix_init_identity (&ctm);
cairo_font_options_t *options = cairo_font_options_create ();
- cairo_ft_font_options_substitute (options, pattern);
+ cairo_ft_font_options_substitute (options, match);
pub->scaled_font = cairo_scaled_font_create (font_face, &font_matrix,
&ctm, options);
cairo_font_face_destroy (font_face);
@@ -190,7 +197,7 @@ crxft_font_open_name (Display *dpy, int screen, const char
*name)
pub->height = lround (extents.height);
pub->max_advance_width = lround (extents.max_x_advance);
}
- FcPatternDestroy (pattern);
+ FcPatternDestroy (match);
}
if (pub && pub->height <= 0)
{
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, (continued)
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, YAMAMOTO Mitsuharu, 2020/12/02
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, tastytea, 2020/12/03
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, YAMAMOTO Mitsuharu, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, tastytea, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, Robert Pluim, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, tastytea, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, Robert Pluim, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, tastytea, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, Robert Pluim, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, tastytea, 2020/12/04
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw,
YAMAMOTO Mitsuharu <=
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, tastytea, 2020/12/05
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, YAMAMOTO Mitsuharu, 2020/12/06
- bug#43148: 27.1; Widget text seems to disappear when building with Cairo and Xaw, Eli Zaretskii, 2020/12/06