Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Impossible to render certain Chinese fonts at low pixel size but others work fine #3934

Open
ctrlcctrlv opened this issue Sep 19, 2019 · 1 comment

Comments

@ctrlcctrlv
Copy link
Member

By impossible, I mean the computer freezes, not it can't be doneI-perf, not I-crash, in tag terms. The more glyphs that are on the screen, the slower it renders.

I discovered this bug while going through a collection of Chinese fonts I found, hitting «Encoding→Compact» and scrolling.

Many fonts in the collection are affected. Among the affected fonts is 蒙纳繁版黑.otf (CHei3HK-Bold-Roman).

I'm still working out what the problem is; whatever it is, it's deep in the system. A hint is that if I kill FontForge in GDB, the window will still render eventually, meaning it seems to be waiting on Xorg to respond.

Here's a traceback:

0x0000155553b22628 in poll () from /usr/lib/libc.so.6
(gdb) bt
#0  0x0000155553b22628 in poll () at /usr/lib/libc.so.6
#1  0x00001555520f2630 in  () at /usr/lib/libxcb.so.1
#2  0x00001555520f2d21 in  () at /usr/lib/libxcb.so.1
#3  0x00001555520f2dae in xcb_writev () at /usr/lib/libxcb.so.1
#4  0x000015555269ecdf in _XSend () at /usr/lib/libX11.so.6
#5  0x00001555520cc7d9 in XRenderAddGlyphs () at /usr/lib/libXrender.so.1
#6  0x0000155553e1291a in  () at /usr/lib/libcairo.so.2
#7  0x0000155553df48c2 in  () at /usr/lib/libcairo.so.2
#8  0x0000155553df4df7 in  () at /usr/lib/libcairo.so.2
#9  0x0000155553d9c5c1 in  () at /usr/lib/libcairo.so.2
#10 0x0000155553e17160 in  () at /usr/lib/libcairo.so.2
#11 0x0000155553dee6c9 in  () at /usr/lib/libcairo.so.2
#12 0x0000155553da6082 in  () at /usr/lib/libcairo.so.2
#13 0x0000155553dfb342 in cairo_show_glyphs () at /usr/lib/libcairo.so.2
#14 0x000015555401e6e4 in  () at /usr/lib/libpangocairo-1.0.so.0
#15 0x000015555401eb5f in  () at /usr/lib/libpangocairo-1.0.so.0
#16 0x0000155553fd8e3b in pango_renderer_draw_glyphs () at /usr/lib/libpango-1.0.so.0
#17 0x000015555401aafa in pango_cairo_show_glyph_string () at /usr/lib/libpangocairo-1.0.so.0
#18 0x0000555555772db3 in _GGDKDraw_MyCairoRenderLayout
    (cc=0x555555aaf450, fg=<optimized out>, layout=<optimized out>, x=1203, y=474)
    at gdraw/ggdkcdraw.c:230
#19 0x00005555557729f1 in GGDKDrawDoText8
    (w=0x555555d05450, x=1203, y=474, text=0x7fffffffc430 "獑", cnt=-1, col=2236962, drawit=tf_drawit, arg=0x7fffffffc358) at gdraw/ggdkcdraw.c:1259
--Type <RET> for more, q to quit, c to continue without paging--
#20 0x000055555572e7d8 in GDrawDrawText8
    (gw=0x7fffffff9c08, x=1, y=-1, text=0x155553b22628 <poll+24> "H=", cnt=1436603336, col=0)
    at gdraw/gdrawtxt.c:125
#21 0x000055555566da0a in FVExpose
    (fv=<optimized out>, pixmap=<optimized out>, event=<optimized out>)
    at fontforgeexe/fontview.c:6005
#22 0x000055555566da0a in v_e_h (gw=<optimized out>, event=<optimized out>)
    at fontforgeexe/fontview.c:6748
#23 0x000055555572a7b2 in _GWidget_Container_eh (gw=0x555555d05450, event=0x7fffffffc7b0)
    at gdraw/gcontainer.c:281
#24 0x0000555555737494 in _GGDKDraw_CallEHChecked (gw=<optimized out>, event=0x7, eh=
    0xfffffffffffffdfc) at gdraw/ggdkdraw.c:323
#25 0x0000555555737494 in _GGDKDraw_DispatchEvent
    (event=<optimized out>, data=<optimized out>) at gdraw/ggdkdraw.c:1221
#26 0x00001555542cf8b4 in  () at /usr/lib/libgdk-3.so.0
#27 0x00001555542c2142 in  () at /usr/lib/libgdk-3.so.0
#28 0x00001555542c20bc in  () at /usr/lib/libgdk-3.so.0
#29 0x00001555542c1b2f in  () at /usr/lib/libgdk-3.so.0
#30 0x00001555542c1cfd in  () at /usr/lib/libgdk-3.so.0
#31 0x0000155553d3eb4a in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#32 0x0000155553d3f7f0 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#33 0x00001555542cbad0 in  () at /usr/lib/libgdk-3.so.0
#34 0x00001555542da35c in  () at /usr/lib/libgdk-3.so.0
#35 0x0000155553c5fa74 in  () at /usr/lib/libglib-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#36 0x0000155553c6027f in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#37 0x0000155553c621c1 in  () at /usr/lib/libglib-2.0.so.0
#38 0x0000155553c62201 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#39 0x000055555573a4e6 in GGDKDrawEventLoop (gdisp=0x555555a69e90) at gdraw/ggdkdraw.c:2187
#40 0x00005555557084f8 in fontforge_main (argc=<optimized out>, argv=<optimized out>)
    at fontforgeexe/startui.c:1416
#41 0x0000155553a57ee3 in __libc_start_main () at /usr/lib/libc.so.6
#42 0x00005555555aba0e in _start ()
@ctrlcctrlv
Copy link
Member Author

By the way, here's an absolutely bizarre hint. If I go «Ctrl-A», then Hints menu, Clear Hints, in the FontView, and wait for that to happen, scrolling becomes instant.

This collection is really old, ©2005, so I'm going to just share an affected font and let the chips fall where they may. If we solve this I'll remove it.

蒙纳简版黑.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant