From cd5b559ab016dad5100eab3105218df94ab9f402 Mon Sep 17 00:00:00 2001 From: Knut Petersen Date: Thu, 8 Jan 2015 18:00:44 +0000 Subject: [PATCH] Reduce size of PDF files when inc. in *TeX docs Issue 4251 This changes the way lilypond uses fonts to draw glyphs. It avoids to used glyphshow for all emmentaler glyphs and adds encoding vectors to the emmentaler fonts before they are used. It also changes the ghostscript parameters used to generate pdfs from postscript code. These changes help to reduce pdf file sizes if you include lilypond snippets in *TeX documents. The pdfs generated by a patched lilypond and *tex themselves are _much_ bigger, but if you run ghostscript and pdfsizeopt.py on those files they implode. Doc additions to the Usage Manual included: Added a command line option --bigpdf / -b, and documented that option in the german and english versions of usage.pdf . Internal hyperlinks are fully preserved with current ghostscript git master. External hyperlinks (GoToR) _to_ a file processed this way are broken. Fixing this would require major changes to ghostscript. External hyperlinks _from_ a file processed this way to other pdfs are preserved if the reader program isn't broken (acroread is not broken in this respect, evince is). For more details see Ghostscript bug #695747 --- Documentation/de/usage/running.itely | 32 + Documentation/usage/running.itely | 28 + lily/general-scheme.cc | 8 + lily/global-vars.cc | 3 + lily/include/main.hh | 1 + lily/main.cc | 5 + ps/encodingdefs.ps | 1848 ++++++++++++++++++++++++++ scm/backend-library.scm | 1 + scm/framework-ps.scm | 53 +- scm/output-ps.scm | 58 +- 10 files changed, 2008 insertions(+), 29 deletions(-) create mode 100644 ps/encodingdefs.ps diff --git a/Documentation/de/usage/running.itely b/Documentation/de/usage/running.itely index a4a46406a2..ae9e99b7f1 100644 --- a/Documentation/de/usage/running.itely +++ b/Documentation/de/usage/running.itely @@ -154,6 +154,38 @@ Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt: @table @code +@item -b, --bigpdfs +@cindex bigpdfs + +Mit dieser Option generierte PDF-Dateien sind deutlich größer als sonst, +weil keine oder nur minimale Zeichensatz-Optimierung erfolgt. Werden +jedoch zwei oder mehrere solcher PDF-Dateien in @w{@code{pdftex}-}, +@w{@code{xetex}-} oder @w{@code{luatex}}-Dokumente eingebunden und +anschließend mit ghostscript weiterverarbeitet, entstehen +@emph{signifikant} kleinere PDF-Dokumente, da die Zeichensatzdaten mit +dieser Methode viel besser reduziert werden können. + +Nach + +@example +lilypond -b myfile +@end example + +@noindent +sollte @code{ghostscript} wie folgt ausgeführt werden. + +@example +gs -q -sDEVICE=pdfwrite -o gsout.pdf myfile.pdf +@end example + +Mit Hilfe von +@uref{https://code.google.com/p/pdfsizeopt/,@code{pdfsizeopt.py}} +kann die Ausgabedatei noch mehr verkleinert werden. + +@example +pdfsizeopt.py --use-multivalent=no gsout.pdf final.pdf +@end example + @item -d, --define-default=@var{Variable}=@var{Wert} Siehe @ref{Fortgeschrittene Optionen auf der Kommandozeile für LilyPond}. diff --git a/Documentation/usage/running.itely b/Documentation/usage/running.itely index c9051c7120..fab28a6297 100644 --- a/Documentation/usage/running.itely +++ b/Documentation/usage/running.itely @@ -179,6 +179,34 @@ The following options are supported: @table @code +@item -b, --bigpdfs +@cindex bigpdfs + +PDF files generated will be much larger than normal (due to little or no +font optimization). However, if two or more PDF files are included +within @w{@code{pdftex}}, @w{@code{xetex}} or @w{@code{luatex}} +documents they can then be processed further via ghostscript (merging +duplicated font data) resulting in @emph{significantly} smaller PDF +files. + +@example +lilypond -b myfile +@end example + +Then run @code{ghostscript}; + +@example +gs -q -sDEVICE=pdfwrite -o gsout.pdf myfile.pdf +@end example + +@code{pdfsizeopt.py} can then be used to further optimize the size +of file; + +@example +pdfsizeopt.py --use-multivalent=no gsout.pdf final.pdf +@end example + + @item -d, --define-default=@var{var}=@var{val} See @ref{Advanced command line options for LilyPond}. diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc index 2ab34a086f..068fb27aad 100644 --- a/lily/general-scheme.cc +++ b/lily/general-scheme.cc @@ -302,6 +302,14 @@ LY_DEFINE (ly_output_formats, "ly:output-formats", return lst; } +LY_DEFINE (ly_bigpdfs, "ly:bigpdfs", + 0, 0, 0, (), + "Return true if the command line includes the @option{--bigpdf} parameter." +) +{ + return bigpdfs ? SCM_BOOL_T : SCM_BOOL_F; +} + LY_DEFINE (ly_wide_char_2_utf_8, "ly:wide-char->utf-8", 1, 0, 0, (SCM wc), "Encode the Unicode codepoint @var{wc}, an integer, as UTF-8.") diff --git a/lily/global-vars.cc b/lily/global-vars.cc index 45975cd666..dce813691a 100644 --- a/lily/global-vars.cc +++ b/lily/global-vars.cc @@ -33,6 +33,9 @@ string init_name_global; /* Output formats to generate. */ string output_format_global = ""; +/* Generate big pdfs */ +bool bigpdfs = false; + /* Current output name. */ string output_name_global; diff --git a/lily/include/main.hh b/lily/include/main.hh index 472006a269..1e6e2caf51 100644 --- a/lily/include/main.hh +++ b/lily/include/main.hh @@ -39,6 +39,7 @@ extern vector dump_header_fieldnames_global; extern vector start_environment_global; extern string output_backend_global; extern string output_name_global; +extern bool bigpdfs; extern bool be_safe_global; extern bool do_internal_type_checking_global; extern string lilypond_datadir; diff --git a/lily/main.cc b/lily/main.cc index 93b784f0ff..808274c6e8 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -158,6 +158,7 @@ static Long_option_init options_static[] {0, "pdf", 0, _i ("generate PDF (default)")}, {0, "png", 0, _i ("generate PNG")}, {0, "ps", 0, _i ("generate PostScript")}, + {0, "bigpdfs", 'b', _i("generate big PDF files")}, {0, "help", 'h', _i ("show this help and exit")}, { _i ("FIELD"), "header", 'H', _i ("dump header field FIELD to file\n" @@ -613,6 +614,10 @@ parse_argv (int argc, char **argv) relocate_binary = true; break; + case 'b': + bigpdfs = true; + break; + case 'd': { string arg (option_parser->optional_argument_str0_); diff --git a/ps/encodingdefs.ps b/ps/encodingdefs.ps new file mode 100644 index 0000000000..fe4db92b1d --- /dev/null +++ b/ps/encodingdefs.ps @@ -0,0 +1,1848 @@ +%!PS-Adobe-2.0: encodingdefs.ps + +% +% Custom encodings and definitions for emmentaler-[[:digit:]]* +% ad the emmentaler-brace fonts, used with --bigpdf +% + +/LilyNoteHeadEncoding [ + % 0x00 + /.notdef /noteheads.d0doFunk /noteheads.d0fa + /noteheads.d0faFunk /noteheads.d0faThin /noteheads.d0miFunk + /noteheads.d0reFunk /noteheads.d0tiFunk /noteheads.d1do + /noteheads.d1doFunk /noteheads.d1doThin /noteheads.d1doWalker + /noteheads.d1fa /noteheads.d1faFunk /noteheads.d1faThin + % 0xf + /noteheads.d1faWalker /noteheads.d1miFunk /noteheads.d1re + /noteheads.d1reFunk /noteheads.d1reThin /noteheads.d1reWalker + /noteheads.d1ti /noteheads.d1tiFunk /noteheads.d1tiThin + /noteheads.d1tiWalker /noteheads.d1triangle /noteheads.d2do + % 0x1e + /noteheads.d2doFunk /noteheads.d2doThin /noteheads.d2doWalker + /noteheads.d2fa /noteheads.d2faFunk /noteheads.d2faThin + /noteheads.d2faWalker /noteheads.d2kievan /noteheads.d2re + /noteheads.d2reFunk /noteheads.d2reThin /noteheads.d2reWalker + /noteheads.d2ti /noteheads.d2tiFunk /noteheads.d2tiThin + % 0x2d + /noteheads.d2tiWalker /noteheads.d2triangle /noteheads.d3kievan + /noteheads.dM2 /noteheads.dM2blackmensural /noteheads.dM2mensural + /noteheads.dM2neomensural /noteheads.dM2semimensural + /noteheads.dM3blackmensural /noteheads.dM3mensural + /noteheads.dM3neomensural /noteheads.dM3semimensural + % 0x39 + /noteheads.drM2mensural /noteheads.drM2neomensural + /noteheads.drM2semimensural /noteheads.drM3mensural + /noteheads.drM3neomensural /noteheads.drM3semimensural /noteheads.s0 + /noteheads.s0blackmensural /noteheads.s0blackpetrucci + /noteheads.s0cross /noteheads.s0diamond /noteheads.s0do + % 0x45 + /noteheads.s0doThin /noteheads.s0doWalker /noteheads.s0faWalker + /noteheads.s0harmonic /noteheads.s0kievan /noteheads.s0la + /noteheads.s0laFunk /noteheads.s0laThin /noteheads.s0laWalker + /noteheads.s0mensural /noteheads.s0mi /noteheads.s0miMirror + /noteheads.s0miThin /noteheads.s0miWalker /noteheads.s0neomensural + % 0x54 + /noteheads.s0petrucci /noteheads.s0re /noteheads.s0reThin + /noteheads.s0reWalker /noteheads.s0slash /noteheads.s0sol + /noteheads.s0solFunk /noteheads.s0ti /noteheads.s0tiThin + /noteheads.s0tiWalker /noteheads.s0triangle /noteheads.s1 + /noteheads.s1blackpetrucci /noteheads.s1cross /noteheads.s1diamond + % 0x63 + /noteheads.s1kievan /noteheads.s1la /noteheads.s1laFunk + /noteheads.s1laThin /noteheads.s1laWalker /noteheads.s1mensural + /noteheads.s1mi /noteheads.s1miMirror /noteheads.s1miThin + /noteheads.s1miWalker /noteheads.s1neomensural /noteheads.s1petrucci + /noteheads.s1slash /noteheads.s1sol /noteheads.s1solFunk + % 0x72 + /noteheads.s2 /noteheads.s2blackpetrucci /noteheads.s2cross + /noteheads.s2diamond /noteheads.s2harmonic /noteheads.s2la + /noteheads.s2laFunk /noteheads.s2laThin /noteheads.s2laWalker + /noteheads.s2mensural /noteheads.s2mi /noteheads.s2miFunk + /noteheads.s2miMirror /noteheads.s2miThin /noteheads.s2miWalker + % 0x81 + /noteheads.s2neomensural /noteheads.s2petrucci /noteheads.s2slash + /noteheads.s2sol /noteheads.s2solFunk /noteheads.s2xcircle + /noteheads.shufnagel.lpes /noteheads.shufnagel.punctum + /noteheads.shufnagel.virga /noteheads.sM1 /noteheads.sM1blackmensural + /noteheads.sM1double /noteheads.sM1kievan /noteheads.sM1mensural + % 0x8f + /noteheads.sM1neomensural /noteheads.sM1semimensural + /noteheads.sM2blackligmensural /noteheads.sM2kievan + /noteheads.sM2ligmensural /noteheads.sM2semiligmensural + /noteheads.sM3blackligmensural /noteheads.sM3ligmensural + /noteheads.sM3semiligmensural /noteheads.smedicaea.inclinatum + % 0x99 + /noteheads.smedicaea.punctum /noteheads.smedicaea.rvirga + /noteheads.smedicaea.virga /noteheads.sr1kievan + /noteheads.srM1mensural /noteheads.srM1neomensural + /noteheads.srM1semimensural /noteheads.srM2ligmensural + /noteheads.srM2semiligmensural /noteheads.srM3ligmensural + % 0xa3 + /noteheads.srM3semiligmensural /noteheads.ssolesmes.auct.asc + /noteheads.ssolesmes.auct.desc /noteheads.ssolesmes.incl.auctum + /noteheads.ssolesmes.incl.parvum /noteheads.ssolesmes.oriscus + /noteheads.ssolesmes.stropha /noteheads.ssolesmes.stropha.aucta + /noteheads.svaticana.cephalicus /noteheads.svaticana.epiphonus + % 0xad + /noteheads.svaticana.inclinatum /noteheads.svaticana.inner.cephalicus + /noteheads.svaticana.linea.punctum + /noteheads.svaticana.linea.punctum.cavum + /noteheads.svaticana.lpes /noteheads.svaticana.plica + /noteheads.svaticana.punctum /noteheads.svaticana.punctum.cavum + % 0xb5 + /noteheads.svaticana.quilisma /noteheads.svaticana.reverse.plica + /noteheads.svaticana.reverse.vplica /noteheads.svaticana.upes + /noteheads.svaticana.vepiphonus /noteheads.svaticana.vlpes + /noteheads.svaticana.vplica /noteheads.svaticana.vupes + /noteheads.u0doFunk /noteheads.u0fa /noteheads.u0faFunk + % 0xc0 + /noteheads.u0faThin /noteheads.u0miFunk /noteheads.u0reFunk + /noteheads.u0tiFunk /noteheads.u1do /noteheads.u1doFunk + /noteheads.u1doThin /noteheads.u1doWalker /noteheads.u1fa + /noteheads.u1faFunk /noteheads.u1faThin /noteheads.u1faWalker + /noteheads.u1miFunk /noteheads.u1re /noteheads.u1reFunk + % 0xcf + /noteheads.u1reThin /noteheads.u1reWalker /noteheads.u1ti + /noteheads.u1tiFunk /noteheads.u1tiThin /noteheads.u1tiWalker + /noteheads.u1triangle /noteheads.u2do /noteheads.u2doFunk + /noteheads.u2doThin /noteheads.u2doWalker /noteheads.u2fa + /noteheads.u2faFunk /noteheads.u2faThin /noteheads.u2faWalker + % 0xde + /noteheads.u2kievan /noteheads.u2re /noteheads.u2reFunk + /noteheads.u2reThin /noteheads.u2reWalker /noteheads.u2ti + /noteheads.u2tiFunk /noteheads.u2tiThin /noteheads.u2tiWalker + /noteheads.u2triangle /noteheads.u3kievan /noteheads.uM2 + /noteheads.uM2blackmensural /noteheads.uM2mensural + % 0xec + /noteheads.uM2neomensural /noteheads.uM2semimensural + /noteheads.uM3blackmensural /noteheads.uM3mensural + /noteheads.uM3neomensural /noteheads.uM3semimensural + /noteheads.urM2mensural /noteheads.urM2neomensural + % 0xf4 + /noteheads.urM2semimensural /noteheads.urM3mensural + /noteheads.urM3neomensural /noteheads.urM3semimensural + % 0xf8 + /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0x103 +] def + +% 0x00 +/noteheads.d0doFunk {<01> show} def +/noteheads.d0fa {<02> show} def +/noteheads.d0faFunk {<03> show} def +/noteheads.d0faThin {<04> show} def +/noteheads.d0miFunk {<05> show} def +/noteheads.d0reFunk {<06> show} def +/noteheads.d0tiFunk {<07> show} def +/noteheads.d1do {<08> show} def +/noteheads.d1doFunk {<09> show} def +/noteheads.d1doThin {<0a> show} def +% 0xa +/noteheads.d1doWalker {<0b> show} def +/noteheads.d1fa {<0c> show} def +/noteheads.d1faFunk {<0d> show} def +/noteheads.d1faThin {<0e> show} def +/noteheads.d1faWalker {<0f> show} def +/noteheads.d1miFunk {<10> show} def +/noteheads.d1re {<11> show} def +/noteheads.d1reFunk {<12> show} def +/noteheads.d1reThin {<13> show} def +/noteheads.d1reWalker {<14> show} def +% 0x14 +/noteheads.d1ti {<15> show} def +/noteheads.d1tiFunk {<16> show} def +/noteheads.d1tiThin {<17> show} def +/noteheads.d1tiWalker {<18> show} def +/noteheads.d1triangle {<19> show} def +/noteheads.d2do {<1a> show} def +/noteheads.d2doFunk {<1b> show} def +/noteheads.d2doThin {<1c> show} def +/noteheads.d2doWalker {<1d> show} def +/noteheads.d2fa {<1e> show} def +% 0x1e +/noteheads.d2faFunk {<1f> show} def +/noteheads.d2faThin {<20> show} def +/noteheads.d2faWalker {<21> show} def +/noteheads.d2kievan {<22> show} def +/noteheads.d2re {<23> show} def +/noteheads.d2reFunk {<24> show} def +/noteheads.d2reThin {<25> show} def +/noteheads.d2reWalker {<26> show} def +/noteheads.d2ti {<27> show} def +/noteheads.d2tiFunk {<28> show} def +% 0x28 +/noteheads.d2tiThin {<29> show} def +/noteheads.d2tiWalker {<2a> show} def +/noteheads.d2triangle {<2b> show} def +/noteheads.d3kievan {<2c> show} def +/noteheads.dM2 {<2d> show} def +/noteheads.dM2blackmensural {<2e> show} def +/noteheads.dM2mensural {<2f> show} def +/noteheads.dM2neomensural {<30> show} def +/noteheads.dM2semimensural {<31> show} def +/noteheads.dM3blackmensural {<32> show} def +% 0x32 +/noteheads.dM3mensural {<33> show} def +/noteheads.dM3neomensural {<34> show} def +/noteheads.dM3semimensural {<35> show} def +/noteheads.drM2mensural {<36> show} def +/noteheads.drM2neomensural {<37> show} def +/noteheads.drM2semimensural {<38> show} def +/noteheads.drM3mensural {<39> show} def +/noteheads.drM3neomensural {<3a> show} def +/noteheads.drM3semimensural {<3b> show} def +/noteheads.s0 {<3c> show} def +% 0x3c +/noteheads.s0blackmensural {<3d> show} def +/noteheads.s0blackpetrucci {<3e> show} def +/noteheads.s0cross {<3f> show} def +/noteheads.s0diamond {<40> show} def +/noteheads.s0do {<41> show} def +/noteheads.s0doThin {<42> show} def +/noteheads.s0doWalker {<43> show} def +/noteheads.s0faWalker {<44> show} def +/noteheads.s0harmonic {<45> show} def +/noteheads.s0kievan {<46> show} def +% 0x46 +/noteheads.s0la {<47> show} def +/noteheads.s0laFunk {<48> show} def +/noteheads.s0laThin {<49> show} def +/noteheads.s0laWalker {<4a> show} def +/noteheads.s0mensural {<4b> show} def +/noteheads.s0mi {<4c> show} def +/noteheads.s0miMirror {<4d> show} def +/noteheads.s0miThin {<4e> show} def +/noteheads.s0miWalker {<4f> show} def +/noteheads.s0neomensural {<50> show} def +% 0x50 +/noteheads.s0petrucci {<51> show} def +/noteheads.s0re {<52> show} def +/noteheads.s0reThin {<53> show} def +/noteheads.s0reWalker {<54> show} def +/noteheads.s0slash {<55> show} def +/noteheads.s0sol {<56> show} def +/noteheads.s0solFunk {<57> show} def +/noteheads.s0ti {<58> show} def +/noteheads.s0tiThin {<59> show} def +/noteheads.s0tiWalker {<5a> show} def +% 0x5a +/noteheads.s0triangle {<5b> show} def +/noteheads.s1 {<5c> show} def +/noteheads.s1blackpetrucci {<5d> show} def +/noteheads.s1cross {<5e> show} def +/noteheads.s1diamond {<5f> show} def +/noteheads.s1kievan {<60> show} def +/noteheads.s1la {<61> show} def +/noteheads.s1laFunk {<62> show} def +/noteheads.s1laThin {<63> show} def +/noteheads.s1laWalker {<64> show} def +% 0x64 +/noteheads.s1mensural {<65> show} def +/noteheads.s1mi {<66> show} def +/noteheads.s1miMirror {<67> show} def +/noteheads.s1miThin {<68> show} def +/noteheads.s1miWalker {<69> show} def +/noteheads.s1neomensural {<6a> show} def +/noteheads.s1petrucci {<6b> show} def +/noteheads.s1slash {<6c> show} def +/noteheads.s1sol {<6d> show} def +/noteheads.s1solFunk {<6e> show} def +% 0x6e +/noteheads.s2 {<6f> show} def +/noteheads.s2blackpetrucci {<70> show} def +/noteheads.s2cross {<71> show} def +/noteheads.s2diamond {<72> show} def +/noteheads.s2harmonic {<73> show} def +/noteheads.s2la {<74> show} def +/noteheads.s2laFunk {<75> show} def +/noteheads.s2laThin {<76> show} def +/noteheads.s2laWalker {<77> show} def +/noteheads.s2mensural {<78> show} def +% 0x78 +/noteheads.s2mi {<79> show} def +/noteheads.s2miFunk {<7a> show} def +/noteheads.s2miMirror {<7b> show} def +/noteheads.s2miThin {<7c> show} def +/noteheads.s2miWalker {<7d> show} def +/noteheads.s2neomensural {<7e> show} def +/noteheads.s2petrucci {<7f> show} def +/noteheads.s2slash {<80> show} def +/noteheads.s2sol {<81> show} def +/noteheads.s2solFunk {<82> show} def +% 0x82 +/noteheads.s2xcircle {<83> show} def +/noteheads.shufnagel.lpes {<84> show} def +/noteheads.shufnagel.punctum {<85> show} def +/noteheads.shufnagel.virga {<86> show} def +/noteheads.sM1 {<87> show} def +/noteheads.sM1blackmensural {<88> show} def +/noteheads.sM1double {<89> show} def +/noteheads.sM1kievan {<8a> show} def +/noteheads.sM1mensural {<8b> show} def +/noteheads.sM1neomensural {<8c> show} def +% 0x8c +/noteheads.sM1semimensural {<8d> show} def +/noteheads.sM2blackligmensural {<8e> show} def +/noteheads.sM2kievan {<8f> show} def +/noteheads.sM2ligmensural {<90> show} def +/noteheads.sM2semiligmensural {<91> show} def +/noteheads.sM3blackligmensural {<92> show} def +/noteheads.sM3ligmensural {<93> show} def +/noteheads.sM3semiligmensural {<94> show} def +/noteheads.smedicaea.inclinatum {<95> show} def +/noteheads.smedicaea.punctum {<96> show} def +% 0x96 +/noteheads.smedicaea.rvirga {<97> show} def +/noteheads.smedicaea.virga {<98> show} def +/noteheads.sr1kievan {<99> show} def +/noteheads.srM1mensural {<9a> show} def +/noteheads.srM1neomensural {<9b> show} def +/noteheads.srM1semimensural {<9c> show} def +/noteheads.srM2ligmensural {<9d> show} def +/noteheads.srM2semiligmensural {<9e> show} def +/noteheads.srM3ligmensural {<9f> show} def +/noteheads.srM3semiligmensural { show} def +% 0xa0 +/noteheads.ssolesmes.auct.asc { show} def +/noteheads.ssolesmes.auct.desc { show} def +/noteheads.ssolesmes.incl.auctum { show} def +/noteheads.ssolesmes.incl.parvum { show} def +/noteheads.ssolesmes.oriscus { show} def +/noteheads.ssolesmes.stropha { show} def +/noteheads.ssolesmes.stropha.aucta { show} def +/noteheads.svaticana.cephalicus { show} def +/noteheads.svaticana.epiphonus { show} def +/noteheads.svaticana.inclinatum { show} def +% 0xaa +/noteheads.svaticana.inner.cephalicus { show} def +/noteheads.svaticana.linea.punctum { show} def +/noteheads.svaticana.linea.punctum.cavum { show} def +/noteheads.svaticana.lpes { show} def +/noteheads.svaticana.plica { show} def +/noteheads.svaticana.punctum { show} def +/noteheads.svaticana.punctum.cavum { show} def +/noteheads.svaticana.quilisma { show} def +/noteheads.svaticana.reverse.plica { show} def +/noteheads.svaticana.reverse.vplica { show} def +% 0xb4 +/noteheads.svaticana.upes { show} def +/noteheads.svaticana.vepiphonus { show} def +/noteheads.svaticana.vlpes { show} def +/noteheads.svaticana.vplica { show} def +/noteheads.svaticana.vupes { show} def +/noteheads.u0doFunk { show} def +/noteheads.u0fa { show} def +/noteheads.u0faFunk { show} def +/noteheads.u0faThin { show} def +/noteheads.u0miFunk { show} def +% 0xbe +/noteheads.u0reFunk { show} def +/noteheads.u0tiFunk { show} def +/noteheads.u1do { show} def +/noteheads.u1doFunk { show} def +/noteheads.u1doThin { show} def +/noteheads.u1doWalker { show} def +/noteheads.u1fa { show} def +/noteheads.u1faFunk { show} def +/noteheads.u1faThin { show} def +/noteheads.u1faWalker { show} def +% 0xc8 +/noteheads.u1miFunk { show} def +/noteheads.u1re { show} def +/noteheads.u1reFunk { show} def +/noteheads.u1reThin { show} def +/noteheads.u1reWalker { show} def +/noteheads.u1ti { show} def +/noteheads.u1tiFunk { show} def +/noteheads.u1tiThin { show} def +/noteheads.u1tiWalker { show} def +/noteheads.u1triangle { show} def +% 0xd2 +/noteheads.u2do { show} def +/noteheads.u2doFunk { show} def +/noteheads.u2doThin { show} def +/noteheads.u2doWalker { show} def +/noteheads.u2fa { show} def +/noteheads.u2faFunk { show} def +/noteheads.u2faThin { show} def +/noteheads.u2faWalker { show} def +/noteheads.u2kievan { show} def +/noteheads.u2re { show} def +% 0xdc +/noteheads.u2reFunk {
show} def +/noteheads.u2reThin { show} def +/noteheads.u2reWalker { show} def +/noteheads.u2ti { show} def +/noteheads.u2tiFunk { show} def +/noteheads.u2tiThin { show} def +/noteheads.u2tiWalker { show} def +/noteheads.u2triangle { show} def +/noteheads.u3kievan { show} def +/noteheads.uM2 { show} def +% 0xe6 +/noteheads.uM2blackmensural { show} def +/noteheads.uM2mensural { show} def +/noteheads.uM2neomensural { show} def +/noteheads.uM2semimensural { show} def +/noteheads.uM3blackmensural { show} def +/noteheads.uM3mensural { show} def +/noteheads.uM3neomensural { show} def +/noteheads.uM3semimensural { show} def +/noteheads.urM2mensural { show} def +/noteheads.urM2neomensural { show} def +% 0xf0 +/noteheads.urM2semimensural { show} def +/noteheads.urM3mensural { show} def +/noteheads.urM3neomensural { show} def +/noteheads.urM3semimensural { show} def +% 0xf4 + +/LilyScriptEncoding [ + % 0x00 + /.notdef /clefs.blackmensural.c /clefs.blackmensural.c_change + /clefs.C /clefs.C_change /clefs.F + /clefs.F_change /clefs.G /clefs.G_change + /clefs.GG /clefs.GG_change /clefs.hufnagel.do + /clefs.hufnagel.do_change /clefs.hufnagel.do.fa + % 0xe + /clefs.hufnagel.do.fa_change /clefs.hufnagel.fa + /clefs.hufnagel.fa_change /clefs.kievan.do /clefs.kievan.do_change + /clefs.medicaea.do /clefs.medicaea.do_change /clefs.medicaea.fa + /clefs.medicaea.fa_change /clefs.mensural.c /clefs.mensural.c_change + /clefs.mensural.f /clefs.mensural.f_change /clefs.mensural.g + % 01c + /clefs.mensural.g_change /clefs.neomensural.c + /clefs.neomensural.c_change /clefs.percussion + /clefs.percussion_change /clefs.petrucci.c1 /clefs.petrucci.c1_change + /clefs.petrucci.c2 /clefs.petrucci.c2_change /clefs.petrucci.c3 + /clefs.petrucci.c3_change /clefs.petrucci.c4 /clefs.petrucci.c4_change + % 0x29 + /clefs.petrucci.c5 /clefs.petrucci.c5_change /clefs.petrucci.f + /clefs.petrucci.f_change /clefs.petrucci.g /clefs.petrucci.g_change + /clefs.tab /clefs.tab_change /clefs.tenorG + /clefs.tenorG_change /clefs.varC /clefs.varC_change + /clefs.varpercussion /clefs.varpercussion_change /clefs.vaticana.do + % 0x38 + /clefs.vaticana.do_change /clefs.vaticana.fa /clefs.vaticana.fa_change + /scripts.arpeggio /scripts.arpeggio.arrow.1 /scripts.arpeggio.arrow.M1 + /scripts.augmentum /scripts.barline.kievan /scripts.caesura.curved + /scripts.caesura.straight /scripts.circulus /scripts.coda + /scripts.daccentus /scripts.dfermata /scripts.dlongfermata + % 0x47 + /scripts.dmarcato /scripts.downbow /scripts.downmordent + /scripts.downprall /scripts.dpedalheel /scripts.dpedaltoe + /scripts.dportato /scripts.dsemicirculus /scripts.dshortfermata + /scripts.dsignumcongruentiae /scripts.dstaccatissimo + /scripts.dverylongfermata /scripts.espr /scripts.flageolet + % 0x55 + /scripts.halfopen /scripts.halfopenvertical /scripts.ictus + /scripts.lcomma /scripts.lineprall /scripts.lvarcomma + /scripts.mordent /scripts.open /scripts.prall + /scripts.pralldown /scripts.prallmordent /scripts.prallprall + /scripts.prallup /scripts.rcomma /scripts.reverseturn + % 0x64 + /scripts.rvarcomma /scripts.segno /scripts.sforzato + /scripts.snappizzicato /scripts.staccato /scripts.stopped + /scripts.tenuto /scripts.thumb /scripts.tickmark + /scripts.trilelement /scripts.trill /scripts.trill_element + /scripts.turn /scripts.uaccentus /scripts.ufermata + % 0x73 + /scripts.ulongfermata /scripts.umarcato /scripts.upbow + /scripts.upedalheel /scripts.upedaltoe /scripts.upmordent + /scripts.uportato /scripts.upprall /scripts.usemicirculus + /scripts.ushortfermata /scripts.usignumcongruentiae + /scripts.ustaccatissimo /scripts.uverylongfermata /scripts.varcoda + % 0x81 + /scripts.varsegno + % 0x82 + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0x9e + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0xc1 + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0xe4 + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0x100 +] def + +% 0x00 +/clefs.blackmensural.c {<01> show} def +/clefs.blackmensural.c_change {<02> show} def +/clefs.C {<03> show} def /clefs.C_change {<04> show} def +/clefs.F {<05> show} def /clefs.F_change {<06> show} def +/clefs.G {<07> show} def /clefs.G_change {<08> show} def +/clefs.GG {<09> show} def /clefs.GG_change {<0a> show} def +/clefs.hufnagel.do {<0b> show} def +/clefs.hufnagel.do_change {<0c> show} def +/clefs.hufnagel.do.fa {<0d> show} def +/clefs.hufnagel.do.fa_change {<0e> show} def +% 0xa +/clefs.hufnagel.fa {<0f> show} def +/clefs.hufnagel.fa_change {<10> show} def +/clefs.kievan.do {<11> show} def +/clefs.kievan.do_change {<12> show} def +/clefs.medicaea.do {<13> show} def +/clefs.medicaea.do_change {<14> show} def +/clefs.medicaea.fa {<15> show} def +/clefs.medicaea.fa_change {<16> show} def +/clefs.mensural.c {<17> show} def +/clefs.mensural.c_change {<18> show} def +% 0x14 +/clefs.mensural.f {<19> show} def +/clefs.mensural.f_change {<1a> show} def +/clefs.mensural.g {<1b> show} def +/clefs.mensural.g_change {<1c> show} def +/clefs.neomensural.c {<1d> show} def +/clefs.neomensural.c_change {<1e> show} def +/clefs.percussion {<1f> show} def +/clefs.percussion_change {<20> show} def +/clefs.petrucci.c1 {<21> show} def +/clefs.petrucci.c1_change {<22> show} def +% 0x1e +/clefs.petrucci.c2 {<23> show} def +/clefs.petrucci.c2_change {<24> show} def +/clefs.petrucci.c3 {<25> show} def +/clefs.petrucci.c3_change {<26> show} def +/clefs.petrucci.c4 {<27> show} def +/clefs.petrucci.c4_change {<28> show} def +/clefs.petrucci.c5 {<29> show} def +/clefs.petrucci.c5_change {<2a> show} def +/clefs.petrucci.f {<2b> show} def +/clefs.petrucci.f_change {<2c> show} def +% 0x28 +/clefs.petrucci.g {<2d> show} def +/clefs.petrucci.g_change {<2e> show} def +/clefs.tab {<2f> show} def +/clefs.tab_change {<30> show} def +/clefs.tenorG {<31> show} def +/clefs.tenorG_change {<32> show} def +/clefs.varC {<33> show} def +/clefs.varC_change {<34> show} def +/clefs.varpercussion {<35> show} def +/clefs.varpercussion_change {<36> show} def +% 0x32 +/clefs.vaticana.do {<37> show} def +/clefs.vaticana.do_change {<38> show} def +/clefs.vaticana.fa {<39> show} def +/clefs.vaticana.fa_change {<3a> show} def +/scripts.arpeggio {<3b> show} def +/scripts.arpeggio.arrow.1 {<3c> show} def +/scripts.arpeggio.arrow.M1 {<3d> show} def +/scripts.augmentum {<3e> show} def +/scripts.barline.kievan {<3f> show} def +/scripts.caesura.curved {<40> show} def +% 0x3c +/scripts.caesura.straight {<41> show} def +/scripts.circulus {<42> show} def +/scripts.coda {<43> show} def +/scripts.daccentus {<44> show} def +/scripts.dfermata {<45> show} def +/scripts.dlongfermata {<46> show} def +/scripts.dmarcato {<47> show} def +/scripts.downbow {<48> show} def +/scripts.downmordent {<49> show} def +/scripts.downprall {<4a> show} def +% 0x46 +/scripts.dpedalheel {<4b> show} def +/scripts.dpedaltoe {<4c> show} def +/scripts.dportato {<4d> show} def +/scripts.dsemicirculus {<4e> show} def +/scripts.dshortfermata {<4f> show} def +/scripts.dsignumcongruentiae {<50> show} def +/scripts.dstaccatissimo {<51> show} def +/scripts.dverylongfermata {<52> show} def +/scripts.espr {<53> show} def +/scripts.flageolet {<54> show} def +% 0x50 +/scripts.halfopen {<55> show} def +/scripts.halfopenvertical {<56> show} def +/scripts.ictus {<57> show} def +/scripts.lcomma {<58> show} def +/scripts.lineprall {<59> show} def +/scripts.lvarcomma {<5a> show} def +/scripts.mordent {<5b> show} def +/scripts.open {<5c> show} def +/scripts.prall {<5d> show} def +/scripts.pralldown {<5e> show} def +% 0x5a +/scripts.prallmordent {<5f> show} def +/scripts.prallprall {<60> show} def +/scripts.prallup {<61> show} def +/scripts.rcomma {<62> show} def +/scripts.reverseturn {<63> show} def +/scripts.rvarcomma {<64> show} def +/scripts.segno {<65> show} def +/scripts.sforzato {<66> show} def +/scripts.snappizzicato {<67> show} def +/scripts.staccato {<68> show} def +/scripts.stopped {<69> show} def +% 0x64 +/scripts.tenuto {<6a> show} def +/scripts.thumb {<6b> show} def +/scripts.tickmark {<6c> show} def +/scripts.trilelement {<6d> show} def +/scripts.trill {<6e> show} def +/scripts.trill_element {<6f> show} def +/scripts.turn {<70> show} def +/scripts.uaccentus {<71> show} def +/scripts.ufermata {<72> show} def +/scripts.ulongfermata {<73> show} def +% 0x6e +/scripts.umarcato {<74> show} def +/scripts.upbow {<75> show} def +/scripts.upedalheel {<76> show} def +/scripts.upedaltoe {<77> show} def +/scripts.upmordent {<78> show} def +/scripts.uportato {<79> show} def +/scripts.upprall {<7a> show} def +/scripts.usemicirculus {<7b> show} def +/scripts.ushortfermata {<7c> show} def +/scripts.usignumcongruentiae {<7d> show} def +% 0x78 +/scripts.ustaccatissimo {<7e> show} def +/scripts.uverylongfermata {<7f> show} def +/scripts.varcoda {<80> show} def +/scripts.varsegno {<81> show} def +% 0x7c + +/LilyOtherEncoding [ + % 0x00 + /.notdef /accidentals.doublesharp /accidentals.flat + /accidentals.flat.arrowboth /accidentals.flat.arrowdown + /accidentals.flat.arrowup /accidentals.flatflat + /accidentals.flatflat.slash /accidentals.flat.slash + /accidentals.flat.slashslash /accidentals.hufnagelM1 + % 0xb + /accidentals.kievan1 /accidentals.kievanM1 /accidentals.leftparen + /accidentals.medicaeaM1 /accidentals.mensural1 /accidentals.mensuralM1 + /accidentals.mirroredflat /accidentals.mirroredflat.backslash + /accidentals.mirroredflat.flat /accidentals.natural + /accidentals.natural.arrowboth /accidentals.natural.arrowdown + % 0x17 + /accidentals.natural.arrowup /accidentals.rightparen + /accidentals.sharp /accidentals.sharp.arrowboth + /accidentals.sharp.arrowdown /accidentals.sharp.arrowup + /accidentals.sharp.slashslashslash.stem + /accidentals.sharp.slashslashslash.stemstem + % 0x1f + /accidentals.sharp.slashslash.stem + /accidentals.sharp.slashslash.stemstemstem /accidentals.vaticana0 + /accidentals.vaticanaM1 /accordion.bayanbass /accordion.discant + /accordion.dot /accordion.freebass /accordion.oldEE + /accordion.pull /accordion.push /accordion.stdbass + % 0x2b + /arrowheads.close.01 /arrowheads.close.0M1 /arrowheads.close.11 + /arrowheads.close.1M1 /arrowheads.open.01 /arrowheads.open.0M1 + /arrowheads.open.11 /arrowheads.open.1M1 + /brackettips.down /brackettips.up /comma /custodes.hufnagel.d0 + /custodes.hufnagel.d1 /custodes.hufnagel.d2 /custodes.hufnagel.u0 + % 0x39 + /custodes.hufnagel.u1 /custodes.hufnagel.u2 /custodes.medicaea.d0 + /custodes.medicaea.d1 /custodes.medicaea.d2 /custodes.medicaea.u0 + /custodes.medicaea.u1 /custodes.medicaea.u2 /custodes.mensural.d0 + /custodes.mensural.d1 /custodes.mensural.d2 /custodes.mensural.u0 + /custodes.mensural.u1 /custodes.mensural.u2 /custodes.vaticana.d0 + % 0x48 + /custodes.vaticana.d1 /custodes.vaticana.d2 /custodes.vaticana.u0 + /custodes.vaticana.u1 /custodes.vaticana.u2 /dots.dot + /dots.dotkievan /dots.dotvaticana /eight + /f /five /flags.d3 + /flags.d4 /flags.d5 /flags.d6 + % 0x57 + /flags.d7 /flags.dgrace /flags.mensurald03 + /flags.mensurald04 /flags.mensurald05 /flags.mensurald06 + /flags.mensurald13 /flags.mensurald14 /flags.mensurald15 + /flags.mensurald16 /flags.mensurald23 /flags.mensurald24 + /flags.mensurald25 /flags.mensurald26 /flags.mensuralu03 + % 0x66 + /flags.mensuralu04 /flags.mensuralu05 /flags.mensuralu06 + /flags.mensuralu13 /flags.mensuralu14 /flags.mensuralu15 + /flags.mensuralu16 /flags.mensuralu23 /flags.mensuralu24 + /flags.mensuralu25 /flags.mensuralu26 /flags.u3 + /flags.u4 /flags.u5 /flags.u6 + % 0x75 + /flags.u7 /flags.ugrace /four + /hyphen /m /nine + /one /p /pedal.. /pedal.* + /pedal.d /pedal.e /pedal.M + /pedal.P /pedal.Ped /period + % 0x84 + /plus /r /rests.0 + /rests.0mensural /rests.0neomensural /rests.0o + /rests.1 /rests.1mensural /rests.1neomensural + /rests.1o /rests.2 /rests.2classical + /rests.2mensural /rests.2neomensural /rests.2z + % 0x93 + /rests.3 /rests.3mensural /rests.3neomensural + /rests.4 /rests.4mensural /rests.4neomensural + /rests.5 /rests.6 /rests.7 + /rests.M1 /rests.M1mensural /rests.M1neomensural + /rests.M1o /rests.M2 /rests.M2mensural + % 0xa2 + /rests.M2neomensural /rests.M3 /rests.M3mensural + /rests.M3neomensural /s /seven + /six /space /three + /ties.lyric.default + /ties.lyric.short /timesig.C22 /timesig.C44 + % 0xb1 + /timesig.mensural22 /timesig.mensural24 /timesig.mensural32 + /timesig.mensural34 /timesig.mensural44 /timesig.mensural48 + /timesig.mensural64 /timesig.mensural68 /timesig.mensural68alt + /timesig.mensural94 /timesig.mensural98 /timesig.neomensural22 + /timesig.neomensural24 /timesig.neomensural32 /timesig.neomensural34 + % 0xc0 + /timesig.neomensural44 /timesig.neomensural48 /timesig.neomensural64 + /timesig.neomensural68 /timesig.neomensural68alt + /timesig.neomensural94 /timesig.neomensural98 + /two /z /zero + % 0xca + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0xed + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef + % 0xf6 +] def + +% 0x00 +/accidentals.doublesharp {<01> show} def +/accidentals.flat {<02> show} def +/accidentals.flat.arrowboth {<03> show} def +/accidentals.flat.arrowdown {<04> show} def +/accidentals.flat.arrowup {<05> show} def +/accidentals.flatflat {<06> show} def +/accidentals.flatflat.slash {<07> show} def +/accidentals.flat.slash {<08> show} def +/accidentals.flat.slashslash {<09> show} def +/accidentals.hufnagelM1 {<0a> show} def +/accidentals.kievan1 {<0b> show} def +% 0xa +/accidentals.kievanM1 {<0c> show} def +/accidentals.leftparen {<0d> show} def +/accidentals.medicaeaM1 {<0e> show} def +/accidentals.mensural1 {<0f> show} def +/accidentals.mensuralM1 {<10> show} def +/accidentals.mirroredflat {<11> show} def +/accidentals.mirroredflat.backslash {<12> show} def +/accidentals.mirroredflat.flat {<13> show} def +/accidentals.natural {<14> show} def +/accidentals.natural.arrowboth {<15> show} def +/accidentals.natural.arrowdown {<16> show} def +% 0x14 +/accidentals.natural.arrowup {<17> show} def +/accidentals.rightparen {<18> show} def +/accidentals.sharp {<19> show} def +/accidentals.sharp.arrowboth {<1a> show} def +/accidentals.sharp.arrowdown {<1b> show} def +/accidentals.sharp.arrowup {<1c> show} def +/accidentals.sharp.slashslashslash.stem {<1d> show} def +/accidentals.sharp.slashslashslash.stemstem {<1e> show} def +/accidentals.sharp.slashslash.stem {<1f> show} def +/accidentals.sharp.slashslash.stemstemstem {<20> show} def +% 0x1e +/accidentals.vaticana0 {<21> show} def +/accidentals.vaticanaM1 {<22> show} def +/accordion.bayanbass {<23> show} def +/accordion.discant {<24> show} def +/accordion.dot {<25> show} def +/accordion.freebass {<26> show} def +/accordion.oldEE {<27> show} def +/accordion.pull {<28> show} def +/accordion.push {<29> show} def +/accordion.stdbass {<2a> show} def +/arrowheads.close.01 {<2b> show} def +% 0x28 +/arrowheads.close.0M1 {<2c> show} def +/arrowheads.close.11 {<2d> show} def +/arrowheads.close.1M1 {<2e> show} def +/arrowheads.open.01 {<2f> show} def +/arrowheads.open.0M1 {<30> show} def +/arrowheads.open.11 {<31> show} def +/arrowheads.open.1M1 {<32> show} def +/brackettips.down {<33> show} def +/brackettips.up {<34> show} def +/comma {<35> show} def +/custodes.hufnagel.d0 {<36> show} def +% 0x32 +/custodes.hufnagel.d1 {<37> show} def +/custodes.hufnagel.d2 {<38> show} def +/custodes.hufnagel.u0 {<39> show} def +/custodes.hufnagel.u1 {<3a> show} def +/custodes.hufnagel.u2 {<3b> show} def +/custodes.medicaea.d0 {<3c> show} def +/custodes.medicaea.d1 {<3d> show} def +/custodes.medicaea.d2 {<3e> show} def +/custodes.medicaea.u0 {<3f> show} def +/custodes.medicaea.u1 {<40> show} def +/custodes.medicaea.u2 {<41> show} def +% 0x3c +/custodes.mensural.d0 {<42> show} def +/custodes.mensural.d1 {<43> show} def +/custodes.mensural.d2 {<44> show} def +/custodes.mensural.u0 {<45> show} def +/custodes.mensural.u1 {<46> show} def +/custodes.mensural.u2 {<47> show} def +/custodes.vaticana.d0 {<48> show} def +/custodes.vaticana.d1 {<49> show} def +/custodes.vaticana.d2 {<4a> show} def +/custodes.vaticana.u0 {<4b> show} def +% 0x46 +/custodes.vaticana.u1 {<4c> show} def +/custodes.vaticana.u2 {<4d> show} def +/dots.dot {<4e> show} def +/dots.dotkievan {<4f> show} def +/dots.dotvaticana {<50> show} def +/eight {<51> show} def +/f {<52> show} def +/five {<53> show} def +/flags.d3 {<54> show} def +/flags.d4 {<55> show} def +% 0x50 +/flags.d5 {<56> show} def +/flags.d6 {<57> show} def +/flags.d7 {<58> show} def +/flags.dgrace {<59> show} def +/flags.mensurald03 {<5a> show} def +/flags.mensurald04 {<5b> show} def +/flags.mensurald05 {<5c> show} def +/flags.mensurald06 {<5d> show} def +/flags.mensurald13 {<5e> show} def +/flags.mensurald14 {<5f> show} def +% 0x5a +/flags.mensurald15 {<60> show} def +/flags.mensurald16 {<61> show} def +/flags.mensurald23 {<62> show} def +/flags.mensurald24 {<63> show} def +/flags.mensurald25 {<64> show} def +/flags.mensurald26 {<65> show} def +/flags.mensuralu03 {<66> show} def +/flags.mensuralu04 {<67> show} def +/flags.mensuralu05 {<68> show} def +/flags.mensuralu06 {<69> show} def +% 0x64 +/flags.mensuralu13 {<6a> show} def +/flags.mensuralu14 {<6b> show} def +/flags.mensuralu15 {<6c> show} def +/flags.mensuralu16 {<6d> show} def +/flags.mensuralu23 {<6e> show} def +/flags.mensuralu24 {<6f> show} def +/flags.mensuralu25 {<70> show} def +/flags.mensuralu26 {<71> show} def +/flags.u3 {<72> show} def +/flags.u4 {<73> show} def +% 0x6e +/flags.u5 {<74> show} def +/flags.u6 {<75> show} def +/flags.u7 {<76> show} def +/flags.ugrace {<77> show} def +/four {<78> show} def +/hyphen {<79> show} def +/m {<7a> show} def +/nine {<7b> show} def +/one {<7c> show} def +/p {<7d> show} def +% 0x78 +/pedal.. {<7e> show} def +/pedal.* {<7f> show} def +/pedal.d {<80> show} def +/pedal.e {<81> show} def +/pedal.M {<82> show} def +/pedal.P {<83> show} def +/pedal.Ped {<84> show} def +/period {<85> show} def +/plus {<86> show} def +/r {<87> show} def +% 0x82 +/rests.0 {<88> show} def +/rests.0mensural {<89> show} def +/rests.0neomensural {<8a> show} def +/rests.0o {<8b> show} def +/rests.1 {<8c> show} def +/rests.1mensural {<8d> show} def +/rests.1neomensural {<8e> show} def +/rests.1o {<8f> show} def +/rests.2 {<90> show} def +/rests.2classical {<91> show} def +% 0x8c +/rests.2mensural {<92> show} def +/rests.2neomensural {<93> show} def +/rests.2z {<94> show} def +/rests.3 {<95> show} def +/rests.3mensural {<96> show} def +/rests.3neomensural {<97> show} def +/rests.4 {<98> show} def +/rests.4mensural {<99> show} def +/rests.4neomensural {<9a> show} def +/rests.5 {<9b> show} def +% 0x96 +/rests.6 {<9c> show} def +/rests.7 {<9d> show} def +/rests.M1 {<9e> show} def +/rests.M1mensural {<9f> show} def +/rests.M1neomensural { show} def +/rests.M1o { show} def +/rests.M2 { show} def +/rests.M2mensural { show} def +/rests.M2neomensural { show} def +/rests.M3 { show} def +% 0xa0 +/rests.M3mensural { show} def +/rests.M3neomensural { show} def +/s { show} def +/seven { show} def +/six { show} def +/space { show} def +/three { show} def +/ties.lyric.default { show} def +/ties.lyric.short { show} def +/timesig.C22 { show} def +% 0xaa +/timesig.C44 { show} def +/timesig.mensural22 { show} def +/timesig.mensural24 { show} def +/timesig.mensural32 { show} def +/timesig.mensural34 { show} def +/timesig.mensural44 { show} def +/timesig.mensural48 { show} def +/timesig.mensural64 { show} def +/timesig.mensural68 { show} def +/timesig.mensural68alt { show} def +% 0xb4 +/timesig.mensural94 { show} def +/timesig.mensural98 { show} def +/timesig.neomensural22 { show} def +/timesig.neomensural24 { show} def +/timesig.neomensural32 { show} def +/timesig.neomensural34 { show} def +/timesig.neomensural44 { show} def +/timesig.neomensural48 { show} def +/timesig.neomensural64 { show} def +/timesig.neomensural68 { show} def +% 0xbe +/timesig.neomensural68alt { show} def +/timesig.neomensural94 { show} def +/timesig.neomensural98 { show} def +/two { show} def +/z { show} def +/zero { show} def +% 0xc4 + +% +% Custom encodings and definitions for the emmentaler-brace font +% +/BracesNEncoding [ + % 0x00 + /.notdef /brace1 /brace2 /brace10 /brace11 /brace12 /brace13 /brace14 + /brace15 /brace16 /brace17 /brace18 /brace19 /brace20 /brace21 + /brace22 /brace23 /brace24 /brace25 /brace26 /brace27 /brace28 + /brace29 /brace100 /brace101 /brace102 /brace103 /brace104 /brace105 + /brace106 /brace107 /brace108 /brace109 /brace110 /brace111 /brace112 + % 0x24 + /brace113 /brace114 /brace115 /brace116 /brace117 /brace118 /brace119 + /brace120 /brace121 /brace122 /brace123 /brace124 /brace125 /brace126 + /brace127 /brace128 /brace129 /brace130 /brace131 /brace132 /brace133 + /brace134 /brace135 /brace136 /brace137 /brace138 /brace139 /brace140 + /brace141 /brace142 /brace143 /brace144 /brace145 /brace146 /brace147 + % 0x47 + /brace148 /brace149 /brace150 /brace151 /brace152 /brace153 /brace154 + /brace155 /brace156 /brace157 /brace158 /brace159 /brace160 /brace161 + /brace162 /brace163 /brace164 /brace165 /brace166 /brace167 /brace168 + /brace169 /brace170 /brace171 /brace172 /brace173 /brace174 /brace175 + /brace176 /brace177 /brace178 /brace179 /brace180 /brace181 /brace182 + % 0x6a + /brace183 /brace184 /brace185 /brace186 /brace187 /brace188 /brace189 + /brace190 /brace191 /brace192 /brace193 /brace194 /brace195 /brace196 + /brace197 /brace198 /brace199 /brace200 /brace201 /brace202 /brace203 + /brace204 /brace205 /brace206 /brace207 /brace208 /brace209 /brace210 + /brace211 /brace212 /brace213 /brace214 /brace215 /brace216 /brace217 + % 0x8d + /brace218 /brace219 /brace220 /brace221 /brace222 /brace223 /brace224 + /brace225 /brace226 /brace227 /brace228 /brace229 /brace230 /brace231 + /brace232 /brace233 /brace234 /brace235 /brace236 /brace237 /brace238 + /brace239 /brace240 /brace241 /brace242 /brace243 /brace244 /brace245 + /brace246 /brace247 /brace248 /brace249 /brace250 /brace251 /brace252 + % 0xb0 + /brace253 /brace254 /brace255 /brace256 /brace257 /brace258 /brace259 + /brace260 /brace261 /brace262 /brace263 /brace264 /brace265 /brace266 + /brace267 /brace268 /brace269 /brace270 /brace271 /brace272 /brace273 + /brace274 /brace275 /brace276 /brace277 /brace278 /brace279 /brace280 + /brace281 /brace282 /brace283 /brace284 /brace285 /brace286 /brace287 + % 0xd3 + /brace288 /brace289 /brace290 /brace291 /brace292 /brace293 /brace294 + /brace295 /brace296 /brace297 /brace298 /brace299 + % 0xdf + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + % 0xff +] def + +% 0x00 +/brace1 {<01> show} def +/brace2 {<02> show} def +/brace10 {<03> show} def +/brace11 {<04> show} def +/brace12 {<05> show} def +/brace13 {<06> show} def +/brace14 {<07> show} def +/brace15 {<08> show} def +/brace16 {<09> show} def +/brace17 {<0a> show} def +% 0xa +/brace18 {<0b> show} def +/brace19 {<0c> show} def +/brace20 {<0d> show} def +/brace21 {<0e> show} def +/brace22 {<0f> show} def +/brace23 {<10> show} def +/brace24 {<11> show} def +/brace25 {<12> show} def +/brace26 {<13> show} def +/brace27 {<14> show} def +% 0x14 +/brace28 {<15> show} def +/brace29 {<16> show} def +/brace100 {<17> show} def +/brace101 {<18> show} def +/brace102 {<19> show} def +/brace103 {<1a> show} def +/brace104 {<1b> show} def +/brace105 {<1c> show} def +/brace106 {<1d> show} def +/brace107 {<1e> show} def +% 0x1e +/brace108 {<1f> show} def +/brace109 {<20> show} def +/brace110 {<21> show} def +/brace111 {<22> show} def +/brace112 {<23> show} def +/brace113 {<24> show} def +/brace114 {<25> show} def +/brace115 {<26> show} def +/brace116 {<27> show} def +/brace117 {<28> show} def +% 0x28 +/brace118 {<29> show} def +/brace119 {<2a> show} def +/brace120 {<2b> show} def +/brace121 {<2c> show} def +/brace122 {<2d> show} def +/brace123 {<2e> show} def +/brace124 {<2f> show} def +/brace125 {<30> show} def +/brace126 {<31> show} def +/brace127 {<32> show} def +% 0x32 +/brace128 {<33> show} def +/brace129 {<34> show} def +/brace130 {<35> show} def +/brace131 {<36> show} def +/brace132 {<37> show} def +/brace133 {<38> show} def +/brace134 {<39> show} def +/brace135 {<3a> show} def +/brace136 {<3b> show} def +/brace137 {<3c> show} def +% 0x3c +/brace138 {<3d> show} def +/brace139 {<3e> show} def +/brace140 {<3f> show} def +/brace141 {<40> show} def +/brace142 {<41> show} def +/brace143 {<42> show} def +/brace144 {<43> show} def +/brace145 {<44> show} def +/brace146 {<45> show} def +/brace147 {<46> show} def +% 0x46 +/brace148 {<47> show} def +/brace149 {<48> show} def +/brace150 {<49> show} def +/brace151 {<4a> show} def +/brace152 {<4b> show} def +/brace153 {<4c> show} def +/brace154 {<4d> show} def +/brace155 {<4e> show} def +/brace156 {<4f> show} def +/brace157 {<50> show} def +% 0x50 +/brace158 {<51> show} def +/brace159 {<52> show} def +/brace160 {<53> show} def +/brace161 {<54> show} def +/brace162 {<55> show} def +/brace163 {<56> show} def +/brace164 {<57> show} def +/brace165 {<58> show} def +/brace166 {<59> show} def +/brace167 {<5a> show} def +% 0x5a +/brace168 {<5b> show} def +/brace169 {<5c> show} def +/brace170 {<5d> show} def +/brace171 {<5e> show} def +/brace172 {<5f> show} def +/brace173 {<60> show} def +/brace174 {<61> show} def +/brace175 {<62> show} def +/brace176 {<63> show} def +/brace177 {<64> show} def +% 0x64 +/brace178 {<65> show} def +/brace179 {<66> show} def +/brace180 {<67> show} def +/brace181 {<68> show} def +/brace182 {<69> show} def +/brace183 {<6a> show} def +/brace184 {<6b> show} def +/brace185 {<6c> show} def +/brace186 {<6d> show} def +/brace187 {<6e> show} def +% 0x6e +/brace188 {<6f> show} def +/brace189 {<70> show} def +/brace190 {<71> show} def +/brace191 {<72> show} def +/brace192 {<73> show} def +/brace193 {<74> show} def +/brace194 {<75> show} def +/brace195 {<76> show} def +/brace196 {<77> show} def +/brace197 {<78> show} def +% 0x78 +/brace198 {<79> show} def +/brace199 {<7a> show} def +/brace200 {<7b> show} def +/brace201 {<7c> show} def +/brace202 {<7d> show} def +/brace203 {<7e> show} def +/brace204 {<7f> show} def +/brace205 {<80> show} def +/brace206 {<81> show} def +/brace207 {<82> show} def +% 0x82 +/brace208 {<83> show} def +/brace209 {<84> show} def +/brace210 {<85> show} def +/brace211 {<86> show} def +/brace212 {<87> show} def +/brace213 {<88> show} def +/brace214 {<89> show} def +/brace215 {<8a> show} def +/brace216 {<8b> show} def +/brace217 {<8c> show} def +% 0x8c +/brace218 {<8d> show} def +/brace219 {<8e> show} def +/brace220 {<8f> show} def +/brace221 {<90> show} def +/brace222 {<91> show} def +/brace223 {<92> show} def +/brace224 {<93> show} def +/brace225 {<94> show} def +/brace226 {<95> show} def +/brace227 {<96> show} def +% 0x96 +/brace228 {<97> show} def +/brace229 {<98> show} def +/brace230 {<99> show} def +/brace231 {<9a> show} def +/brace232 {<9b> show} def +/brace233 {<9c> show} def +/brace234 {<9d> show} def +/brace235 {<9e> show} def +/brace236 {<9f> show} def +/brace237 { show} def +% 0xa0 +/brace238 { show} def +/brace239 { show} def +/brace240 { show} def +/brace241 { show} def +/brace242 { show} def +/brace243 { show} def +/brace244 { show} def +/brace245 { show} def +/brace246 { show} def +/brace247 { show} def +% 0xaa +/brace248 { show} def +/brace249 { show} def +/brace250 { show} def +/brace251 { show} def +/brace252 { show} def +/brace253 { show} def +/brace254 { show} def +/brace255 { show} def +/brace256 { show} def +/brace257 { show} def +% 0xb4 +/brace258 { show} def +/brace259 { show} def +/brace260 { show} def +/brace261 { show} def +/brace262 { show} def +/brace263 { show} def +/brace264 { show} def +/brace265 { show} def +/brace266 { show} def +/brace267 { show} def +% 0xbe +/brace268 { show} def +/brace269 { show} def +/brace270 { show} def +/brace271 { show} def +/brace272 { show} def +/brace273 { show} def +/brace274 { show} def +/brace275 { show} def +/brace276 { show} def +/brace277 { show} def +% 0xc8 +/brace278 { show} def +/brace279 { show} def +/brace280 { show} def +/brace281 { show} def +/brace282 { show} def +/brace283 { show} def +/brace284 { show} def +/brace285 { show} def +/brace286 { show} def +/brace287 { show} def +% 0xd2 +/brace288 { show} def +/brace289 { show} def +/brace290 { show} def +/brace291 { show} def +/brace292 { show} def +/brace293 { show} def +/brace294 { show} def +/brace295 { show} def +/brace296 { show} def +/brace297 { show} def +% 0xdc +/brace298 {
show} def +/brace299 { show} def +% 0xde + +/BracesSEncoding [ + % 0x00 + /.notdef /brace3 /brace4 /brace30 /brace31 /brace32 /brace33 /brace34 + /brace35 /brace36 /brace37 /brace38 /brace39 /brace40 /brace41 + /brace42 /brace43 /brace44 /brace45 /brace46 /brace47 /brace48 + /brace49 /brace300 /brace301 /brace302 /brace303 /brace304 /brace305 + /brace306 /brace307 /brace308 /brace309 /brace310 /brace311 /brace312 + % 0x24 + /brace313 /brace314 /brace315 /brace316 /brace317 /brace318 /brace319 + /brace320 /brace321 /brace322 /brace323 /brace324 /brace325 /brace326 + /brace327 /brace328 /brace329 /brace330 /brace331 /brace332 /brace333 + /brace334 /brace335 /brace336 /brace337 /brace338 /brace339 /brace340 + /brace341 /brace342 /brace343 /brace344 /brace345 /brace346 /brace347 + % 0x47 + /brace348 /brace349 /brace350 /brace351 /brace352 /brace353 /brace354 + /brace355 /brace356 /brace357 /brace358 /brace359 /brace360 /brace361 + /brace362 /brace363 /brace364 /brace365 /brace366 /brace367 /brace368 + /brace369 /brace370 /brace371 /brace372 /brace373 /brace374 /brace375 + /brace376 /brace377 /brace378 /brace379 /brace380 /brace381 /brace382 + % 0x6a + /brace383 /brace384 /brace385 /brace386 /brace387 /brace388 /brace389 + /brace390 /brace391 /brace392 /brace393 /brace394 /brace395 /brace396 + /brace397 /brace398 /brace399 /brace400 /brace401 /brace402 /brace403 + /brace404 /brace405 /brace406 /brace407 /brace408 /brace409 /brace410 + /brace411 /brace412 /brace413 /brace414 /brace415 /brace416 /brace417 + % 0x8d + /brace418 /brace419 /brace420 /brace421 /brace422 /brace423 /brace424 + /brace425 /brace426 /brace427 /brace428 /brace429 /brace430 /brace431 + /brace432 /brace433 /brace434 /brace435 /brace436 /brace437 /brace438 + /brace439 /brace440 /brace441 /brace442 /brace443 /brace444 /brace445 + /brace446 /brace447 /brace448 /brace449 /brace450 /brace451 /brace452 + % 0xb0 + /brace453 /brace454 /brace455 /brace456 /brace457 /brace458 /brace459 + /brace460 /brace461 /brace462 /brace463 /brace464 /brace465 /brace466 + /brace467 /brace468 /brace469 /brace470 /brace471 /brace472 /brace473 + /brace474 /brace475 /brace476 /brace477 /brace478 /brace479 /brace480 + /brace481 /brace482 /brace483 /brace484 /brace485 /brace486 /brace487 + % 0xd3 + /brace488 /brace489 /brace490 /brace491 /brace492 /brace493 /brace494 + /brace495 /brace496 /brace497 /brace498 /brace499 + % 0xdf + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + % 0xff +] def + +% 0x00 +/brace3 {<01> show} def +/brace4 {<02> show} def +/brace30 {<03> show} def +/brace31 {<04> show} def +/brace32 {<05> show} def +/brace33 {<06> show} def +/brace34 {<07> show} def +/brace35 {<08> show} def +/brace36 {<09> show} def +/brace37 {<0a> show} def +% 0xa +/brace38 {<0b> show} def +/brace39 {<0c> show} def +/brace40 {<0d> show} def +/brace41 {<0e> show} def +/brace42 {<0f> show} def +/brace43 {<10> show} def +/brace44 {<11> show} def +/brace45 {<12> show} def +/brace46 {<13> show} def +/brace47 {<14> show} def +% 0x14 +/brace48 {<15> show} def +/brace49 {<16> show} def +/brace300 {<17> show} def +/brace301 {<18> show} def +/brace302 {<19> show} def +/brace303 {<1a> show} def +/brace304 {<1b> show} def +/brace305 {<1c> show} def +/brace306 {<1d> show} def +/brace307 {<1e> show} def +% 0x1e +/brace308 {<1f> show} def +/brace309 {<20> show} def +/brace310 {<21> show} def +/brace311 {<22> show} def +/brace312 {<23> show} def +/brace313 {<24> show} def +/brace314 {<25> show} def +/brace315 {<26> show} def +/brace316 {<27> show} def +/brace317 {<28> show} def +% 0x28 +/brace318 {<29> show} def +/brace319 {<2a> show} def +/brace320 {<2b> show} def +/brace321 {<2c> show} def +/brace322 {<2d> show} def +/brace323 {<2e> show} def +/brace324 {<2f> show} def +/brace325 {<30> show} def +/brace326 {<31> show} def +/brace327 {<32> show} def +% 0x32 +/brace328 {<33> show} def +/brace329 {<34> show} def +/brace330 {<35> show} def +/brace331 {<36> show} def +/brace332 {<37> show} def +/brace333 {<38> show} def +/brace334 {<39> show} def +/brace335 {<3a> show} def +/brace336 {<3b> show} def +/brace337 {<3c> show} def +% 0x3c +/brace338 {<3d> show} def +/brace339 {<3e> show} def +/brace340 {<3f> show} def +/brace341 {<40> show} def +/brace342 {<41> show} def +/brace343 {<42> show} def +/brace344 {<43> show} def +/brace345 {<44> show} def +/brace346 {<45> show} def +/brace347 {<46> show} def +% 0x46 +/brace348 {<47> show} def +/brace349 {<48> show} def +/brace350 {<49> show} def +/brace351 {<4a> show} def +/brace352 {<4b> show} def +/brace353 {<4c> show} def +/brace354 {<4d> show} def +/brace355 {<4e> show} def +/brace356 {<4f> show} def +/brace357 {<50> show} def +% 0x50 +/brace358 {<51> show} def +/brace359 {<52> show} def +/brace360 {<53> show} def +/brace361 {<54> show} def +/brace362 {<55> show} def +/brace363 {<56> show} def +/brace364 {<57> show} def +/brace365 {<58> show} def +/brace366 {<59> show} def +/brace367 {<5a> show} def +% 0x5a +/brace368 {<5b> show} def +/brace369 {<5c> show} def +/brace370 {<5d> show} def +/brace371 {<5e> show} def +/brace372 {<5f> show} def +/brace373 {<60> show} def +/brace374 {<61> show} def +/brace375 {<62> show} def +/brace376 {<63> show} def +/brace377 {<64> show} def +% 0x64 +/brace378 {<65> show} def +/brace379 {<66> show} def +/brace380 {<67> show} def +/brace381 {<68> show} def +/brace382 {<69> show} def +/brace383 {<6a> show} def +/brace384 {<6b> show} def +/brace385 {<6c> show} def +/brace386 {<6d> show} def +/brace387 {<6e> show} def +% 0x6e +/brace388 {<6f> show} def +/brace389 {<70> show} def +/brace390 {<71> show} def +/brace391 {<72> show} def +/brace392 {<73> show} def +/brace393 {<74> show} def +/brace394 {<75> show} def +/brace395 {<76> show} def +/brace396 {<77> show} def +/brace397 {<78> show} def +% 0x78 +/brace398 {<79> show} def +/brace399 {<7a> show} def +/brace400 {<7b> show} def +/brace401 {<7c> show} def +/brace402 {<7d> show} def +/brace403 {<7e> show} def +/brace404 {<7f> show} def +/brace405 {<80> show} def +/brace406 {<81> show} def +/brace407 {<82> show} def +% 0x82 +/brace408 {<83> show} def +/brace409 {<84> show} def +/brace410 {<85> show} def +/brace411 {<86> show} def +/brace412 {<87> show} def +/brace413 {<88> show} def +/brace414 {<89> show} def +/brace415 {<8a> show} def +/brace416 {<8b> show} def +/brace417 {<8c> show} def +% 0x8c +/brace418 {<8d> show} def +/brace419 {<8e> show} def +/brace420 {<8f> show} def +/brace421 {<90> show} def +/brace422 {<91> show} def +/brace423 {<92> show} def +/brace424 {<93> show} def +/brace425 {<94> show} def +/brace426 {<95> show} def +/brace427 {<96> show} def +% 0x96 +/brace428 {<97> show} def +/brace429 {<98> show} def +/brace430 {<99> show} def +/brace431 {<9a> show} def +/brace432 {<9b> show} def +/brace433 {<9c> show} def +/brace434 {<9d> show} def +/brace435 {<9e> show} def +/brace436 {<9f> show} def +/brace437 { show} def +% 0xa0 +/brace438 { show} def +/brace439 { show} def +/brace440 { show} def +/brace441 { show} def +/brace442 { show} def +/brace443 { show} def +/brace444 { show} def +/brace445 { show} def +/brace446 { show} def +/brace447 { show} def +% 0xaa +/brace448 { show} def +/brace449 { show} def +/brace450 { show} def +/brace451 { show} def +/brace452 { show} def +/brace453 { show} def +/brace454 { show} def +/brace455 { show} def +/brace456 { show} def +/brace457 { show} def +% 0xb4 +/brace458 { show} def +/brace459 { show} def +/brace460 { show} def +/brace461 { show} def +/brace462 { show} def +/brace463 { show} def +/brace464 { show} def +/brace465 { show} def +/brace466 { show} def +/brace467 { show} def +% 0xbe +/brace468 { show} def +/brace469 { show} def +/brace470 { show} def +/brace471 { show} def +/brace472 { show} def +/brace473 { show} def +/brace474 { show} def +/brace475 { show} def +/brace476 { show} def +/brace477 { show} def +% 0xc8 +/brace478 { show} def +/brace479 { show} def +/brace480 { show} def +/brace481 { show} def +/brace482 { show} def +/brace483 { show} def +/brace484 { show} def +/brace485 { show} def +/brace486 { show} def +/brace487 { show} def +% 0xd2 +/brace488 { show} def +/brace489 { show} def +/brace490 { show} def +/brace491 { show} def +/brace492 { show} def +/brace493 { show} def +/brace494 { show} def +/brace495 { show} def +/brace496 { show} def +/brace497 { show} def +% 0xdc +/brace498 {
show} def +/brace499 { show} def +% 0xde + +/BracesOEncoding [ + % 0x00 + /.notdef /brace0 /brace5 /brace6 /brace7 /brace8 /brace9 /brace50 + /brace51 /brace52 /brace53 /brace54 /brace55 /brace56 /brace57 + /brace58 /brace59 /brace60 /brace61 /brace62 /brace63 /brace64 + /brace65 /brace66 /brace67 /brace68 /brace69 /brace70 /brace71 + /brace72 /brace73 /brace74 /brace75 /brace76 /brace77 /brace78 + % 0x24 + /brace79 /brace80 /brace81 /brace82 /brace83 /brace84 /brace85 + /brace86 /brace87 /brace88 /brace89 /brace90 /brace91 /brace92 + /brace93 /brace94 /brace95 /brace96 /brace97 /brace98 /brace99 + /brace500 /brace501 /brace502 /brace503 /brace504 /brace505 /brace506 + /brace507 /brace508 /brace509 /brace510 /brace511 /brace512 /brace513 + % 0x47 + /brace514 /brace515 /brace516 /brace517 /brace518 /brace519 /brace520 + /brace521 /brace522 /brace523 /brace524 /brace525 /brace526 /brace527 + /brace528 /brace529 /brace530 /brace531 /brace532 /brace533 /brace534 + /brace535 /brace536 /brace537 /brace538 /brace539 /brace540 /brace541 + /brace542 /brace543 /brace544 /brace545 /brace546 /brace547 /brace548 + % 0x6a + /brace549 /brace550 /brace551 /brace552 /brace553 /brace554 /brace555 + /brace556 /brace557 /brace558 /brace559 /brace560 /brace561 /brace562 + /brace563 /brace564 /brace565 /brace566 /brace567 /brace568 /brace569 + /brace570 /brace571 /brace572 /brace573 /brace574 /brace575 + % 0x85 + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0xa8 + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0xcb + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + % 0xee + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef + % 0xff +] def + +% 0x00 +/brace0 {<01> show} def +/brace5 {<02> show} def +/brace6 {<03> show} def +/brace7 {<04> show} def +/brace8 {<05> show} def +/brace9 {<06> show} def +/brace50 {<07> show} def +/brace51 {<08> show} def +/brace52 {<09> show} def +/brace53 {<0a> show} def +% 0xa +/brace54 {<0b> show} def +/brace55 {<0c> show} def +/brace56 {<0d> show} def +/brace57 {<0e> show} def +/brace58 {<0f> show} def +/brace59 {<10> show} def +/brace60 {<11> show} def +/brace61 {<12> show} def +/brace62 {<13> show} def +/brace63 {<14> show} def +% 0x14 +/brace64 {<15> show} def +/brace65 {<16> show} def +/brace66 {<17> show} def +/brace67 {<18> show} def +/brace68 {<19> show} def +/brace69 {<1a> show} def +/brace70 {<1b> show} def +/brace71 {<1c> show} def +/brace72 {<1d> show} def +/brace73 {<1e> show} def +% 0x1e +/brace74 {<1f> show} def +/brace75 {<20> show} def +/brace76 {<21> show} def +/brace77 {<22> show} def +/brace78 {<23> show} def +/brace79 {<24> show} def +/brace80 {<25> show} def +/brace81 {<26> show} def +/brace82 {<27> show} def +/brace83 {<28> show} def +% 0x28 +/brace84 {<29> show} def +/brace85 {<2a> show} def +/brace86 {<2b> show} def +/brace87 {<2c> show} def +/brace88 {<2d> show} def +/brace89 {<2e> show} def +/brace90 {<2f> show} def +/brace91 {<30> show} def +/brace92 {<31> show} def +/brace93 {<32> show} def +% 0x32 +/brace94 {<33> show} def +/brace95 {<34> show} def +/brace96 {<35> show} def +/brace97 {<36> show} def +/brace98 {<37> show} def +/brace99 {<38> show} def +/brace500 {<39> show} def +/brace501 {<3a> show} def +/brace502 {<3b> show} def +/brace503 {<3c> show} def +% 0x3c +/brace504 {<3d> show} def +/brace505 {<3e> show} def +/brace506 {<3f> show} def +/brace507 {<40> show} def +/brace508 {<41> show} def +/brace509 {<42> show} def +/brace510 {<43> show} def +/brace511 {<44> show} def +/brace512 {<45> show} def +/brace513 {<46> show} def +% 0x46 +/brace514 {<47> show} def +/brace515 {<48> show} def +/brace516 {<49> show} def +/brace517 {<4a> show} def +/brace518 {<4b> show} def +/brace519 {<4c> show} def +/brace520 {<4d> show} def +/brace521 {<4e> show} def +/brace522 {<4f> show} def +/brace523 {<50> show} def +% 0x50 +/brace524 {<51> show} def +/brace525 {<52> show} def +/brace526 {<53> show} def +/brace527 {<54> show} def +/brace528 {<55> show} def +/brace529 {<56> show} def +/brace530 {<57> show} def +/brace531 {<58> show} def +/brace532 {<59> show} def +/brace533 {<5a> show} def +% 0x5a +/brace534 {<5b> show} def +/brace535 {<5c> show} def +/brace536 {<5d> show} def +/brace537 {<5e> show} def +/brace538 {<5f> show} def +/brace539 {<60> show} def +/brace540 {<61> show} def +/brace541 {<62> show} def +/brace542 {<63> show} def +/brace543 {<64> show} def +% 0x64 +/brace544 {<65> show} def +/brace545 {<66> show} def +/brace546 {<67> show} def +/brace547 {<68> show} def +/brace548 {<69> show} def +/brace549 {<6a> show} def +/brace550 {<6b> show} def +/brace551 {<6c> show} def +/brace552 {<6d> show} def +/brace553 {<6e> show} def +% 0x6e +/brace554 {<6f> show} def +/brace555 {<70> show} def +/brace556 {<71> show} def +/brace557 {<72> show} def +/brace558 {<73> show} def +/brace559 {<74> show} def +/brace560 {<75> show} def +/brace561 {<76> show} def +/brace562 {<77> show} def +/brace563 {<78> show} def +% 0x78 +/brace564 {<79> show} def +/brace565 {<7a> show} def +/brace566 {<7b> show} def +/brace567 {<7c> show} def +/brace568 {<7d> show} def +/brace569 {<7e> show} def +/brace570 {<7f> show} def +/brace571 {<80> show} def +/brace572 {<81> show} def +/brace573 {<82> show} def +% 0x82 +/brace574 {<83> show} def +/brace575 {<84> show} def +% 0x84 + +FontDirectory /Emmentaler-Brace known { + /Emmentaler-Brace findfont dup length dict copy begin + /Encoding BracesNEncoding def + /Emmentaler-Brace-N currentdict definefont pop end + /Emmentaler-Brace findfont dup length dict copy begin + /Encoding BracesSEncoding def + /Emmentaler-Brace-S currentdict definefont pop end + /Emmentaler-Brace findfont dup length dict copy begin + /Encoding BracesOEncoding def + /Emmentaler-Brace-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-11 known { + /Emmentaler-11 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-11-N currentdict definefont pop end + /Emmentaler-11 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-11-S currentdict definefont pop end + /Emmentaler-11 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-11-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-13 known { + /Emmentaler-13 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-13-N currentdict definefont pop end + /Emmentaler-13 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-13-S currentdict definefont pop end + /Emmentaler-13 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-13-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-14 known { + /Emmentaler-14 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-14-N currentdict definefont pop end + /Emmentaler-14 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-14-S currentdict definefont pop end + /Emmentaler-14 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-14-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-16 known { + /Emmentaler-16 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-16-N currentdict definefont pop end + /Emmentaler-16 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-16-S currentdict definefont pop end + /Emmentaler-16 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-16-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-18 known { + /Emmentaler-18 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-18-N currentdict definefont pop end + /Emmentaler-18 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-18-S currentdict definefont pop end + /Emmentaler-18 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-18-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-20 known { + /Emmentaler-20 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-20-N currentdict definefont pop end + /Emmentaler-20 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-20-S currentdict definefont pop end + /Emmentaler-20 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-20-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-23 known { + /Emmentaler-23 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-23-N currentdict definefont pop end + /Emmentaler-23 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-23-S currentdict definefont pop end + /Emmentaler-23 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-23-O currentdict definefont pop end +} if + +FontDirectory /Emmentaler-26 known { + /Emmentaler-26 findfont dup length dict copy begin + /Encoding LilyNoteHeadEncoding def + /Emmentaler-26-N currentdict definefont pop end + /Emmentaler-26 findfont dup length dict copy begin + /Encoding LilyScriptEncoding def + /Emmentaler-26-S currentdict definefont pop end + /Emmentaler-26 findfont dup length dict copy begin + /Encoding LilyOtherEncoding def + /Emmentaler-26-O currentdict definefont pop end +} if + +% end encodingdefs.ps diff --git a/scm/backend-library.scm b/scm/backend-library.scm index b0007e65ec..3a70c5c07d 100644 --- a/scm/backend-library.scm +++ b/scm/backend-library.scm @@ -82,6 +82,7 @@ "-dNOPAUSE" "-dBATCH" "-r1200" + (if (ly:bigpdfs) "-dSubsetFonts=false") "-sDEVICE=pdfwrite" (string-append "-sOutputFile=" (string-join diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index c6e8eb7855..9e2b7521ad 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -52,11 +52,32 @@ "") (define (ps-define-font font font-name scaling) - (string-append - "/" (ps-font-command font) - " { /" font-name - " " (ly:number->string scaling) " output-scale div selectfont }" - " bind def\n")) + (if (ly:bigpdfs) + (string-append + "/" (ps-font-command font) "-N" + " { /" font-name "-N" + " " (ly:number->string scaling) " output-scale div selectfont }" + " bind def\n" + "/" (ps-font-command font) "-S" + " { /" font-name "-S" + " " (ly:number->string scaling) " output-scale div selectfont }" + " bind def\n" + "/" (ps-font-command font) "-O" + " { /" font-name "-O" + " " (ly:number->string scaling) " output-scale div selectfont }" + " bind def\n" + "/help" font-name " {\n gsave\n 1 setgray\n /" + font-name "-N" + " 0.001 selectfont 0 0 moveto <01> show\n /" + font-name "-S" + " 0.001 selectfont 0 0 moveto <01> show\n /" + font-name "-O" + " 0.001 selectfont 0 0 moveto <01> show\n grestore\n} def\n") + (string-append + "/" (ps-font-command font) + " { /" font-name + " " (ly:number->string scaling) " output-scale div selectfont }" + " bind def\n"))) ;; FIXME: duplicated in other output backends ;; FIXME: silly interface name @@ -99,7 +120,16 @@ "") "%%EndPageSetup\n" "\n" - "gsave 0 paper-height translate set-ps-scale-to-lily-scale\n")) + "gsave 0 paper-height translate set-ps-scale-to-lily-scale\n" + "/helpEmmentaler-Brace where {pop helpEmmentaler-Brace} if\n" + "/helpEmmentaler-11 where {pop helpEmmentaler-11} if\n" + "/helpEmmentaler-13 where {pop helpEmmentaler-13} if\n" + "/helpEmmentaler-14 where {pop helpEmmentaler-14} if\n" + "/helpEmmentaler-16 where {pop helpEmmentaler-16} if\n" + "/helpEmmentaler-18 where {pop helpEmmentaler-18} if\n" + "/helpEmmentaler-20 where {pop helpEmmentaler-20} if\n" + "/helpEmmentaler-23 where {pop helpEmmentaler-23} if\n" + "/helpEmmentaler-26 where {pop helpEmmentaler-26} if\n")) (ly:outputter-dump-stencil outputter page) (ly:outputter-dump-string outputter "stroke grestore\nshowpage\n")) @@ -392,6 +422,8 @@ (display (cdr f) port) (display "%%EndFont\n" port)) (load-fonts paper))) + (if (ly:bigpdfs) + (display (procset "encodingdefs.ps") port)) (display (setup-variables paper) port) ;; adobe note 5002: should initialize variables before loading routines. @@ -542,6 +574,15 @@ (write-preamble paper load-fonts port) (display "/mark_page_link { pop pop pop pop pop } bind def\n" port) (display "gsave set-ps-scale-to-lily-scale\n" port) + (display "/helpEmmentaler-Brace where {pop helpEmmentaler-Brace} if\n" port) + (display "/helpEmmentaler-11 where {pop helpEmmentaler-11} if\n" port) + (display "/helpEmmentaler-13 where {pop helpEmmentaler-13} if\n" port) + (display "/helpEmmentaler-14 where {pop helpEmmentaler-14} if\n" port) + (display "/helpEmmentaler-16 where {pop helpEmmentaler-16} if\n" port) + (display "/helpEmmentaler-18 where {pop helpEmmentaler-18} if\n" port) + (display "/helpEmmentaler-20 where {pop helpEmmentaler-20} if\n" port) + (display "/helpEmmentaler-23 where {pop helpEmmentaler-23} if\n" port) + (display "/helpEmmentaler-26 where {pop helpEmmentaler-26} if\n" port) (ly:outputter-dump-stencil outputter dump-me) (display "stroke grestore\n%%Trailer\n%%EOF\n" port) (ly:outputter-close outputter))) diff --git a/scm/output-ps.scm b/scm/output-ps.scm index 45ef4e9ff3..c4c0a4da07 100644 --- a/scm/output-ps.scm +++ b/scm/output-ps.scm @@ -117,28 +117,30 @@ size cid? w-x-y-named-glyphs) - (define (glyph-spec w h x y g) ; h not used (let ((prefix (if (string? g) "/" ""))) - (ly:format "~4f ~4f ~4f ~a~a" - w x y - prefix g))) - - (ly:format - (if cid? - "/~a /CIDFont findresource ~a output-scale div scalefont setfont -~a -~a print_glyphs" - - "/~a ~a output-scale div selectfont -~a -~a print_glyphs") - postscript-font-name - size - (string-join (map (lambda (x) (apply glyph-spec x)) - (reverse w-x-y-named-glyphs)) "\n") - (length w-x-y-named-glyphs))) - + (ly:format "~4f ~4f ~4f ~a~a" w x y prefix g))) + (define (emglyph-spec w h x y g) ; h not used + (if (and (= x 0) (= y 0)) + (ly:format "currentpoint ~a moveto ~4f 0 rmoveto" g w) + (ly:format "currentpoint ~4f ~4f rmoveto ~a moveto ~4f 0 rmoveto" x y g w))) + (if cid? + (ly:format + "/~a /CIDFont findresource ~a output-scale div scalefont setfont\n~a\n~a print_glyphs" + postscript-font-name size + (string-join (map (lambda (x) (apply glyph-spec x)) + (reverse w-x-y-named-glyphs)) "\n") + (length w-x-y-named-glyphs)) + (if (and (ly:bigpdfs) (string-startswith postscript-font-name "Emmentaler")) + (ly:format "/~a-O ~a output-scale div selectfont\n~a" + postscript-font-name size + (string-join (map (lambda (x) (apply emglyph-spec x)) + w-x-y-named-glyphs) "\n")) + (ly:format "/~a ~a output-scale div selectfont\n~a\n~a print_glyphs" + postscript-font-name size + (string-join (map (lambda (x) (apply glyph-spec x)) + (reverse w-x-y-named-glyphs)) "\n") + (length w-x-y-named-glyphs))))) (define (grob-cause offset grob) (if (ly:get-option 'point-and-click) @@ -183,9 +185,19 @@ "")) (define (named-glyph font glyph) - (ly:format "~a /~a glyphshow " ;;Why is there a space at the end? - (ps-font-command font) - glyph)) + (if (and (ly:bigpdfs) (string-startswith (ly:font-file-name font) "emmentaler")) + (if (string-endswith (ly:font-file-name font)"-brace") + (if (or (string-startswith glyph "brace1") (string-startswith glyph "brace2")) + (ly:format "~a ~a" (string-append (ps-font-command font) "-N" ) glyph) + (if (or (string-startswith glyph "brace3") (string-startswith glyph "brace4")) + (ly:format "~a ~a" (string-append (ps-font-command font) "-S" ) glyph) + (ly:format "~a ~a" (string-append (ps-font-command font) "-O" ) glyph))) + (if (string-startswith glyph "noteheads") + (ly:format "~a ~a" (string-append (ps-font-command font) "-N" ) glyph) + (if (or (string-startswith glyph "scripts") (string-startswith glyph "clefs")) + (ly:format "~a ~a" (string-append (ps-font-command font) "-S" ) glyph) + (ly:format "~a ~a" (string-append (ps-font-command font) "-O" ) glyph)))) + (ly:format "~a /~a glyphshow" (ps-font-command font) glyph))) (define (no-origin) "") -- 2.39.2