1/* Pango
2 * pangofc-fontmap.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_MAP_H__
23#define __PANGO_FC_FONT_MAP_H__
24
25#include <pango/pango.h>
26#include <fontconfig/fontconfig.h>
27#include <pango/pangofc-decoder.h>
28#include <pango/pangofc-font.h>
29#include <hb.h>
30
31G_BEGIN_DECLS
32
33
34/*
35 * PangoFcFontMap
36 */
37
38#ifdef __GI_SCANNER__
39#define PANGO_FC_TYPE_FONT_MAP (pango_fc_font_map_get_type ())
40#define PANGO_FC_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_FC_TYPE_FONT_MAP, PangoFcFontMap))
41#define PANGO_FC_IS_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_FC_TYPE_FONT_MAP))
42#else
43#define PANGO_TYPE_FC_FONT_MAP (pango_fc_font_map_get_type ())
44#define PANGO_FC_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_FC_FONT_MAP, PangoFcFontMap))
45#define PANGO_IS_FC_FONT_MAP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_FC_FONT_MAP))
46#endif
47
48typedef struct _PangoFcFontMap PangoFcFontMap;
49typedef struct _PangoFcFontMapClass PangoFcFontMapClass;
50typedef struct _PangoFcFontMapPrivate PangoFcFontMapPrivate;
51
52PANGO_AVAILABLE_IN_ALL
53GType pango_fc_font_map_get_type (void) G_GNUC_CONST;
54
55PANGO_AVAILABLE_IN_1_4
56void pango_fc_font_map_cache_clear (PangoFcFontMap *fcfontmap);
57
58PANGO_AVAILABLE_IN_1_38
59void
60pango_fc_font_map_config_changed (PangoFcFontMap *fcfontmap);
61
62PANGO_AVAILABLE_IN_1_38
63void
64pango_fc_font_map_set_config (PangoFcFontMap *fcfontmap,
65 FcConfig *fcconfig);
66PANGO_AVAILABLE_IN_1_38
67FcConfig *
68pango_fc_font_map_get_config (PangoFcFontMap *fcfontmap);
69
70/**
71 * PangoFcDecoderFindFunc:
72 * @pattern: a fully resolved `FcPattern` specifying the font on the system
73 * @user_data: user data passed to
74 * [method@PangoFc.FontMap.add_decoder_find_func]
75 *
76 * Callback function passed to [method@PangoFc.FontMap.add_decoder_find_func].
77 *
78 * Return value: a new reference to a custom decoder for this pattern,
79 * or %NULL if the default decoder handling should be used.
80 **/
81typedef PangoFcDecoder * (*PangoFcDecoderFindFunc) (FcPattern *pattern,
82 gpointer user_data);
83
84PANGO_AVAILABLE_IN_1_6
85void pango_fc_font_map_add_decoder_find_func (PangoFcFontMap *fcfontmap,
86 PangoFcDecoderFindFunc findfunc,
87 gpointer user_data,
88 GDestroyNotify dnotify);
89PANGO_AVAILABLE_IN_1_26
90PangoFcDecoder *pango_fc_font_map_find_decoder (PangoFcFontMap *fcfontmap,
91 FcPattern *pattern);
92
93PANGO_AVAILABLE_IN_1_4
94PangoFontDescription *pango_fc_font_description_from_pattern (FcPattern *pattern,
95 gboolean include_size);
96
97#ifndef PANGO_DISABLE_DEPRECATED
98PANGO_DEPRECATED_IN_1_22_FOR(pango_font_map_create_context)
99PangoContext * pango_fc_font_map_create_context (PangoFcFontMap *fcfontmap);
100#endif
101PANGO_AVAILABLE_IN_1_4
102void pango_fc_font_map_shutdown (PangoFcFontMap *fcfontmap);
103
104
105PANGO_AVAILABLE_IN_1_44
106hb_face_t * pango_fc_font_map_get_hb_face (PangoFcFontMap *fcfontmap,
107 PangoFcFont *fcfont);
108
109/**
110 * PangoFcSubstituteFunc:
111 * @pattern: the FcPattern to tweak.
112 * @data: user data.
113 *
114 * Function type for doing final config tweaking on prepared `FcPattern`s.
115 */
116typedef void (*PangoFcSubstituteFunc) (FcPattern *pattern,
117 gpointer data);
118
119/**
120 * pango_fc_font_map_set_default_substitute:
121 * @fontmap: a `PangoFcFontMap`
122 * @func: function to call to to do final config tweaking on `FcPattern` objects
123 * @data: data to pass to @func
124 * @notify: function to call when @data is no longer used
125 *
126 * Sets a function that will be called to do final configuration
127 * substitution on a `FcPattern` before it is used to load
128 * the font.
129 *
130 * This function can be used to do things like set
131 * hinting and antialiasing options.
132 *
133 * Since: 1.48
134 */
135PANGO_AVAILABLE_IN_1_48
136void pango_fc_font_map_set_default_substitute (PangoFcFontMap *fontmap,
137 PangoFcSubstituteFunc func,
138 gpointer data,
139 GDestroyNotify notify);
140
141/**
142 * pango_fc_font_map_substitute_changed:
143 * @fontmap: a `PangoFcFontMap`
144 *
145 * Call this function any time the results of the default
146 * substitution function set with
147 * [method@PangoFc.FontMap.set_default_substitute] change.
148 *
149 * That is, if your substitution function will return different
150 * results for the same input pattern, you must call this function.
151 *
152 * Since: 1.48
153 */
154PANGO_AVAILABLE_IN_1_48
155void pango_fc_font_map_substitute_changed (PangoFcFontMap *fontmap);
156
157/**
158 * PANGO_FC_GRAVITY:
159 *
160 * Fontconfig property that Pango sets on any
161 * fontconfig pattern it passes to fontconfig
162 * if a `PangoGravity` other than %PANGO_GRAVITY_SOUTH
163 * is desired.
164 *
165 * The property will have a `PangoGravity` value as a string,
166 * like "east". This can be used to write fontconfig configuration
167 * rules to choose different fonts for horizontal and vertical
168 * writing directions.
169 *
170 * Since: 1.20
171 */
172#define PANGO_FC_GRAVITY "pangogravity"
173
174/**
175 * PANGO_FC_VERSION:
176 *
177 * Fontconfig property that Pango sets on any
178 * fontconfig pattern it passes to fontconfig.
179 *
180 * The property will have an integer value equal to what
181 * [func@Pango.version] returns. This can be used to write
182 * fontconfig configuration rules that only affect certain
183 * pango versions (or only pango-using applications, or only
184 * non-pango-using applications).
185 *
186 * Since: 1.20
187 */
188#define PANGO_FC_VERSION "pangoversion"
189
190/**
191 * PANGO_FC_PRGNAME:
192 *
193 * Fontconfig property that Pango sets on any
194 * fontconfig pattern it passes to fontconfig.
195 *
196 * The property will have a string equal to what
197 * g_get_prgname() returns. This can be used to write
198 * fontconfig configuration rules that only affect
199 * certain applications.
200 *
201 * This is equivalent to FC_PRGNAME in versions of
202 * fontconfig that have that.
203 *
204 * Since: 1.24
205 */
206#define PANGO_FC_PRGNAME "prgname"
207
208/**
209 * PANGO_FC_FONT_FEATURES:
210 *
211 * Fontconfig property that Pango reads from font
212 * patterns to populate list of OpenType features
213 * to be enabled for the font by default.
214 *
215 * The property will have a number of string elements,
216 * each of which is the OpenType feature tag of one feature
217 * to enable.
218 *
219 * This is equivalent to FC_FONT_FEATURES in versions of
220 * fontconfig that have that.
221 *
222 * Since: 1.34
223 */
224#define PANGO_FC_FONT_FEATURES "fontfeatures"
225
226/**
227 * PANGO_FC_FONT_VARIATIONS:
228 *
229 * Fontconfig property that Pango reads from font
230 * patterns to populate list of OpenType font variations
231 * to be used for a font.
232 *
233 * The property will have a string elements, each of which
234 * a comma-separated list of OpenType axis setting of the
235 * form AXIS=VALUE.
236 *
237 * This is equivalent to FC_FONT_VARIATIONS in versions of
238 * fontconfig that have that.
239 */
240#define PANGO_FC_FONT_VARIATIONS "fontvariations"
241
242G_END_DECLS
243
244#endif /* __PANGO_FC_FONT_MAP_H__ */
245

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