X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffont-config-scheme.cc;h=9d3dac9d594a47ab63bf14ccc64c436842daae73;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=a31bfa6e696dbf5ca98cce471d9447cf5d29eacc;hpb=dd65f89ae90be69f982ea41ce2ffafec7be328f8;p=lilypond.git diff --git a/lily/font-config-scheme.cc b/lily/font-config-scheme.cc index a31bfa6e69..9d3dac9d59 100644 --- a/lily/font-config-scheme.cc +++ b/lily/font-config-scheme.cc @@ -3,18 +3,21 @@ source file of the GNU LilyPond music typesetter - (c) 2005--2006 Han-Wen Nienhuys + (c) 2005--2008 Han-Wen Nienhuys */ #include "lily-guile.hh" -#include "string.hh" +#include "string-convert.hh" +#include "warn.hh" #include -void +string display_fontset (FcFontSet *fs) { + string retval; + int j; for (j = 0; j < fs->nfont; j++) { @@ -23,36 +26,42 @@ display_fontset (FcFontSet *fs) font = FcNameUnparse (fs->fonts[j]); if (FcPatternGetString (fs->fonts[j], FC_FILE, 0, &str) == FcResultMatch) - printf ("FILE %s\n", str); + retval += String_convert::form_string ("FILE %s\n", str); if (FcPatternGetString (fs->fonts[j], FC_FAMILY, 0, &str) == FcResultMatch) - printf ("family %s\n ", str); + retval += String_convert::form_string ("family %s\n ", str); if (FcPatternGetString (fs->fonts[j], "designsize", 0, &str) == FcResultMatch) - printf ("designsize %s\n ", str); + retval += String_convert::form_string ("designsize %s\n ", str); - printf ("%s\n", (const char*) font); + retval += String_convert::form_string ("%s\n", (const char*) font); free (font); } + + return retval; } -void +string display_strlist (char const*what, FcStrList *slist) { + string retval; while (FcChar8 *dir = FcStrListNext (slist)) { - printf("%s: %s\n", what, dir); + retval += String_convert::form_string ("%s: %s\n", what, dir); } + return retval; } -void +string display_config (FcConfig *fcc) { - display_strlist ("Config files", FcConfigGetConfigFiles(fcc)); - display_strlist ("Config dir", FcConfigGetConfigDirs(fcc)); - display_strlist ("Font dir", FcConfigGetFontDirs(fcc)); + string retval; + retval += display_strlist ("Config files", FcConfigGetConfigFiles (fcc)); + retval += display_strlist ("Config dir", FcConfigGetConfigDirs (fcc)); + retval += display_strlist ("Font dir", FcConfigGetFontDirs (fcc)); + return retval; } -void +string display_list (FcConfig *fcc) { FcPattern*pat = FcPatternCreate (); @@ -66,28 +75,28 @@ display_list (FcConfig *fcc) if (pat) FcPatternDestroy (pat); + string retval; if (fs) { - display_fontset (fs); + retval = display_fontset (fs); FcFontSetDestroy (fs); } + return retval; } LY_DEFINE (ly_font_config_get_font_file, "ly:font-config-get-font-file", 1, 0, 0, (SCM name), - "Get the file for font @var{name}") + "Get the file for font @var{name}.") { - SCM_ASSERT_TYPE (scm_is_string (name), name, - SCM_ARG1, __FUNCTION__, "string"); - + LY_ASSERT_TYPE (scm_is_string, name, 1); FcPattern*pat = FcPatternCreate (); FcValue val; val.type = FcTypeString; - val.u.s = (const FcChar8*)ly_scm2string (name).to_str0 (); // FC_SLANT_ITALIC; - FcPatternAdd(pat, FC_FAMILY, val, FcFalse); + val.u.s = (const FcChar8*)ly_scm2string (name).c_str (); // FC_SLANT_ITALIC; + FcPatternAdd (pat, FC_FAMILY, val, FcFalse); FcResult result; SCM scm_result = SCM_BOOL_F; @@ -95,10 +104,10 @@ LY_DEFINE (ly_font_config_get_font_file, "ly:font-config-get-font-file", 1, 0, 0 FcConfigSubstitute (NULL, pat, FcMatchFont); FcDefaultSubstitute (pat); - pat = FcFontMatch(NULL, pat, &result); + pat = FcFontMatch (NULL, pat, &result); FcChar8 *str = 0; if (FcPatternGetString (pat, FC_FILE, 0, &str) == FcResultMatch) - scm_result = scm_makfrom0str ((char const*) str); + scm_result = scm_from_locale_string ((char const*) str); FcPatternDestroy (pat); @@ -109,8 +118,10 @@ LY_DEFINE (ly_font_config_display_fonts, "ly:font-config-display-fonts", 0, 0, 0 (), "Dump a list of all fonts visible to FontConfig.") { - display_list (NULL); - display_config (NULL); + string str = display_list (NULL); + str += display_config (NULL); + + progress_indication (str); return SCM_UNSPECIFIED; }