#define FcLangSetBitSet(ls, id) ((ls)->map[(id)>>5] |= ((FcChar32) 1 << ((id) & 0x1f)))
#define FcLangSetBitGet(ls, id) (((ls)->map[(id)>>5] >> ((id) & 0x1f)) & 1)
+static FcBool langsets_populated = FcFalse;
+
FcLangSet *
FcFreeTypeLangSet (const FcCharSet *charset,
const FcChar8 *exclusiveLang)
FcChar32 missing;
const FcCharSet *exclusiveCharset = 0;
FcLangSet *ls;
-
+
+ if (!langsets_populated)
+ {
+ FcLangCharSetPopulate ();
+ langsets_populated = FcTrue;
+ }
if (exclusiveLang)
exclusiveCharset = FcCharSetForLang (exclusiveLang);
{
int i;
int country = -1;
+
+ if (!langsets_populated)
+ {
+ FcLangCharSetPopulate ();
+ langsets_populated = FcTrue;
+ }
+
for (i = 0; i < NUM_LANG_CHAR_SET; i++)
{
switch (FcLangCompare (lang, fcLangCharSets[i].lang)) {
return sizeof (FcLangSet);
}
+int
+FcLangSetNeededBytesAlign (void)
+{
+ return __alignof__ (FcLangSet);
+}
+
static FcBool
FcLangSetEnsureBank (int bi)
{
if (!FcLangSetEnsureBank(bi))
return 0;
+ block_ptr = ALIGN(block_ptr, FcLangSet);
langsets[bi] = block_ptr;
block_ptr = (void *)((char *)block_ptr +
langset_count * sizeof(FcLangSet));
return 0;
FcMemAlloc (FC_MEM_LANGSET, metadata.langset_count * sizeof(FcLangSet));
+ block_ptr = ALIGN(block_ptr, FcLangSet);
langsets[bi] = (FcLangSet *)block_ptr;
block_ptr = (void *)((char *)block_ptr +
metadata.langset_count * sizeof(FcLangSet));