Pango

I've had to implement Unicode font drawing and settled on Pango for X11 and HarfBuzz for OpenGL (Embedded and Desktop).

  • Pango is not thread safe (at least my experience shows that it is not). 
  • Xft is not thread safe.

Initial setup:

 // fallback
 pango_xft_set_default_substitute (m_display, m_screen, default_substitute,

                                 NULL, NULL);

m_fontMap = pango_xft_get_font_map(display, screen);
#if PANGO_VERSION_CHECK(1,22,0)
m_context = pango_font_map_create_context (m_fontMap);
#else
m_context = pango_xft_get_context(m_display, m_screen);
#endif



Font Fallback:


#define DEFAULT_DPI      72
#define DEFAULT_HINTING  HINT_AUTO


static void default_substitute (FcPattern *pattern, gpointer data)
{
  FcPatternDel (pattern, FC_DPI);
  FcPatternAddInteger (pattern, FC_DPI, DEFAULT_DPI);

  FcPatternDel (pattern, FC_HINTING);
  FcPatternAddBool (pattern, FC_HINTING, false);

  FcPatternDel (pattern, FC_AUTOHINT);

  FcPatternAddBool (pattern, FC_AUTOHINT, true);
}


Shutdown:

  if (m_context)
    g_object_unref(m_context);

  pango_xft_shutdown_display(m_display, m_screen);




Comments