Re: [cairo] Color fonts



Another crash:

Paste this into gedit:

 ๐Ÿ‘ ๐Ÿ‘Ž ๐Ÿ‘Œ ๐Ÿ‘Š โœŠ โœŒ ๐Ÿ‘‹ โœ‹ ๐Ÿ‘ ๐Ÿ‘† ๐Ÿ‘‡ ๐Ÿ‘‰ ๐Ÿ‘ˆ ๐Ÿ™Œ ๐Ÿ™ โ˜ ๐Ÿ‘ ๐Ÿ’ช ๐Ÿ’… โฌ‡ โฌ… โžก โ†— โ†– โ†˜ โ†™ โ†” 
โ†• ๐Ÿ”„ โ—€ โ–ถ ๐Ÿ”ผ ๐Ÿ”ฝ โ†ฉ โ†ช โช โฉ โซ โฌ โคต โคด ๐Ÿ”€ ๐Ÿ” ๐Ÿ”‚ ๐Ÿ” ๐Ÿ”š ๐Ÿ”™ ๐Ÿ”› ๐Ÿ”œ ๐Ÿ”ƒ ๐Ÿ”บ ๐Ÿ”ป โฌ† 

and then select it


Pango:ERROR:pango-glyph-item.c:320:pango_glyph_item_iter_next_cluster:
assertion failed: (iter->end_char <= item->num_chars)


#0  0x00007fd51d29a68b in raise () at /lib64/libc.so.6
#1  0x00007fd51d29c417 in abort () at /lib64/libc.so.6
#2  0x00007fd51d8da26d in g_assertion_message () at /lib64/libglib-
2.0.so.0
#3  0x00007fd51d8da2fa in g_assertion_message_expr () at
/lib64/libglib-2.0.so.0
#4  0x00007fd51f178076 in  () at /lib64/libpango-1.0.so.0
#5  0x00007fd51f3b110f in pango_cairo_renderer_draw_glyph_item () at
/lib64/libpangocairo-1.0.so.0
(gdb) bt 300
#0  0x00007fd51d29a68b in raise () at /lib64/libc.so.6
#1  0x00007fd51d29c417 in abort () at /lib64/libc.so.6
#2  0x00007fd51d8da26d in g_assertion_message () at /lib64/libglib-
2.0.so.0
#3  0x00007fd51d8da2fa in g_assertion_message_expr () at
/lib64/libglib-2.0.so.0
#4  0x00007fd51f178076 in  () at /lib64/libpango-1.0.so.0
#5  0x00007fd51f3b110f in pango_cairo_renderer_draw_glyph_item () at
/lib64/libpangocairo-1.0.so.0
#6  0x00007fd51f184e1e in pango_renderer_draw_glyph_item () at
/lib64/libpango-1.0.so.0
#7  0x00007fd51f3b15fd in pango_cairo_show_glyph_item () at
/lib64/libpangocairo-1.0.so.0
#8  0x00007fd51fba7816 in gtk_text_renderer_draw_glyph_item
(renderer=0x39caad6040, text=0x39c9fe7c50 "๐Ÿ‘ ๐Ÿ‘Ž ๐Ÿ‘Œ ๐Ÿ‘Š โœŠ โœŒ ๐Ÿ‘‹ โœ‹ ๐Ÿ‘ ๐Ÿ‘† 
๐Ÿ‘‡ ๐Ÿ‘‰ ๐Ÿ‘ˆ ๐Ÿ™Œ ๐Ÿ™ โ˜ ๐Ÿ‘ ๐Ÿ’ช ๐Ÿ’… โฌ‡ โฌ… โžก โ†— โ†– โ†˜ โ†™ โ†” โ†• ๐Ÿ”„ โ—€ โ–ถ ๐Ÿ”ผ ๐Ÿ”ฝ โ†ฉ โ†ช โช โฉ โซ โฌ  
 \265 โคด ๐Ÿ”€ ๐Ÿ” ๐Ÿ”‚", <incomplete sequence \360\237\224>.
.., glyph_item=0x39ca1cf810, x=932864, y=14336) at gtktextdisplay.c:334
#9  0x00007fd51f184e1e in pango_renderer_draw_glyph_item () at
/lib64/libpango-1.0.so.0
#10 0x00007fd51f1858b1 in pango_renderer_draw_layout_line () at
/lib64/libpango-1.0.so.0
#11 0x00007fd51fba817a in render_para (selection_end_index=-1,
selection_start_index=-1, line_display=<optimized out>,
text_renderer=<optimized out>) at gtktextdisplay.c:705
#12 0x00007fd51fba817a in gtk_text_layout_draw (layout=0x39ca4e5d40, wi
dget=widget@entry=0x39ca5e8610, cr=cr@entry=0x39cab3ab70, widgets=widge
ts@entry=0x0)
    at gtktextdisplay.c:942
