/*
- * $Id$
+ * fontconfig/doc/fcstring.fncs
*
- * Copyright © 2003 Keith Packard
+ * Copyright © 2003 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@FUNC@ FcUtf8ToUcs4
@TYPE1@ FcChar8 * @ARG1@ src
@TYPE2@ FcChar32 * @ARG2@ dst
-@TYPE3@ int @ARG3@ len
+@TYPE3@ int% @ARG3@ len
@PURPOSE@ convert UTF-8 to UCS4
@DESC@
Converts the next Unicode char from <parameter>src</parameter> into
<parameter>dst</parameter> and returns the number of bytes containing the
-char. <parameter>src</parameter> nust be at least
+char. <parameter>src</parameter> must be at least
<parameter>len</parameter> bytes long.
@@
@RET@ int
@FUNC@ FcUcs4ToUtf8
-@TYPE1@ FcChar32 @ARG1@ src
-@TYPE2@ FcChar8 @ARG2@ dst[FC_UTF8_MAX_LEN]
+@TYPE1@ FcChar32% @ARG1@ src
+@TYPE2@ FcChar8% @ARG2@ dst[FC_UTF8_MAX_LEN]
@PURPOSE@ convert UCS4 to UTF-8
@DESC@
Converts the Unicode char from <parameter>src</parameter> into
@RET@ FcBool
@FUNC@ FcUtf8Len
@TYPE1@ FcChar8 * @ARG1@ src
-@TYPE2@ int @ARG2@ len
+@TYPE2@ int% @ARG2@ len
@TYPE3@ int * @ARG3@ nchar
@TYPE4@ int * @ARG4@ wchar
@PURPOSE@ count UTF-8 encoded chars
@RET@ int
@FUNC@ FcUtf16ToUcs4
@TYPE1@ FcChar8 * @ARG1@ src
-@TYPE2@ FcEndian @ARG2@ endian
+@TYPE2@ FcEndian% @ARG2@ endian
@TYPE3@ FcChar32 * @ARG3@ dst
-@TYPE4@ int @ARG4@ len
+@TYPE4@ int% @ARG4@ len
@PURPOSE@ convert UTF-16 to UCS4
@DESC@
Converts the next Unicode char from <parameter>src</parameter> into
@RET@ FcBool
@FUNC@ FcUtf16Len
@TYPE1@ FcChar8 * @ARG1@ src
-@TYPE2@ FcEndian @ARG2@ endian
-@TYPE3@ int @ARG3@ len
+@TYPE2@ FcEndian% @ARG2@ endian
+@TYPE3@ int% @ARG3@ len
@TYPE4@ int * @ARG4@ nchar
@TYPE5@ int * @ARG5@ wchar
@PURPOSE@ count UTF-16 encoded chars
string.
@@
+@RET@ FcBool
+@FUNC@ FcIsLower
+@TYPE1@ FcChar8 @ARG1@ c
+@PURPOSE@ check for lower case ASCII character
+@DESC@
+This macro checks whether <parameter>c</parameter> is an lower case ASCII
+letter.
+@@
+
+@RET@ FcBool
+@FUNC@ FcIsUpper
+@TYPE1@ FcChar8 @ARG1@ c
+@PURPOSE@ check for upper case ASCII character
+@DESC@
+This macro checks whether <parameter>c</parameter> is a upper case ASCII
+letter.
+@@
+
+@RET@ FcChar8
+@FUNC@ FcToLower
+@TYPE1@ FcChar8 @ARG1@ c
+@PURPOSE@ convert upper case ASCII to lower case
+@DESC@
+This macro converts upper case ASCII <parameter>c</parameter> to the
+equivalent lower case letter.
+@@
+
@RET@ FcChar8 *
@FUNC@ FcStrCopy
@TYPE1@ const FcChar8 * @ARG1@ s
available on every platform.
@@
+@RET@ FcChar8 *
+@FUNC@ FcStrDowncase
+@TYPE1@ const FcChar8 * @ARG1@ s
+@PURPOSE@ create a lower case translation of a string
+@DESC@
+Allocates memory, copies <parameter>s</parameter>, converting upper case
+letters to lower case and returns the allocated buffer.
+@@
+
@RET@ FcChar8 *
@FUNC@ FcStrCopyFilename
@TYPE1@ const FcChar8 * @ARG1@ s
-@PURPOSE@ copy a string, expanding '~'
+@PURPOSE@ create a complete path from a filename
+@DESC@
+<function>FcStrCopyFilename</function> constructs an absolute pathname from
+<parameter>s</parameter>. It converts any leading '~' characters in
+to the value of the HOME environment variable, and any relative paths are
+converted to absolute paths using the current working directory. Sequences
+of '/' characters are converted to a single '/', and names containing the
+current directory '.' or parent directory '..' are correctly reconstructed.
+Returns NULL if '~' is the leading character and HOME is unset or disabled
+(see <function>FcConfigEnableHome</function>).
+@@
+
+@RET@ int
+@FUNC@ FcStrCmp
+@TYPE1@ const FcChar8 * @ARG1@ s1
+@TYPE2@ const FcChar8 * @ARG2@ s2
+@PURPOSE@ compare UTF-8 strings
@DESC@
-Just like FcStrCopy except that it converts any leading '~' characters in
-<parameter>s</parameter> to the value of the HOME environment variable.
-Returns NULL if '~' is present in <parameter>s</parameter> and HOME is unset.
+Returns the usual <0, 0, >0 result of comparing
+<parameter>s1</parameter> and <parameter>s2</parameter>.
@@
@RET@ int
@FUNC@ FcStrCmpIgnoreCase
-@TYPE1@ const char * @ARG1@ s1
-@TYPE2@ const char * @ARG2@ s2
-@PURPOSE@ compare UTF-8 strings ignoring ASCII case
+@TYPE1@ const FcChar8 * @ARG1@ s1
+@TYPE2@ const FcChar8 * @ARG2@ s2
+@PURPOSE@ compare UTF-8 strings ignoring case
@DESC@
Returns the usual <0, 0, >0 result of comparing
-<parameter>s1</parameter> and <parameter>s2</parameter>. This test is
-case-insensitive in the ASCII range and will operate properly with UTF8
-encoded strings, although it does not check for well formed strings.
+<parameter>s1</parameter> and <parameter>s2</parameter>. This test is
+case-insensitive for all proper UTF-8 encoded strings.
+@@
+
+@RET@ FcChar8 *
+@FUNC@ FcStrStr
+@TYPE1@ const FcChar8 * @ARG1@ s1
+@TYPE2@ const FcChar8 * @ARG2@ s2
+@PURPOSE@ locate UTF-8 substring
+@DESC@
+Returns the location of <parameter>s2</parameter> in
+<parameter>s1</parameter>. Returns NULL if <parameter>s2</parameter>
+is not present in <parameter>s1</parameter>. This test will operate properly
+with UTF8 encoded strings.
+@@
+
+@RET@ FcChar8 *
+@FUNC@ FcStrStrIgnoreCase
+@TYPE1@ const FcChar8 * @ARG1@ s1
+@TYPE2@ const FcChar8 * @ARG2@ s2
+@PURPOSE@ locate UTF-8 substring ignoring ASCII case
+@DESC@
+Returns the location of <parameter>s2</parameter> in
+<parameter>s1</parameter>, ignoring case. Returns NULL if
+<parameter>s2</parameter> is not present in <parameter>s1</parameter>.
+This test is case-insensitive for all proper UTF-8 encoded strings.
+@@
+
+@RET@ FcChar8 *
+@FUNC@ FcStrPlus
+@TYPE1@ const FcChar8 * @ARG1@ s1
+@TYPE2@ const FcChar8 * @ARG2@ s2
+@PURPOSE@ concatenate two strings
+@DESC@
+This function allocates new storage and places the concatenation of
+<parameter>s1</parameter> and <parameter>s2</parameter> there, returning the
+new string.
+@@
+
+@RET@ void
+@FUNC@ FcStrFree
+@TYPE1@ FcChar8 * @ARG1@ s
+@PURPOSE@ free a string
+@DESC@
+This is just a wrapper around free(3) which helps track memory usage of
+strings within the fontconfig library.
@@
@RET@ FcChar8 *