1/* Pango
2 * pangofc-font.h: Base fontmap type for fontconfig-based backends
3 *
4 * Copyright (C) 2003 Red Hat Software
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 */
21
22#ifndef __PANGO_FC_FONT_H__
23#define __PANGO_FC_FONT_H__
24
25#include <pango/pango-glyph.h>
26#include <pango/pango-font.h>
27#include <pango/pango-glyph.h>
28
29/* Freetype has undefined macros in its header */
30#ifdef PANGO_COMPILATION
31#pragma GCC diagnostic push
32#pragma GCC diagnostic ignored "-Wundef"
33#endif
34
35#include <ft2build.h>
36#include FT_FREETYPE_H
37#include <fontconfig/fontconfig.h>
38
39#ifdef PANGO_COMPILATION
40#pragma GCC diagnostic pop
41#endif
42
43G_BEGIN_DECLS
44
45#ifdef __GI_SCANNER__
46#define PANGO_FC_TYPE_FONT (pango_fc_font_get_type ())
47#define PANGO_FC_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_FC_TYPE_FONT, PangoFcFont))
48#define PANGO_FC_IS_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_FC_TYPE_FONT))
49#else
50#define PANGO_TYPE_FC_FONT (pango_fc_font_get_type ())
51#define PANGO_FC_FONT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FC_FONT, PangoFcFont))
52#define PANGO_IS_FC_FONT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FC_FONT))
53#endif
54
55typedef struct _PangoFcFont PangoFcFont;
56typedef struct _PangoFcFontClass PangoFcFontClass;
57
58#ifndef PANGO_DISABLE_DEPRECATED
59
60/**
61 * PangoFcFont:
62 *
63 * `PangoFcFont` is a base class for font implementations
64 * using the Fontconfig and FreeType libraries.
65 *
66 * It is used in onjunction with [class@PangoFc.FontMap].
67 * When deriving from this class, you need to implement all
68 * of its virtual functions other than shutdown() along with
69 * the get_glyph_extents() virtual function from `PangoFont`.
70 */
71struct _PangoFcFont
72{
73 PangoFont parent_instance;
74
75 FcPattern *font_pattern; /* fully resolved pattern */
76 PangoFontMap *fontmap; /* associated map */
77 gpointer priv; /* used internally */
78 PangoMatrix matrix; /* unused */
79 PangoFontDescription *description;
80
81 GSList *metrics_by_lang;
82
83 guint is_hinted : 1;
84 guint is_transformed : 1;
85};
86
87#endif /* PANGO_DISABLE_DEPRECATED */
88
89PANGO_AVAILABLE_IN_ALL
90GType pango_fc_font_get_type (void) G_GNUC_CONST;
91
92PANGO_DEPRECATED_IN_1_44
93gboolean pango_fc_font_has_char (PangoFcFont *font,
94 gunichar wc);
95PANGO_AVAILABLE_IN_1_4
96guint pango_fc_font_get_glyph (PangoFcFont *font,
97 gunichar wc);
98
99PANGO_DEPRECATED_IN_1_50_FOR(pango_font_get_language)
100PangoLanguage **
101 pango_fc_font_get_languages (PangoFcFont *font);
102
103PANGO_AVAILABLE_IN_1_48
104FcPattern *pango_fc_font_get_pattern (PangoFcFont *font);
105
106PANGO_DEPRECATED_FOR(PANGO_GET_UNKNOWN_GLYPH)
107PangoGlyph pango_fc_font_get_unknown_glyph (PangoFcFont *font,
108 gunichar wc);
109PANGO_DEPRECATED_IN_1_32
110void pango_fc_font_kern_glyphs (PangoFcFont *font,
111 PangoGlyphString *glyphs);
112
113PANGO_DEPRECATED_IN_1_44_FOR(pango_font_get_hb_font)
114FT_Face pango_fc_font_lock_face (PangoFcFont *font);
115PANGO_DEPRECATED_IN_1_44_FOR(pango_font_get_hb_font)
116void pango_fc_font_unlock_face (PangoFcFont *font);
117
118
119G_END_DECLS
120#endif /* __PANGO_FC_FONT_H__ */
121

source code of gtk/subprojects/pango/pango/pangofc-font.h