#13 0x00007fd51fbc6504 in gtk_text_view_paint (cr=0x39cab3ab70,
widget=0x39ca5e8610) at gtktextview.c:5867
#14 0x00007fd51fbc6504 in draw_text (cr=0x39cab3ab70,
user_data=0x39ca5e8610) at gtktextview.c:5908
#15 0x00007fd51fb333f0 in _gtk_pixel_cache_repaint
(user_data=0x39ca5e8610, canvas_rect=0x7ffc9f295740,
view_rect=0x7ffc9f295730, draw=0x7fd51fbc6290 <draw_text>,
window=0x39caae2340, cache=0x39ca5e0d00) at gtkpixelcache.c:357
#16 0x00007fd51fb333f0 in _gtk_pixel_cache_draw (cache=0x39ca5e0d00, cr
=cr@entry=0x39ca4fc8b0, window=window@entry=0x39caae2340, view_rect=vie
w_rect@entry=0x7ffc9f295730, canvas_rect=canvas_rect@entry=0x7ffc9f2957
40, draw=draw@entry=0x7fd51fbc6290 <draw_text>, user_data=0x39ca5e8610)
at gtkpixelcache.c:447
#17 0x00007fd51fbcb970 in gtk_text_view_draw (widget=0x39ca5e8610,
cr=0x39ca4fc8b0) at gtktextview.c:5998
#18 0x00007fd52040db2d in gtk_source_view_draw () at
/lib64/libgtksourceview-3.0.so.1
#19 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca5e8610, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#20 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca32f7f0, child=0x39ca5e8610, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#21 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca32f7f0,
cr=0x39ca4fc8b0) at gtkcontainer.c:3658
#22 0x00007fd51fb6164b in gtk_scrolled_window_render (gadget=<optimized
out>, cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>, data=0x0) at
gtkscrolledwindow.c:2078
#23 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#24 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca4095e0,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#25 0x00007fd51fb5f931 in gtk_scrolled_window_draw (widget=<optimized
out>, cr=<optimized out>) at gtkscrolledwindow.c:2989
#26 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca32f7f0, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#27 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca05c2c0, child=0x39ca32f7f0, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#28 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca05c2c0, cr=c
r@entry=0x39ca4fc8b0) at gtkcontainer.c:3658
#29 0x00007fd51f9c3b14 in gtk_box_draw_contents (gadget=<optimized
out>, cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>, unused=0x0) at
gtkbox.c:448
#30 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#31 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca409660,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#32 0x00007fd51f9c64b1 in gtk_box_draw (widget=<optimized out>,
cr=<optimized out>) at gtkbox.c:457
#33 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca05c2c0, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#34 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca49a3c0, child=0x39ca05c2c0, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#35 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca49a3c0,
cr=0x39ca4fc8b0) at gtkcontainer.c:3658
#36 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca49a3c0, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#37 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca3a9870, child=0x39ca49a3c0, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#38 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca3a9870, cr=c
r@entry=0x39ca4fc8b0) at gtkcontainer.c:3658
#39 0x00007fd51fa93324 in gtk_grid_render (gadget=<optimized out>,
cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>, width=<optimized
out>, height=<optimized out>, data=0x0) at gtkgrid.c:1713
#40 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#41 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca22b260,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#42 0x00007fd51fa94461 in gtk_grid_draw (widget=<optimized out>,
cr=<optimized out>) at gtkgrid.c:1722
#43 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca3a9870, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#44 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca2b9660, child=0x39ca3a9870, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#45 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca2b9660,
cr=0x39ca4fc8b0) at gtkcontainer.c:3658
#46 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca2b9660, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#47 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39c9fcdf10, child=0x39ca2b9660, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#48 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39c9fcdf10, cr=c
r@entry=0x39ca4fc8b0) at gtkcontainer.c:3658
#49 0x00007fd51f9c3b14 in gtk_box_draw_contents (gadget=<optimized
out>, cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>, unused=0x0) at
gtkbox.c:448
#50 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#51 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca22b4e0,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#52 0x00007fd51f9c64b1 in gtk_box_draw (widget=<optimized out>,
cr=<optimized out>) at gtkbox.c:457
#53 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39c9fcdf10, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#54 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca2ba260, child=0x39c9fcdf10, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#55 0x00007fd51fb03bb2 in gtk_notebook_draw_stack (gadget=<optimized
out>, cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>, unused=0x0) at
gtknotebook.c:2515
#56 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#57 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=gadget@entry=0x39
ca1bd7a0, cr=cr@entry=0x39ca4fc8b0) at gtkcssgadget.c:877
#58 0x00007fd51f9c7d08 in gtk_box_gadget_draw (gadget=<optimized out>,
cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>, width=<optimized
out>, height=<optimized out>)
    at gtkboxgadget.c:512
