emmentaler-X.fontname as well.
* buildscripts/ps-embed-cff.py: new script
* scm/lily-library.scm: remove ps-embed-cff.
* scm/framework-ps.scm (write-preamble): don't use kpathsea for
font loading.
* scm/font.scm (add-music-fonts): load dynamics/numbers through
fontconfig as well.
* lily/font-config.cc (init_fontconfig): add cff/ too.
* mf/GNUmakefile: generate .commonff to not confuse fontconfig.
* ly/generate-embedded-cff.ly: capitalize.
* lily/pango-select.cc (select_pango_font): use ::find_pango_font,
so as to register the pango font.
* lily/font-config.cc (init_fontconfig): add
prefix/{otf,type1,mf/out} to fontconfig path.
* lily/main.cc: only look at one prefix directory, LILYPONDPREFIX
overrides all.
* scm/framework-ps.scm (dump-page): use output-units for landscape.
* buildscripts/gen-emmentaler-scripts.py (i): lower case file
name.
2005-03-06 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ * buildscripts/gen-emmentaler-scripts.py (i): generate
+ emmentaler-X.fontname as well.
+
+ * buildscripts/ps-embed-cff.py: new script
+
+ * scm/lily-library.scm: remove ps-embed-cff.
+
+ * scm/framework-ps.scm (write-preamble): don't use kpathsea for
+ font loading.
+
+ * scm/font.scm (add-music-fonts): load dynamics/numbers through
+ fontconfig as well.
+
+ * lily/font-config.cc (init_fontconfig): add cff/ too.
+
* mf/GNUmakefile: generate .commonff to not confuse fontconfig.
* ly/generate-embedded-cff.ly: capitalize.
MergeFonts("feta-alphabet%(design_size)d.pfa");
MergeKern("feta-alphabet%(design_size)d.tfm");
-LoadTableFromFile("LILF", "%(name)s-%(design_size)d.subfonts")
+LoadTableFromFile("LILF", "%(filename)s-%(design_size)d.subfonts")
LoadTableFromFile("LILC", "feta%(design_size)d.otf-table")
LoadTableFromFile("LILY", "feta%(design_size)d.otf-gtable")
Generate("%(filename)s-%(design_size)d.svg");
''' % vars()
- path = os.path.join (outdir, '%s-%d.pe' % (filename, design_size))
+ basename = '%s-%d' % (filename, design_size)
+ path = os.path.join (outdir, basename + '.pe')
open (path, 'w').write (script)
subfonts = ['feta%(design_size)d',
subfonts_str = string.join (ns)
- open (os.path.join (outdir, '%(name)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
+ open (os.path.join (outdir, '%(filename)s-%(design_size)d.subfonts' % vars()), 'w').write (subfonts_str)
- path = os.path.join (outdir, '%s-%d.dep' % (name, design_size))
+ path = os.path.join (outdir, '%s-%d.dep' % (filename, design_size))
- deps = r'''%(name)s-%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfa \
+ deps = r'''%(filename)s-%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfa \
$(outdir)/parmesan%(design_size)d.pfa \
$(outdir)/feta-alphabet%(design_size)d.pfa feta%(design_size)d.otf-table \
$(outdir)/feta-alphabet%(design_size)d.pfa feta%(design_size)d.otf-gtable
''' % vars()
open (path, 'w').write (deps)
+
+ open (os.path.join (outdir, basename + '.fontname'), 'w').write ("%s-%d" % (name, design_size))
--- /dev/null
+#!@PYTHON@
+import sys
+
+file = sys.argv[1]
+font_set_name = sys.argv[2]
+output = sys.argv[3]
+body = open (file).read()
+body_length = len (body)
+version = '0'
+binary_data = "/%(font_set_name)s %(body_length)d StartData " % vars() \
+ + body
+binary_length = len (binary_data)
+
+header = r"""%%%%BeginResource: font %(font_set_name)s
+%%!PS-Adobe-3.0 Resource-FontSet
+%%%%DocumentNeededResources: ProcSet (FontSetInit)
+%%%%Title: (FontSet/%(font_set_name)s)
+%%%%Version: %(version)s
+%%%%EndComments
+%%%%IncludeResource: ProcSet (FontSetInit)
+%%%%BeginResource: FontSet (%(font_set_name)s)
+/FontSetInit /ProcSet findresource begin
+%%%%BeginData: %(binary_length)d Binary Bytes
+""" % vars()
+
+
+footer = """\n%%%%EndData
+%%%%EndResource
+%%%%EOF
+%%%%EndResource\n""" % vars()
+
+fo = open (output,'w')
+fo.write (header)
+fo.write (binary_data)
+fo.write (footer)
dirs.push (prefix_directory + "/otf/");
dirs.push (prefix_directory + "/mf/out/");
dirs.push (prefix_directory + "/type1/");
+ dirs.push (prefix_directory + "/cff/");
for (int i = 0; i < dirs.size(); i++)
{
FcPatternGetString(fcpat, FC_FILE, 0, (FcChar8 **) &filename);
char const *ps_name_str0 = FT_Get_Postscript_Name (ftface);
+ if (!ps_name_str0)
+ warning (_f ("No PS font name for font `%s'", filename));
- /*
- UGH: kludge a PS name for OTF fonts.
- */
String ps_name;
if (!ps_name_str0
&& filename
- && String (filename).index (".otf") >= 0)
+ && (String (filename).index (".otf") >= 0
+ || String (filename).index (".cff") >= 0))
{
+
+ /*
+ UGH: kludge a PS name for OTF/CFF fonts.
+
+ */
+
String name = filename;
- name = name.left_string (name.length () - name.index (".otf"));
+ int idx = String (filename).index (".otf")
+ >? String (filename).index (".cff");
+
+ name = name.left_string (idx);
int slash_idx = name.index_last ('/'); // UGh. What's happens on windows?
if (slash_idx >= 0)
- name = name.right_string (name.length() - slash_idx);
+ name = name.right_string (name.length() - slash_idx - 1);
String initial = name.cut_string (0,1);
initial.to_upper();
+++ /dev/null
-\version "2.4.0"
-#(define (write-cff name filename)
- (let*
- ((body (ly:gulp-file filename))
- (outname (format "~a.ps" filename))
- (out-port (open-output-file outname))
- )
-
-
- (display (ps-embed-cff body name 0)
- out-port)
- ))
-
-#(write-cff "Emmentaler-26" "emmentaler-26.commonff")
-#(write-cff "Emmentaler-23" "emmentaler-23.commonff")
-#(write-cff "Emmentaler-20" "emmentaler-20.commonff")
-#(write-cff "Emmentaler-18" "emmentaler-18.commonff")
-#(write-cff "Emmentaler-16" "emmentaler-16.commonff")
-#(write-cff "Emmentaler-14" "emmentaler-14.commonff")
-#(write-cff "Emmentaler-13" "emmentaler-13.commonff")
-#(write-cff "Emmentaler-11" "emmentaler-11.commonff")
-#(write-cff "aybabtu" "aybabtu.commonff")
$(BRACES:%=$(outdir)/feta-braces-%.otf-table)
FETA_FONTS = $(FETA_MF_FILES:.mf=)
SVG_FILES = $(OTF_FILES:%.otf=%.svg) $(ALL_FONTS:%=$(outdir)/%.svg)
-COMMONFF_FILES = $(OTF_FILES:%.otf=%.commonff)
+CFF_FILES = $(OTF_FILES:%.otf=%.cff)
CFF_PS_FILES = $(OTF_FILES:%.otf=%.cff.ps)
echo $(TEXMF)
kpsewhich exbase.mf
-$(outdir)/%.commonff $(outdir)/%.otf $(outdir)/%.svg: $(outdir)/%.pe
- (cd $(outdir) && fontforge -script $(notdir $<) \
- && mv $(notdir $(basename $<)).cff $(notdir $(basename $<)).commonff)
+$(outdir)/%.cff.ps $(outdir)/%.cff $(outdir)/%.otf $(outdir)/%.svg: $(outdir)/%.pe
+ (cd $(outdir) && fontforge -script $(notdir $<))
+ $(PYTHON) $(buildscript-dir)/ps-embed-cff.py $(basename $<).cff `cat $(basename $<).fontname` $(basename $<).cff.ps
-$(CFF_PS_FILES): $(COMMONFF_FILES)
- cd $(outdir) && $(builddir)/lily/$(outconfbase)/lilypond --verbose $(abs-srcdir)/ly/generate-embedded-cff
$(outdir)/%.otf-table: $(outdir)/%.lisp $(if $(findstring brace,$<),,$(subst feta,parmesan,$<))
cat $< \
$(if $(findstring brace,$<),,$(subst feta,parmesan,$<)) \
$(if $(findstring brace,$<),,$(subst feta,feta-alphabet,$<)) > $@
-$(outdir)/aybabtu.otf: $(outdir)/aybabtu.subfonts $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable
+$(outdir)/aybabtu.otf: $(outdir)/aybabtu.subfonts $(outdir)/aybabtu.fontname $(outdir)/aybabtu.otf-table $(outdir)/aybabtu.otf-gtable
+$(outdir)/aybabtu.fontname:
+ echo -n 'aybabtu' > $@
$(outdir)/aybabtu.subfonts:
- echo $(subst .mf,,$(wildcard feta-braces-[a-z].mf)) > $@
+ echo $(subst .mf,,$(wildcard feta-braces-[a-z].mf)) > $@
$(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts.py
$(PYTHON) $< --dir=$(outdir)
# Make tfm files first, log files last,
# so that normally log files aren't made twice
-ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(TFM_FILES) $(LOG_FILES) $(ENC_FILES) $(LISP_FILES) $(FETA_LIST_FILES) $(OTF_TABLES) $(PFA_FILES) $(outdir)/lilypond.map $(OTF_FILES) $(SVG_FILES) $(CFF_PS_FILES)
+ALL_GEN_FILES= $(TFM_FILES) $(TEXTABLES) $(TFM_FILES) $(LOG_FILES) $(ENC_FILES) $(LISP_FILES) $(FETA_LIST_FILES) $(OTF_TABLES) $(PFA_FILES) $(outdir)/lilypond.map $(OTF_FILES) $(SVG_FILES) $(CFF_PS_FILES) $(CFF_FILES)
#PRE_INSTALL=$(MAKE) "$(ALL_GEN_FILES)"
INSTALLATION_DIR=$(local_lilypond_datadir)/fonts/source
INSTALLATION_FILES=$(MF_FILES) $(AF_FILES)
-INSTALLATION_OUT_SUFFIXES=1 2 3 4 5 6 7 9
+INSTALLATION_OUT_SUFFIXES=1 2 3 4 5 6 7 8 9
INSTALLATION_OUT_DIR1=$(local_lilypond_datadir)/tex
INSTALLATION_OUT_FILES1=$(TEXTABLES)
INSTALLATION_OUT_DIR6=$(local_lilypond_datadir)/fonts/map
INSTALLATION_OUT_FILES6=$(outdir)/lilypond.map
+INSTALLATION_OUT_DIR7=$(local_lilypond_datadir)/cff/
+INSTALLATION_OUT_FILES7=$(CFF_FILES)
+
INSTALLATION_OUT_DIR7=$(local_lilypond_datadir)/ps/
INSTALLATION_OUT_FILES7=$(ENC_FILES)
; Each size family is a vector of fonts, loaded with a delay.
; The vector should be sorted according to ascending design size.
;
+(define feta-alphabet-size-vector
+ (list->vector
+ (map (lambda (tup)
+ (cons (ly:pt (cdr tup))
+ (format "feta-alphabet~a ~a"
+ (car tup)
+ (ly:pt (cdr tup)))))
+ '((11 . 11.22)
+ (13 . 12.60)
+ (14 . 14.14)
+ (16 . 15.87)
+ (18 . 17.82)
+ (20 . 20)
+ (23 . 22.45)
+ (26 . 25.20)))))
(define-public (add-music-fonts node factor)
(for-each
(list (cons 'font-encoding (car x)))
(cons (* factor (cadr x))
(caddr x))))
- `((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"))
- ,(delay (ly:font-load "feta-alphabet18"))
- ,(delay (ly:font-load "feta-alphabet20"))
- ,(delay (ly:font-load "feta-alphabet23"))
- ,(delay (ly:font-load "feta-alphabet26"))))
- (fetaTest ,(ly:pt 20)
- #((cons (ly:pt 20)
- "Emmentaler 20 7.02799479")))
-
- (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) ,feta-alphabet-size-vector)
+ (fetaNumber ,(ly:pt 20.0) ,feta-alphabet-size-vector)
(fetaMusic ,(ly:pt 20.0)
#(,(delay (ly:font-load "emmentaler-11"))
,(delay (ly:font-load "emmentaler-13"))
(lambda (x)
(let* ((bare-file-name (ly:find-file x))
(cffname (string-append x ".cff.ps"))
- (aname (string-append x ".pfa"))
- (bname (string-append x ".pfb"))
(cff-file-name (ly:find-file cffname))
- (a-file-name (ly:kpathsea-find-file aname))
- (b-file-name (ly:kpathsea-find-file bname))
)
- (display x )(newline)
(cond
+ ((and bare-file-name (string-match "\\.pfa" bare-file-name))
+ (cached-file-contents bare-file-name))
((and bare-file-name (string-match "\\.pfb" bare-file-name))
(ly:pfb->pfa bare-file-name))
((and bare-file-name
- (string-match "\\.otf" bare-file-name))
+ (string-match "\\.(otf|cff)" bare-file-name))
- (cached-file-contents (string-regexp-substitute "otf" "cff.ps" bare-file-name)))
+ (cached-file-contents (string-regexp-substitute "(otf|cff)" "cff.ps" bare-file-name)))
((and bare-file-name (string-match "\\.ttf" bare-file-name))
(ly:ttf->pfa bare-file-name))
(bare-file-name (cached-file-contents bare-file-name))
(cff-file-name (cached-file-contents cff-file-name))
- (a-file-name (ps-embed-pfa (cached-file-contents a-file-name) x 0))
- (b-file-name (ps-embed-pfa (ly:pfb->pfa b-file-name) x 0))
(else
(ly:warn "cannot find CFF/PFA/PFB font ~S" x)
""))))
(debugf "design:~S\n" designsize)
scaling))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(define-public (ps-embed-cff body font-set-name version)
- (let* ((binary-data
- (string-append
- (format "/~a ~s StartData " font-set-name (string-length body))
- body))
-
- (header
- (format
- "%%BeginResource: font ~a
-%!PS-Adobe-3.0 Resource-FontSet
-%%DocumentNeededResources: ProcSet (FontSetInit)
-%%Title: (FontSet/~a)
-%%Version: ~s
-%%EndComments
-%%IncludeResource: ProcSet (FontSetInit)
-%%BeginResource: FontSet (~a)
-/FontSetInit /ProcSet findresource begin
-%%BeginData: ~s Binary Bytes
-"
- font-set-name font-set-name version font-set-name
- (string-length binary-data)))
- (footer "\n%%EndData
-%%EndResource
-%%EOF
-%%EndResource\n"))
-
- (string-append
- header
- binary-data
- footer)))
-
(define-public (version-not-seen-message)
(ly:warn
(format #f