font_factory::font_factory(void) :
    nbEnt(0), // Note: this "ents" cache only keeps fonts from being unreffed, does not speed up access
    maxEnt(32),
    ents(static_cast<font_entry*>(g_malloc(maxEnt*sizeof(font_entry)))),

#ifdef USE_PANGO_WIN32
    fontServer(pango_win32_font_map_for_display()),
    fontContext(pango_win32_get_context()),
    pangoFontCache(pango_win32_font_map_get_font_cache(fontServer)),
    hScreenDC(pango_win32_get_dc()),
#else
    fontServer(pango_ft2_font_map_new()),
    fontContext(0),
#endif
    fontSize(512),
    loadedPtr(new FaceMapType())
{
#ifdef USE_PANGO_WIN32
#else
    pango_ft2_font_map_set_resolution(PANGO_FT2_FONT_MAP(fontServer),
                                      72, 72);
    
    fontContext = pango_font_map_create_context(fontServer);

    pango_ft2_font_map_set_default_substitute(PANGO_FT2_FONT_MAP(fontServer),
                                              FactorySubstituteFunc,
                                              this,
                                              NULL);
#endif
}
Exemple #2
0
static void fontspec_to_win32 (CHOOSEFONT *cf, const char *src, int which)
{
    PangoFontDescription *pfd;
    PangoFontMap *map;
    PangoContext *pc;
    PangoFont *font;

    pfd = pango_font_description_from_string(src);
    map = pango_win32_font_map_for_display();
    pc = pango_font_map_create_context(map);
    font = pango_context_load_font(pc, pfd);
    cf->lpLogFont = pango_win32_font_logfont(font);
    g_object_unref(font);
    g_object_unref(pc);
    pango_font_description_free(pfd);
}
Exemple #3
0
/**
 * pango_win32_get_context:
 *
 * Retrieves a #PangoContext appropriate for rendering with Windows fonts.
 *
 * Return value: the new #PangoContext
 *
 * Deprecated: 1.22: Use pango_win32_font_map_for_display() followed by
 * pango_font_map_create_context() instead.
 **/
PangoContext *
pango_win32_get_context (void)
{
  return pango_font_map_create_context (pango_win32_font_map_for_display ());
}