#59 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca258b30, cr=
cr@entry=0x39ca4fc8b0) at gtkcssgadget.c:877
#60 0x00007fd51fb0639c in gtk_notebook_draw (widget=<optimized out>,
cr=0x39ca4fc8b0) at gtknotebook.c:2530
#61 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca2ba260, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#62 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca2b2a40, child=0x39ca2ba260, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#63 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca2b2a40, cr=c
r@entry=0x39ca4fc8b0) at gtkcontainer.c:3658
#64 0x00007fd51fa93324 in gtk_grid_render (gadget=<optimized out>,
cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>, width=<optimized
out>, height=<optimized out>, data=0x0) at gtkgrid.c:1713
#65 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#66 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca1bd620,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#67 0x00007fd51fa94461 in gtk_grid_draw (widget=<optimized out>,
cr=<optimized out>) at gtkgrid.c:1722
#68 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca2b2a40, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#69 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca05bbc0, child=0x39ca2b2a40, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#70 0x00007fd51fb12e50 in gtk_paned_render (gadget=<optimized out>,
cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>, width=<optimized
out>, height=<optimized out>, data=0x0) at gtkpaned.c:1818
#71 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#72 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca1bd1a0,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#73 0x00007fd51fb12c61 in gtk_paned_draw (widget=<optimized out>,
cr=<optimized out>) at gtkpaned.c:1782
#74 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca05bbc0, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#75 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca05cf20, child=0x39ca05bbc0, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#76 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca05cf20, cr=c
r@entry=0x39ca4fc8b0) at gtkcontainer.c:3658
#77 0x00007fd51f9c3b14 in gtk_box_draw_contents (gadget=<optimized
out>, cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>, unused=0x0) at
gtkbox.c:448
#78 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#79 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca236f10,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#80 0x00007fd51f9c64b1 in gtk_box_draw (widget=<optimized out>,
cr=<optimized out>) at gtkbox.c:457
#81 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca05cf20, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#82 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca05b800, child=0x39ca05cf20, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#83 0x00007fd51fb12dc0 in gtk_paned_render (gadget=<optimized out>,
cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>, width=<optimized
out>, height=<optimized out>, data=0x0) at gtkpaned.c:1832
#84 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#85 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca1de400,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#86 0x00007fd51fb12c61 in gtk_paned_draw (widget=<optimized out>,
cr=<optimized out>) at gtkpaned.c:1782
#87 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca05b800, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#88 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca05cb00, child=0x39ca05b800, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#89 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca05cb00, cr=c
r@entry=0x39ca4fc8b0) at gtkcontainer.c:3658
#90 0x00007fd51f9c3b14 in gtk_box_draw_contents (gadget=<optimized
out>, cr=0x39ca4fc8b0, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>, unused=0x0) at
gtkbox.c:448
#91 0x00007fd51fa16b3d in gtk_css_custom_gadget_draw (gadget=<optimized
out>, cr=<optimized out>, x=<optimized out>, y=<optimized out>,
width=<optimized out>, height=<optimized out>) at
gtkcsscustomgadget.c:159
#92 0x00007fd51fa1b8a3 in gtk_css_gadget_draw (gadget=0x39ca1de200,
cr=0x39ca4fc8b0) at gtkcssgadget.c:877
#93 0x00007fd51f9c64b1 in gtk_box_draw (widget=<optimized out>,
cr=<optimized out>) at gtkbox.c:457
#94 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca05cb00, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#95 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca2b1860, child=0x39ca05cb00, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#96 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca2b1860,
cr=0x39ca4fc8b0) at gtkcontainer.c:3658
#97 0x00007fd51fc2d7cb in gtk_widget_draw_internal (widget=widget@entry
=0x39ca2b1860, cr=cr@entry=0x39ca4fc8b0, clip_to_size=clip_to_size@entr
y=1) at gtkwidget.c:7017
#98 0x00007fd51fa11ad8 in gtk_container_propagate_draw (container=conta
iner@entry=0x39ca18d030, child=0x39ca2b1860, cr=cr@entry=0x39ca4fc8b0)
at gtkcontainer.c:3838
#99 0x00007fd51fa11bc2 in gtk_container_draw (widget=0x39ca18d030,
cr=0x39ca4fc8b0) at gtkcontainer.c:3658
#100 0x00007fd51fc3b5b3 in gtk_window_draw (widget=0x39ca18d030,
cr=0x39ca4fc8b0) at gtkwindow.c:10214
#101 0x00007fd51fc2d7cb in gtk_widget_draw_internal
(widget=0x39ca18d030, cr=0x39ca4fc8b0, clip_to_size=<optimized out>) at
gtkwidget.c:7017
#102 0x00007fd51fc36b38 in gtk_widget_render (widget=widget@entry=0x39c
a18d030, window=0x39ca441320, region=<optimized out>) at
gtkwidget.c:17512
#103 0x00007fd51fad7239 in gtk_main_do_event (event=<optimized out>) at
gtkmain.c:1824
#104 0x00007fd51f5eb465 in _gdk_event_emit (event=event@entry=0x7ffc9f2
97450) at gdkevents.c:73
#105 0x00007fd51f5fb7a5 in _gdk_window_process_updates_recurse_helper
(window=0x39ca441320, expose_region=<optimized out>) at
gdkwindow.c:3849
#106 0x00007fd51f5fc9a6 in gdk_window_process_updates_internal
(window=0x39ca441320) at gdkwindow.c:3995
#107 0x00007fd51f5fcba0 in gdk_window_process_updates_with_mode
(window=<optimized out>, recurse_mode=<optimized out>) at
gdkwindow.c:4189
#108 0x00007fd51db8d57d in g_closure_invoke () at /lib64/libgobject-
2.0.so.0
#109 0x00007fd51dba0e4e in signal_emit_unlocked_R () at
/lib64/libgobject-2.0.so.0
#110 0x00007fd51dba9975 in g_signal_emit_valist () at
/lib64/libgobject-2.0.so.0
#111 0x00007fd51dbaa2df in g_signal_emit () at /lib64/libgobject-
2.0.so.0
#112 0x00007fd51f5f428f in _gdk_frame_clock_emit_paint
(frame_clock=<optimized out>) at gdkframeclock.c:640
#113 0x00007fd51f5f49c1 in gdk_frame_clock_paint_idle
(data=0x39ca024270) at gdkframeclockidle.c:430
#114 0x00007fd51f5dfb20 in gdk_threads_dispatch (data=0x39ca169d60) at
gdk.c:743
#115 0x00007fd51d8b3ffd in g_timeout_dispatch () at /lib64/libglib-
2.0.so.0
#116 0x00007fd51d8b3597 in g_main_context_dispatch () at
/lib64/libglib-2.0.so.0
#117 0x00007fd51d8b3938 in g_main_context_iterate.isra () at
/lib64/libglib-2.0.so.0
#118 0x00007fd51d8b39cc in g_main_context_iteration () at
/lib64/libglib-2.0.so.0
#119 0x00007fd51e3ea89d in g_application_run () at /lib64/libgio-
2.0.so.0
#120 0x00000039c94fddda in main ()


