diff options
author | Owen Taylor <otaylor@redhat.com> | 2005-01-09 00:12:39 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2005-01-09 00:12:39 +0000 |
commit | cc6ac36dd3c7e5ef39b9f21ef77596a159f2100e (patch) | |
tree | e1b8ffc1c14d449a41946d22ea5d1c6ddf9115d8 /pango/pangofc-font.c | |
parent | 75f4ad29adce645ddb837e662c9d71ccfbf60154 (diff) | |
download | pango-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.c | 48 |
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. |