~ubuntu-branches/ubuntu/karmic/pango1.0/karmic-security

« back to all changes in this revision

Viewing changes to pango/pangoxft-font.c

  • Committer: Bazaar Package Importer
  • Author(s): Loic Minier
  • Date: 2007-12-18 21:11:37 UTC
  • mfrom: (1.2.44 upstream)
  • Revision ID: james.westby@ubuntu.com-20071218211137-0ibmwreimvxf3cp1
Tags: 1.19.2-1ubuntu1
* Sync with Debian; Ubuntu changes are:
  - Add patch 30_anymetrics, turns on FC_ANY_METRICS whenever looking up
    fonts with fontconfig; lets fontconfig's configuration know that we
    don't care about getting a font with exactly the same shape as the
    family we asked for and fixes (eg) a firefox vs. evince font metrics
    ugliness issue.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
#include "pangoxft-private.h"
28
28
#include "pangofc-private.h"
29
29
 
30
 
PangoXftWarningHistory _pango_xft_warning_history = { FALSE };
31
 
 
32
30
#define PANGO_XFT_FONT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_XFT_FONT, PangoXftFontClass))
33
31
#define PANGO_XFT_IS_FONT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_XFT_FONT))
34
32
#define PANGO_XFT_FONT_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_XFT_FONT, PangoXftFontClass))
153
151
        pango_font_description_set_size (desc, new_size);
154
152
 
155
153
      xfont->mini_font = pango_font_map_load_font (fcfont->fontmap, context, desc);
 
154
      pango_font_description_free (desc);
 
155
      g_object_unref (context);
 
156
 
156
157
      if (!xfont->mini_font)
157
158
        return NULL;
158
159
 
159
 
      pango_font_description_free (desc);
160
 
      g_object_unref (context);
161
 
 
162
160
      mini_xft = xft_font_get_font (xfont->mini_font);
163
161
 
164
162
      for (i = 0 ; i < 16 ; i++)
169
167
          height = MAX (height, extents.height);
170
168
        }
171
169
 
172
 
 
173
170
      xfont->mini_width = PANGO_SCALE * width;
174
171
      xfont->mini_height = PANGO_SCALE * height;
175
172
      xfont->mini_pad = PANGO_SCALE * MIN (height / 2, MAX ((int)(2.2 * height + 27) / 28, 1));
210
207
{
211
208
  PangoFont *font = PANGO_FONT (xfont);
212
209
  XftFont *xft_font = xft_font_get_font (font);
 
210
  gunichar ch;
 
211
  gint cols;
 
212
  
 
213
  ch = glyph & ~PANGO_GLYPH_UNKNOWN_FLAG;
213
214
 
214
 
  gint cols = (glyph & ~PANGO_GLYPH_UNKNOWN_FLAG) > 0xffff ? 3 : 2;
 
215
  if (G_UNLIKELY (glyph == PANGO_GLYPH_INVALID_INPUT || ch > 0x10FFFF))
 
216
    cols = 1;
 
217
  else
 
218
    cols = ch > 0xffff ? 3 : 2;
215
219
 
216
220
  _pango_xft_font_get_mini_font (xfont);
217
221
 
463
467
 *
464
468
 * Returns the XftFont of a font.
465
469
 *
466
 
 * Return value: the XftFont associated to @font.
 
470
 * Return value: the XftFont associated to @font, or %NULL if @font is %NULL.
467
471
 **/
468
472
XftFont *
469
473
pango_xft_font_get_font (PangoFont *font)
470
474
{
471
 
  if (G_UNLIKELY (!PANGO_XFT_IS_FONT (font)))
472
 
    {
473
 
      if (!_pango_xft_warning_history.get_font)
474
 
        {
475
 
          _pango_xft_warning_history.get_font = TRUE;
476
 
          g_warning ("pango_xft_font_get_font called with bad font, expect ugly output");
477
 
        }
478
 
      return NULL;
479
 
    }
 
475
  if (G_UNLIKELY (!font))
 
476
    return NULL;
480
477
 
481
478
  return xft_font_get_font (font);
482
479
}