X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcpat.c;h=350c4c288d48258db9d9602627098c5a15dcd169;hb=41fc0fe68d88c1fdd38469a51a322dab6a30757d;hp=35127f2a38558751fd09178bd7f49fcdac695740;hpb=e6f14d3c513a9f2e7d75c389db4f65aa0dc0502f;p=fontconfig.git diff --git a/src/fcpat.c b/src/fcpat.c index 35127f2..350c4c2 100644 --- a/src/fcpat.c +++ b/src/fcpat.c @@ -997,6 +997,43 @@ FcPatternAppend (FcPattern *p, FcPattern *s) return FcTrue; } +FcPattern * +FcPatternFilter (FcPattern *p, const FcObjectSet *os) +{ + int i; + FcPattern *ret; + FcPatternElt *e; + FcValueListPtr v; + + if (!os) + return FcPatternDuplicate (p); + + ret = FcPatternCreate (); + if (!ret) + return NULL; + + for (i = 0; i < os->nobject; i++) + { + FcObject object = FcObjectFromName (os->objects[i]); + e = FcPatternObjectFindElt (p, object); + if (e) + { + for (v = FcPatternEltValues(e); v; v = FcValueListNext(v)) + { + if (!FcPatternObjectAddWithBinding (ret, e->object, + FcValueCanonicalize(&v->value), + v->binding, FcTrue)) + goto bail0; + } + } + } + return p; + +bail0: + FcPatternDestroy (ret); + return NULL; +} + #define OBJECT_HASH_SIZE 31 static struct objectBucket { struct objectBucket *next;