diff options
-rw-r--r-- | doc/fclangset.fncs | 8 | ||||
-rw-r--r-- | fontconfig/fontconfig.h | 3 | ||||
-rw-r--r-- | src/fclang.c | 32 |
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" |