fcconfig.fncs revision ca08ab68
12c393a42Smrg/* 2a6844aabSmrg * fontconfig/doc/fcconfig.fncs 32c393a42Smrg * 42c393a42Smrg * Copyright © 2003 Keith Packard 52c393a42Smrg * 62c393a42Smrg * Permission to use, copy, modify, distribute, and sell this software and its 72c393a42Smrg * documentation for any purpose is hereby granted without fee, provided that 82c393a42Smrg * the above copyright notice appear in all copies and that both that 92c393a42Smrg * copyright notice and this permission notice appear in supporting 10ca08ab68Smrg * documentation, and that the name of the author(s) not be used in 112c393a42Smrg * advertising or publicity pertaining to distribution of the software without 12ca08ab68Smrg * specific, written prior permission. The authors make no 132c393a42Smrg * representations about the suitability of this software for any purpose. It 142c393a42Smrg * is provided "as is" without express or implied warranty. 152c393a42Smrg * 16a6844aabSmrg * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 172c393a42Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 18a6844aabSmrg * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR 192c393a42Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 202c393a42Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 212c393a42Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 222c393a42Smrg * PERFORMANCE OF THIS SOFTWARE. 232c393a42Smrg */ 242c393a42Smrg@RET@ FcConfig * 252c393a42Smrg@FUNC@ FcConfigCreate 262c393a42Smrg@TYPE1@ void 272c393a42Smrg@PURPOSE@ Create a configuration 282c393a42Smrg@DESC@ 292c393a42SmrgCreates an empty configuration. 302c393a42Smrg@@ 312c393a42Smrg 32a6844aabSmrg@RET@ FcConfig * 33a6844aabSmrg@FUNC@ FcConfigReference 34a6844aabSmrg@TYPE1@ FcConfig * @ARG1@ config 35a6844aabSmrg@PURPOSE@ Increment config reference count 36a6844aabSmrg@DESC@ 37a6844aabSmrgAdd another reference to <parameter>config</parameter>. Configs are freed only 38a6844aabSmrgwhen the reference count reaches zero. 39a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 40a6844aabSmrgIn that case this function will be similar to FcConfigGetCurrent() except that 41a6844aabSmrgit increments the reference count before returning and the user is responsible 42a6844aabSmrgfor destroying the configuration when not needed anymore. 43a6844aabSmrg@@ 44a6844aabSmrg 452c393a42Smrg@RET@ void 462c393a42Smrg@FUNC@ FcConfigDestroy 472c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 482c393a42Smrg@PURPOSE@ Destroy a configuration 492c393a42Smrg@DESC@ 50a6844aabSmrgDecrements the config reference count. If all references are gone, destroys 51a6844aabSmrgthe configuration and any data associated with it. 52a6844aabSmrgNote that calling this function with the return from FcConfigGetCurrent will 53a6844aabSmrgcause a new configuration to be created for use as current configuration. 542c393a42Smrg@@ 552c393a42Smrg 562c393a42Smrg@RET@ FcBool 572c393a42Smrg@FUNC@ FcConfigSetCurrent 582c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 592c393a42Smrg@PURPOSE@ Set configuration as default 602c393a42Smrg@DESC@ 612c393a42SmrgSets the current default configuration to <parameter>config</parameter>. Implicitly calls 622c393a42SmrgFcConfigBuildFonts if necessary, returning FcFalse if that call fails. 632c393a42Smrg@@ 642c393a42Smrg 652c393a42Smrg@RET@ FcConfig * 662c393a42Smrg@FUNC@ FcConfigGetCurrent 672c393a42Smrg@TYPE1@ void 682c393a42Smrg@PURPOSE@ Return current configuration 692c393a42Smrg@DESC@ 702c393a42SmrgReturns the current default configuration. 712c393a42Smrg@@ 722c393a42Smrg 732c393a42Smrg@RET@ FcBool 742c393a42Smrg@FUNC@ FcConfigUptoDate 752c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 762c393a42Smrg@PURPOSE@ Check timestamps on config files 772c393a42Smrg@DESC@ 782c393a42SmrgChecks all of the files related to <parameter>config</parameter> and returns 792c393a42Smrgwhether any of them has been modified since the configuration was created. 80a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 812c393a42Smrg@@ 822c393a42Smrg 83a6844aabSmrg@RET@ FcChar8 * 842c393a42Smrg@FUNC@ FcConfigHome 852c393a42Smrg@TYPE1@ void 862c393a42Smrg@PURPOSE@ return the current home directory. 872c393a42Smrg@DESC@ 882c393a42SmrgReturn the current user's home directory, if it is available, and if using it 89a6844aabSmrgis enabled, and NULL otherwise. 90a6844aabSmrgSee also <function>FcConfigEnableHome</function>). 912c393a42Smrg@@ 922c393a42Smrg 93ca08ab68Smrg@RET@ FcBool 942c393a42Smrg@FUNC@ FcConfigEnableHome 952c393a42Smrg@TYPE1@ FcBool% @ARG1@ enable 962c393a42Smrg@PURPOSE@ controls use of the home directory. 972c393a42Smrg@DESC@ 982c393a42SmrgIf <parameter>enable</parameter> is FcTrue, then Fontconfig will use various 992c393a42Smrgfiles which are specified relative to the user's home directory (using the ~ 1002c393a42Smrgnotation in the configuration). When <parameter>enable</parameter> is 1012c393a42SmrgFcFalse, then all use of the home directory in these contexts will be 1022c393a42Smrgdisabled. The previous setting of the value is returned. 1032c393a42Smrg@@ 1042c393a42Smrg 1052c393a42Smrg@RET@ FcBool 1062c393a42Smrg@FUNC@ FcConfigBuildFonts 1072c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1082c393a42Smrg@PURPOSE@ Build font database 1092c393a42Smrg@DESC@ 1102c393a42SmrgBuilds the set of available fonts for the given configuration. Note that 1112c393a42Smrgany changes to the configuration after this call have indeterminate effects. 1122c393a42SmrgReturns FcFalse if this operation runs out of memory. 113a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 1142c393a42Smrg@@ 1152c393a42Smrg 1162c393a42Smrg@RET@ FcStrList * 1172c393a42Smrg@FUNC@ FcConfigGetConfigDirs 1182c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1192c393a42Smrg@PURPOSE@ Get config directories 1202c393a42Smrg@DESC@ 1212c393a42SmrgReturns the list of font directories specified in the configuration files 1222c393a42Smrgfor <parameter>config</parameter>. Does not include any subdirectories. 123a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 1242c393a42Smrg@@ 1252c393a42Smrg 1262c393a42Smrg@RET@ FcStrList * 1272c393a42Smrg@FUNC@ FcConfigGetFontDirs 1282c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1292c393a42Smrg@PURPOSE@ Get font directories 1302c393a42Smrg@DESC@ 1312c393a42SmrgReturns the list of font directories in <parameter>config</parameter>. This includes the 1322c393a42Smrgconfigured font directories along with any directories below those in the 1332c393a42Smrgfilesystem. 134a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 1352c393a42Smrg@@ 1362c393a42Smrg 1372c393a42Smrg@RET@ FcStrList * 1382c393a42Smrg@FUNC@ FcConfigGetConfigFiles 1392c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1402c393a42Smrg@PURPOSE@ Get config files 1412c393a42Smrg@DESC@ 1422c393a42SmrgReturns the list of known configuration files used to generate <parameter>config</parameter>. 143a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 1442c393a42Smrg@@ 1452c393a42Smrg 1462c393a42Smrg@RET@ FcChar8 * 1472c393a42Smrg@FUNC@ FcConfigGetCache 1482c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1492c393a42Smrg@PURPOSE@ DEPRECATED used to return per-user cache filename 1502c393a42Smrg@DESC@ 1512c393a42SmrgWith fontconfig no longer using per-user cache files, this function now 1522c393a42Smrgsimply returns NULL to indicate that no per-user file exists. 1532c393a42Smrg@@ 1542c393a42Smrg 1552c393a42Smrg@RET@ FcStrList * 1562c393a42Smrg@FUNC@ FcConfigGetCacheDirs 157ca08ab68Smrg@TYPE1@ const FcConfig * @ARG1@ config 1582c393a42Smrg@PURPOSE@ return the list of directories searched for cache files 1592c393a42Smrg@DESC@ 1602c393a42Smrg<function>FcConfigGetCacheDirs</function> returns a string list containing 1612c393a42Smrgall of the directories that fontconfig will search when attempting to load a 1622c393a42Smrgcache file for a font directory. 163a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 1642c393a42Smrg@@ 1652c393a42Smrg 1662c393a42Smrg@RET@ FcFontSet * 1672c393a42Smrg@FUNC@ FcConfigGetFonts 1682c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1692c393a42Smrg@TYPE2@ FcSetName% @ARG2@ set 1702c393a42Smrg@PURPOSE@ Get config font set 1712c393a42Smrg@DESC@ 1722c393a42SmrgReturns one of the two sets of fonts from the configuration as specified 1732c393a42Smrgby <parameter>set</parameter>. This font set is owned by the library and must 174a6844aabSmrgnot be modified or freed. 175a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 1762c393a42Smrg@@ 1772c393a42Smrg 1782c393a42Smrg@RET@ FcBlanks * 1792c393a42Smrg@FUNC@ FcConfigGetBlanks 1802c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1812c393a42Smrg@PURPOSE@ Get config blanks 1822c393a42Smrg@DESC@ 1832c393a42SmrgReturns the FcBlanks object associated with the given configuration, if no 1842c393a42Smrgblanks were present in the configuration, this function will return 0. 185a6844aabSmrgThe returned FcBlanks object if not NULL, is valid as long as the owning 186a6844aabSmrgFcConfig is alive. 187a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 1882c393a42Smrg@@ 1892c393a42Smrg 1902c393a42Smrg@RET@ int 1912c393a42Smrg@FUNC@ FcConfigGetRescanInterval 1922c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 1932c393a42Smrg@PURPOSE@ Get config rescan interval 1942c393a42Smrg@DESC@ 1952c393a42SmrgReturns the interval between automatic checks of the configuration (in 1962c393a42Smrgseconds) specified in <parameter>config</parameter>. The configuration is checked during 1972c393a42Smrga call to FcFontList when this interval has passed since the last check. 198a6844aabSmrgAn interval setting of zero disables automatic checks. 199a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2002c393a42Smrg@@ 2012c393a42Smrg 2022c393a42Smrg@RET@ FcBool 2032c393a42Smrg@FUNC@ FcConfigSetRescanInterval 2042c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2052c393a42Smrg@TYPE2@ int% @ARG2@ rescanInterval 2062c393a42Smrg@PURPOSE@ Set config rescan interval 2072c393a42Smrg@DESC@ 2082c393a42SmrgSets the rescan interval. Returns FcFalse if the interval cannot be set (due 2092c393a42Smrgto allocation failure). Otherwise returns FcTrue. 210a6844aabSmrgAn interval setting of zero disables automatic checks. 211a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2122c393a42Smrg@@ 2132c393a42Smrg 2142c393a42Smrg@RET@ FcBool 2152c393a42Smrg@FUNC@ FcConfigAppFontAddFile 2162c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2172c393a42Smrg@TYPE2@ const FcChar8 * @ARG2@ file 2182c393a42Smrg@PURPOSE@ Add font file to font database 2192c393a42Smrg@DESC@ 2202c393a42SmrgAdds an application-specific font to the configuration. Returns FcFalse 2212c393a42Smrgif the fonts cannot be added (due to allocation failure). Otherwise returns FcTrue. 222a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2232c393a42Smrg@@ 2242c393a42Smrg 2252c393a42Smrg@RET@ FcBool 2262c393a42Smrg@FUNC@ FcConfigAppFontAddDir 2272c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2282c393a42Smrg@TYPE2@ const FcChar8 * @ARG2@ dir 2292c393a42Smrg@PURPOSE@ Add fonts from directory to font database 2302c393a42Smrg@DESC@ 2312c393a42SmrgScans the specified directory for fonts, adding each one found to the 2322c393a42Smrgapplication-specific set of fonts. Returns FcFalse 2332c393a42Smrgif the fonts cannot be added (due to allocation failure). Otherwise returns FcTrue. 234a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2352c393a42Smrg@@ 2362c393a42Smrg 2372c393a42Smrg@RET@ void 2382c393a42Smrg@FUNC@ FcConfigAppFontClear 2392c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2402c393a42Smrg@PURPOSE@ Remove all app fonts from font database 2412c393a42Smrg@DESC@ 2422c393a42SmrgClears the set of application-specific fonts. 243a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2442c393a42Smrg@@ 2452c393a42Smrg 2462c393a42Smrg@RET@ FcBool 2472c393a42Smrg@FUNC@ FcConfigSubstituteWithPat 2482c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2492c393a42Smrg@TYPE2@ FcPattern * @ARG2@ p 2502c393a42Smrg@TYPE3@ FcPattern * @ARG3@ p_pat 2512c393a42Smrg@TYPE4@ FcMatchKind% @ARG4@ kind 2522c393a42Smrg@PURPOSE@ Execute substitutions 2532c393a42Smrg@DESC@ 2542c393a42SmrgPerforms the sequence of pattern modification operations, if <parameter>kind</parameter> is 2552c393a42SmrgFcMatchPattern, then those tagged as pattern operations are applied, else 2562c393a42Smrgif <parameter>kind</parameter> is FcMatchFont, those tagged as font operations are applied and 2572c393a42Smrgp_pat is used for <test> elements with target=pattern. Returns FcFalse 2582c393a42Smrgif the substitution cannot be performed (due to allocation failure). Otherwise returns FcTrue. 259a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2602c393a42Smrg@@ 2612c393a42Smrg 2622c393a42Smrg@RET@ FcBool 2632c393a42Smrg@FUNC@ FcConfigSubstitute 2642c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2652c393a42Smrg@TYPE2@ FcPattern * @ARG2@ p 2662c393a42Smrg@TYPE3@ FcMatchKind% @ARG3@ kind 2672c393a42Smrg@PURPOSE@ Execute substitutions 2682c393a42Smrg@DESC@ 2692c393a42SmrgCalls FcConfigSubstituteWithPat setting p_pat to NULL. Returns FcFalse 2702c393a42Smrgif the substitution cannot be performed (due to allocation failure). Otherwise returns FcTrue. 271a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2722c393a42Smrg@@ 2732c393a42Smrg 2742c393a42Smrg@RET@ FcPattern * 2752c393a42Smrg@FUNC@ FcFontMatch 2762c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2772c393a42Smrg@TYPE2@ FcPattern * @ARG2@ p 2782c393a42Smrg@TYPE3@ FcResult * @ARG3@ result 2792c393a42Smrg@PURPOSE@ Return best font 2802c393a42Smrg@DESC@ 2812c393a42SmrgFinds the font in <parameter>sets</parameter> most closely matching 2822c393a42Smrg<parameter>pattern</parameter> and returns the result of 2832c393a42Smrg<function>FcFontRenderPrepare</function> for that font and the provided 2842c393a42Smrgpattern. This function should be called only after 2852c393a42Smrg<function>FcConfigSubstitute</function> and 2862c393a42Smrg<function>FcDefaultSubstitute</function> have been called for 2872c393a42Smrg<parameter>p</parameter>; otherwise the results will not be correct. 288a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 2892c393a42Smrg@@ 2902c393a42Smrg 2912c393a42Smrg@RET@ FcFontSet * 2922c393a42Smrg@FUNC@ FcFontSort 2932c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 2942c393a42Smrg@TYPE2@ FcPattern * @ARG2@ p 2952c393a42Smrg@TYPE3@ FcBool% @ARG3@ trim 2962c393a42Smrg@TYPE4@ FcCharSet ** @ARG4@ csp 2972c393a42Smrg@TYPE5@ FcResult * @ARG5@ result 2982c393a42Smrg@PURPOSE@ Return list of matching fonts 2992c393a42Smrg@DESC@ 3002c393a42SmrgReturns the list of fonts sorted by closeness to <parameter>p</parameter>. If <parameter>trim</parameter> is FcTrue, 3012c393a42Smrgelements in the list which don't include Unicode coverage not provided by 3022c393a42Smrgearlier elements in the list are elided. The union of Unicode coverage of 3032c393a42Smrgall of the fonts is returned in <parameter>csp</parameter>, if <parameter>csp</parameter> is not NULL. This function 3042c393a42Smrgshould be called only after FcConfigSubstitute and FcDefaultSubstitute have 3052c393a42Smrgbeen called for <parameter>p</parameter>; otherwise the results will not be correct. 3062c393a42Smrg </para><para> 3072c393a42SmrgThe returned FcFontSet references FcPattern structures which may be shared 3082c393a42Smrgby the return value from multiple FcFontSort calls, applications must not 3092c393a42Smrgmodify these patterns. Instead, they should be passed, along with <parameter>p</parameter> to 3102c393a42Smrg<function>FcFontRenderPrepare</function> which combines them into a complete pattern. 3112c393a42Smrg </para><para> 312ca08ab68SmrgThe FcFontSet returned by FcFontSort is destroyed by calling FcFontSetDestroy. 313a6844aabSmrgIf <parameter>config</parameter> is NULL, the current configuration is used. 3142c393a42Smrg@@ 3152c393a42Smrg 3162c393a42Smrg@RET@ FcPattern * 3172c393a42Smrg@FUNC@ FcFontRenderPrepare 3182c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 3192c393a42Smrg@TYPE2@ FcPattern * @ARG2@ pat 3202c393a42Smrg@TYPE3@ FcPattern * @ARG3@ font 3212c393a42Smrg@PURPOSE@ Prepare pattern for loading font file 3222c393a42Smrg@DESC@ 3232c393a42SmrgCreates a new pattern consisting of elements of <parameter>font</parameter> not appearing 3242c393a42Smrgin <parameter>pat</parameter>, elements of <parameter>pat</parameter> not appearing in <parameter>font</parameter> and the best matching 3252c393a42Smrgvalue from <parameter>pat</parameter> for elements appearing in both. The result is passed to 326a6844aabSmrgFcConfigSubstituteWithPat with <parameter>kind</parameter> FcMatchFont and then returned. 3272c393a42Smrg@@ 3282c393a42Smrg 3292c393a42Smrg@RET@ FcFontSet * 3302c393a42Smrg@FUNC@ FcFontList 3312c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 3322c393a42Smrg@TYPE2@ FcPattern * @ARG2@ p 3332c393a42Smrg@TYPE3@ FcObjectSet * @ARG3@ os 3342c393a42Smrg@PURPOSE@ List fonts 3352c393a42Smrg@DESC@ 3362c393a42SmrgSelects fonts matching <parameter>p</parameter>, creates patterns from those fonts containing 3372c393a42Smrgonly the objects in <parameter>os</parameter> and returns the set of unique such patterns. 338a6844aabSmrgIf <parameter>config</parameter> is NULL, the default configuration is checked 339a6844aabSmrgto be up to date, and used. 3402c393a42Smrg@@ 3412c393a42Smrg 3422c393a42Smrg@RET@ FcChar8 * 3432c393a42Smrg@FUNC@ FcConfigFilename 3442c393a42Smrg@TYPE1@ const FcChar8 * @ARG1@ name 3452c393a42Smrg@PURPOSE@ Find a config file 3462c393a42Smrg@DESC@ 3472c393a42SmrgGiven the specified external entity name, return the associated filename. 3482c393a42SmrgThis provides applications a way to convert various configuration file 3492c393a42Smrgreferences into filename form. 3502c393a42Smrg </para><para> 3512c393a42SmrgA null or empty <parameter>name</parameter> indicates that the default configuration file should 3522c393a42Smrgbe used; which file this references can be overridden with the 353ca08ab68SmrgFONTCONFIG_FILE environment variable. Next, if the name starts with <parameter>~</parameter>, it 3542c393a42Smrgrefers to a file in the current users home directory. Otherwise if the name 3552c393a42Smrgdoesn't start with '/', it refers to a file in the default configuration 3562c393a42Smrgdirectory; the built-in default directory can be overridden with the 357ca08ab68SmrgFONTCONFIG_PATH environment variable. 3582c393a42Smrg@@ 3592c393a42Smrg 3602c393a42Smrg@RET@ FcBool 3612c393a42Smrg@FUNC@ FcConfigParseAndLoad 3622c393a42Smrg@TYPE1@ FcConfig * @ARG1@ config 3632c393a42Smrg@TYPE2@ const FcChar8 * @ARG2@ file 3642c393a42Smrg@TYPE3@ FcBool% @ARG3@ complain 3652c393a42Smrg@PURPOSE@ load a configuration file 3662c393a42Smrg@DESC@ 3672c393a42SmrgWalks the configuration in 'file' and constructs the internal representation 3682c393a42Smrgin 'config'. Any include files referenced from within 'file' will be loaded 3692c393a42Smrgand parsed. If 'complain' is FcFalse, no warning will be displayed if 3702c393a42Smrg'file' does not exist. Error and warning messages will be output to stderr. 3712c393a42SmrgReturns FcFalse if some error occurred while loading the file, either a 3722c393a42Smrgparse error, semantic error or allocation failure. Otherwise returns FcTrue. 3732c393a42Smrg@@ 374