Imported Upstream version 8.2.2
[platform/upstream/harfbuzz.git] / docs / html / harfbuzz-hb-subset.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>hb-subset: HarfBuzz Manual</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="index.html" title="HarfBuzz Manual">
8 <link rel="up" href="subset-api.html" title="Subset API">
9 <link rel="prev" href="subset-api.html" title="Subset API">
10 <link rel="next" href="api-index-full.html" title="API Index">
11 <meta name="generator" content="GTK-Doc V1.32 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts">
17 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
18                   <a href="#harfbuzz-hb-subset.description" class="shortcut">Description</a></span>
19 </td>
20 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
21 <td><a accesskey="u" href="subset-api.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
22 <td><a accesskey="p" href="subset-api.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
23 <td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
24 </tr></table>
25 <div class="refentry">
26 <a name="harfbuzz-hb-subset"></a><div class="titlepage"></div>
27 <div class="refnamediv"><table width="100%"><tr>
28 <td valign="top">
29 <h2><span class="refentrytitle"><a name="harfbuzz-hb-subset.top_of_page"></a>hb-subset</span></h2>
30 <p>hb-subset — Subsets font files.</p>
31 </td>
32 <td class="gallery_image" valign="top" align="right"></td>
33 </tr></table></div>
34 <div class="refsect1">
35 <a name="harfbuzz-hb-subset.functions"></a><h2>Functions</h2>
36 <div class="informaltable"><table class="informaltable" width="100%" border="0">
37 <colgroup>
38 <col width="150px" class="functions_proto_type">
39 <col class="functions_proto_name">
40 </colgroup>
41 <tbody>
42 <tr>
43 <td class="function_type">
44 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="returnvalue">hb_subset_input_t</span></a> *
45 </td>
46 <td class="function_name">
47 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-create-or-fail" title="hb_subset_input_create_or_fail ()">hb_subset_input_create_or_fail</a> <span class="c_punctuation">()</span>
48 </td>
49 </tr>
50 <tr>
51 <td class="function_type">
52 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="returnvalue">hb_subset_input_t</span></a> *
53 </td>
54 <td class="function_name">
55 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-reference" title="hb_subset_input_reference ()">hb_subset_input_reference</a> <span class="c_punctuation">()</span>
56 </td>
57 </tr>
58 <tr>
59 <td class="function_type">
60 <span class="returnvalue">void</span>
61 </td>
62 <td class="function_name">
63 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-destroy" title="hb_subset_input_destroy ()">hb_subset_input_destroy</a> <span class="c_punctuation">()</span>
64 </td>
65 </tr>
66 <tr>
67 <td class="function_type">
68 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
69 </td>
70 <td class="function_name">
71 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-set-user-data" title="hb_subset_input_set_user_data ()">hb_subset_input_set_user_data</a> <span class="c_punctuation">()</span>
72 </td>
73 </tr>
74 <tr>
75 <td class="function_type">
76 <span class="returnvalue">void</span> *
77 </td>
78 <td class="function_name">
79 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-get-user-data" title="hb_subset_input_get_user_data ()">hb_subset_input_get_user_data</a> <span class="c_punctuation">()</span>
80 </td>
81 </tr>
82 <tr>
83 <td class="function_type">
84 <span class="returnvalue">void</span>
85 </td>
86 <td class="function_name">
87 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-keep-everything" title="hb_subset_input_keep_everything ()">hb_subset_input_keep_everything</a> <span class="c_punctuation">()</span>
88 </td>
89 </tr>
90 <tr>
91 <td class="function_type">
92 <span class="returnvalue">void</span>
93 </td>
94 <td class="function_name">
95 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-set-flags" title="hb_subset_input_set_flags ()">hb_subset_input_set_flags</a> <span class="c_punctuation">()</span>
96 </td>
97 </tr>
98 <tr>
99 <td class="function_type">
100 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-flags-t" title="enum hb_subset_flags_t"><span class="returnvalue">hb_subset_flags_t</span></a>
101 </td>
102 <td class="function_name">
103 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-get-flags" title="hb_subset_input_get_flags ()">hb_subset_input_get_flags</a> <span class="c_punctuation">()</span>
104 </td>
105 </tr>
106 <tr>
107 <td class="function_type">
108 <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="returnvalue">hb_set_t</span></a> *
109 </td>
110 <td class="function_name">
111 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-unicode-set" title="hb_subset_input_unicode_set ()">hb_subset_input_unicode_set</a> <span class="c_punctuation">()</span>
112 </td>
113 </tr>
114 <tr>
115 <td class="function_type">
116 <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="returnvalue">hb_set_t</span></a> *
117 </td>
118 <td class="function_name">
119 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-glyph-set" title="hb_subset_input_glyph_set ()">hb_subset_input_glyph_set</a> <span class="c_punctuation">()</span>
120 </td>
121 </tr>
122 <tr>
123 <td class="function_type">
124 <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="returnvalue">hb_set_t</span></a> *
125 </td>
126 <td class="function_name">
127 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-set" title="hb_subset_input_set ()">hb_subset_input_set</a> <span class="c_punctuation">()</span>
128 </td>
129 </tr>
130 <tr>
131 <td class="function_type">
132 <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
133 </td>
134 <td class="function_name">
135 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-old-to-new-glyph-mapping" title="hb_subset_input_old_to_new_glyph_mapping ()">hb_subset_input_old_to_new_glyph_mapping</a> <span class="c_punctuation">()</span>
136 </td>
137 </tr>
138 <tr>
139 <td class="function_type">
140 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
141 </td>
142 <td class="function_name">
143 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-pin-axis-location" title="hb_subset_input_pin_axis_location ()">hb_subset_input_pin_axis_location</a> <span class="c_punctuation">()</span>
144 </td>
145 </tr>
146 <tr>
147 <td class="function_type">
148 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
149 </td>
150 <td class="function_name">
151 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-pin-axis-to-default" title="hb_subset_input_pin_axis_to_default ()">hb_subset_input_pin_axis_to_default</a> <span class="c_punctuation">()</span>
152 </td>
153 </tr>
154 <tr>
155 <td class="function_type">
156 <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="returnvalue">hb_face_t</span></a> *
157 </td>
158 <td class="function_name">
159 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-or-fail" title="hb_subset_or_fail ()">hb_subset_or_fail</a> <span class="c_punctuation">()</span>
160 </td>
161 </tr>
162 <tr>
163 <td class="function_type">
164 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="returnvalue">hb_subset_plan_t</span></a> *
165 </td>
166 <td class="function_name">
167 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-create-or-fail" title="hb_subset_plan_create_or_fail ()">hb_subset_plan_create_or_fail</a> <span class="c_punctuation">()</span>
168 </td>
169 </tr>
170 <tr>
171 <td class="function_type">
172 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="returnvalue">hb_subset_plan_t</span></a> *
173 </td>
174 <td class="function_name">
175 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-reference" title="hb_subset_plan_reference ()">hb_subset_plan_reference</a> <span class="c_punctuation">()</span>
176 </td>
177 </tr>
178 <tr>
179 <td class="function_type">
180 <span class="returnvalue">void</span>
181 </td>
182 <td class="function_name">
183 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-destroy" title="hb_subset_plan_destroy ()">hb_subset_plan_destroy</a> <span class="c_punctuation">()</span>
184 </td>
185 </tr>
186 <tr>
187 <td class="function_type">
188 <a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
189 </td>
190 <td class="function_name">
191 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-set-user-data" title="hb_subset_plan_set_user_data ()">hb_subset_plan_set_user_data</a> <span class="c_punctuation">()</span>
192 </td>
193 </tr>
194 <tr>
195 <td class="function_type">
196 <span class="returnvalue">void</span> *
197 </td>
198 <td class="function_name">
199 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-get-user-data" title="hb_subset_plan_get_user_data ()">hb_subset_plan_get_user_data</a> <span class="c_punctuation">()</span>
200 </td>
201 </tr>
202 <tr>
203 <td class="function_type">
204 <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="returnvalue">hb_face_t</span></a> *
205 </td>
206 <td class="function_name">
207 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-execute-or-fail" title="hb_subset_plan_execute_or_fail ()">hb_subset_plan_execute_or_fail</a> <span class="c_punctuation">()</span>
208 </td>
209 </tr>
210 <tr>
211 <td class="function_type">
212 <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
213 </td>
214 <td class="function_name">
215 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-unicode-to-old-glyph-mapping" title="hb_subset_plan_unicode_to_old_glyph_mapping ()">hb_subset_plan_unicode_to_old_glyph_mapping</a> <span class="c_punctuation">()</span>
216 </td>
217 </tr>
218 <tr>
219 <td class="function_type">
220 <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
221 </td>
222 <td class="function_name">
223 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-new-to-old-glyph-mapping" title="hb_subset_plan_new_to_old_glyph_mapping ()">hb_subset_plan_new_to_old_glyph_mapping</a> <span class="c_punctuation">()</span>
224 </td>
225 </tr>
226 <tr>
227 <td class="function_type">
228 <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
229 </td>
230 <td class="function_name">
231 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-old-to-new-glyph-mapping" title="hb_subset_plan_old_to_new_glyph_mapping ()">hb_subset_plan_old_to_new_glyph_mapping</a> <span class="c_punctuation">()</span>
232 </td>
233 </tr>
234 <tr>
235 <td class="function_type">
236 <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="returnvalue">hb_face_t</span></a> *
237 </td>
238 <td class="function_name">
239 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-preprocess" title="hb_subset_preprocess ()">hb_subset_preprocess</a> <span class="c_punctuation">()</span>
240 </td>
241 </tr>
242 </tbody>
243 </table></div>
244 </div>
245 <div class="refsect1">
246 <a name="harfbuzz-hb-subset.other"></a><h2>Types and Values</h2>
247 <div class="informaltable"><table class="informaltable" width="100%" border="0">
248 <colgroup>
249 <col width="150px" class="other_proto_type">
250 <col class="other_proto_name">
251 </colgroup>
252 <tbody>
253 <tr>
254 <td class="datatype_keyword">enum</td>
255 <td class="function_name"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-flags-t" title="enum hb_subset_flags_t">hb_subset_flags_t</a></td>
256 </tr>
257 <tr>
258 <td class="typedef_keyword">typedef</td>
259 <td class="function_name"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t">hb_subset_input_t</a></td>
260 </tr>
261 <tr>
262 <td class="datatype_keyword">enum</td>
263 <td class="function_name"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-sets-t" title="enum hb_subset_sets_t">hb_subset_sets_t</a></td>
264 </tr>
265 <tr>
266 <td class="typedef_keyword">typedef</td>
267 <td class="function_name"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t">hb_subset_plan_t</a></td>
268 </tr>
269 </tbody>
270 </table></div>
271 </div>
272 <div class="refsect1">
273 <a name="harfbuzz-hb-subset.includes"></a><h2>Includes</h2>
274 <pre class="synopsis">#include &lt;hb-subset.h&gt;
275 </pre>
276 </div>
277 <div class="refsect1">
278 <a name="harfbuzz-hb-subset.description"></a><h2>Description</h2>
279 <p>Subsetting reduces the codepoint coverage of font files and removes all data
280 that is no longer needed. A subset input describes the desired subset. The input is
281 provided along with a font to the subsetting operation. Output is a new font file
282 containing only the data specified in the input.</p>
283 <p>Currently most outline and bitmap tables are supported: glyf, CFF, CFF2, sbix,
284 COLR, and CBDT/CBLC. This also includes fonts with variable outlines via OpenType
285 variations. Notably EBDT/EBLC and SVG are not supported. Layout subsetting is supported
286 only for OpenType Layout tables (GSUB, GPOS, GDEF). Notably subsetting of graphite or AAT tables
287 is not yet supported.</p>
288 <p>Fonts with graphite or AAT tables may still be subsetted but will likely need to use the
289 retain glyph ids option and configure the subset to pass through the layout tables untouched.</p>
290 </div>
291 <div class="refsect1">
292 <a name="harfbuzz-hb-subset.functions_details"></a><h2>Functions</h2>
293 <div class="refsect2">
294 <a name="hb-subset-input-create-or-fail"></a><h3>hb_subset_input_create_or_fail ()</h3>
295 <pre class="programlisting"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="returnvalue">hb_subset_input_t</span></a> *
296 hb_subset_input_create_or_fail (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
297 <p>Creates a new subset input object.</p>
298 <div class="refsect3">
299 <a name="hb-subset-input-create-or-fail.returns"></a><h4>Returns</h4>
300 <p>New subset input, or <code class="literal">NULL</code> if failed. Destroy
301 with <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-destroy" title="hb_subset_input_destroy ()"><code class="function">hb_subset_input_destroy()</code></a>. </p>
302 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
303 </div>
304 <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p>
305 </div>
306 <hr>
307 <div class="refsect2">
308 <a name="hb-subset-input-reference"></a><h3>hb_subset_input_reference ()</h3>
309 <pre class="programlisting"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="returnvalue">hb_subset_input_t</span></a> *
310 hb_subset_input_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
311 <p>Increases the reference count on <em class="parameter"><code>input</code></em>
312 .</p>
313 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
314 <div class="refsect3">
315 <a name="hb-subset-input-reference.parameters"></a><h4>Parameters</h4>
316 <div class="informaltable"><table class="informaltable" width="100%" border="0">
317 <colgroup>
318 <col width="150px" class="parameters_name">
319 <col class="parameters_description">
320 <col width="200px" class="parameters_annotations">
321 </colgroup>
322 <tbody><tr>
323 <td class="parameter_name"><p>input</p></td>
324 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
325 <td class="parameter_annotations"> </td>
326 </tr></tbody>
327 </table></div>
328 </div>
329 <div class="refsect3">
330 <a name="hb-subset-input-reference.returns"></a><h4>Returns</h4>
331 <p> <em class="parameter"><code>input</code></em>
332 .</p>
333 </div>
334 <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p>
335 </div>
336 <hr>
337 <div class="refsect2">
338 <a name="hb-subset-input-destroy"></a><h3>hb_subset_input_destroy ()</h3>
339 <pre class="programlisting"><span class="returnvalue">void</span>
340 hb_subset_input_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
341 <p>Decreases the reference count on <em class="parameter"><code>input</code></em>
342 , and if it reaches zero, destroys
343 <em class="parameter"><code>input</code></em>
344 , freeing all memory.</p>
345 <div class="refsect3">
346 <a name="hb-subset-input-destroy.parameters"></a><h4>Parameters</h4>
347 <div class="informaltable"><table class="informaltable" width="100%" border="0">
348 <colgroup>
349 <col width="150px" class="parameters_name">
350 <col class="parameters_description">
351 <col width="200px" class="parameters_annotations">
352 </colgroup>
353 <tbody><tr>
354 <td class="parameter_name"><p>input</p></td>
355 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
356 <td class="parameter_annotations"> </td>
357 </tr></tbody>
358 </table></div>
359 </div>
360 <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p>
361 </div>
362 <hr>
363 <div class="refsect2">
364 <a name="hb-subset-input-set-user-data"></a><h3>hb_subset_input_set_user_data ()</h3>
365 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
366 hb_subset_input_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>,
367                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>,
368                                <em class="parameter"><code><span class="type">void</span> *data</code></em>,
369                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
370                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
371 <p>Attaches a user-data key/data pair to the given subset input object.</p>
372 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
373 <div class="refsect3">
374 <a name="hb-subset-input-set-user-data.parameters"></a><h4>Parameters</h4>
375 <div class="informaltable"><table class="informaltable" width="100%" border="0">
376 <colgroup>
377 <col width="150px" class="parameters_name">
378 <col class="parameters_description">
379 <col width="200px" class="parameters_annotations">
380 </colgroup>
381 <tbody>
382 <tr>
383 <td class="parameter_name"><p>input</p></td>
384 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
385 <td class="parameter_annotations"> </td>
386 </tr>
387 <tr>
388 <td class="parameter_name"><p>key</p></td>
389 <td class="parameter_description"><p>The user-data key to set</p></td>
390 <td class="parameter_annotations"> </td>
391 </tr>
392 <tr>
393 <td class="parameter_name"><p>data</p></td>
394 <td class="parameter_description"><p>A pointer to the user data</p></td>
395 <td class="parameter_annotations"> </td>
396 </tr>
397 <tr>
398 <td class="parameter_name"><p>destroy</p></td>
399 <td class="parameter_description"><p>A callback to call when <em class="parameter"><code>data</code></em>
400 is not needed anymore. </p></td>
401 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
402 </tr>
403 <tr>
404 <td class="parameter_name"><p>replace</p></td>
405 <td class="parameter_description"><p>Whether to replace an existing data with the same key</p></td>
406 <td class="parameter_annotations"> </td>
407 </tr>
408 </tbody>
409 </table></div>
410 </div>
411 <div class="refsect3">
412 <a name="hb-subset-input-set-user-data.returns"></a><h4>Returns</h4>
413 <p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p>
414 </div>
415 <p class="since">Since: <a class="link" href="api-index-2-9-0.html#api-index-2.9.0">2.9.0</a></p>
416 </div>
417 <hr>
418 <div class="refsect2">
419 <a name="hb-subset-input-get-user-data"></a><h3>hb_subset_input_get_user_data ()</h3>
420 <pre class="programlisting"><span class="returnvalue">void</span> *
421 hb_subset_input_get_user_data (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>,
422                                <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
423 <p>Fetches the user data associated with the specified key,
424 attached to the specified subset input object.</p>
425 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
426 <div class="refsect3">
427 <a name="hb-subset-input-get-user-data.parameters"></a><h4>Parameters</h4>
428 <div class="informaltable"><table class="informaltable" width="100%" border="0">
429 <colgroup>
430 <col width="150px" class="parameters_name">
431 <col class="parameters_description">
432 <col width="200px" class="parameters_annotations">
433 </colgroup>
434 <tbody>
435 <tr>
436 <td class="parameter_name"><p>input</p></td>
437 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
438 <td class="parameter_annotations"> </td>
439 </tr>
440 <tr>
441 <td class="parameter_name"><p>key</p></td>
442 <td class="parameter_description"><p>The user-data key to query</p></td>
443 <td class="parameter_annotations"> </td>
444 </tr>
445 </tbody>
446 </table></div>
447 </div>
448 <div class="refsect3">
449 <a name="hb-subset-input-get-user-data.returns"></a><h4>Returns</h4>
450 <p>A pointer to the user data. </p>
451 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
452 </div>
453 <p class="since">Since: <a class="link" href="api-index-2-9-0.html#api-index-2.9.0">2.9.0</a></p>
454 </div>
455 <hr>
456 <div class="refsect2">
457 <a name="hb-subset-input-keep-everything"></a><h3>hb_subset_input_keep_everything ()</h3>
458 <pre class="programlisting"><span class="returnvalue">void</span>
459 hb_subset_input_keep_everything (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
460 <p>Configure input object to keep everything in the font face.
461 That is, all Unicodes, glyphs, names, layout items,
462 glyph names, etc.</p>
463 <p>The input can be tailored afterwards by the caller.</p>
464 <div class="refsect3">
465 <a name="hb-subset-input-keep-everything.parameters"></a><h4>Parameters</h4>
466 <div class="informaltable"><table class="informaltable" width="100%" border="0">
467 <colgroup>
468 <col width="150px" class="parameters_name">
469 <col class="parameters_description">
470 <col width="200px" class="parameters_annotations">
471 </colgroup>
472 <tbody><tr>
473 <td class="parameter_name"><p>input</p></td>
474 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object</p></td>
475 <td class="parameter_annotations"> </td>
476 </tr></tbody>
477 </table></div>
478 </div>
479 <p class="since">Since: <a class="link" href="api-index-7-0-0.html#api-index-7.0.0">7.0.0</a></p>
480 </div>
481 <hr>
482 <div class="refsect2">
483 <a name="hb-subset-input-set-flags"></a><h3>hb_subset_input_set_flags ()</h3>
484 <pre class="programlisting"><span class="returnvalue">void</span>
485 hb_subset_input_set_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>,
486                            <em class="parameter"><code><span class="type">unsigned </span> value</code></em>);</pre>
487 <p>Sets all of the flags in the input object to the values specified by the bit
488 field.</p>
489 <div class="refsect3">
490 <a name="hb-subset-input-set-flags.parameters"></a><h4>Parameters</h4>
491 <div class="informaltable"><table class="informaltable" width="100%" border="0">
492 <colgroup>
493 <col width="150px" class="parameters_name">
494 <col class="parameters_description">
495 <col width="200px" class="parameters_annotations">
496 </colgroup>
497 <tbody>
498 <tr>
499 <td class="parameter_name"><p>input</p></td>
500 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
501 <td class="parameter_annotations"> </td>
502 </tr>
503 <tr>
504 <td class="parameter_name"><p>value</p></td>
505 <td class="parameter_description"><p>bit field of flags</p></td>
506 <td class="parameter_annotations"> </td>
507 </tr>
508 </tbody>
509 </table></div>
510 </div>
511 <p class="since">Since: <a class="link" href="api-index-2-9-0.html#api-index-2.9.0">2.9.0</a></p>
512 </div>
513 <hr>
514 <div class="refsect2">
515 <a name="hb-subset-input-get-flags"></a><h3>hb_subset_input_get_flags ()</h3>
516 <pre class="programlisting"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-flags-t" title="enum hb_subset_flags_t"><span class="returnvalue">hb_subset_flags_t</span></a>
517 hb_subset_input_get_flags (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
518 <p>Gets all of the subsetting flags in the input object.</p>
519 <div class="refsect3">
520 <a name="hb-subset-input-get-flags.parameters"></a><h4>Parameters</h4>
521 <div class="informaltable"><table class="informaltable" width="100%" border="0">
522 <colgroup>
523 <col width="150px" class="parameters_name">
524 <col class="parameters_description">
525 <col width="200px" class="parameters_annotations">
526 </colgroup>
527 <tbody><tr>
528 <td class="parameter_name"><p>input</p></td>
529 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
530 <td class="parameter_annotations"> </td>
531 </tr></tbody>
532 </table></div>
533 </div>
534 <div class="refsect3">
535 <a name="hb-subset-input-get-flags.returns"></a><h4>Returns</h4>
536 <p> the subsetting flags bit field.</p>
537 </div>
538 <p class="since">Since: <a class="link" href="api-index-2-9-0.html#api-index-2.9.0">2.9.0</a></p>
539 </div>
540 <hr>
541 <div class="refsect2">
542 <a name="hb-subset-input-unicode-set"></a><h3>hb_subset_input_unicode_set ()</h3>
543 <pre class="programlisting"><a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="returnvalue">hb_set_t</span></a> *
544 hb_subset_input_unicode_set (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
545 <p>Gets the set of Unicode code points to retain, the caller should modify the
546 set as needed.</p>
547 <div class="refsect3">
548 <a name="hb-subset-input-unicode-set.parameters"></a><h4>Parameters</h4>
549 <div class="informaltable"><table class="informaltable" width="100%" border="0">
550 <colgroup>
551 <col width="150px" class="parameters_name">
552 <col class="parameters_description">
553 <col width="200px" class="parameters_annotations">
554 </colgroup>
555 <tbody><tr>
556 <td class="parameter_name"><p>input</p></td>
557 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
558 <td class="parameter_annotations"> </td>
559 </tr></tbody>
560 </table></div>
561 </div>
562 <div class="refsect3">
563 <a name="hb-subset-input-unicode-set.returns"></a><h4>Returns</h4>
564 <p>pointer to the <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> of Unicode code
565 points. </p>
566 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
567 </div>
568 <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p>
569 </div>
570 <hr>
571 <div class="refsect2">
572 <a name="hb-subset-input-glyph-set"></a><h3>hb_subset_input_glyph_set ()</h3>
573 <pre class="programlisting"><a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="returnvalue">hb_set_t</span></a> *
574 hb_subset_input_glyph_set (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
575 <p>Gets the set of glyph IDs to retain, the caller should modify the set as
576 needed.</p>
577 <div class="refsect3">
578 <a name="hb-subset-input-glyph-set.parameters"></a><h4>Parameters</h4>
579 <div class="informaltable"><table class="informaltable" width="100%" border="0">
580 <colgroup>
581 <col width="150px" class="parameters_name">
582 <col class="parameters_description">
583 <col width="200px" class="parameters_annotations">
584 </colgroup>
585 <tbody><tr>
586 <td class="parameter_name"><p>input</p></td>
587 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
588 <td class="parameter_annotations"> </td>
589 </tr></tbody>
590 </table></div>
591 </div>
592 <div class="refsect3">
593 <a name="hb-subset-input-glyph-set.returns"></a><h4>Returns</h4>
594 <p>pointer to the <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> of glyph IDs. </p>
595 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
596 </div>
597 <p class="since">Since: <a class="link" href="api-index-1-8-0.html#api-index-1.8.0">1.8.0</a></p>
598 </div>
599 <hr>
600 <div class="refsect2">
601 <a name="hb-subset-input-set"></a><h3>hb_subset_input_set ()</h3>
602 <pre class="programlisting"><a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="returnvalue">hb_set_t</span></a> *
603 hb_subset_input_set (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>,
604                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-sets-t" title="enum hb_subset_sets_t"><span class="type">hb_subset_sets_t</span></a> set_type</code></em>);</pre>
605 <p>Gets the set of the specified type.</p>
606 <div class="refsect3">
607 <a name="hb-subset-input-set.parameters"></a><h4>Parameters</h4>
608 <div class="informaltable"><table class="informaltable" width="100%" border="0">
609 <colgroup>
610 <col width="150px" class="parameters_name">
611 <col class="parameters_description">
612 <col width="200px" class="parameters_annotations">
613 </colgroup>
614 <tbody>
615 <tr>
616 <td class="parameter_name"><p>input</p></td>
617 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
618 <td class="parameter_annotations"> </td>
619 </tr>
620 <tr>
621 <td class="parameter_name"><p>set_type</p></td>
622 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-sets-t" title="enum hb_subset_sets_t"><span class="type">hb_subset_sets_t</span></a> set type.</p></td>
623 <td class="parameter_annotations"> </td>
624 </tr>
625 </tbody>
626 </table></div>
627 </div>
628 <div class="refsect3">
629 <a name="hb-subset-input-set.returns"></a><h4>Returns</h4>
630 <p>pointer to the <a class="link" href="harfbuzz-hb-set.html#hb-set-t" title="hb_set_t"><span class="type">hb_set_t</span></a> of the specified type. </p>
631 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
632 </div>
633 <p class="since">Since: <a class="link" href="api-index-2-9-1.html#api-index-2.9.1">2.9.1</a></p>
634 </div>
635 <hr>
636 <div class="refsect2">
637 <a name="hb-subset-input-old-to-new-glyph-mapping"></a><h3>hb_subset_input_old_to_new_glyph_mapping ()</h3>
638 <pre class="programlisting"><a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
639 hb_subset_input_old_to_new_glyph_mapping
640                                (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
641 <p>Returns a map which can be used to provide an explicit mapping from old to new glyph
642 id's in the produced subset. The caller should populate the map as desired.
643 If this map is left empty then glyph ids will be automatically mapped to new
644 values by the subsetter. If populated, the mapping must be unique. That
645 is no two original glyph ids can be mapped to the same new id.
646 Additionally, if a mapping is provided then the retain gids option cannot
647 be enabled.</p>
648 <p>Any glyphs that are retained in the subset which are not specified
649 in this mapping will be assigned glyph ids after the highest glyph
650 id in the mapping.</p>
651 <p>Note: this will accept and apply non-monotonic mappings, however this
652 may result in unsorted Coverage tables. Such fonts may not work for all
653 use cases (for example ots will reject unsorted coverage tables). So it's
654 recommended, if possible, to supply a monotonic mapping.</p>
655 <div class="refsect3">
656 <a name="hb-subset-input-old-to-new-glyph-mapping.parameters"></a><h4>Parameters</h4>
657 <div class="informaltable"><table class="informaltable" width="100%" border="0">
658 <colgroup>
659 <col width="150px" class="parameters_name">
660 <col class="parameters_description">
661 <col width="200px" class="parameters_annotations">
662 </colgroup>
663 <tbody><tr>
664 <td class="parameter_name"><p>input</p></td>
665 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
666 <td class="parameter_annotations"> </td>
667 </tr></tbody>
668 </table></div>
669 </div>
670 <div class="refsect3">
671 <a name="hb-subset-input-old-to-new-glyph-mapping.returns"></a><h4>Returns</h4>
672 <p>pointer to the <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="type">hb_map_t</span></a> of the custom glyphs ID map. </p>
673 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
674 </div>
675 <p class="since">Since: <a class="link" href="api-index-7-3-0.html#api-index-7.3.0">7.3.0</a></p>
676 </div>
677 <hr>
678 <div class="refsect2">
679 <a name="hb-subset-input-pin-axis-location"></a><h3>hb_subset_input_pin_axis_location ()</h3>
680 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
681 hb_subset_input_pin_axis_location (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>,
682                                    <em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>,
683                                    <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> axis_tag</code></em>,
684                                    <em class="parameter"><code><span class="type">float</span> axis_value</code></em>);</pre>
685 <p>Pin an axis to a fixed location in the given subset input object.</p>
686 <p>All axes in a font must be pinned. Additionally, <code class="literal">CFF2</code> table, if present,
687 will be de-subroutinized.</p>
688 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
689 <div class="refsect3">
690 <a name="hb-subset-input-pin-axis-location.parameters"></a><h4>Parameters</h4>
691 <div class="informaltable"><table class="informaltable" width="100%" border="0">
692 <colgroup>
693 <col width="150px" class="parameters_name">
694 <col class="parameters_description">
695 <col width="200px" class="parameters_annotations">
696 </colgroup>
697 <tbody>
698 <tr>
699 <td class="parameter_name"><p>input</p></td>
700 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
701 <td class="parameter_annotations"> </td>
702 </tr>
703 <tr>
704 <td class="parameter_name"><p>face</p></td>
705 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> object.</p></td>
706 <td class="parameter_annotations"> </td>
707 </tr>
708 <tr>
709 <td class="parameter_name"><p>axis_tag</p></td>
710 <td class="parameter_description"><p>Tag of the axis to be pinned</p></td>
711 <td class="parameter_annotations"> </td>
712 </tr>
713 <tr>
714 <td class="parameter_name"><p>axis_value</p></td>
715 <td class="parameter_description"><p>Location on the axis to be pinned at</p></td>
716 <td class="parameter_annotations"> </td>
717 </tr>
718 </tbody>
719 </table></div>
720 </div>
721 <div class="refsect3">
722 <a name="hb-subset-input-pin-axis-location.returns"></a><h4>Returns</h4>
723 <p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p>
724 </div>
725 <p class="since">Since: <a class="link" href="api-index-6-0-0.html#api-index-6.0.0">6.0.0</a></p>
726 </div>
727 <hr>
728 <div class="refsect2">
729 <a name="hb-subset-input-pin-axis-to-default"></a><h3>hb_subset_input_pin_axis_to_default ()</h3>
730 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
731 hb_subset_input_pin_axis_to_default (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>,
732                                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>,
733                                      <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-tag-t" title="hb_tag_t"><span class="type">hb_tag_t</span></a> axis_tag</code></em>);</pre>
734 <p>Pin an axis to its default location in the given subset input object.</p>
735 <p>All axes in a font must be pinned. Additionally, <code class="literal">CFF2</code> table, if present,
736 will be de-subroutinized.</p>
737 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
738 <div class="refsect3">
739 <a name="hb-subset-input-pin-axis-to-default.parameters"></a><h4>Parameters</h4>
740 <div class="informaltable"><table class="informaltable" width="100%" border="0">
741 <colgroup>
742 <col width="150px" class="parameters_name">
743 <col class="parameters_description">
744 <col width="200px" class="parameters_annotations">
745 </colgroup>
746 <tbody>
747 <tr>
748 <td class="parameter_name"><p>input</p></td>
749 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> object.</p></td>
750 <td class="parameter_annotations"> </td>
751 </tr>
752 <tr>
753 <td class="parameter_name"><p>face</p></td>
754 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> object.</p></td>
755 <td class="parameter_annotations"> </td>
756 </tr>
757 <tr>
758 <td class="parameter_name"><p>axis_tag</p></td>
759 <td class="parameter_description"><p>Tag of the axis to be pinned</p></td>
760 <td class="parameter_annotations"> </td>
761 </tr>
762 </tbody>
763 </table></div>
764 </div>
765 <div class="refsect3">
766 <a name="hb-subset-input-pin-axis-to-default.returns"></a><h4>Returns</h4>
767 <p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p>
768 </div>
769 <p class="since">Since: <a class="link" href="api-index-6-0-0.html#api-index-6.0.0">6.0.0</a></p>
770 </div>
771 <hr>
772 <div class="refsect2">
773 <a name="hb-subset-or-fail"></a><h3>hb_subset_or_fail ()</h3>
774 <pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="returnvalue">hb_face_t</span></a> *
775 hb_subset_or_fail (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *source</code></em>,
776                    <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
777 <p>Subsets a font according to provided input. Returns nullptr
778 if the subset operation fails.</p>
779 <div class="refsect3">
780 <a name="hb-subset-or-fail.parameters"></a><h4>Parameters</h4>
781 <div class="informaltable"><table class="informaltable" width="100%" border="0">
782 <colgroup>
783 <col width="150px" class="parameters_name">
784 <col class="parameters_description">
785 <col width="200px" class="parameters_annotations">
786 </colgroup>
787 <tbody>
788 <tr>
789 <td class="parameter_name"><p>source</p></td>
790 <td class="parameter_description"><p>font face data to be subset.</p></td>
791 <td class="parameter_annotations"> </td>
792 </tr>
793 <tr>
794 <td class="parameter_name"><p>input</p></td>
795 <td class="parameter_description"><p>input to use for the subsetting.</p></td>
796 <td class="parameter_annotations"> </td>
797 </tr>
798 </tbody>
799 </table></div>
800 </div>
801 <p class="since">Since: <a class="link" href="api-index-2-9-0.html#api-index-2.9.0">2.9.0</a></p>
802 </div>
803 <hr>
804 <div class="refsect2">
805 <a name="hb-subset-plan-create-or-fail"></a><h3>hb_subset_plan_create_or_fail ()</h3>
806 <pre class="programlisting"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="returnvalue">hb_subset_plan_t</span></a> *
807 hb_subset_plan_create_or_fail (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *face</code></em>,
808                                <em class="parameter"><code>const <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> *input</code></em>);</pre>
809 <p>Computes a plan for subsetting the supplied face according
810 to a provided input. The plan describes
811 which tables and glyphs should be retained.</p>
812 <div class="refsect3">
813 <a name="hb-subset-plan-create-or-fail.parameters"></a><h4>Parameters</h4>
814 <div class="informaltable"><table class="informaltable" width="100%" border="0">
815 <colgroup>
816 <col width="150px" class="parameters_name">
817 <col class="parameters_description">
818 <col width="200px" class="parameters_annotations">
819 </colgroup>
820 <tbody>
821 <tr>
822 <td class="parameter_name"><p>face</p></td>
823 <td class="parameter_description"><p>font face to create the plan for.</p></td>
824 <td class="parameter_annotations"> </td>
825 </tr>
826 <tr>
827 <td class="parameter_name"><p>input</p></td>
828 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-input-t" title="hb_subset_input_t"><span class="type">hb_subset_input_t</span></a> input.</p></td>
829 <td class="parameter_annotations"> </td>
830 </tr>
831 </tbody>
832 </table></div>
833 </div>
834 <div class="refsect3">
835 <a name="hb-subset-plan-create-or-fail.returns"></a><h4>Returns</h4>
836 <p>New subset plan. Destroy with
837 <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-destroy" title="hb_subset_plan_destroy ()"><code class="function">hb_subset_plan_destroy()</code></a>. If there is a failure creating the plan
838 nullptr will be returned. </p>
839 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
840 </div>
841 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
842 </div>
843 <hr>
844 <div class="refsect2">
845 <a name="hb-subset-plan-reference"></a><h3>hb_subset_plan_reference ()</h3>
846 <pre class="programlisting"><a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="returnvalue">hb_subset_plan_t</span></a> *
847 hb_subset_plan_reference (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>);</pre>
848 <p>Increases the reference count on <em class="parameter"><code>plan</code></em>
849 .</p>
850 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
851 <div class="refsect3">
852 <a name="hb-subset-plan-reference.parameters"></a><h4>Parameters</h4>
853 <div class="informaltable"><table class="informaltable" width="100%" border="0">
854 <colgroup>
855 <col width="150px" class="parameters_name">
856 <col class="parameters_description">
857 <col width="200px" class="parameters_annotations">
858 </colgroup>
859 <tbody><tr>
860 <td class="parameter_name"><p>plan</p></td>
861 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> object.</p></td>
862 <td class="parameter_annotations"> </td>
863 </tr></tbody>
864 </table></div>
865 </div>
866 <div class="refsect3">
867 <a name="hb-subset-plan-reference.returns"></a><h4>Returns</h4>
868 <p> <em class="parameter"><code>plan</code></em>
869 .</p>
870 </div>
871 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
872 </div>
873 <hr>
874 <div class="refsect2">
875 <a name="hb-subset-plan-destroy"></a><h3>hb_subset_plan_destroy ()</h3>
876 <pre class="programlisting"><span class="returnvalue">void</span>
877 hb_subset_plan_destroy (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>);</pre>
878 <p>Decreases the reference count on <em class="parameter"><code>plan</code></em>
879 , and if it reaches zero, destroys
880 <em class="parameter"><code>plan</code></em>
881 , freeing all memory.</p>
882 <div class="refsect3">
883 <a name="hb-subset-plan-destroy.parameters"></a><h4>Parameters</h4>
884 <div class="informaltable"><table class="informaltable" width="100%" border="0">
885 <colgroup>
886 <col width="150px" class="parameters_name">
887 <col class="parameters_description">
888 <col width="200px" class="parameters_annotations">
889 </colgroup>
890 <tbody><tr>
891 <td class="parameter_name"><p>plan</p></td>
892 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a></p></td>
893 <td class="parameter_annotations"> </td>
894 </tr></tbody>
895 </table></div>
896 </div>
897 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
898 </div>
899 <hr>
900 <div class="refsect2">
901 <a name="hb-subset-plan-set-user-data"></a><h3>hb_subset_plan_set_user_data ()</h3>
902 <pre class="programlisting"><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="returnvalue">hb_bool_t</span></a>
903 hb_subset_plan_set_user_data (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>,
904                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>,
905                               <em class="parameter"><code><span class="type">void</span> *data</code></em>,
906                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-destroy-func-t" title="hb_destroy_func_t ()"><span class="type">hb_destroy_func_t</span></a> destroy</code></em>,
907                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-bool-t" title="hb_bool_t"><span class="type">hb_bool_t</span></a> replace</code></em>);</pre>
908 <p>Attaches a user-data key/data pair to the given subset plan object.</p>
909 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
910 <div class="refsect3">
911 <a name="hb-subset-plan-set-user-data.parameters"></a><h4>Parameters</h4>
912 <div class="informaltable"><table class="informaltable" width="100%" border="0">
913 <colgroup>
914 <col width="150px" class="parameters_name">
915 <col class="parameters_description">
916 <col width="200px" class="parameters_annotations">
917 </colgroup>
918 <tbody>
919 <tr>
920 <td class="parameter_name"><p>plan</p></td>
921 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> object.</p></td>
922 <td class="parameter_annotations"> </td>
923 </tr>
924 <tr>
925 <td class="parameter_name"><p>key</p></td>
926 <td class="parameter_description"><p>The user-data key to set</p></td>
927 <td class="parameter_annotations"> </td>
928 </tr>
929 <tr>
930 <td class="parameter_name"><p>data</p></td>
931 <td class="parameter_description"><p>A pointer to the user data</p></td>
932 <td class="parameter_annotations"> </td>
933 </tr>
934 <tr>
935 <td class="parameter_name"><p>destroy</p></td>
936 <td class="parameter_description"><p>A callback to call when <em class="parameter"><code>data</code></em>
937 is not needed anymore. </p></td>
938 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></td>
939 </tr>
940 <tr>
941 <td class="parameter_name"><p>replace</p></td>
942 <td class="parameter_description"><p>Whether to replace an existing data with the same key</p></td>
943 <td class="parameter_annotations"> </td>
944 </tr>
945 </tbody>
946 </table></div>
947 </div>
948 <div class="refsect3">
949 <a name="hb-subset-plan-set-user-data.returns"></a><h4>Returns</h4>
950 <p> <code class="literal">true</code> if success, <code class="literal">false</code> otherwise</p>
951 </div>
952 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
953 </div>
954 <hr>
955 <div class="refsect2">
956 <a name="hb-subset-plan-get-user-data"></a><h3>hb_subset_plan_get_user_data ()</h3>
957 <pre class="programlisting"><span class="returnvalue">void</span> *
958 hb_subset_plan_get_user_data (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>,
959                               <em class="parameter"><code><a class="link" href="harfbuzz-hb-common.html#hb-user-data-key-t" title="hb_user_data_key_t"><span class="type">hb_user_data_key_t</span></a> *key</code></em>);</pre>
960 <p>Fetches the user data associated with the specified key,
961 attached to the specified subset plan object.</p>
962 <p><span class="annotation">[<acronym title="Exposed in C code, not necessarily available in other languages."><span class="acronym">skip</span></acronym>]</span></p>
963 <div class="refsect3">
964 <a name="hb-subset-plan-get-user-data.parameters"></a><h4>Parameters</h4>
965 <div class="informaltable"><table class="informaltable" width="100%" border="0">
966 <colgroup>
967 <col width="150px" class="parameters_name">
968 <col class="parameters_description">
969 <col width="200px" class="parameters_annotations">
970 </colgroup>
971 <tbody>
972 <tr>
973 <td class="parameter_name"><p>plan</p></td>
974 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> object.</p></td>
975 <td class="parameter_annotations"> </td>
976 </tr>
977 <tr>
978 <td class="parameter_name"><p>key</p></td>
979 <td class="parameter_description"><p>The user-data key to query</p></td>
980 <td class="parameter_annotations"> </td>
981 </tr>
982 </tbody>
983 </table></div>
984 </div>
985 <div class="refsect3">
986 <a name="hb-subset-plan-get-user-data.returns"></a><h4>Returns</h4>
987 <p>A pointer to the user data. </p>
988 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
989 </div>
990 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
991 </div>
992 <hr>
993 <div class="refsect2">
994 <a name="hb-subset-plan-execute-or-fail"></a><h3>hb_subset_plan_execute_or_fail ()</h3>
995 <pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="returnvalue">hb_face_t</span></a> *
996 hb_subset_plan_execute_or_fail (<em class="parameter"><code><a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>);</pre>
997 <p>Executes the provided subsetting <em class="parameter"><code>plan</code></em>
998 .</p>
999 <div class="refsect3">
1000 <a name="hb-subset-plan-execute-or-fail.parameters"></a><h4>Parameters</h4>
1001 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1002 <colgroup>
1003 <col width="150px" class="parameters_name">
1004 <col class="parameters_description">
1005 <col width="200px" class="parameters_annotations">
1006 </colgroup>
1007 <tbody><tr>
1008 <td class="parameter_name"><p>plan</p></td>
1009 <td class="parameter_description"><p>a subsetting plan.</p></td>
1010 <td class="parameter_annotations"> </td>
1011 </tr></tbody>
1012 </table></div>
1013 </div>
1014 <div class="refsect3">
1015 <a name="hb-subset-plan-execute-or-fail.returns"></a><h4>Returns</h4>
1016 <p>on success returns a reference to generated font subset. If the subsetting operation fails
1017 returns nullptr.</p>
1018 </div>
1019 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
1020 </div>
1021 <hr>
1022 <div class="refsect2">
1023 <a name="hb-subset-plan-unicode-to-old-glyph-mapping"></a><h3>hb_subset_plan_unicode_to_old_glyph_mapping ()</h3>
1024 <pre class="programlisting"><a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
1025 hb_subset_plan_unicode_to_old_glyph_mapping
1026                                (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>);</pre>
1027 <p>Returns the mapping between codepoints in the original font and the
1028 associated glyph id in the original font.</p>
1029 <div class="refsect3">
1030 <a name="hb-subset-plan-unicode-to-old-glyph-mapping.parameters"></a><h4>Parameters</h4>
1031 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1032 <colgroup>
1033 <col width="150px" class="parameters_name">
1034 <col class="parameters_description">
1035 <col width="200px" class="parameters_annotations">
1036 </colgroup>
1037 <tbody><tr>
1038 <td class="parameter_name"><p>plan</p></td>
1039 <td class="parameter_description"><p>a subsetting plan.</p></td>
1040 <td class="parameter_annotations"> </td>
1041 </tr></tbody>
1042 </table></div>
1043 </div>
1044 <div class="refsect3">
1045 <a name="hb-subset-plan-unicode-to-old-glyph-mapping.returns"></a><h4>Returns</h4>
1046 <p>A pointer to the <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="type">hb_map_t</span></a> of the mapping. </p>
1047 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
1048 </div>
1049 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
1050 </div>
1051 <hr>
1052 <div class="refsect2">
1053 <a name="hb-subset-plan-new-to-old-glyph-mapping"></a><h3>hb_subset_plan_new_to_old_glyph_mapping ()</h3>
1054 <pre class="programlisting"><a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
1055 hb_subset_plan_new_to_old_glyph_mapping
1056                                (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>);</pre>
1057 <p>Returns the mapping between glyphs in the subset that will be produced by
1058 <em class="parameter"><code>plan</code></em>
1059  and the glyph in the original font.</p>
1060 <div class="refsect3">
1061 <a name="hb-subset-plan-new-to-old-glyph-mapping.parameters"></a><h4>Parameters</h4>
1062 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1063 <colgroup>
1064 <col width="150px" class="parameters_name">
1065 <col class="parameters_description">
1066 <col width="200px" class="parameters_annotations">
1067 </colgroup>
1068 <tbody><tr>
1069 <td class="parameter_name"><p>plan</p></td>
1070 <td class="parameter_description"><p>a subsetting plan.</p></td>
1071 <td class="parameter_annotations"> </td>
1072 </tr></tbody>
1073 </table></div>
1074 </div>
1075 <div class="refsect3">
1076 <a name="hb-subset-plan-new-to-old-glyph-mapping.returns"></a><h4>Returns</h4>
1077 <p>A pointer to the <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="type">hb_map_t</span></a> of the mapping. </p>
1078 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
1079 </div>
1080 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
1081 </div>
1082 <hr>
1083 <div class="refsect2">
1084 <a name="hb-subset-plan-old-to-new-glyph-mapping"></a><h3>hb_subset_plan_old_to_new_glyph_mapping ()</h3>
1085 <pre class="programlisting"><a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="returnvalue">hb_map_t</span></a> *
1086 hb_subset_plan_old_to_new_glyph_mapping
1087                                (<em class="parameter"><code>const <a class="link" href="harfbuzz-hb-subset.html#hb-subset-plan-t" title="hb_subset_plan_t"><span class="type">hb_subset_plan_t</span></a> *plan</code></em>);</pre>
1088 <p>Returns the mapping between glyphs in the original font to glyphs in the
1089 subset that will be produced by <em class="parameter"><code>plan</code></em>
1090 </p>
1091 <div class="refsect3">
1092 <a name="hb-subset-plan-old-to-new-glyph-mapping.parameters"></a><h4>Parameters</h4>
1093 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1094 <colgroup>
1095 <col width="150px" class="parameters_name">
1096 <col class="parameters_description">
1097 <col width="200px" class="parameters_annotations">
1098 </colgroup>
1099 <tbody><tr>
1100 <td class="parameter_name"><p>plan</p></td>
1101 <td class="parameter_description"><p>a subsetting plan.</p></td>
1102 <td class="parameter_annotations"> </td>
1103 </tr></tbody>
1104 </table></div>
1105 </div>
1106 <div class="refsect3">
1107 <a name="hb-subset-plan-old-to-new-glyph-mapping.returns"></a><h4>Returns</h4>
1108 <p>A pointer to the <a class="link" href="harfbuzz-hb-map.html#hb-map-t" title="hb_map_t"><span class="type">hb_map_t</span></a> of the mapping. </p>
1109 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
1110 </div>
1111 <p class="since">Since: <a class="link" href="api-index-4-0-0.html#api-index-4.0.0">4.0.0</a></p>
1112 </div>
1113 <hr>
1114 <div class="refsect2">
1115 <a name="hb-subset-preprocess"></a><h3>hb_subset_preprocess ()</h3>
1116 <pre class="programlisting"><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="returnvalue">hb_face_t</span></a> *
1117 hb_subset_preprocess (<em class="parameter"><code><a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> *source</code></em>);</pre>
1118 <p>Preprocesses the face and attaches data that will be needed by the
1119 subsetter. Future subsetting operations can then use the precomputed data
1120 to speed up the subsetting operation.</p>
1121 <p>See <a class="ulink" href="https://github.com/harfbuzz/harfbuzz/blob/main/docs/subset-preprocessing.md" target="_top">subset-preprocessing</a>
1122 for more information.</p>
1123 <p>Note: the preprocessed face may contain sub-blobs that reference the memory
1124 backing the source <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a>. Therefore in the case that this memory is not
1125 owned by the source face you will need to ensure that memory lives
1126 as long as the returned <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a>.</p>
1127 <div class="refsect3">
1128 <a name="hb-subset-preprocess.parameters"></a><h4>Parameters</h4>
1129 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1130 <colgroup>
1131 <col width="150px" class="parameters_name">
1132 <col class="parameters_description">
1133 <col width="200px" class="parameters_annotations">
1134 </colgroup>
1135 <tbody><tr>
1136 <td class="parameter_name"><p>source</p></td>
1137 <td class="parameter_description"><p>a <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a> object.</p></td>
1138 <td class="parameter_annotations"> </td>
1139 </tr></tbody>
1140 </table></div>
1141 </div>
1142 <div class="refsect3">
1143 <a name="hb-subset-preprocess.returns"></a><h4>Returns</h4>
1144 <p> a new <a class="link" href="harfbuzz-hb-face.html#hb-face-t" title="hb_face_t"><span class="type">hb_face_t</span></a>.</p>
1145 </div>
1146 <p class="since">Since: <a class="link" href="api-index-6-0-0.html#api-index-6.0.0">6.0.0</a></p>
1147 </div>
1148 </div>
1149 <div class="refsect1">
1150 <a name="harfbuzz-hb-subset.other_details"></a><h2>Types and Values</h2>
1151 <div class="refsect2">
1152 <a name="hb-subset-flags-t"></a><h3>enum hb_subset_flags_t</h3>
1153 <p>List of boolean properties that can be configured on the subset input.</p>
1154 <div class="refsect3">
1155 <a name="hb-subset-flags-t.members"></a><h4>Members</h4>
1156 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1157 <colgroup>
1158 <col width="300px" class="enum_members_name">
1159 <col class="enum_members_description">
1160 <col width="200px" class="enum_members_annotations">
1161 </colgroup>
1162 <tbody>
1163 <tr>
1164 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-DEFAULT:CAPS"></a>HB_SUBSET_FLAGS_DEFAULT</p></td>
1165 <td class="enum_member_description">
1166 <p>all flags at their default value of false.</p>
1167 </td>
1168 <td class="enum_member_annotations"> </td>
1169 </tr>
1170 <tr>
1171 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-NO-HINTING:CAPS"></a>HB_SUBSET_FLAGS_NO_HINTING</p></td>
1172 <td class="enum_member_description">
1173 <p>If set hinting instructions will be dropped in
1174 the produced subset. Otherwise hinting instructions will be retained.</p>
1175 </td>
1176 <td class="enum_member_annotations"> </td>
1177 </tr>
1178 <tr>
1179 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-RETAIN-GIDS:CAPS"></a>HB_SUBSET_FLAGS_RETAIN_GIDS</p></td>
1180 <td class="enum_member_description">
1181 <p>If set glyph indices will not be modified in
1182 the produced subset. If glyphs are dropped their indices will be retained
1183 as an empty glyph.</p>
1184 </td>
1185 <td class="enum_member_annotations"> </td>
1186 </tr>
1187 <tr>
1188 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-DESUBROUTINIZE:CAPS"></a>HB_SUBSET_FLAGS_DESUBROUTINIZE</p></td>
1189 <td class="enum_member_description">
1190 <p>If set and subsetting a CFF font the
1191 subsetter will attempt to remove subroutines from the CFF glyphs.</p>
1192 </td>
1193 <td class="enum_member_annotations"> </td>
1194 </tr>
1195 <tr>
1196 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-NAME-LEGACY:CAPS"></a>HB_SUBSET_FLAGS_NAME_LEGACY</p></td>
1197 <td class="enum_member_description">
1198 <p>If set non-unicode name records will be
1199 retained in the subset.</p>
1200 </td>
1201 <td class="enum_member_annotations"> </td>
1202 </tr>
1203 <tr>
1204 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-SET-OVERLAPS-FLAG:CAPS"></a>HB_SUBSET_FLAGS_SET_OVERLAPS_FLAG</p></td>
1205 <td class="enum_member_description">
1206 <p>If set the subsetter will set the
1207 OVERLAP_SIMPLE flag on each simple glyph.</p>
1208 </td>
1209 <td class="enum_member_annotations"> </td>
1210 </tr>
1211 <tr>
1212 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-PASSTHROUGH-UNRECOGNIZED:CAPS"></a>HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZED</p></td>
1213 <td class="enum_member_description">
1214 <p>If set the subsetter will not
1215 drop unrecognized tables and instead pass them through untouched.</p>
1216 </td>
1217 <td class="enum_member_annotations"> </td>
1218 </tr>
1219 <tr>
1220 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-NOTDEF-OUTLINE:CAPS"></a>HB_SUBSET_FLAGS_NOTDEF_OUTLINE</p></td>
1221 <td class="enum_member_description">
1222 <p>If set the notdef glyph outline will be
1223 retained in the final subset.</p>
1224 </td>
1225 <td class="enum_member_annotations"> </td>
1226 </tr>
1227 <tr>
1228 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-GLYPH-NAMES:CAPS"></a>HB_SUBSET_FLAGS_GLYPH_NAMES</p></td>
1229 <td class="enum_member_description">
1230 <p>If set the PS glyph names will be retained
1231 in the final subset.</p>
1232 </td>
1233 <td class="enum_member_annotations"> </td>
1234 </tr>
1235 <tr>
1236 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-NO-PRUNE-UNICODE-RANGES:CAPS"></a>HB_SUBSET_FLAGS_NO_PRUNE_UNICODE_RANGES</p></td>
1237 <td class="enum_member_description">
1238 <p>If set then the unicode ranges in
1239 OS/2 will not be recalculated.</p>
1240 </td>
1241 <td class="enum_member_annotations"> </td>
1242 </tr>
1243 <tr>
1244 <td class="enum_member_name"><p><a name="HB-SUBSET-FLAGS-NO-LAYOUT-CLOSURE:CAPS"></a>HB_SUBSET_FLAGS_NO_LAYOUT_CLOSURE</p></td>
1245 <td class="enum_member_description">
1246 <p>If set don't perform glyph closure on layout
1247 substitution rules (GSUB). Since: 7.2.0.</p>
1248 </td>
1249 <td class="enum_member_annotations"> </td>
1250 </tr>
1251 </tbody>
1252 </table></div>
1253 </div>
1254 <p class="since">Since: <a class="link" href="api-index-2-9-0.html#api-index-2.9.0">2.9.0</a></p>
1255 </div>
1256 <hr>
1257 <div class="refsect2">
1258 <a name="hb-subset-input-t"></a><h3>hb_subset_input_t</h3>
1259 <pre class="programlisting">typedef struct hb_subset_input_t hb_subset_input_t;
1260 </pre>
1261 <p>Things that change based on the input. Characters to keep, etc.</p>
1262 </div>
1263 <hr>
1264 <div class="refsect2">
1265 <a name="hb-subset-sets-t"></a><h3>enum hb_subset_sets_t</h3>
1266 <p>List of sets that can be configured on the subset input.</p>
1267 <div class="refsect3">
1268 <a name="hb-subset-sets-t.members"></a><h4>Members</h4>
1269 <div class="informaltable"><table class="informaltable" width="100%" border="0">
1270 <colgroup>
1271 <col width="300px" class="enum_members_name">
1272 <col class="enum_members_description">
1273 <col width="200px" class="enum_members_annotations">
1274 </colgroup>
1275 <tbody>
1276 <tr>
1277 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-GLYPH-INDEX:CAPS"></a>HB_SUBSET_SETS_GLYPH_INDEX</p></td>
1278 <td class="enum_member_description">
1279 <p>the set of glyph indexes to retain in the subset.</p>
1280 </td>
1281 <td class="enum_member_annotations"> </td>
1282 </tr>
1283 <tr>
1284 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-UNICODE:CAPS"></a>HB_SUBSET_SETS_UNICODE</p></td>
1285 <td class="enum_member_description">
1286 <p>the set of unicode codepoints to retain in the subset.</p>
1287 </td>
1288 <td class="enum_member_annotations"> </td>
1289 </tr>
1290 <tr>
1291 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-NO-SUBSET-TABLE-TAG:CAPS"></a>HB_SUBSET_SETS_NO_SUBSET_TABLE_TAG</p></td>
1292 <td class="enum_member_description">
1293 <p>the set of table tags which specifies tables that should not be
1294 subsetted.</p>
1295 </td>
1296 <td class="enum_member_annotations"> </td>
1297 </tr>
1298 <tr>
1299 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-DROP-TABLE-TAG:CAPS"></a>HB_SUBSET_SETS_DROP_TABLE_TAG</p></td>
1300 <td class="enum_member_description">
1301 <p>the set of table tags which specifies tables which will be dropped
1302 in the subset.</p>
1303 </td>
1304 <td class="enum_member_annotations"> </td>
1305 </tr>
1306 <tr>
1307 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-NAME-ID:CAPS"></a>HB_SUBSET_SETS_NAME_ID</p></td>
1308 <td class="enum_member_description">
1309 <p>the set of name ids that will be retained.</p>
1310 </td>
1311 <td class="enum_member_annotations"> </td>
1312 </tr>
1313 <tr>
1314 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-NAME-LANG-ID:CAPS"></a>HB_SUBSET_SETS_NAME_LANG_ID</p></td>
1315 <td class="enum_member_description">
1316 <p>the set of name lang ids that will be retained.</p>
1317 </td>
1318 <td class="enum_member_annotations"> </td>
1319 </tr>
1320 <tr>
1321 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-LAYOUT-FEATURE-TAG:CAPS"></a>HB_SUBSET_SETS_LAYOUT_FEATURE_TAG</p></td>
1322 <td class="enum_member_description">
1323 <p>the set of layout feature tags that will be retained
1324 in the subset.</p>
1325 </td>
1326 <td class="enum_member_annotations"> </td>
1327 </tr>
1328 <tr>
1329 <td class="enum_member_name"><p><a name="HB-SUBSET-SETS-LAYOUT-SCRIPT-TAG:CAPS"></a>HB_SUBSET_SETS_LAYOUT_SCRIPT_TAG</p></td>
1330 <td class="enum_member_description">
1331 <p>the set of layout script tags that will be retained
1332 in the subset. Defaults to all tags. Since: 5.0.0</p>
1333 </td>
1334 <td class="enum_member_annotations"> </td>
1335 </tr>
1336 </tbody>
1337 </table></div>
1338 </div>
1339 <p class="since">Since: <a class="link" href="api-index-2-9-1.html#api-index-2.9.1">2.9.1</a></p>
1340 </div>
1341 <hr>
1342 <div class="refsect2">
1343 <a name="hb-subset-plan-t"></a><h3>hb_subset_plan_t</h3>
1344 <pre class="programlisting">typedef struct hb_subset_plan_t hb_subset_plan_t;
1345 </pre>
1346 <p>Contains information about how the subset operation will be executed.
1347 Such as mappings from the old glyph ids to the new ones in the subset.</p>
1348 </div>
1349 </div>
1350 </div>
1351 <div class="footer">
1352 <hr>Generated by GTK-Doc V1.32</div>
1353 </body>
1354 </html>