diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2008-08-13 02:24:42 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2009-02-13 16:53:56 -0800 |
commit | 29874098537e763e8e4cd3fefb1ecc0f36b808a5 (patch) | |
tree | 89c21bdd57d49373ab772d23c55fd40b9ab9320a /fc-list | |
parent | 77c0d8bce86ca088782d5631617c0ef681d91312 (diff) |
Implement fc-list --verbose (#13015)
A private FcObjectGetSet() is implemented that provides an
FcObjectSet of all registered elements. FcFontSetList() is
then modified to use the object set from FcObjectGetSet() if
provided object-set is NULL.
Alternatively FcObjectGetSet() can be made public. In that
case fc-list can use that as a base if --verbose is included,
and also add any elements provided by the user (though that has
no effect, as all elements from the cache are already registered).
Currently fc-list ignores user-provided elements if --verbose
is specified.
Diffstat (limited to 'fc-list')
-rw-r--r-- | fc-list/fc-list.c | 41 | ||||
-rw-r--r-- | fc-list/fc-list.sgml | 10 |
2 files changed, 31 insertions, 20 deletions
diff --git a/fc-list/fc-list.c b/fc-list/fc-list.c index a410df8e..8384f28a 100644 --- a/fc-list/fc-list.c +++ b/fc-list/fc-list.c @@ -71,11 +71,11 @@ static void usage (char *program) fprintf (stderr, "List fonts matching [pattern]\n"); fprintf (stderr, "\n"); #if HAVE_GETOPT_LONG - fprintf (stderr, " -v, --verbose display status information while busy\n"); + fprintf (stderr, " -v, --verbose display entire font pattern\n"); fprintf (stderr, " -V, --version display font config version and exit\n"); fprintf (stderr, " -?, --help display this help and exit\n"); #else - fprintf (stderr, " -v (verbose) display status information while busy\n"); + fprintf (stderr, " -v (verbose) display entire font pattern\n"); fprintf (stderr, " -V (version) display font config version and exit\n"); fprintf (stderr, " -? (help) display this help and exit\n"); #endif @@ -85,7 +85,7 @@ static void usage (char *program) int main (int argc, char **argv) { - /*int verbose = 0;*/ + int verbose = 0; int i; FcObjectSet *os = 0; FcFontSet *fs; @@ -105,7 +105,7 @@ main (int argc, char **argv) FC_MAJOR, FC_MINOR, FC_REVISION); exit (0); case 'v': - /* verbose = 1; */ + verbose = 1; break; default: usage (argv[0]); @@ -124,20 +124,22 @@ main (int argc, char **argv) if (argv[i]) { pat = FcNameParse ((FcChar8 *) argv[i]); - while (argv[++i]) - { - if (!os) - os = FcObjectSetCreate (); - FcObjectSetAdd (os, argv[i]); - } + if (!verbose) + while (argv[++i]) + { + if (!os) + os = FcObjectSetCreate (); + FcObjectSetAdd (os, argv[i]); + } } else pat = FcPatternCreate (); - if (!os) + if (!verbose && !os) os = FcObjectSetBuild (FC_FAMILY, FC_STYLE, (char *) 0); fs = FcFontList (0, pat, os); - FcObjectSetDestroy (os); + if (os) + FcObjectSetDestroy (os); if (pat) FcPatternDestroy (pat); @@ -150,11 +152,16 @@ main (int argc, char **argv) FcChar8 *font; FcChar8 *file; - font = FcNameUnparse (fs->fonts[j]); - if (FcPatternGetString (fs->fonts[j], FC_FILE, 0, &file) == FcResultMatch) - printf ("%s: ", file); - printf ("%s\n", font); - free (font); + if (verbose) + FcPatternPrint (fs->fonts[j]); + else + { + font = FcNameUnparse (fs->fonts[j]); + if (FcPatternGetString (fs->fonts[j], FC_FILE, 0, &file) == FcResultMatch) + printf ("%s: ", file); + printf ("%s\n", font); + free (font); + } } FcFontSetDestroy (fs); } diff --git a/fc-list/fc-list.sgml b/fc-list/fc-list.sgml index fbd0b0d4..f4a31477 100644 --- a/fc-list/fc-list.sgml +++ b/fc-list/fc-list.sgml @@ -76,8 +76,10 @@ manpage.1: manpage.sgml <title>DESCRIPTION</title> <para><command>&dhpackage;</command> lists fonts and styles - available on the system for applications using fontconfig.</para> - + available on the system for applications using fontconfig. + With <option>--verbose</option>, the whole font pattern + for each font is printed, otherwise only the elements requested + are printed (family and style if none provided).</para> </refsect1> <refsect1> <title>OPTIONS</title> @@ -92,7 +94,9 @@ manpage.1: manpage.sgml <option>--verbose</option> </term> <listitem> - <para>Display status information while busy.</para> + <para>Print whole font pattern for each match. Provided + <replaceable>element</replaceable>s are ignored in this + case.</para> </listitem> </varlistentry> <varlistentry> |