]> git.wh0rd.org - fontconfig.git/blame - doc/fcpattern.fncs
Documentation fixes
[fontconfig.git] / doc / fcpattern.fncs
CommitLineData
bfc2dc3a 1/*
e690fbb2 2 * fontconfig/doc/fcpattern.fncs
bfc2dc3a 3 *
46b51147 4 * Copyright © 2003 Keith Packard
bfc2dc3a
KP
5 *
6 * Permission to use, copy, modify, distribute, and sell this software and its
7 * documentation for any purpose is hereby granted without fee, provided that
8 * the above copyright notice appear in all copies and that both that
9 * copyright notice and this permission notice appear in supporting
5aaf466d 10 * documentation, and that the name of the author(s) not be used in
bfc2dc3a 11 * advertising or publicity pertaining to distribution of the software without
5aaf466d 12 * specific, written prior permission. The authors make no
bfc2dc3a
KP
13 * representations about the suitability of this software for any purpose. It
14 * is provided "as is" without express or implied warranty.
15 *
3074a73b 16 * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
bfc2dc3a 17 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
3074a73b 18 * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
bfc2dc3a
KP
19 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22 * PERFORMANCE OF THIS SOFTWARE.
23 */
22671e25
KP
24@RET@ FcPattern *
25@FUNC@ FcPatternCreate
26@TYPE1@ void
27@PURPOSE@ Create a pattern
28@DESC@
29Creates a pattern with no properties; used to build patterns from scratch.
30@@
31
a190678e
KP
32@RET@ FcPattern *
33@FUNC@ FcPatternDuplicate
e6f14d3c 34@TYPE1@ const FcPattern * @ARG1@ p
a190678e
KP
35@PURPOSE@ Copy a pattern
36@DESC@
37Copy a pattern, returning a new pattern that matches
38<parameter>p</parameter>. Each pattern may be modified without affecting the
39other.
40@@
41
42@RET@ void
43@FUNC@ FcPatternReference
44@TYPE1@ FcPattern * @ARG1@ p
45@PURPOSE@ Increment pattern reference count
46@DESC@
47Add another reference to <parameter>p</parameter>. Patterns are freed only
48when the reference count reaches zero.
49@@
50
22671e25
KP
51@RET@ void
52@FUNC@ FcPatternDestroy
53@TYPE1@ FcPattern * @ARG1@ p
54@PURPOSE@ Destroy a pattern
55@DESC@
a190678e
KP
56Decrement the pattern reference count. If all references are gone, destroys
57the pattern, in the process destroying all related values.
22671e25
KP
58@@
59
60@RET@ FcBool
61@FUNC@ FcPatternEqual
62@TYPE1@ const FcPattern * @ARG1@ pa
63@TYPE2@ const FcPattern * @ARG2@ pb
64@PURPOSE@ Compare patterns
65@DESC@
2df0c662 66Returns whether <parameter>pa</parameter> and <parameter>pb</parameter> are exactly alike.
22671e25
KP
67@@
68
69@RET@ FcBool
70@FUNC@ FcPatternEqualSubset
71@TYPE1@ const FcPattern * @ARG1@ pa
72@TYPE2@ const FcPattern * @ARG2@ pb
73@TYPE3@ const FcObjectSet * @ARG3@ os
74@PURPOSE@ Compare portions of patterns
75@DESC@
2df0c662
KP
76Returns whether <parameter>pa</parameter> and <parameter>pb</parameter> have exactly the same values for all of the
77objects in <parameter>os</parameter>.
22671e25
KP
78@@
79
41fc0fe6
BE
80@RET@ FcPattern *
81@FUNC@ FcPatternFilter
82@TYPE1@ FcPattern * @ARG1@ p
83@TYPE2@ const FcObjectSet * @ARG1@ os
84@PURPOSE@ Filter the objects of pattern
85@DESC@
86Returns a new pattern that only has those objects from
87<parameter>p</parameter> that are in <parameter>os</parameter>.
88If <parameter>os</parameter> is NULL, a duplicate of
89<parameter>p</parameter> is returned.
90@@
91
22671e25
KP
92@RET@ FcChar32
93@FUNC@ FcPatternHash
94@TYPE1@ const FcPattern * @ARG1@ p
95@PURPOSE@ Compute a pattern hash value
96@DESC@
97Returns a 32-bit number which is the same for any two patterns which are
98equal.
99@@
100
101@RET@ FcBool
102@FUNC@ FcPatternAdd
103@TYPE1@ FcPattern * @ARG1@ p
104@TYPE2@ const char * @ARG2@ object
61895ed1
KP
105@TYPE3@ FcValue% @ARG3@ value
106@TYPE4@ FcBool% @ARG4@ append
22671e25
KP
107@PURPOSE@ Add a value to a pattern
108@DESC@
109Adds a single value to the list of values associated with the property named
2df0c662 110`object<parameter>. If `append</parameter> is FcTrue, the value is added at the end of any
7baa20c7 111existing list, otherwise it is inserted at the beginning. `value' is saved
22671e25
KP
112(with FcValueSave) when inserted into the pattern so that the library
113retains no reference to any application-supplied data structure.
114@@
115
116@RET@ FcBool
117@FUNC@ FcPatternAddWeak
118@TYPE1@ FcPattern * @ARG1@ p
119@TYPE2@ const char * @ARG2@ object
61895ed1
KP
120@TYPE3@ FcValue% @ARG3@ value
121@TYPE4@ FcBool% @ARG4@ append
22671e25
KP
122@PURPOSE@ Add a value to a pattern with weak binding
123@DESC@
124FcPatternAddWeak is essentially the same as FcPatternAdd except that any
2df0c662 125values added to the list have binding <parameter>weak</parameter> instead of <parameter>strong</parameter>.
22671e25
KP
126@@
127
128@TITLE@ FcPatternAdd-Type
129@RET@ FcBool
130@FUNC@ FcPatternAddInteger
131@TYPE1@ FcPattern * @ARG1@ p
132@TYPE2@ const char * @ARG2@ object
61895ed1 133@TYPE3@ int% @ARG3@ i
22671e25
KP
134
135@PROTOTYPE+@
136@RET+@ FcBool
137@FUNC+@ FcPatternAddDouble
138@TYPE1+@ FcPattern * @ARG1+@ p
139@TYPE2+@ const char * @ARG2+@ object
61895ed1 140@TYPE3+@ double% @ARG3+@ d
22671e25
KP
141
142@PROTOTYPE++@
143@RET++@ FcBool
144@FUNC++@ FcPatternAddString
145@TYPE1++@ FcPattern * @ARG1++@ p
146@TYPE2++@ const char * @ARG2++@ object
f2772d6b 147@TYPE3++@ const FcChar8 * @ARG3++@ s
22671e25
KP
148
149@PROTOTYPE+++@
150@RET+++@ FcBool
151@FUNC+++@ FcPatternAddMatrix
152@TYPE1+++@ FcPattern * @ARG1+++@ p
153@TYPE2+++@ const char * @ARG2+++@ object
154@TYPE3+++@ const FcMatrix * @ARG3+++@ m
155
156@PROTOTYPE++++@
157@RET++++@ FcBool
158@FUNC++++@ FcPatternAddCharSet
159@TYPE1++++@ FcPattern * @ARG1++++@ p
160@TYPE2++++@ const char * @ARG2++++@ object
161@TYPE3++++@ const FcCharSet * @ARG3++++@ c
162
163@PROTOTYPE+++++@
164@RET+++++@ FcBool
165@FUNC+++++@ FcPatternAddBool
166@TYPE1+++++@ FcPattern * @ARG1+++++@ p
167@TYPE2+++++@ const char * @ARG2+++++@ object
61895ed1 168@TYPE3+++++@ FcBool% @ARG3+++++@ b
a190678e
KP
169
170@PROTOTYPE++++++@
171@RET++++++@ FcBool
172@FUNC++++++@ FcPatternAddFTFace
173@TYPE1++++++@ FcPattern * @ARG1++++++@ p
174@TYPE2++++++@ const char * @ARG2++++++@ object
175@TYPE3++++++@ const FT_Face @ARG3++++++@ f
176
177@PROTOTYPE+++++++@
178@RET+++++++@ FcBool
179@FUNC+++++++@ FcPatternAddLangSet
180@TYPE1+++++++@ FcPattern * @ARG1+++++++@ p
181@TYPE2+++++++@ const char * @ARG2+++++++@ object
182@TYPE3+++++++@ const FcLangSet * @ARG3+++++++@ l
183
22671e25
KP
184@PURPOSE@ Add a typed value to a pattern
185@DESC@
186These are all convenience functions that insert objects of the specified
187type into the pattern. Use these in preference to FcPatternAdd as they
188will provide compile-time typechecking. These all append values to
189any existing list of values.
190@@
191
192@RET@ FcResult
193@FUNC@ FcPatternGet
194@TYPE1@ FcPattern * @ARG1@ p
195@TYPE2@ const char * @ARG2@ object
61895ed1 196@TYPE3@ int% @ARG3@ id
22671e25
KP
197@TYPE4@ FcValue * @ARG4@ v
198@PURPOSE@ Return a value from a pattern
199@DESC@
0c009d2b
KP
200Returns in <parameter>v</parameter> the <parameter>id</parameter>'th value
201associated with the property <parameter>object</parameter>.
22671e25
KP
202The value returned is not a copy, but rather refers to the data stored
203within the pattern directly. Applications must not free this value.
204@@
205
206@TITLE@ FcPatternGet-Type
207@PROTOTYPE@
208@RET@ FcResult
209@FUNC@ FcPatternGetInteger
210@TYPE1@ FcPattern * @ARG1@ p
211@TYPE2@ const char * @ARG2@ object
61895ed1 212@TYPE3@ int% @ARG3@ n
22671e25
KP
213@TYPE4@ int * @ARG4@ i
214
215@PROTOTYPE+@
216@RET+@ FcResult
217@FUNC+@ FcPatternGetDouble
218@TYPE1+@ FcPattern * @ARG1+@ p
219@TYPE2+@ const char * @ARG2+@ object
61895ed1 220@TYPE3+@ int% @ARG3+@ n
22671e25
KP
221@TYPE4+@ double * @ARG4+@ d
222
223@PROTOTYPE++@
224@RET++@ FcResult
225@FUNC++@ FcPatternGetString
226@TYPE1++@ FcPattern * @ARG1++@ p
227@TYPE2++@ const char * @ARG2++@ object
61895ed1 228@TYPE3++@ int% @ARG3++@ n
f2772d6b 229@TYPE4++@ FcChar8 ** @ARG4++@ s
22671e25
KP
230
231@PROTOTYPE+++@
232@RET+++@ FcResult
233@FUNC+++@ FcPatternGetMatrix
234@TYPE1+++@ FcPattern * @ARG1+++@ p
235@TYPE2+++@ const char * @ARG2+++@ object
61895ed1 236@TYPE3+++@ int% @ARG3+++@ n
22671e25
KP
237@TYPE4+++@ FcMatrix ** @ARG4+++@ s
238
239@PROTOTYPE++++@
240@RET++++@ FcResult
241@FUNC++++@ FcPatternGetCharSet
242@TYPE1++++@ FcPattern * @ARG1++++@ p
243@TYPE2++++@ const char * @ARG2++++@ object
61895ed1 244@TYPE3++++@ int% @ARG3++++@ n
22671e25
KP
245@TYPE4++++@ FcCharSet ** @ARG4++++@ c
246
247@PROTOTYPE+++++@
248@RET+++++@ FcResult
249@FUNC+++++@ FcPatternGetBool
250@TYPE1+++++@ FcPattern * @ARG1+++++@ p
251@TYPE2+++++@ const char * @ARG2+++++@ object
61895ed1 252@TYPE3+++++@ int% @ARG3+++++@ n
22671e25 253@TYPE4+++++@ FcBool * @ARG4+++++@ b
a190678e
KP
254
255@PROTOTYPE++++++@
1c7f4de8 256@RET++++++@ FcResult
a190678e
KP
257@FUNC++++++@ FcPatternGetFTFace
258@TYPE1++++++@ FcPattern * @ARG1++++++@ p
259@TYPE2++++++@ const char * @ARG2++++++@ object
2e08e0f2
BE
260@TYPE3+++++@ int% @ARG3+++++@ n
261@TYPE3++++++@ FT_Face * @ARG3++++++@ f
a190678e
KP
262
263@PROTOTYPE+++++++@
1c7f4de8 264@RET+++++++@ FcResult
a190678e
KP
265@FUNC+++++++@ FcPatternGetLangSet
266@TYPE1+++++++@ FcPattern * @ARG1+++++++@ p
267@TYPE2+++++++@ const char * @ARG2+++++++@ object
2e08e0f2
BE
268@TYPE3+++++@ int% @ARG3+++++@ n
269@TYPE3+++++++@ FcLangSet ** @ARG3+++++++@ l
a190678e 270
22671e25
KP
271@PURPOSE@ Return a typed value from a pattern
272@DESC@
273These are convenience functions that call FcPatternGet and verify that the
274returned data is of the expected type. They return FcResultTypeMismatch if
275this is not the case. Note that these (like FcPatternGet) do not make a
276copy of any data structure referenced by the return value. Use these
277in preference to FcPatternGet to provide compile-time typechecking.
278@@
279
280@RET@ FcPattern *
281@FUNC@ FcPatternBuild
74e16cee 282@TYPE1@ FcPattern * @ARG1@ pattern
22671e25
KP
283@TYPE2@ ...
284
285@PROTOTYPE+@
286@RET+@ FcPattern *
287@FUNC+@ FcPatternVaBuild
74e16cee 288@TYPE1+@ FcPattern * @ARG1+@ pattern
61895ed1 289@TYPE2+@ va_list% @ARG2+@ va
1315db01
KP
290
291@PROTOTYPE++@
292@RET++@ void
293@FUNC++@ FcPatternVapBuild
294@TYPE1++@ FcPattern * @ARG1++@ result
74e16cee 295@TYPE2++@ FcPattern * @ARG2++@ pattern
1315db01
KP
296@TYPE3++@ va_list% @ARG3++@ va
297
22671e25
KP
298@PURPOSE@ Create patterns from arguments
299@DESC@
300Builds a pattern using a list of objects, types and values. Each
301value to be entered in the pattern is specified with three arguments:
8c87b429 302</para>
22671e25
KP
303<orderedlist>
304<listitem><para>
305Object name, a string describing the property to be added.
306</para></listitem><listitem><para>
307Object type, one of the FcType enumerated values
308</para></listitem><listitem><para>
309Value, not an FcValue, but the raw type as passed to any of the
310FcPatternAdd&lt;type&gt; functions. Must match the type of the second
311argument.
312</para></listitem>
313</orderedlist>
314<para>
315The argument list is terminated by a null object name, no object type nor
316value need be passed for this. The values are added to `pattern', if
317`pattern' is null, a new pattern is created. In either case, the pattern is
318returned. Example
319</para>
320<programlisting>
af7a965f 321pattern = FcPatternBuild (0, FC_FAMILY, FcTypeString, "Times", (char *) 0);
22671e25
KP
322</programlisting>
323<para>
324FcPatternVaBuild is used when the arguments are already in the form of a
1315db01
KP
325varargs value. FcPatternVapBuild is a macro version of FcPatternVaBuild
326which returns its result directly in the <parameter>result</parameter>
327variable.
22671e25
KP
328@@
329
330@RET@ FcBool
331@FUNC@ FcPatternDel
332@TYPE1@ FcPattern * @ARG1@ p
333@TYPE2@ const char * @ARG2@ object
334@PURPOSE@ Delete a property from a pattern
335@DESC@
336Deletes all values associated with the property `object', returning
337whether the property existed or not.
338@@
339
4f27c1c0
KP
340@RET@ FcBool
341@FUNC@ FcPatternRemove
342@TYPE1@ FcPattern * @ARG1@ p
343@TYPE2@ const char * @ARG2@ object
61895ed1 344@TYPE3@ int% @ARG3@ id
4f27c1c0
KP
345@PURPOSE@ Remove one object of the specified type from the pattern
346@DESC@
347Removes the value associated with the property `object' at position `id', returning
348whether the property existed and had a value at that position or not.
349@@
350
22671e25
KP
351@RET@ void
352@FUNC@ FcPatternPrint
353@TYPE1@ const FcPattern * @ARG1@ p
354@PURPOSE@ Print a pattern for debugging
355@DESC@
356Prints an easily readable version of the pattern to stdout. There is
357no provision for reparsing data in this format, it's just for diagnostics
358and debugging.
359@@
360
361@RET@ void
362@FUNC@ FcDefaultSubstitute
363@TYPE1@ FcPattern * @ARG1@ pattern
364@PURPOSE@ Perform default substitutions in a pattern
365@DESC@
366Supplies default values for underspecified font patterns:
367<itemizedlist>
368<listitem><para>
369Patterns without a specified style or weight are set to Medium
370</para></listitem>
371<listitem><para>
372Patterns without a specified style or slant are set to Roman
373</para></listitem>
374<listitem><para>
375Patterns without a specified pixel size are given one computed from any
376specified point size (default 12), dpi (default 75) and scale (default 1).
377</para></listitem>
378</itemizedlist>
379@@
380
381@RET@ FcPattern *
382@FUNC@ FcNameParse
f2772d6b 383@TYPE1@ const FcChar8 * @ARG1@ name
22671e25
KP
384@PURPOSE@ Parse a pattern string
385@DESC@
2df0c662 386Converts <parameter>name</parameter> from the standard text format described above into a pattern.
22671e25
KP
387@@
388
389@RET@ FcChar8 *
390@FUNC@ FcNameUnparse
391@TYPE1@ FcPattern * @ARG1@ pat
392@PURPOSE@ Convert a pattern back into a string that can be parsed
393@DESC@
394Converts the given pattern into the standard text format described above.
395The return value is not static, but instead refers to newly allocated memory
8072f4b1 396which should be freed by the caller using free().
22671e25 397@@