X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fxftlsfonts.cc;h=0651065bbd6096d6feaed4101d48fe3b347c3005;hb=ab80aa4981c0cacd508f096a2d05929b6ef7c976;hp=1e0075edf89e7460b52ee953ff933e6332aa511c;hpb=fb7b6b37615cafa5d553560d78f931e0003fb6cc;p=chaz%2Fopenbox diff --git a/util/xftlsfonts.cc b/util/xftlsfonts.cc index 1e0075ed..0651065b 100644 --- a/util/xftlsfonts.cc +++ b/util/xftlsfonts.cc @@ -15,7 +15,7 @@ using std::cout; using std::endl; int main(int argc, char **argv) { - if (argc > 1) { + if (argc > 1) for (int i = 1; i < argc; ++i) if (string(argv[i]) == "-help" || string(argv[i]) == "--help" || @@ -24,16 +24,48 @@ int main(int argc, char **argv) { cout << NAME << " version " << VERSION << endl; cout << "Copyright (c) 2002, Ben Jansens " << endl; cout << endl; + cout << "Usage: " << argv[0] << " [options]" << endl; + cout << " -style Show possible styles for each font" << endl; + cout << " -slant Show the slant for each font" << endl; + cout << " -weight Show the weight for each font" << endl; + cout << " -file Show which files contain each font" << endl; + cout << endl; return 1; } - } Display *display = XOpenDisplay(NULL); - XftFontSet *set = XftListFonts(display, DefaultScreen(display), - 0, XFT_FAMILY, 0); + XftObjectSet *obj = XftObjectSetCreate(); + if (! obj) { + cout << "Failed to create an XftObjectSet\n"; + exit(2); + } + + XftObjectSetAdd(obj, XFT_FAMILY); + + if (argc > 1) + for (int i = 1; i < argc; ++i) { + if (string(argv[i]) == "-style") XftObjectSetAdd(obj, XFT_STYLE); + else if (string(argv[i]) == "-file") XftObjectSetAdd(obj, XFT_FILE); + else if (string(argv[i]) == "-slant") XftObjectSetAdd(obj, XFT_SLANT); + else if (string(argv[i]) == "-weight") XftObjectSetAdd(obj, XFT_WEIGHT); + } - cout << "Found " << set->nfont << " fonts:" << endl; + XftPattern *pat = XftPatternCreate(); + if (! pat) { + cout << "Failed to create an XftPattern\n"; + exit(2); + } + + XftFontSet *set = XftListFontsPatternObjects(display, DefaultScreen(display), + pat, obj); + if (! set) { + cout << "Failed to find a matching XftFontSet\n"; + exit(2); + } + + XFree(pat); + XFree(obj); for (int i = 0; i < set->nfont; ++i) { for (int e = 0; e < set->fonts[i]->num; ++e) { @@ -85,6 +117,8 @@ int main(int argc, char **argv) { cout << endl; } } + + cout << endl << "Found " << set->nfont << " matches." << endl; XFree(set);