On Sat, 2017-07-29 at 17:43 +0100, Behdad Esfahbod wrote:
Should be fixed.  Thanks!

On Sat, Jul 29, 2017 at 4:45 PM, <iofelben gmail com> wrote:
Tried to run gnome-characters with Cairo master, switching to noto-
color-emoji crashes with:

#0  0x00007fd0ecd2868b in raise () at /lib64/libc.so.6
#1  0x00007fd0ecd2a417 in abort () at /lib64/libc.so.6
#2  0x00007fd0ecd208fa in __assert_fail_base () at /lib64/libc.so.6
#3  0x00007fd0ecd20972 in  () at /lib64/libc.so.6
#4  0x00007fd0f1370b6e in _cairo_error (status=status@entry=3646361
312)
at cairo-error.c:68
#5  0x00007fd0f1367802 in _cairo_set_error (cr=0x3dd89ecc00,
status=3646361312) at cairo.c:400
#6  0x00007fd0f13691b1 in cairo_show_text_glyphs (cr=0x3dd89ecc00,
utf8=0x3dd8a41b40 "๐Ÿ˜€", utf8_len=4, glyphs=0x7fffada90d60
, num_glyphs=1
, clusters=0x7fffada91640, num_clusters=1, cluster_flags=(unknown:
0))
at cairo.c:3742
#7  0x00007fd0f0283f69 in
pango_cairo_renderer_show_text_glyphs.isra ()
at /lib64/libpangocairo-1.0.so.0
#8  0x00007fd0f0284161 in pango_cairo_renderer_draw_glyph_item ()
at
/lib64/libpangocairo-1.0.so.0
#9  0x00007fd0f0057e1e in pango_renderer_draw_glyph_item () at
/lib64/libpango-1.0.so.0
#10 0x00007fd0f00588b1 in pango_renderer_draw_layout_line () at
/lib64/libpango-1.0.so.0
#11 0x00007fd0f0058c65 in pango_renderer_draw_layout () at
/lib64/libpango-1.0.so.0
#12 0x00007fd0f028443a in _pango_cairo_do_layout () at
/lib64/libpangocairo-1.0.so.0
#13 0x00007fd0ef560bde in ffi_call_unix64 () at /lib64/libffi.so.6
#14 0x00007fd0ef56054f in ffi_call () at /lib64/libffi.so.6
#15 0x00007fd0f10ab6f6 in  () at /lib64/libgjs.so.0
#16 0x00007fd0f10ad066 in  () at /lib64/libgjs.so.0
#17 0x00007fd0ee3626a8 in js::Invoke(JSContext*, JS::CallArgs,
js::MaybeConstruct) () at /lib64/libmozjs-38.so
#18 0x00007fd0ee3584cd in Interpret(JSContext*, js::RunState&) ()
at
/lib64/libmozjs-38.so
#19 0x00007fd0ee362324 in js::RunScript(JSContext*, js::RunState&)
()
at /lib64/libmozjs-38.so
#20 0x00007fd0ee362614 in js::Invoke(JSContext*, JS::CallArgs,
js::MaybeConstruct) () at /lib64/libmozjs-38.so
#21 0x00007fd0ee664f13 in js_fun_apply(JSContext*, unsigned int,
JS::Value*) () at /lib64/libmozjs-38.so
#22 0x00007fd0ee3626a8 in js::Invoke(JSContext*, JS::CallArgs,
js::MaybeConstruct) () at /lib64/libmozjs-38.so
#23 0x00007fd0ee363243 in js::Invoke(JSContext*, JS::Value const&,
JS::Value const&, unsigned int, JS::Value const*,
JS::MutableHandle<JS::Value>) () at /lib64/libmozjs-38.so
#24 0x00007fd0ee4b5485 in js::jit::DoCallFallback(JSContext*,
js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, unsigned int,
JS::Value*, JS::MutableHandle<JS::Value>) ()
    at /lib64/libmozjs-38.so
