fclangset.fncs revision ca08ab68
12c393a42Smrg/*
22c393a42Smrg * Copyright © 2007 Keith Packard
32c393a42Smrg *
42c393a42Smrg * Permission to use, copy, modify, distribute, and sell this software and its
52c393a42Smrg * documentation for any purpose is hereby granted without fee, provided that
62c393a42Smrg * the above copyright notice appear in all copies and that both that copyright
72c393a42Smrg * notice and this permission notice appear in supporting documentation, and
82c393a42Smrg * that the name of the copyright holders not be used in advertising or
92c393a42Smrg * publicity pertaining to distribution of the software without specific,
102c393a42Smrg * written prior permission.  The copyright holders make no representations
112c393a42Smrg * about the suitability of this software for any purpose.  It is provided "as
122c393a42Smrg * is" without express or implied warranty.
132c393a42Smrg *
142c393a42Smrg * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
152c393a42Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
162c393a42Smrg * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
172c393a42Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
182c393a42Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
192c393a42Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
202c393a42Smrg * OF THIS SOFTWARE.
212c393a42Smrg */
222c393a42Smrg
232c393a42Smrg@RET@		FcLangSet *
242c393a42Smrg@FUNC@		FcLangSetCreate
252c393a42Smrg@TYPE1@		void
262c393a42Smrg@PURPOSE@	create a langset object
272c393a42Smrg@DESC@
282c393a42Smrg<function>FcLangSetCreate</function> creates a new FcLangSet object.
292c393a42Smrg@@
302c393a42Smrg
312c393a42Smrg@RET@		void
322c393a42Smrg@FUNC@		FcLangSetDestroy
332c393a42Smrg@TYPE1@		FcLangSet *			@ARG1@		ls
342c393a42Smrg@PURPOSE@	destroy a langset object
352c393a42Smrg@DESC@
362c393a42Smrg<function>FcLangSetDestroy</function> destroys a FcLangSet object, freeing
372c393a42Smrgall memory associated with it.
382c393a42Smrg@@
392c393a42Smrg
402c393a42Smrg@RET@		FcLangSet *
412c393a42Smrg@FUNC@		FcLangSetCopy
422c393a42Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls
432c393a42Smrg@PURPOSE@	copy a langset object
442c393a42Smrg@DESC@
452c393a42Smrg<function>FcLangSetCopy</function> creates a new FcLangSet object and
462c393a42Smrgpopulates it with the contents of <parameter>ls</parameter>.
472c393a42Smrg@@
482c393a42Smrg
492c393a42Smrg@RET@		FcBool
502c393a42Smrg@FUNC@		FcLangSetAdd
512c393a42Smrg@TYPE1@		FcLangSet *			@ARG1@		ls
522c393a42Smrg@TYPE2@		const FcChar8 *			@ARG2@		lang
532c393a42Smrg@PURPOSE@	add a language to a langset
542c393a42Smrg@DESC@
552c393a42Smrg<parameter>lang</parameter> is added to <parameter>ls</parameter>.
562c393a42Smrg<parameter>lang</parameter> should be of the form Ll-Tt where Ll is a
572c393a42Smrgtwo or three letter language from ISO 639 and Tt is a territory from ISO
582c393a42Smrg3166.
592c393a42Smrg@@
602c393a42Smrg
61ca08ab68Smrg@RET@		FcBool
62ca08ab68Smrg@FUNC@		FcLangSetDel
63ca08ab68Smrg@TYPE1@		FcLangSet *			@ARG1@		ls
64ca08ab68Smrg@TYPE2@		const FcChar8 *			@ARG2@		lang
65ca08ab68Smrg@PURPOSE@	delete a language from a langset
66ca08ab68Smrg@DESC@
67ca08ab68Smrg<parameter>lang</parameter> is removed from <parameter>ls</parameter>.
68ca08ab68Smrg<parameter>lang</parameter> should be of the form Ll-Tt where Ll is a
69ca08ab68Smrgtwo or three letter language from ISO 639 and Tt is a territory from ISO
70ca08ab68Smrg3166.
71ca08ab68Smrg@@
72ca08ab68Smrg
73ca08ab68Smrg@RET@		FcLangSet *
74ca08ab68Smrg@FUNC@		FcLangSetUnion
75ca08ab68Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls_a
76ca08ab68Smrg@TYPE2@		const FcLangSet *		@ARG2@		ls_b
77ca08ab68Smrg@PURPOSE@	Add langsets
78ca08ab68Smrg@DESC@
79ca08ab68SmrgReturns a set including only those languages found in either <parameter>ls_a</parameter> or <parameter>ls_b</parameter>.
80ca08ab68Smrg@@
81ca08ab68Smrg
82ca08ab68Smrg@RET@		FcLangSet *
83ca08ab68Smrg@FUNC@		FcLangSetSubtract
84ca08ab68Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls_a
85ca08ab68Smrg@TYPE2@		const FcLangSet *		@ARG2@		ls_b
86ca08ab68Smrg@PURPOSE@	Subtract langsets
87ca08ab68Smrg@DESC@
88ca08ab68SmrgReturns a set including only those languages found in <parameter>ls_a</parameter> but not in <parameter>ls_b</parameter>.
89ca08ab68Smrg@@
90ca08ab68Smrg
912c393a42Smrg@RET@		FcLangResult
922c393a42Smrg@FUNC@		FcLangSetCompare
932c393a42Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls_a
942c393a42Smrg@TYPE2@		const FcLangSet *		@ARG2@		ls_b
952c393a42Smrg@PURPOSE@	compare language sets
962c393a42Smrg@DESC@
972c393a42Smrg<function>FcLangSetCompare</function> compares language coverage for
982c393a42Smrg<parameter>ls_a</parameter> and <parameter>ls_b</parameter>. If they share
992c393a42Smrgany language and territory pair, this function returns FcLangEqual. If they
1002c393a42Smrgshare a language but differ in which territory that language is for, this
101ca08ab68Smrgfunction returns FcLangDifferentTerritory. If they share no languages in
1022c393a42Smrgcommon, this function returns FcLangDifferentLang.
1032c393a42Smrg@@
1042c393a42Smrg
1052c393a42Smrg@RET@		FcBool
1062c393a42Smrg@FUNC@		FcLangSetContains
1072c393a42Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls_a
1082c393a42Smrg@TYPE2@		const FcLangSet *		@ARG2@		ls_b
1092c393a42Smrg@PURPOSE@	check langset subset relation
1102c393a42Smrg@DESC@
1112c393a42Smrg<function>FcLangSetContains</function> returns FcTrue if
1122c393a42Smrg<parameter>ls_a</parameter> contains every language in
1132c393a42Smrg<parameter>ls_b</parameter>. <parameter>ls_a</parameter> will 'contain' a
1142c393a42Smrglanguage from <parameter>ls_b</parameter> if <parameter>ls_a</parameter>
1152c393a42Smrghas exactly the language, or either the language or
1162c393a42Smrg<parameter>ls_a</parameter> has no territory.
1172c393a42Smrg@@
1182c393a42Smrg
1192c393a42Smrg@RET@		FcBool
1202c393a42Smrg@FUNC@		FcLangSetEqual
1212c393a42Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls_a
1222c393a42Smrg@TYPE2@		const FcLangSet *		@ARG2@		ls_b
1232c393a42Smrg@PURPOSE@	test for matching langsets
1242c393a42Smrg@DESC@
1252c393a42SmrgReturns FcTrue if and only if <parameter>ls_a</parameter> supports precisely
1262c393a42Smrgthe same language and territory combinations as <parameter>ls_b</parameter>.
1272c393a42Smrg@@
1282c393a42Smrg
1292c393a42Smrg@RET@		FcChar32
1302c393a42Smrg@FUNC@		FcLangSetHash
1312c393a42Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls
1322c393a42Smrg@PURPOSE@	return a hash value for a langset
1332c393a42Smrg@DESC@
1342c393a42SmrgThis function returns a value which depends solely on the languages
1352c393a42Smrgsupported by <parameter>ls</parameter>. Any language which equals
1362c393a42Smrg<parameter>ls</parameter> will have the same result from
1372c393a42Smrg<function>FcLangSetHash</function>. However, two langsets with the same hash
1382c393a42Smrgvalue may not be equal.
1392c393a42Smrg@@
1402c393a42Smrg
1412c393a42Smrg@RET@		FcLangResult
1422c393a42Smrg@FUNC@		FcLangSetHasLang
1432c393a42Smrg@TYPE1@		const FcLangSet *		@ARG1@		ls
1442c393a42Smrg@TYPE2@		const FcChar8 *			@ARG2@		lang
1452c393a42Smrg@PURPOSE@	test langset for language support
1462c393a42Smrg@DESC@
1472c393a42Smrg<function>FcLangSetHasLang</function> checks whether
1482c393a42Smrg<parameter>ls</parameter> supports <parameter>lang</parameter>. If 
1492c393a42Smrg<parameter>ls</parameter> has a matching language and territory pair,
1502c393a42Smrgthis function returns FcLangEqual. If <parameter>ls</parameter> has
1512c393a42Smrga matching language but differs in which territory that language is for, this
152ca08ab68Smrgfunction returns FcLangDifferentTerritory. If <parameter>ls</parameter> 
1532c393a42Smrghas no matching language, this function returns FcLangDifferentLang.
1542c393a42Smrg@@
1552c393a42Smrg
156ca08ab68Smrg@RET@		FcStrSet *
157ca08ab68Smrg@FUNC@		FcGetDefaultLangs
158ca08ab68Smrg@TYPE1@		void
159ca08ab68Smrg@PURPOSE@	Get the default languages list
160ca08ab68Smrg@DESC@
161ca08ab68SmrgReturns a string set of the default languages according to the environment variables on the system.
162ca08ab68SmrgThis function looks for them in order of FC_LANG, LC_ALL, LC_CTYPE and LANG then.
163ca08ab68SmrgIf there are no valid values in those environment variables, "en" will be set as fallback.
164ca08ab68Smrg
165a6844aabSmrg@RET@		FcStrSet *
166a6844aabSmrg@FUNC@		FcLangSetGetLangs
167a6844aabSmrg@TYPE1@		const FcLangSet *		@ARG1@		ls
168a6844aabSmrg@PURPOSE@	get the list of languages in the langset
169a6844aabSmrg@DESC@
170a6844aabSmrgReturns a string set of all languages in <parameter>langset</parameter>.
171a6844aabSmrg@@
172a6844aabSmrg
1732c393a42Smrg@RET@		FcStrSet *
1742c393a42Smrg@FUNC@		FcGetLangs
1752c393a42Smrg@TYPE1@		void
1762c393a42Smrg@PURPOSE@	Get list of languages
1772c393a42Smrg@DESC@
1782c393a42SmrgReturns a string set of all known languages.
1792c393a42Smrg@@
1802c393a42Smrg
1812c393a42Smrg@RET@		const FcCharSet *
1822c393a42Smrg@FUNC@		FcLangGetCharSet
1832c393a42Smrg@TYPE1@		const FcChar8 *			@ARG1@		lang
1842c393a42Smrg@PURPOSE@	Get character map for a language
1852c393a42Smrg@DESC@
1862c393a42SmrgReturns the FcCharMap for a language.
1872c393a42Smrg@@
188