summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/fclangset.fncs8
-rw-r--r--fontconfig/fontconfig.h3
-rw-r--r--src/fclang.c32
3 files changed, 43 insertions, 0 deletions
diff --git a/doc/fclangset.fncs b/doc/fclangset.fncs
index 3f69f0d..f9d578e 100644
--- a/doc/fclangset.fncs
+++ b/doc/fclangset.fncs
@@ -124,6 +124,14 @@ has no matching language, this function returns FcLangDifferentLang.
@@
@RET@ FcStrSet *
+@FUNC@ FcLangSetGetLangs
+@TYPE1@ const FcLangSet * @ARG1@ ls
+@PURPOSE@ get the list of languages in the langset
+@DESC@
+Returns a string set of all languages in <parameter>langset</parameter>.
+@@
+
+@RET@ FcStrSet *
@FUNC@ FcGetLangs
@TYPE1@ void
@PURPOSE@ Get list of languages
diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
index 99e2f04..54dedac 100644
--- a/fontconfig/fontconfig.h
+++ b/fontconfig/fontconfig.h
@@ -597,6 +597,9 @@ FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
FcPublic FcChar32
FcLangSetHash (const FcLangSet *ls);
+FcPublic FcStrSet *
+FcLangSetGetLangs (const FcLangSet *ls);
+
/* fclist.c */
FcPublic FcObjectSet *
FcObjectSetCreate (void);
diff --git a/src/fclang.c b/src/fclang.c
index 2553336..d5afd52 100644
--- a/src/fclang.c
+++ b/src/fclang.c
@@ -744,6 +744,38 @@ FcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l)
*l_serialize = *l;
return l_serialize;
}
+
+FcStrSet *
+FcLangSetGetLangs (const FcLangSet *ls)
+{
+ FcStrSet *langs;
+ int i;
+
+ langs = FcStrSetCreate();
+ if (!langs)
+ return 0;
+
+ for (i = 0; i < NUM_LANG_CHAR_SET; i++)
+ if (FcLangSetBitGet (ls, i))
+ FcStrSetAdd (langs, fcLangCharSets[i].lang);
+
+ if (ls->extra)
+ {
+ FcStrList *list = FcStrListCreate (ls->extra);
+ FcChar8 *extra;
+
+ if (list)
+ {
+ while ((extra = FcStrListNext (list)))
+ FcStrSetAdd (langs, extra);
+
+ FcStrListDone (list);
+ }
+ }
+
+ return langs;
+}
+
#define __fclang__
#include "fcaliastail.h"
#include "fcftaliastail.h"