#25 0x00007fd0f1877510 in  ()
#26 0x00007fffada948a0 in  ()
#27 0x00007fffada94368 in  ()
#28 0x0000000000000000 in  ()

On Sat, 2017-07-29 at 16:30 +0100, Behdad Esfahbod wrote:
On Sat, Jul 29, 2017 at 11:58 AM, Uli Schlachter <psychon znc in>
wrote:
Hi Behdad

I don't think that is my decision to make. When thinking about
"fonts in
cairo", I'm thinking "Behdad". I'm just asking weird questions
from
the
sideline. :-)

Thanks. :-)  Pushed!!!!  At least ten people already asked me
"what's
up with emoji" at GUADEC...

Uli

P.S.: How relevant and up to date is the CC list here? I always
get
a
"your message to gtk-devel-list awaits moderator approval"-mail
when
replying to this thread...


My messages go through, yours probably don't because you are not
a
member.  It's valuable still.

Cheers,
b

On 28.07.2017 16:38, Behdad Esfahbod wrote:
Uli,

Can we commit this?  I don't think waiting another few years
will
result in
a superior patchset. :)

Cheers,

behdad

On Wed, Jul 19, 2017 at 1:53 AM, Behdad Esfahbod <behdad@behd
ad.o
rg> wrote:

Right.  In the future we would want to make it show glyphs
in
the input
order, ie. not separate color vs non-color.  That's the
order
required by
CSS for example.  In a show-text-glyphs call with
CAIRO_TEXT_CLUSTER_FLAG_BACKWARD,
it might be desirable to show back-to-front.

