x31.html revision 1.1 1 1.1 mrg <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
2 1.1 mrg <HTML
3 1.1 mrg ><HEAD
4 1.1 mrg ><TITLE
5 1.1 mrg >Datatypes</TITLE
6 1.1 mrg ><META
7 1.1 mrg NAME="GENERATOR"
8 1.1 mrg CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
9 1.1 mrg REL="HOME"
10 1.1 mrg HREF="index.html"><LINK
11 1.1 mrg REL="PREVIOUS"
12 1.1 mrg TITLE="FUNCTIONAL OVERVIEW"
13 1.1 mrg HREF="x19.html"><LINK
14 1.1 mrg REL="NEXT"
15 1.1 mrg TITLE="FUNCTIONS"
16 1.1 mrg HREF="x102.html"></HEAD
17 1.1 mrg ><BODY
18 1.1 mrg CLASS="SECT1"
19 1.1 mrg BGCOLOR="#FFFFFF"
20 1.1 mrg TEXT="#000000"
21 1.1 mrg LINK="#0000FF"
22 1.1 mrg VLINK="#840084"
23 1.1 mrg ALINK="#0000FF"
24 1.1 mrg ><DIV
25 1.1 mrg CLASS="NAVHEADER"
26 1.1 mrg ><TABLE
27 1.1 mrg SUMMARY="Header navigation table"
28 1.1 mrg WIDTH="100%"
29 1.1 mrg BORDER="0"
30 1.1 mrg CELLPADDING="0"
31 1.1 mrg CELLSPACING="0"
32 1.1 mrg ><TR
33 1.1 mrg ><TH
34 1.1 mrg COLSPAN="3"
35 1.1 mrg ALIGN="center"
36 1.1 mrg ></TH
37 1.1 mrg ></TR
38 1.1 mrg ><TR
39 1.1 mrg ><TD
40 1.1 mrg WIDTH="10%"
41 1.1 mrg ALIGN="left"
42 1.1 mrg VALIGN="bottom"
43 1.1 mrg ><A
44 1.1 mrg HREF="x19.html"
45 1.1 mrg ACCESSKEY="P"
46 1.1 mrg >Prev</A
47 1.1 mrg ></TD
48 1.1 mrg ><TD
49 1.1 mrg WIDTH="80%"
50 1.1 mrg ALIGN="center"
51 1.1 mrg VALIGN="bottom"
52 1.1 mrg ></TD
53 1.1 mrg ><TD
54 1.1 mrg WIDTH="10%"
55 1.1 mrg ALIGN="right"
56 1.1 mrg VALIGN="bottom"
57 1.1 mrg ><A
58 1.1 mrg HREF="x102.html"
59 1.1 mrg ACCESSKEY="N"
60 1.1 mrg >Next</A
61 1.1 mrg ></TD
62 1.1 mrg ></TR
63 1.1 mrg ></TABLE
64 1.1 mrg ><HR
65 1.1 mrg ALIGN="LEFT"
66 1.1 mrg WIDTH="100%"></DIV
67 1.1 mrg ><DIV
68 1.1 mrg CLASS="SECT1"
69 1.1 mrg ><H1
70 1.1 mrg CLASS="SECT1"
71 1.1 mrg ><A
72 1.1 mrg NAME="AEN31"
73 1.1 mrg >3. Datatypes</A
74 1.1 mrg ></H1
75 1.1 mrg ><P
76 1.1 mrg >Fontconfig uses abstract datatypes to hide internal implementation details
77 1.1 mrg for most data structures. A few structures are exposed where appropriate.
78 1.1 mrg </P
79 1.1 mrg ><DIV
80 1.1 mrg CLASS="SECT2"
81 1.1 mrg ><H2
82 1.1 mrg CLASS="SECT2"
83 1.1 mrg ><A
84 1.1 mrg NAME="AEN34"
85 1.1 mrg >3.1. FcChar8, FcChar16, FcChar32, FcBool</A
86 1.1 mrg ></H2
87 1.1 mrg ><P
88 1.1 mrg >These are primitive datatypes; the FcChar* types hold precisely the number
89 1.1 mrg of bits stated (if supported by the C implementation). FcBool holds
90 1.1 mrg one of two CPP symbols: FcFalse or FcTrue.
91 1.1 mrg </P
92 1.1 mrg ></DIV
93 1.1 mrg ><DIV
94 1.1 mrg CLASS="SECT2"
95 1.1 mrg ><H2
96 1.1 mrg CLASS="SECT2"
97 1.1 mrg ><A
98 1.1 mrg NAME="AEN37"
99 1.1 mrg >3.2. FcMatrix</A
100 1.1 mrg ></H2
101 1.1 mrg ><P
102 1.1 mrg >An FcMatrix holds an affine transformation, usually used to reshape glyphs.
103 1.1 mrg A small set of matrix operations are provided to manipulate these.
104 1.1 mrg <PRE
105 1.1 mrg CLASS="PROGRAMLISTING"
106 1.1 mrg > typedef struct _FcMatrix {
107 1.1 mrg double xx, xy, yx, yy;
108 1.1 mrg } FcMatrix;
109 1.1 mrg </PRE
110 1.1 mrg >
111 1.1 mrg </P
112 1.1 mrg ></DIV
113 1.1 mrg ><DIV
114 1.1 mrg CLASS="SECT2"
115 1.1 mrg ><H2
116 1.1 mrg CLASS="SECT2"
117 1.1 mrg ><A
118 1.1 mrg NAME="AEN41"
119 1.1 mrg >3.3. FcCharSet</A
120 1.1 mrg ></H2
121 1.1 mrg ><P
122 1.1 mrg >An FcCharSet is an abstract type that holds the set of encoded unicode chars
123 1.1 mrg in a font. Operations to build and compare these sets are provided.
124 1.1 mrg </P
125 1.1 mrg ></DIV
126 1.1 mrg ><DIV
127 1.1 mrg CLASS="SECT2"
128 1.1 mrg ><H2
129 1.1 mrg CLASS="SECT2"
130 1.1 mrg ><A
131 1.1 mrg NAME="AEN44"
132 1.1 mrg >3.4. FcLangSet</A
133 1.1 mrg ></H2
134 1.1 mrg ><P
135 1.1 mrg >An FcLangSet is an abstract type that holds the set of languages supported
136 1.1 mrg by a font. Operations to build and compare these sets are provided. These
137 1.1 mrg are computed for a font based on orthographic information built into the
138 1.1 mrg fontconfig library. Fontconfig has orthographies for all of the ISO 639-1
139 1.1 mrg languages except for MS, NA, PA, PS, QU, RN, RW, SD, SG, SN, SU and ZA. If
140 1.1 mrg you have orthographic information for any of these languages, please submit
141 1.1 mrg them.
142 1.1 mrg </P
143 1.1 mrg ></DIV
144 1.1 mrg ><DIV
145 1.1 mrg CLASS="SECT2"
146 1.1 mrg ><H2
147 1.1 mrg CLASS="SECT2"
148 1.1 mrg ><A
149 1.1 mrg NAME="AEN47"
150 1.1 mrg >3.5. FcLangResult</A
151 1.1 mrg ></H2
152 1.1 mrg ><P
153 1.1 mrg >An FcLangResult is an enumeration used to return the results of comparing
154 1.1 mrg two language strings or FcLangSet objects. FcLangEqual means the
155 1.1 mrg objects match language and territory. FcLangDifferentTerritory means
156 1.1 mrg the objects match in language but differ in territory.
157 1.1 mrg FcLangDifferentLang means the objects differ in language.
158 1.1 mrg </P
159 1.1 mrg ></DIV
160 1.1 mrg ><DIV
161 1.1 mrg CLASS="SECT2"
162 1.1 mrg ><H2
163 1.1 mrg CLASS="SECT2"
164 1.1 mrg ><A
165 1.1 mrg NAME="AEN50"
166 1.1 mrg >3.6. FcType</A
167 1.1 mrg ></H2
168 1.1 mrg ><P
169 1.1 mrg >Tags the kind of data stored in an FcValue.
170 1.1 mrg </P
171 1.1 mrg ></DIV
172 1.1 mrg ><DIV
173 1.1 mrg CLASS="SECT2"
174 1.1 mrg ><H2
175 1.1 mrg CLASS="SECT2"
176 1.1 mrg ><A
177 1.1 mrg NAME="AEN53"
178 1.1 mrg >3.7. FcValue</A
179 1.1 mrg ></H2
180 1.1 mrg ><P
181 1.1 mrg >An FcValue object holds a single value with one of a number of different
182 1.1 mrg types. The 'type' tag indicates which member is valid.
183 1.1 mrg <PRE
184 1.1 mrg CLASS="PROGRAMLISTING"
185 1.1 mrg > typedef struct _FcValue {
186 1.1 mrg FcType type;
187 1.1 mrg union {
188 1.1 mrg const FcChar8 *s;
189 1.1 mrg int i;
190 1.1 mrg FcBool b;
191 1.1 mrg double d;
192 1.1 mrg const FcMatrix *m;
193 1.1 mrg const FcCharSet *c;
194 1.1 mrg void *f;
195 1.1 mrg const FcLangSet *l;
196 1.1 mrg } u;
197 1.1 mrg } FcValue;
198 1.1 mrg </PRE
199 1.1 mrg >
200 1.1 mrg <PRE
201 1.1 mrg CLASS="PROGRAMLISTING"
202 1.1 mrg > FcValue Members
203 1.1 mrg
204 1.1 mrg Type Union member Datatype
205 1.1 mrg --------------------------------
206 1.1 mrg FcTypeVoid (none) (none)
207 1.1 mrg FcTypeInteger i int
208 1.1 mrg FcTypeDouble d double
209 1.1 mrg FcTypeString s FcChar8 *
210 1.1 mrg FcTypeBool b b
211 1.1 mrg FcTypeMatrix m FcMatrix *
212 1.1 mrg FcTypeCharSet c FcCharSet *
213 1.1 mrg FcTypeFTFace f void * (FT_Face)
214 1.1 mrg FcTypeLangSet l FcLangSet *
215 1.1 mrg </PRE
216 1.1 mrg >
217 1.1 mrg </P
218 1.1 mrg ></DIV
219 1.1 mrg ><DIV
220 1.1 mrg CLASS="SECT2"
221 1.1 mrg ><H2
222 1.1 mrg CLASS="SECT2"
223 1.1 mrg ><A
224 1.1 mrg NAME="AEN58"
225 1.1 mrg >3.8. FcPattern</A
226 1.1 mrg ></H2
227 1.1 mrg ><P
228 1.1 mrg >holds a set of names with associated value lists; each name refers to a
229 1.1 mrg property of a font. FcPatterns are used as inputs to the matching code as
230 1.1 mrg well as holding information about specific fonts. Each property can hold
231 1.1 mrg one or more values; conventionally all of the same type, although the
232 1.1 mrg interface doesn't demand that.
233 1.1 mrg </P
234 1.1 mrg ></DIV
235 1.1 mrg ><DIV
236 1.1 mrg CLASS="SECT2"
237 1.1 mrg ><H2
238 1.1 mrg CLASS="SECT2"
239 1.1 mrg ><A
240 1.1 mrg NAME="AEN61"
241 1.1 mrg >3.9. FcFontSet</A
242 1.1 mrg ></H2
243 1.1 mrg ><P
244 1.1 mrg > <PRE
245 1.1 mrg CLASS="PROGRAMLISTING"
246 1.1 mrg > typedef struct _FcFontSet {
247 1.1 mrg int nfont;
248 1.1 mrg int sfont;
249 1.1 mrg FcPattern **fonts;
250 1.1 mrg } FcFontSet;
251 1.1 mrg </PRE
252 1.1 mrg >
253 1.1 mrg An FcFontSet contains a list of FcPatterns. Internally fontconfig uses this
254 1.1 mrg data structure to hold sets of fonts. Externally, fontconfig returns the
255 1.1 mrg results of listing fonts in this format. 'nfont' holds the number of
256 1.1 mrg patterns in the 'fonts' array; 'sfont' is used to indicate the size of that
257 1.1 mrg array.
258 1.1 mrg </P
259 1.1 mrg ></DIV
260 1.1 mrg ><DIV
261 1.1 mrg CLASS="SECT2"
262 1.1 mrg ><H2
263 1.1 mrg CLASS="SECT2"
264 1.1 mrg ><A
265 1.1 mrg NAME="AEN65"
266 1.1 mrg >3.10. FcStrSet, FcStrList</A
267 1.1 mrg ></H2
268 1.1 mrg ><P
269 1.1 mrg >FcStrSet holds a list of strings that can be appended to and enumerated.
270 1.1 mrg Its unique characteristic is that the enumeration works even while strings
271 1.1 mrg are appended during enumeration. FcStrList is used during enumeration to
272 1.1 mrg safely and correctly walk the list of strings even while that list is edited
273 1.1 mrg in the middle of enumeration.
274 1.1 mrg </P
275 1.1 mrg ></DIV
276 1.1 mrg ><DIV
277 1.1 mrg CLASS="SECT2"
278 1.1 mrg ><H2
279 1.1 mrg CLASS="SECT2"
280 1.1 mrg ><A
281 1.1 mrg NAME="AEN68"
282 1.1 mrg >3.11. FcObjectSet</A
283 1.1 mrg ></H2
284 1.1 mrg ><P
285 1.1 mrg > <PRE
286 1.1 mrg CLASS="PROGRAMLISTING"
287 1.1 mrg > typedef struct _FcObjectSet {
288 1.1 mrg int nobject;
289 1.1 mrg int sobject;
290 1.1 mrg const char **objects;
291 1.1 mrg } FcObjectSet;
292 1.1 mrg </PRE
293 1.1 mrg >
294 1.1 mrg holds a set of names and is used to specify which fields from fonts are
295 1.1 mrg placed in the the list of returned patterns when listing fonts.
296 1.1 mrg </P
297 1.1 mrg ></DIV
298 1.1 mrg ><DIV
299 1.1 mrg CLASS="SECT2"
300 1.1 mrg ><H2
301 1.1 mrg CLASS="SECT2"
302 1.1 mrg ><A
303 1.1 mrg NAME="AEN72"
304 1.1 mrg >3.12. FcObjectType</A
305 1.1 mrg ></H2
306 1.1 mrg ><P
307 1.1 mrg > <PRE
308 1.1 mrg CLASS="PROGRAMLISTING"
309 1.1 mrg > typedef struct _FcObjectType {
310 1.1 mrg const char *object;
311 1.1 mrg FcType type;
312 1.1 mrg } FcObjectType;
313 1.1 mrg </PRE
314 1.1 mrg >
315 1.1 mrg marks the type of a pattern element generated when parsing font names.
316 1.1 mrg Applications can add new object types so that font names may contain the new
317 1.1 mrg elements.
318 1.1 mrg </P
319 1.1 mrg ></DIV
320 1.1 mrg ><DIV
321 1.1 mrg CLASS="SECT2"
322 1.1 mrg ><H2
323 1.1 mrg CLASS="SECT2"
324 1.1 mrg ><A
325 1.1 mrg NAME="AEN76"
326 1.1 mrg >3.13. FcConstant</A
327 1.1 mrg ></H2
328 1.1 mrg ><P
329 1.1 mrg > <PRE
330 1.1 mrg CLASS="PROGRAMLISTING"
331 1.1 mrg > typedef struct _FcConstant {
332 1.1 mrg const FcChar8 *name;
333 1.1 mrg const char *object;
334 1.1 mrg int value;
335 1.1 mrg } FcConstant;
336 1.1 mrg </PRE
337 1.1 mrg >
338 1.1 mrg Provides for symbolic constants for new pattern elements. When 'name' is
339 1.1 mrg seen in a font name, an 'object' element is created with value 'value'.
340 1.1 mrg </P
341 1.1 mrg ></DIV
342 1.1 mrg ><DIV
343 1.1 mrg CLASS="SECT2"
344 1.1 mrg ><H2
345 1.1 mrg CLASS="SECT2"
346 1.1 mrg ><A
347 1.1 mrg NAME="AEN80"
348 1.1 mrg >3.14. FcBlanks</A
349 1.1 mrg ></H2
350 1.1 mrg ><P
351 1.1 mrg >holds a list of Unicode chars which are expected to be blank; unexpectedly
352 1.1 mrg blank chars are assumed to be invalid and are elided from the charset
353 1.1 mrg associated with the font.
354 1.1 mrg </P
355 1.1 mrg ></DIV
356 1.1 mrg ><DIV
357 1.1 mrg CLASS="SECT2"
358 1.1 mrg ><H2
359 1.1 mrg CLASS="SECT2"
360 1.1 mrg ><A
361 1.1 mrg NAME="AEN83"
362 1.1 mrg >3.15. FcFileCache</A
363 1.1 mrg ></H2
364 1.1 mrg ><P
365 1.1 mrg >holds the per-user cache information for use while loading the font
366 1.1 mrg database. This is built automatically for the current configuration when
367 1.1 mrg that is loaded. Applications must always pass '0' when one is requested.
368 1.1 mrg </P
369 1.1 mrg ></DIV
370 1.1 mrg ><DIV
371 1.1 mrg CLASS="SECT2"
372 1.1 mrg ><H2
373 1.1 mrg CLASS="SECT2"
374 1.1 mrg ><A
375 1.1 mrg NAME="AEN86"
376 1.1 mrg >3.16. FcConfig</A
377 1.1 mrg ></H2
378 1.1 mrg ><P
379 1.1 mrg >holds a complete configuration of the library; there is one default
380 1.1 mrg configuration, other can be constructed from XML data structures. All
381 1.1 mrg public entry points that need global data can take an optional FcConfig*
382 1.1 mrg argument; passing 0 uses the default configuration. FcConfig objects hold two
383 1.1 mrg sets of fonts, the first contains those specified by the configuration, the
384 1.1 mrg second set holds those added by the application at run-time. Interfaces
385 1.1 mrg that need to reference a particulat set use one of the FcSetName enumerated
386 1.1 mrg values.
387 1.1 mrg </P
388 1.1 mrg ></DIV
389 1.1 mrg ><DIV
390 1.1 mrg CLASS="SECT2"
391 1.1 mrg ><H2
392 1.1 mrg CLASS="SECT2"
393 1.1 mrg ><A
394 1.1 mrg NAME="AEN89"
395 1.1 mrg >3.17. FcSetName</A
396 1.1 mrg ></H2
397 1.1 mrg ><P
398 1.1 mrg >Specifies one of the two sets of fonts available in a configuration;
399 1.1 mrg FcSetSystem for those fonts specified in the configuration and
400 1.1 mrg FcSetApplication which holds fonts provided by the application.
401 1.1 mrg </P
402 1.1 mrg ></DIV
403 1.1 mrg ><DIV
404 1.1 mrg CLASS="SECT2"
405 1.1 mrg ><H2
406 1.1 mrg CLASS="SECT2"
407 1.1 mrg ><A
408 1.1 mrg NAME="AEN92"
409 1.1 mrg >3.18. FcResult</A
410 1.1 mrg ></H2
411 1.1 mrg ><P
412 1.1 mrg >Used as a return type for functions manipulating FcPattern objects.
413 1.1 mrg <PRE
414 1.1 mrg CLASS="PROGRAMLISTING"
415 1.1 mrg > FcResult Values
416 1.1 mrg Result Code Meaning
417 1.1 mrg -----------------------------------------------------------
418 1.1 mrg FcResultMatch Object exists with the specified ID
419 1.1 mrg FcResultNoMatch Object doesn't exist at all
420 1.1 mrg FcResultTypeMismatch Object exists, but the type doesn't match
421 1.1 mrg FcResultNoId Object exists, but has fewer values
422 1.1 mrg than specified
423 1.1 mrg FcResultOutOfMemory Malloc failed
424 1.1 mrg </PRE
425 1.1 mrg >
426 1.1 mrg </P
427 1.1 mrg ></DIV
428 1.1 mrg ><DIV
429 1.1 mrg CLASS="SECT2"
430 1.1 mrg ><H2
431 1.1 mrg CLASS="SECT2"
432 1.1 mrg ><A
433 1.1 mrg NAME="AEN96"
434 1.1 mrg >3.19. FcAtomic</A
435 1.1 mrg ></H2
436 1.1 mrg ><P
437 1.1 mrg >Used for locking access to config files. Provides a safe way to update
438 1.1 mrg configuration files.
439 1.1 mrg </P
440 1.1 mrg ></DIV
441 1.1 mrg ><DIV
442 1.1 mrg CLASS="SECT2"
443 1.1 mrg ><H2
444 1.1 mrg CLASS="SECT2"
445 1.1 mrg ><A
446 1.1 mrg NAME="AEN99"
447 1.1 mrg >3.20. FcCache</A
448 1.1 mrg ></H2
449 1.1 mrg ><P
450 1.1 mrg >Holds information about the fonts contained in a single directory. Normal
451 1.1 mrg applications need not worry about this as caches for font access are
452 1.1 mrg automatically managed by the library. Applications dealing with cache
453 1.1 mrg management may want to use some of these objects in their work, however the
454 1.1 mrg included 'fc-cache' program generally suffices for all of that.
455 1.1 mrg </P
456 1.1 mrg ></DIV
457 1.1 mrg ></DIV
458 1.1 mrg ><DIV
459 1.1 mrg CLASS="NAVFOOTER"
460 1.1 mrg ><HR
461 1.1 mrg ALIGN="LEFT"
462 1.1 mrg WIDTH="100%"><TABLE
463 1.1 mrg SUMMARY="Footer navigation table"
464 1.1 mrg WIDTH="100%"
465 1.1 mrg BORDER="0"
466 1.1 mrg CELLPADDING="0"
467 1.1 mrg CELLSPACING="0"
468 1.1 mrg ><TR
469 1.1 mrg ><TD
470 1.1 mrg WIDTH="33%"
471 1.1 mrg ALIGN="left"
472 1.1 mrg VALIGN="top"
473 1.1 mrg ><A
474 1.1 mrg HREF="x19.html"
475 1.1 mrg ACCESSKEY="P"
476 1.1 mrg >Prev</A
477 1.1 mrg ></TD
478 1.1 mrg ><TD
479 1.1 mrg WIDTH="34%"
480 1.1 mrg ALIGN="center"
481 1.1 mrg VALIGN="top"
482 1.1 mrg ><A
483 1.1 mrg HREF="index.html"
484 1.1 mrg ACCESSKEY="H"
485 1.1 mrg >Home</A
486 1.1 mrg ></TD
487 1.1 mrg ><TD
488 1.1 mrg WIDTH="33%"
489 1.1 mrg ALIGN="right"
490 1.1 mrg VALIGN="top"
491 1.1 mrg ><A
492 1.1 mrg HREF="x102.html"
493 1.1 mrg ACCESSKEY="N"
494 1.1 mrg >Next</A
495 1.1 mrg ></TD
496 1.1 mrg ></TR
497 1.1 mrg ><TR
498 1.1 mrg ><TD
499 1.1 mrg WIDTH="33%"
500 1.1 mrg ALIGN="left"
501 1.1 mrg VALIGN="top"
502 1.1 mrg >FUNCTIONAL OVERVIEW</TD
503 1.1 mrg ><TD
504 1.1 mrg WIDTH="34%"
505 1.1 mrg ALIGN="center"
506 1.1 mrg VALIGN="top"
507 1.1 mrg > </TD
508 1.1 mrg ><TD
509 1.1 mrg WIDTH="33%"
510 1.1 mrg ALIGN="right"
511 1.1 mrg VALIGN="top"
512 1.1 mrg >FUNCTIONS</TD
513 1.1 mrg ></TR
514 1.1 mrg ></TABLE
515 1.1 mrg ></DIV
516 1.1 mrg ></BODY
517 1.1 mrg ></HTML
518 1.1 mrg >