From: Han-Wen Nienhuys Date: Sat, 8 Jan 2005 00:35:03 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: release/2.5.14~294 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=46b41fe6cef4d1a9746e21f809c0ee62662aa145;p=lilypond.git *** empty log message *** --- diff --git a/buildscripts/gen-emmentaler-scripts.py b/buildscripts/gen-emmentaler-scripts.py index d4091e82f1..24691b9f35 100644 --- a/buildscripts/gen-emmentaler-scripts.py +++ b/buildscripts/gen-emmentaler-scripts.py @@ -23,14 +23,14 @@ for opt in options: for design_size in [11,13,14,16,18,20,23,26]: - name = 'bigcheese' + name = 'emmentaler' script = '''#!@FONTFORGE@ New(); # Separate Feta versioning? # Naming: * expose LilyPond20/LilyPond rather than %(name)s # * using 20 as Weight works for gnome-font-select widget: gfs -SetFontNames("%(name)s%(design_size)d", "LilyPond", "LilyPond %(name)s %(design_size)d", "%(design_size)d", "GNU GPL", "@TOPLEVEL_VERSION@"); +SetFontNames("%(name)s-%(design_size)d", "%(name)s", "%(name)s %(design_size)d", "%(design_size)d", "GNU GPL", "@TOPLEVEL_VERSION@"); MergeFonts("feta%(design_size)d.pfa"); MergeFonts("parmesan%(design_size)d.pfa"); diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc index 11c799e397..19be65b8cc 100644 --- a/lily/all-font-metrics.cc +++ b/lily/all-font-metrics.cc @@ -143,7 +143,7 @@ All_font_metrics::find_afm (String name) /* FIXME: better warning message (maybe check upon startup for feta16.afm, feta16.tfm?) */ - if (tfm && tfm->info_.checksum != afm->checksum_) + if (tfm && tfm->info ().checksum != afm->checksum_) { // FIXME: broken sentence String s = _f ("checksum mismatch for font file: `%s'", @@ -151,7 +151,7 @@ All_font_metrics::find_afm (String name) s += " " + _f ("does not match: `%s'", tfm->file_name_.to_str0 ()); s += "\n"; - s += " TFM: " + to_string ((int) tfm->info_.checksum); + s += " TFM: " + to_string ((int) tfm->info ().checksum); s += " AFM: " + to_string ((int) afm->checksum_); s += "\n"; s += _ ("Rebuild all .afm files, and remove all .pk and .tfm files."); diff --git a/lily/arpeggio-engraver.cc b/lily/arpeggio-engraver.cc index 028d6aee5a..17bb41dc28 100644 --- a/lily/arpeggio-engraver.cc +++ b/lily/arpeggio-engraver.cc @@ -17,16 +17,15 @@ class Arpeggio_engraver : public Engraver { public: - TRANSLATOR_DECLARATIONS (Arpeggio_engraver); + TRANSLATOR_DECLARATIONS (Arpeggio_engraver); + protected: virtual void acknowledge_grob (Grob_info); virtual void process_music (); - virtual void stop_translation_timestep (); virtual bool try_music (Music *); - private: - Item* arpeggio_; + Item *arpeggio_; Music *arpeggio_req_; }; @@ -37,7 +36,7 @@ Arpeggio_engraver::Arpeggio_engraver () } bool -Arpeggio_engraver::try_music (Music* m) +Arpeggio_engraver::try_music (Music *m) { if (!arpeggio_req_) { @@ -56,7 +55,9 @@ Arpeggio_engraver::acknowledge_grob (Grob_info info) if (!arpeggio_->get_parent (Y_AXIS)) arpeggio_->set_parent (info.grob_, Y_AXIS); - Pointer_group_interface::add_grob (arpeggio_, ly_symbol2scm ("stems"), info.grob_); + Pointer_group_interface::add_grob (arpeggio_, + ly_symbol2scm ("stems"), + info.grob_); } /* @@ -90,9 +91,6 @@ Arpeggio_engraver::stop_translation_timestep () arpeggio_req_ = 0; } - - - ADD_TRANSLATOR (Arpeggio_engraver, /* descr */ "Generate an Arpeggio from a Arpeggio_req", /* creats*/ "Arpeggio", diff --git a/lily/font-config.cc b/lily/font-config.cc new file mode 100644 index 0000000000..5c8fa806e5 --- /dev/null +++ b/lily/font-config.cc @@ -0,0 +1,41 @@ +/* + font-config.cc -- implement Font_config related functions + + source file of the GNU LilyPond music typesetter + + (c) 2005 Han-Wen Nienhuys + +*/ + +#include "config.hh" + +#ifdef HAVE_PANGO_FT2 +#include + +#include "main.hh" +#include "warn.hh" + +void +init_fontconfig () +{ + if (!FcInit()) + { + error ("FontConfig failed to initialize"); + } + + char const **dirs = prefix_directories; + for (; *dirs; dirs++) + { + String path = String (*dirs) + "/" + "otf"; + + if (!FcConfigAppFontAddDir (0, (FcChar8*)path.to_str0 ())) + { + error (_f ("Failed to add lilypond directory %s", path.to_str0 ())); + } + } +} + +#else + +void init_fontconfig() {} +#endif diff --git a/lily/include/main.hh b/lily/include/main.hh index e5553eb40f..8a99d1f6d9 100644 --- a/lily/include/main.hh +++ b/lily/include/main.hh @@ -35,6 +35,7 @@ extern bool be_verbose_global; extern bool store_locations_global; extern bool do_internal_type_checking_global; extern bool is_pango_format_global; +extern char const *prefix_directories[]; /* todo: collect in Output_option struct? diff --git a/lily/include/tfm.hh b/lily/include/tfm.hh index 7c37eb5326..29ce45d8a7 100644 --- a/lily/include/tfm.hh +++ b/lily/include/tfm.hh @@ -145,21 +145,24 @@ struct Tex_font_char_metric class Tex_font_metric : public Simple_font_metric { public: - static SCM make_tfm (String file_name); + static SCM make_tfm (String file_name); virtual int count () const; virtual Box get_ascii_char (int) const; virtual Real design_size () const; virtual void derived_mark () const; virtual int name_to_index (String) const; + virtual String font_name () const; + + Tfm_info const &info () const; - +protected: Tfm_info info_; Tfm_header header_; Array char_metrics_; Array ascii_to_metric_idx_; SCM encoding_table_; - + String font_name_; private: Tex_font_char_metric const *find_ascii (int ascii, bool warn = true) const; Tex_font_metric (); diff --git a/lily/main.cc b/lily/main.cc index 225779a68b..4e04b8b7b2 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -110,7 +110,7 @@ _i (" This program is free software; you can redistribute it and/or\n" /* Where the init files live. Typically: LILYPOND_DATADIR = /usr/share/lilypond LOCAL_LILYPOND_DATADIR = /usr/share/lilypond/ */ -char const *prefix_directory[] = {LILYPOND_DATADIR, LOCAL_LILYPOND_DATADIR, 0}; +char const *prefix_directories[] = {LILYPOND_DATADIR, LOCAL_LILYPOND_DATADIR, 0}; /* The option parser */ static Getopt_long *option_parser = 0; @@ -220,7 +220,7 @@ static void setup_paths () { if (char const *lilypond_prefix = getenv ("LILYPONDPREFIX")) - prefix_directory[1] = lilypond_prefix; + prefix_directories[1] = lilypond_prefix; global_path.append (""); @@ -228,10 +228,10 @@ setup_paths () LILYPONDPREFIX to lilypond-x.y.z */ char *suffixes[] = {"ly", "otf", "mf/out", "scm", "tfm", "ps", "svg", 0}; - for (unsigned i = 0; prefix_directory[i]; i++) + for (unsigned i = 0; prefix_directories[i]; i++) for (char **s = suffixes; *s; s++) { - String p = prefix_directory[i] + to_string ('/') + String (*s); + String p = prefix_directories[i] + to_string ('/') + String (*s); global_path.prepend (p); #if !KPATHSEA @@ -251,17 +251,19 @@ prepend_load_path (String dir) } void init_global_tweak_registry (); +void init_fontconfig (); + static void main_with_guile (void *, int, char **) { /* Engravers use lily.scm contents, need to make Guile find it. Prepend onto GUILE %load-path, very ugh. */ - for (unsigned i = 0; prefix_directory[i]; i++) + for (unsigned i = 0; prefix_directories[i]; i++) { - prepend_load_path (prefix_directory[i]); + prepend_load_path (prefix_directories[i]); /* Junk this. We should make real modules iso. just loading files. */ - prepend_load_path (String (prefix_directory[i]) + "/scm"); + prepend_load_path (String (prefix_directories[i]) + "/scm"); } if (be_verbose_global) @@ -270,6 +272,7 @@ main_with_guile (void *, int, char **) ly_c_init_guile (); call_constructors (); init_global_tweak_registry (); + init_fontconfig (); init_freetype (); all_fonts_global = new All_font_metrics (global_path.to_string ()); diff --git a/lily/tfm.cc b/lily/tfm.cc index 29c16cd210..2786291ae2 100644 --- a/lily/tfm.cc +++ b/lily/tfm.cc @@ -8,6 +8,7 @@ some code shamelessly copied from GNU fontutils-0.6/tfm/tfm_input.c */ +#include "file-name.hh" #include "tfm.hh" #include "tfm-reader.hh" #include "string-convert.hh" @@ -98,17 +99,31 @@ Tex_font_metric::make_tfm (String file_name) tfm->char_metrics_ = reader.char_metrics_; tfm->ascii_to_metric_idx_ = reader.ascii_to_metric_idx_; + File_name fn (file_name); + tfm->font_name_ = fn.base_; return tfm->self_scm (); } +Tfm_info const & +Tex_font_metric::info () const +{ + return info_; +} + Real Tex_font_metric::design_size () const { return info_.design_size * point_constant; } +String +Tex_font_metric::font_name () const +{ + return font_name_; +} + int -Tex_font_metric::name_to_index (String s) const +Tex_font_metric::name_to_index (String) const { assert (false); } diff --git a/scm/font.scm b/scm/font.scm index b6a533dba6..3b10f93a59 100644 --- a/scm/font.scm +++ b/scm/font.scm @@ -145,10 +145,8 @@ (list (cons 'font-encoding (car x))) (cons (* factor (cadr x)) (caddr x)))) - `( - (fetaNumber ,(ly:pt 20) - #( - ,(delay (ly:font-load "feta-alphabet11")) + `((fetaNumber ,(ly:pt 20) + #(,(delay (ly:font-load "feta-alphabet11")) ,(delay (ly:font-load "feta-alphabet13")) ,(delay (ly:font-load "feta-alphabet14")) ,(delay (ly:font-load "feta-alphabet16")) @@ -157,26 +155,24 @@ ,(delay (ly:font-load "feta-alphabet23")) ,(delay (ly:font-load "feta-alphabet26")))) - (fetaDynamic ,(ly:pt 20.0) #( - ,(delay (ly:font-load "feta-alphabet11")) - ,(delay (ly:font-load "feta-alphabet13")) - ,(delay (ly:font-load "feta-alphabet14")) - ,(delay (ly:font-load "feta-alphabet16")) - ,(delay (ly:font-load "feta-alphabet18")) - ,(delay (ly:font-load "feta-alphabet20")) - ,(delay (ly:font-load "feta-alphabet23")) - ,(delay (ly:font-load "feta-alphabet26")))) + (fetaDynamic ,(ly:pt 20.0) #(,(delay (ly:font-load "feta-alphabet11")) + ,(delay (ly:font-load "feta-alphabet13")) + ,(delay (ly:font-load "feta-alphabet14")) + ,(delay (ly:font-load "feta-alphabet16")) + ,(delay (ly:font-load "feta-alphabet18")) + ,(delay (ly:font-load "feta-alphabet20")) + ,(delay (ly:font-load "feta-alphabet23")) + ,(delay (ly:font-load "feta-alphabet26")))) (fetaMusic ,(ly:pt 20.0) - #( - ,(delay (ly:font-load "bigcheese11")) - ,(delay (ly:font-load "bigcheese13")) - ,(delay (ly:font-load "bigcheese14")) - ,(delay (ly:font-load "bigcheese16")) - ,(delay (ly:font-load "bigcheese18")) - ,(delay (ly:font-load "bigcheese20")) - ,(delay (ly:font-load "bigcheese23")) - ,(delay (ly:font-load "bigcheese26")))) + #(,(delay (ly:font-load "emmentaler11")) + ,(delay (ly:font-load "emmentaler13")) + ,(delay (ly:font-load "emmentaler14")) + ,(delay (ly:font-load "emmentaler16")) + ,(delay (ly:font-load "emmentaler18")) + ,(delay (ly:font-load "emmentaler20")) + ,(delay (ly:font-load "emmentaler23")) + ,(delay (ly:font-load "emmentaler26")))) (fetaBraces 100.0 #(,(delay (ly:font-load "aybabtu"))))))) diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index a0330f7557..6343e9dba1 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -99,8 +99,8 @@ ;; FIXME - don't support Bluesky? (if (standard-tex-font? fontname) (set! fontname (string-upcase fontname))) - - + (if (equal? fontname "unknown") + (display (list font fontname))) (define-font plain fontname scaling))) (apply string-append diff --git a/scm/output-ps.scm b/scm/output-ps.scm index ddf6925c34..65ecc55deb 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -269,9 +269,7 @@ (let* ((space-length (cdar (ly:text-dimension font " "))) (space-move (string-append (number->string space-length) " 0.0 rmoveto ")) - (input-enc (assoc-get 'input-name - (ly:font-encoding-alist font) - 'latin1)) + (input-enc 'latin1) (out-vec (decode-byte-string input-enc s))) (string-append @@ -289,7 +287,7 @@ ;;(define text old-text) (define (text font str) (ly:warn "TEXT backend-command encountered in Pango backend\nargs: ~a ~a" font str) - "") + (new-text font str)) ;; FIXME: BARF helvetica? (define (white-text scale s)