]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcstr.c
Document ASCII limitations of Fc character conversion macros
[fontconfig.git] / src / fcstr.c
index 61f1897d9ee11e2dc2aa8b05a27f64b27de8b554..730e44061eecfaa475bf6a598bc1a42a70a22c06 100644 (file)
@@ -92,7 +92,7 @@ FcStrCaseWalkerLong (FcCaseWalker *w, FcChar8 r)
     FcChar32   ucs4;
     int                slen;
 
-    slen = FcUtf8ToUcs4 (w->src - 1, &ucs4, w->len);
+    slen = FcUtf8ToUcs4 (w->src - 1, &ucs4, w->len + 1);
     if (slen <= 0)
        return r;
     if (FC_MIN_FOLD_CHAR <= ucs4 && ucs4 <= FC_MAX_FOLD_CHAR)
@@ -188,6 +188,25 @@ FcStrCaseWalkerNextIgnoreBlanks (FcCaseWalker *w)
     return r;
 }
 
+FcChar8 *
+FcStrDowncase (const FcChar8 *s)
+{
+    FcCaseWalker    w;
+    int                    len = 0;
+    FcChar8        *dst, *d;
+
+    FcStrCaseWalkerInit (s, &w);
+    while (FcStrCaseWalkerNext (&w))
+       len++;
+    d = dst = malloc (len + 1);
+    if (!d)
+       return 0;
+    FcMemAlloc (FC_MEM_STRING, len + 1);
+    FcStrCaseWalkerInit (s, &w);
+    while ((*d++ = FcStrCaseWalkerNext (&w)));
+    return dst;
+}
+
 int
 FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2)
 {