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