summaryrefslogtreecommitdiff
path: root/pango/pangofc-font.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2005-01-09 00:12:39 +0000
committerOwen Taylor <otaylor@src.gnome.org>2005-01-09 00:12:39 +0000
commitcc6ac36dd3c7e5ef39b9f21ef77596a159f2100e (patch)
treee1b8ffc1c14d449a41946d22ea5d1c6ddf9115d8 /pango/pangofc-font.c
parent75f4ad29adce645ddb837e662c9d71ccfbf60154 (diff)
downloadpango-cc6ac36dd3c7e5ef39b9f21ef77596a159f2100e.tar.gz
Add checks for Cairo
Sat Jan 8 16:46:37 2005 Owen Taylor <otaylor@redhat.com> * configure.in: Add checks for Cairo * pango/Makefile.am: Add libpangocairo. * pango/pangocairo-font.c pango/pangocairo-fontmap.c pango/pangocairo.h pango/pangocairo-private.h pango/pangocairo-fcfont.c pango/pangocairo-fcfontmap.c pango/pangocairo-fc.h: Start of a Cairo/FreeType backend. * pango/pangofc-fontmap.[ch]: Add a "get_render_key" virtual function to allow subclasses to specialize the details of how caching works. Add a default implementation that's a little more sophisticated than what was there before. * pango/pangoft2-private.h pangofc-font.c pangoft2.c: Move default implementations of has_char(), get_glyph() to the base class. * pango/pangofc-private.h pango/pangoft2-private.h: Move PANGO_UNITS_26_6 and friends to pango/pangofc-private.h. * examples/renderdemo.[ch] examples/pangoft2topgm.c examples/xftview.c: Allow passing in a custom function to transform drawing. * examples/Makefile.am examples/cairoview.c: Add a Cairo/Xlib example program. * examples/cairosimple.c: Simple Cairo example with output to a PNG. * pango/pango-layout.c (pango_layout_line_get_extents): Fix bug where line ink rect was always including 0, 0.
Diffstat (limited to 'pango/pangofc-font.c')
-rw-r--r--pango/pangofc-font.c48
1 files changed, 41 insertions, 7 deletions
diff --git a/pango/pangofc-font.c b/pango/pangofc-font.c
index 71c81bc2..65620384 100644
--- a/pango/pangofc-font.c
+++ b/pango/pangofc-font.c
@@ -26,14 +26,9 @@
#include "pango-modules.h"
#include "pango-utils.h"
-#include FT_TRUETYPE_TABLES_H
+#include <fontconfig/fcfreetype.h>
-#define PANGO_SCALE_26_6 (PANGO_SCALE / (1<<6))
-#define PANGO_PIXELS_26_6(d) \
- (((d) >= 0) ? \
- ((d) + PANGO_SCALE_26_6 / 2) / PANGO_SCALE_26_6 : \
- ((d) - PANGO_SCALE_26_6 / 2) / PANGO_SCALE_26_6)
-#define PANGO_UNITS_26_6(d) (PANGO_SCALE_26_6 * (d))
+#include FT_TRUETYPE_TABLES_H
typedef struct _PangoFcMetricsInfo PangoFcMetricsInfo;
@@ -57,6 +52,11 @@ struct _PangoFcFontPrivate
PangoFcDecoder *decoder;
};
+static gboolean pango_fc_font_real_has_char (PangoFcFont *font,
+ gunichar wc);
+static guint pango_fc_font_real_get_glyph (PangoFcFont *font,
+ gunichar wc);
+
static void pango_fc_font_finalize (GObject *object);
static void pango_fc_font_set_property (GObject *object,
guint prop_id,
@@ -78,6 +78,9 @@ pango_fc_font_class_init (PangoFcFontClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
PangoFontClass *font_class = PANGO_FONT_CLASS (class);
+
+ class->has_char = pango_fc_font_real_has_char;
+ class->get_glyph = pango_fc_font_real_get_glyph;
object_class->finalize = pango_fc_font_finalize;
object_class->set_property = pango_fc_font_set_property;
@@ -458,6 +461,37 @@ pango_fc_font_get_metrics (PangoFont *font,
return pango_font_metrics_ref (info->metrics);
}
+static gboolean
+pango_fc_font_real_has_char (PangoFcFont *font,
+ gunichar wc)
+{
+ FcCharSet *charset;
+
+ if (FcPatternGetCharSet (font->font_pattern,
+ FC_CHARSET, 0, &charset) != FcResultMatch)
+ return FALSE;
+
+ return FcCharSetHasChar (charset, wc);
+}
+
+static guint
+pango_fc_font_real_get_glyph (PangoFcFont *font,
+ gunichar wc)
+{
+ FT_Face face;
+ FT_UInt index;
+
+ face = pango_fc_font_lock_face (font);
+
+ index = FcFreeTypeCharIndex (face, wc);
+ if (index && index <= face->num_glyphs)
+ return index;
+
+ pango_fc_font_unlock_face (font);
+
+ return 0;
+}
+
/**
* pango_fc_font_lock_face:
* @font: a #PangoFcFont.