On Tue, Jul 18, 2017 at 1:59 PM, Matthias Clasen <
matthias clasen gmail com> wrote:

On Sat, Jul 15, 2017 at 4:05 AM, Uli Schlachter <psychon@zn
c.in
wrote:

On 07.07.2017 15:23, Matthias Clasen wrote:
On Sat, Jul 1, 2017 at 2:25 AM, Uli Schlachter <psychon@z
nc.i
n> wrote:
On 30.06.2017 17:29, Behdad Esfahbod wrote:
On Jun 30, 2017 7:51 PM, "Matthias Clasen" <mclasen@red
hat.
com>
wrote:
On Fri, 2017-06-30 at 17:02 +0200, Uli Schlachter
wrote:
On 28.06.2017 14:23, Behdad Esfahbod wrote:
All of you have asked me about the status of color
fonts
in
cairo.  There's
some discussion here:

what was the solution to make this fit into cairo's
drawing model?
Text
/ glyphs are used as a mask and a mask does not have
colors.


There is no solution to that. The assumption in cairo's
drawing model
about glyphs/fonts has simply been invalidated by
reality.


Correct.

Okay... so what is the new model? What happens when I
draw a
color
glyph
with operator XOR and a red source?


The red source is ignored for color glyphs because they
are
used as the
source.

Hi again,

I just came up with another question: How are overlapping
glyphs handled?

Let's say I have a red glyph and a blue glyph and I draw
them
in such a
way that they overlap. Let's say this additionally
overlaps
with a
non-colored glyph in the same position and I use a green
source with 50%
alpha (cairo_set_source_rgba(cr, 0, 1, 0, 0.5)).

What's the visible result?


Here is what my implementation does: It renders the color
glyphs, in
order, followed by the non-color glyphs.

In practice, I don't think the case of mixed color and non-
color glyphs
in the same call will be all that common.
Most apps will explicitly set a color font just for the
emoji
and they
won't render regular text with an emoji font,
with the result that runs of color glyphs and non-color
glyphs
will
typically be in separate calls.




--
behdad
http://behdad.org/






--
"Why make things difficult, when it is possible to make them
cryptic
and totally illogical, with just a little bit more effort?" --
A.
P. J.



_______________________________________________
gtk-devel-list mailing list
gtk-devel-list gnome org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list





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