1/* Pango
2 * pango-fontset.h: Font set handling
3 *
4 * Copyright (C) 2001 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_FONTSET_H__
23#define __PANGO_FONTSET_H__
24
25#include <pango/pango-coverage.h>
26#include <pango/pango-types.h>
27
28#include <glib-object.h>
29
30G_BEGIN_DECLS
31
32/*
33 * PangoFontset
34 */
35
36#define PANGO_TYPE_FONTSET (pango_fontset_get_type ())
37#define PANGO_FONTSET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FONTSET, PangoFontset))
38#define PANGO_IS_FONTSET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FONTSET))
39#define PANGO_FONTSET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_FONTSET, PangoFontsetClass))
40#define PANGO_IS_FONTSET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_FONTSET))
41#define PANGO_FONTSET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_FONTSET, PangoFontsetClass))
42
43
44PANGO_AVAILABLE_IN_ALL
45GType pango_fontset_get_type (void) G_GNUC_CONST;
46
47typedef struct _PangoFontset PangoFontset;
48typedef struct _PangoFontsetClass PangoFontsetClass;
49
50/**
51 * PangoFontsetForeachFunc:
52 * @fontset: a `PangoFontset`
53 * @font: a font from @fontset
54 * @user_data: callback data
55 *
56 * Callback used when enumerating fonts in a fontset.
57 *
58 * See [method@Pango.Fontset.foreach].
59 *
60 * Returns: if %TRUE, stop iteration and return immediately.
61 *
62 * Since: 1.4
63 */
64typedef gboolean (*PangoFontsetForeachFunc) (PangoFontset *fontset,
65 PangoFont *font,
66 gpointer user_data);
67
68/**
69 * PangoFontset:
70 *
71 * A `PangoFontset` represents a set of `PangoFont` to use when rendering text.
72 *
73 * A `PangoFontset` is the result of resolving a `PangoFontDescription`
74 * against a particular `PangoContext`. It has operations for finding the
75 * component font for a particular Unicode character, and for finding a
76 * composite set of metrics for the entire fontset.
77 */
78struct _PangoFontset
79{
80 GObject parent_instance;
81};
82
83/**
84 * PangoFontsetClass:
85 * @parent_class: parent `GObjectClass`
86 * @get_font: a function to get the font in the fontset that contains the
87 * best glyph for the given Unicode character; see [method@Pango.Fontset.get_font]
88 * @get_metrics: a function to get overall metric information for the fonts
89 * in the fontset; see [method@Pango.Fontset.get_metrics]
90 * @get_language: a function to get the language of the fontset.
91 * @foreach: a function to loop over the fonts in the fontset. See
92 * [method@Pango.Fontset.foreach]
93 *
94 * The `PangoFontsetClass` structure holds the virtual functions for
95 * a particular `PangoFontset` implementation.
96 */
97struct _PangoFontsetClass
98{
99 GObjectClass parent_class;
100
101 /*< public >*/
102
103 PangoFont * (*get_font) (PangoFontset *fontset,
104 guint wc);
105
106 PangoFontMetrics *(*get_metrics) (PangoFontset *fontset);
107 PangoLanguage * (*get_language) (PangoFontset *fontset);
108 void (*foreach) (PangoFontset *fontset,
109 PangoFontsetForeachFunc func,
110 gpointer data);
111
112 /*< private >*/
113
114 /* Padding for future expansion */
115 void (*_pango_reserved1) (void);
116 void (*_pango_reserved2) (void);
117 void (*_pango_reserved3) (void);
118 void (*_pango_reserved4) (void);
119};
120
121PANGO_AVAILABLE_IN_ALL
122PangoFont * pango_fontset_get_font (PangoFontset *fontset,
123 guint wc);
124PANGO_AVAILABLE_IN_ALL
125PangoFontMetrics * pango_fontset_get_metrics (PangoFontset *fontset);
126PANGO_AVAILABLE_IN_1_4
127void pango_fontset_foreach (PangoFontset *fontset,
128 PangoFontsetForeachFunc func,
129 gpointer data);
130
131
132G_END_DECLS
133
134#endif /* __PANGO_FONTSET_H__ */
135

source code of gtk/subprojects/pango/pango/pango-fontset.h