diff -r b6a59cc96bfa libinterp/corefcn/txt-eng-ft.cc --- a/libinterp/corefcn/txt-eng-ft.cc Mon Jun 29 08:56:22 2015 -0700 +++ b/libinterp/corefcn/txt-eng-ft.cc Wed Jul 01 17:22:27 2015 -0400 @@ -512,7 +512,6 @@ ft_render::process_character (FT_ULong c || FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT))) { glyph_index = 0; - gripe_missing_glyph (code); } else { @@ -807,7 +806,26 @@ ft_render::visit (text_element_symbol& e uint32_t code = e.get_symbol_code (); if (code != text_element_symbol::invalid_code && font.is_valid ()) - process_character (code); + { + FT_UInt glyph_index = process_character (code); + + if (! glyph_index) + { + // The current font is missing the symbol we are trying to + // display. Try another font. + + ft_font saved_font (font); + + set_font ("Symbol", "normal", "normal", font.get_size ()); + + glyph_index = process_character (code); + + if (! glyph_index) + gripe_missing_glyph (code); + + font = saved_font; + } + } else if (font.is_valid ()) ::warning ("ignoring unknown symbol: %d", e.get_symbol ()); }