summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e1b336d)
(load_table): read LILC table
* buildscripts/gen-bigcheese-scripts.py (Module): new
file. Generate FF scripts.
MergeKern("feta-alphabet%(design_size)d.tfm");
LoadTableFromFile("LILC", "feta%(design_size)d.otf-table")
MergeKern("feta-alphabet%(design_size)d.tfm");
LoadTableFromFile("LILC", "feta%(design_size)d.otf-table")
+LoadTableFromFile("LILY", "feta%(design_size)d.otf-gtable")
Generate("%(name)s%(design_size)d.otf");
Generate("%(name)s%(design_size)d.cff");''' % vars()
Generate("%(name)s%(design_size)d.otf");
Generate("%(name)s%(design_size)d.cff");''' % vars()
deps = r'''%(name)s%(design_size)d.otf: $(outdir)/feta%(design_size)d.pfa \
$(outdir)/parmesan%(design_size)d.pfa \
deps = r'''%(name)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-table \
+ $(outdir)/feta-alphabet%(design_size)d.pfa feta%(design_size)d.otf-gtable
''' % vars()
open (path, 'w').write (deps)
''' % vars()
open (path, 'w').write (deps)
global_info['Descender'] = '0'
global_info['EncodingScheme'] = encoding
global_info['Descender'] = '0'
global_info['EncodingScheme'] = encoding
+ elif tags[0] == 'parameter':
+ global_info[tags[1]] = tags[2];
+
return (global_info, charmetrics, deps)
return (global_info, charmetrics, deps)
file.write ('\\endinput\n')
file.write ('\\endinput\n')
-def write_otf_lisp_table (file, global_info, charmetrics):
+def write_character_lisp_table (file, global_info, charmetrics):
def conv_char_metric (charmetric):
f = 1.0
def conv_char_metric (charmetric):
f = 1.0
for c in charmetrics:
file.write (conv_char_metric (c))
for c in charmetrics:
file.write (conv_char_metric (c))
+
+
+def write_global_lisp_table (file, global_info):
+ str = ''
+
+ keys = ['staffsize', 'stafflinethickness', 'staff_space',
+ 'linethickness', 'black_notehead_width', 'ledgerlinethickness',
+ 'blot_diameter'
+ ]
+ for k in keys:
+ str = str + "(%s . %s)\n" % (k,global_info[k])
+
+ file.write (str)
+
def write_ps_encoding (name, file, global_info, charmetrics):
encs = ['.notdef'] * 256
def write_ps_encoding (name, file, global_info, charmetrics):
encs = ['.notdef'] * 256
getopt.getopt (sys.argv[1:],
'a:d:hl:o:p:t:',
['enc=', 'afm=', 'outdir=', 'dep=', 'lisp=',
getopt.getopt (sys.argv[1:],
'a:d:hl:o:p:t:',
['enc=', 'afm=', 'outdir=', 'dep=', 'lisp=',
'tex=', 'ly=', 'debug', 'help', 'package='])
'tex=', 'ly=', 'debug', 'help', 'package='])
+global_lisp_nm = ''
+char_lisp_nm = ''
enc_nm = ''
texfile_nm = ''
depfile_nm = ''
enc_nm = ''
texfile_nm = ''
depfile_nm = ''
elif o == '--tex' or o == '-t':
texfile_nm = a
elif o == '--lisp':
elif o == '--tex' or o == '-t':
texfile_nm = a
elif o == '--lisp':
+ char_lisp_nm = a
+ elif o == '--global-lisp':
+ global_lisp_nm = a
elif o == '--enc':
enc_nm = a
elif o == '--ly' or o == '-l':
elif o == '--enc':
enc_nm = a
elif o == '--ly' or o == '-l':
enc_name = 'FetaBraceEncoding'
write_ps_encoding (enc_name, open (enc_nm, 'w'), g, m)
enc_name = 'FetaBraceEncoding'
write_ps_encoding (enc_name, open (enc_nm, 'w'), g, m)
- write_otf_lisp_table (open (lisp_nm, 'w'), g, m)
+ write_character_lisp_table (open (char_lisp_nm, 'w'), g, m)
+ write_global_lisp_table (open (global_lisp_nm, 'w'), g)
if depfile_nm:
write_deps (open (depfile_nm, 'wb'), deps,
[base + '.dvi', base + '.pfa', base + '.pfb',
if depfile_nm:
write_deps (open (depfile_nm, 'wb'), deps,
[base + '.dvi', base + '.pfa', base + '.pfb',
class Open_type_font : public Font_metric
{
FT_Face face_; /* handle to face object */
class Open_type_font : public Font_metric
{
FT_Face face_; /* handle to face object */
SCM lily_character_table_;
SCM lily_character_table_;
+ SCM lily_global_table_;
+
Open_type_font();
public:
static SCM make_otf (String);
Open_type_font();
public:
static SCM make_otf (String);
if (k >= 0)
{
Box b = fm->get_indexed_char (k);
if (k >= 0)
{
Box b = fm->get_indexed_char (k);
- Offset wxwy = fm->get_indexed_wxwy (k);
+ Offset wxwy = fm->attachment_point (key);
Interval v = b[a];
if (!v.is_empty ())
return 2 * (wxwy[a] - v.center ()) / v.length ();
Interval v = b[a];
if (!v.is_empty ())
return 2 * (wxwy[a] - v.center ()) / v.length ();
+SCM
+load_scheme_table (char const *tag_str, FT_Face face)
+{
+ FT_ULong length = 0;
+ FT_Byte* buffer =load_table ("LILC", face, &length);
+
+ SCM tab = SCM_EOL;
+ if (buffer)
+ {
+ String contents ((Byte const*)buffer, length);
+ contents = "(quote (" + contents + "))";
+
+ SCM alist = scm_c_eval_string (contents.to_str0());
+ tab = alist_to_hashq (alist);
+ free (buffer);
+ }
+ return tab;
+}
SCM
Open_type_font::make_otf (String str)
SCM
Open_type_font::make_otf (String str)
- FT_ULong length = 0;
- FT_Byte* buffer =load_table ("LILC", otf->face_, &length);
- if (buffer)
- {
- String contents ((Byte const*)buffer, length);
- contents = "(quote (" + contents + "))";
-
- SCM alist = scm_c_eval_string (contents.to_str0());
- otf->lily_character_table_ = alist_to_hashq (alist);
- free (buffer);
- }
+ otf->lily_character_table_ = load_scheme_table ("LILC", otf->face_);
+ otf->lily_global_table_ = load_scheme_table ("LILY", otf->face_);
+
return otf->self_scm ();
}
Open_type_font::Open_type_font()
{
lily_character_table_ = SCM_EOL;
return otf->self_scm ();
}
Open_type_font::Open_type_font()
{
lily_character_table_ = SCM_EOL;
+ lily_global_table_ = SCM_EOL;
}
void
Open_type_font::derived_mark () const
{
scm_gc_mark (lily_character_table_);
}
void
Open_type_font::derived_mark () const
{
scm_gc_mark (lily_character_table_);
+ scm_gc_mark (lily_global_table_);
##
## todo: this also depends on .tfm, FIXME.
##
## todo: this also depends on .tfm, FIXME.
-$(outdir)/%.lisp $(outdir)/%.afm $(outdir)/%.enc $(outdir)/%.tex $(outdir)/%list.ly $(outdir)/%.dep: $(outdir)/%.log $(outdir)/%.tfm
- $(PYTHON) $(buildscript-dir)/mf-to-table.py --lisp=$(outdir)/$(<F:.log=.lisp) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --afm $(outdir)/$(<F:.log=.afm) --enc $(outdir)/$(<F:.log=.enc) --tex $(outdir)/$(<F:.log=.tex) --ly $(outdir)/$(<F:.log=list.ly) $<
+$(outdir)/%.lisp $(outdir)/%.otf-gtable $(outdir)/%.afm $(outdir)/%.enc $(outdir)/%.tex $(outdir)/%list.ly $(outdir)/%.dep: $(outdir)/%.log $(outdir)/%.tfm
+ $(PYTHON) $(buildscript-dir)/mf-to-table.py --global-lisp=$(outdir)/$(<F:.log=.otf-gtable) --lisp=$(outdir)/$(<F:.log=.lisp) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --afm $(outdir)/$(<F:.log=.afm) --enc $(outdir)/$(<F:.log=.enc) --tex $(outdir)/$(<F:.log=.tex) --ly $(outdir)/$(<F:.log=list.ly) $<
fontdir: $(addprefix $(outdir)/, lilypond.map lilypond.sfd private-fonts fonts.scale fonts.dir Fontmap.lily)
fontdir: $(addprefix $(outdir)/, lilypond.map lilypond.sfd private-fonts fonts.scale fonts.dir Fontmap.lily)
+def autometric_parameter (expr name, value) =
+ message "@{parameter@:"&name&"@:"&decimal value&"@}";
+enddef;
+
+
def autometric_output_char=
message "@{char@:"&charnamestr&"@:"&decimal charcode&"@:"&decimal charbp&"@:"&decimal charwd&"@:"&decimal chardp&"@:"&decimal charht&"@:"&decimal charwx&"@:"&decimal charwy&"@:"&idstr&"@:"&texstr&"@}";
enddef;
def autometric_output_char=
message "@{char@:"&charnamestr&"@:"&decimal charcode&"@:"&decimal charbp&"@:"&decimal charwd&"@:"&decimal chardp&"@:"&decimal charht&"@:"&decimal charwx&"@:"&decimal charwy&"@:"&idstr&"@:"&texstr&"@}";
enddef;
font_x_height staff_space#;
font_x_height staff_space#;
fet_beginfont("feta", design_size, "fetaMusic");
if test = 0:
input feta-eindelijk;
fet_beginfont("feta", design_size, "fetaMusic");
if test = 0:
input feta-eindelijk;
+autometric_parameter("staffsize", staffsize#);
+autometric_parameter("stafflinethickness", stafflinethickness#);
+autometric_parameter("staff_space", staff_space#)
+autometric_parameter("linethickness", linethickness#)
+autometric_parameter("black_notehead_width", black_notehead_width#);
+autometric_parameter("ledgerlinethickness", ledgerlinethickness#);
+autometric_parameter("blot_diameter", blot_diameter#);
+