2006-02-13 Han-Wen Nienhuys <hanwen@xs4all.nl>
- * THANKS: add Don.
+` * THANKS: add Don.
* lily/slur-scoring.cc (get_base_attachments): use
robust_relative_extent. This fixes problems with empty paper-columns.
PACKAGE_NAME=LilyPond
MAJOR_VERSION=2
MINOR_VERSION=7
-PATCH_LEVEL=33
+PATCH_LEVEL=34
MY_PATCH_LEVEL=
\set PianoStaff.followVoice = ##t
<<
- \context Staff = "RH" { % Right hand
+ \new Staff { % Right hand
\clef treble
\key g \major
\relative c'' {
\bar "|."
}
}
- \context Staff = "LH" { % Left hand
+ \new Staff { % Left hand
\clef bass
\key g \major
\relative c' {
theScore = \score{
\context PianoStaff <<
- \context Staff = "treble" <<
+ \new Staff = "treble" <<
\treble
\trebleTwo
>>
\new Dynamics <<
\middleDynamics
>>
- \context Staff = "bass" <<
+ \new Staff = "bass" <<
\clef bass
\bass
\bassTwo
\bar "|."
}
-i = \context Staff \relative c''{
- \context Voice = "i"
+i = \context Staff \relative c''\new Voice {
\voiceOne
c8.( es16 bes4 ~ | bes8) r c8.( bes16 | des4 c8. bes16 | c4 ~ c8) r |
}
-ii = \context Staff \relative c'{
- \context Voice = "ii"
+ii = \context Staff \relative c'\new Voice{
\voiceTwo
r8 <es as> r <des f> | r <es g> r <es as> | r <f as> r <f as> |
}
-lower = \context Staff \relative c{
- \context Voice = "iii"
+lower = \context Staff \relative c \new Voice{
<as as'>4 <es es'> | r <as as'> | <des, des'> <f f'> | <c c'> r |
<as as'> <des des'> | <bes bes'> r | <des des'> <bes bes'> |
\score {
\context PianoStaff <<
- \context Staff = "treble" <<
+ \new Staff = "treble" <<
\global
\clef violin
\i
\ii
>>
- \context Staff = "bass" <<
+ \new Staff = "bass" <<
\global
\clef bass
\lower
}
-melody = \relative c'' \repeat volta 2 \context Voice = "singer" {
+melody = \relative c'' \repeat volta 2 \new Voice = "singer" {
\time 6/8
\autoBeamOff
s1*0^\markup { \bold \large\bigger\bigger { \hspace #-3.0 Lieblich, etwas geschwind } }
\lyricThrough
} }
-vocals = \context Voice = "leise" {
+vocals = \new Voice = "leise" {
\clef treble
% certainly no auto-beaming for vocals
\autoBeamOff
R1 * 3/4 * 6
}
-trebleStaff = \context Staff = "treble"<<
+trebleStaff = \new Staff = "treble"<<
\set Staff.midiInstrument = "acoustic grand"
\global
{
}
>>
-bassStaff = \context Staff = "bass"<<
+bassStaff = \new Staff = "bass"<<
\set Staff.midiInstrument = "acoustic grand"
\global
\clef bass
%}
+
+
\header{
title = "Praeludium"
composer = "Johann Sebastian Bach (1685-1750)"
\score{
% Allegretto
- \context PianoStaff <<
- \context Staff = "upper" <<
+ \new PianoStaff <<
+ \new Staff = "upper" <<
\global
- \context Voice = "i"\one
- \context Voice = "ii" \two
+ \new Voice = "i"\one
+ \new Voice = "ii" \two
>>
- \context Staff = "lower" <<
+ \new Staff = "lower" <<
\global
\clef "bass"
- \context Voice = "iii" \three
- \context Voice = "iv" \four
+ \new Voice = "iii" \three
+ \new Voice = "iv" \four
>>
>>
\layout{
f) f'-5( e'-5 d'-4 c'-3 f')-5 <f^4 a^5>4( <e^3 g^5>8 |
<a, f^4>4 <g, e^3>8 f16^4 d'^5~ d'8.[ c'16^4] |
\forcedBreak
- << f8)^3_\pp \context Voice = "another" { \m a,16[ \u c8 c16] } >> \m g,[ \u c_3] \m b,[^\markup { \finger "2-1" } \u c8 c16] \m a,[ \u c]~ | \stemNeutral
+ << f8)^3_\pp \new Voice = "another" { \m a,16[ \u c8 c16] } >> \m g,[ \u c_3] \m b,[^\markup { \finger "2-1" } \u c8 c16] \m a,[ \u c]~ | \stemNeutral
c16 c8_4 c c16~c c8_2 c c16~ |
c16 c8 c c16~c c8 c c16~ |
c16 c8 c c16 r4^\fermata r8 | \bar "|."
g4 a8~a f g | a4 g8~g f e |
d4 g8~g es f | g4 f8~f es d |
c4 r8 f4 as8~ | as g b as4 ces'8~ |
- ces' b des' c'4 \context Voice = "another" { \stemUp \tieUp <es' es>8~ |
+ ces' b des' c'4 \new Voice = "another" { \stemUp \tieUp <es' es>8~ |
es' des'4^1~ \stemDown des'8.[ c'16] }
}
\transpose c' c, {
\override PianoStaff.InstrumentName #'font-magnification = #3
\set PianoStaff.instrument = " 2."
- \context Staff = "up" {
+ \new Staff = "up" {
\override Staff.DynamicLineSpanner #'direction = #DOWN
- \clef G <<\global \context Voice = "upv" \righta >>
+ \clef G <<\global \new Voice = "upv" \righta >>
}
- \context Staff = "mid" {
+ \new Staff = "mid" {
\override Staff.InstrumentName #'font-size = #0
\override Staff.InstrumentName #'font-shape = #'upright
\override Staff.InstrumentName #'font-magnification = #1
\override Staff.InstrumentName #'extra-offset = #'(0 . 6)
% \set Staff.instrument = "\\begin{turn}{-90}{Rechte Hand}\\end{turn}"
\set Staff.instrument = \markup { \column { Rechte Hand } \hspace #2 }
- \clef F <<\global \context Voice = "midv" \rightb>>
+ \clef F <<\global \new Voice = "midv" \rightb>>
}
- \context Staff = "down" {
+ \new Staff = "down" {
\override Staff.DynamicLineSpanner #'direction = #UP
\clef F
- << \global \context Voice = "lva" \lefta \context Voice = "lvb" \leftb >>
+ << \global \new Voice \lefta \new Voice \leftb >>
}
>>
\layout {
\oden
}
-verseOneStaff = \context Lyrics = "one"
+verseOneStaff = \new Lyrics = "one"
\verseOne
\oden
}
-verseTwoStaff = \context Lyrics = "two"
+verseTwoStaff = \new Lyrics = "two"
\verseTwo
}
\score {
{
- \context Staff = "q" {
+ \new Staff = "q" {
{ a' b' c' d' }
}
\break
\context PianoStaff <<
- \context Staff = "i" {
+ \new Staff = "i" {
{ a' b' c' d' }
}
- \context Staff = "ii" {
+ \new Staff = "ii" {
{ \clef "bass" a b c d }
}
>>
%% Context creation
\test #"" ##[ \new Staff { c d } #] % ContextSpeccedMusic
+ \test #"" ##[ \new Staff = "up" { c d } #] % ContextSpeccedMusic
\test #"" ##[ \context Staff { c d } #]
\test #"" ##[ \context Staff = "up" { c d } #]
\test #"" ##[
\score {
\context Voice \relative c {
- \context Voice=VoiceOne
+ \new Voice = VoiceOne
\grace {
\override Stem #'stroke-style = #"grace"
c8
}
\score {
- <<\relative c'' \context Voice = A {
+ <<\relative c'' \new Voice = A {
\autoBeamOff
c8[ c] c2.
c1~c4 c2.
\score {
<<
- \context StaffGroup ="legni" <<
- \context Staff ="flauti" \flauti
- \context Staff ="oboi" \oboi
- \context Staff ="clarinetti" \clarinetti
- \context Staff ="fagotti" \fagotti
+ \new StaffGroup = "legni" <<
+ \new Staff = "flauti" \flauti
+ \new Staff = "oboi" \oboi
+ \new Staff = "clarinetti" \clarinetti
+ \new Staff = "fagotti" \fagotti
>>
- \context StaffGroup ="ottoni" <<
- \context Staff ="corni" \corni
- \context Staff ="trombe" \trombe
+ \new StaffGroup = "ottoni" <<
+ \new Staff = "corni" \corni
+ \new Staff = "trombe" \trombe
>>
- \context StaffGroup ="timpani" <<
- \context Staff ="timpani" \timpani
+ \new StaffGroup = "timpani" <<
+ \new Staff = "timpani" \timpani
{
\skip 1
% Hmm: this forces a staff-bracket, that's good!
% However, I can't find where is decided on staff-bracket yes/no
}
>>
- \context StaffGroup ="archi" <<
- \context GrandStaff ="violini" <<
- \context Staff ="violino1" \violinoI
- \context Staff ="violino2" \violinoII
+ \new StaffGroup = "archi" <<
+ \new GrandStaff = "violini" <<
+ \new Staff = "violino1" \violinoI
+ \new Staff = "violino2" \violinoII
>>
- \context Staff ="viola" \viola
- \context Staff ="violoncello" \violoncello
+ \new Staff = "viola" \viola
+ \new Staff = "violoncello" \violoncello
>>
>>
%%% but this is intentional for editorial purposes (simplifies some
%%% global search/replace operations in emacs).
-cantus = \context VaticanaVoice = "cantus" {
+cantus = \new VaticanaVoice = "cantus" {
\[ g4\melisma %%% Pu-
\pes
d'\melismaEnd
\divisioMaxima
}
-verba = \context Lyrics = "verba" \lyricmode {
+verba = \new Lyrics = "verba" \lyricmode {
Pu -- er na -- tus est no -- bis,
et fi -- li -- us da -- tus est no -- bis:
}
\transpose c c'
\context Staff <<
\key g \major
- \context Voice = "va" { \stemUp c' fis! }
- \context Voice = "vb" { \stemDown c fis! }
+ \new Voice { \stemUp c' fis! }
+ \new Voice { \stemDown c fis! }
>>
}
\relative <<
- \context Staff = "1" { c4 c s2 }
- \context Staff = "2" { c4 c s2 }
- \context Staff = "3" { c4 c s2 }
+ \new Staff = "1" { c4 c s2 }
+ \new Staff = "2" { c4 c s2 }
+ \new Staff = "3" { c4 c s2 }
{ \skip 2
<<
\lyrics {
\layout { ragged-right= ##t }
\context PianoStaff <<
- \context Staff = "up" {
- \autochange \context Voice = VA << \relative c' { g4 c e d c r4 a g } >>
+ \new Staff = "up" {
+ \autochange \new Voice << \relative c' { g4 c e d c r4 a g } >>
}
- \context Staff = "down" {
+ \new Staff = "down" {
\clef bass
s1*2
}
}
\context PianoStaff <<
- \context Staff = "up" \relative c''{
+ \new Staff = "up" \relative c''{
b8[ \change Staff="down" d,, ]
c[ \change Staff="up" c'' ]
b,[ \change Staff="down" d^"no knee" ]
}
- \context Staff = "down" {
+ \new Staff = "down" {
\clef bass
s2.
}
\layout { ragged-right = ##t}
\context PianoStaff <<
- \context Staff = "up"
+ \new Staff = "up"
\relative c'' <<
{
\stemDown
} \\
>>
- \context Staff = "down" {
+ \new Staff = "down" {
\time 3/8 \clef bass s4.*3 }
>>
}
\context PianoStaff <<
- \context Staff = "one" \relative c'{
+ \new Staff = "one" \relative c'{
\stemUp c8[ c \change Staff=two \stemUp c c]
c[ c c c]
\change Staff=one
\stemUp c8[ c \change Staff=one \stemDown c c]
r2
}
- \context Staff = "two" \relative c'{
+ \new Staff = "two" \relative c'{
\clef bass
s1
s1
}
\context PianoStaff <<
- \context Staff = "one" \relative c'{
+ \new Staff = "one" \relative c'{
s1
}
- \context Staff = "two" \relative c'{
+ \new Staff = "two" \relative c'{
\clef bass
% no knee
\stemUp c8[ \change Staff=one \stemDown g'16 f]
}
\context PianoStaff \relative c' <<
- \context Staff = SA {
+ \new Staff = SA {
\stemDown
c8[ c16 \change Staff = SB \stemUp c16 ]
\stemNeutral
f[ g \change Staff = SA a c]
}
- \context Staff = SB \relative c' {
+ \new Staff = SB \relative c' {
\clef bass
b8[ b16 \stemUp b,,16 ]
\version "2.7.32"
\new PianoStaff <<
- \context Staff = "up" {
+ \new Staff = "up" {
s1 *2
}
- \context Staff = "down" <<
+ \new Staff = "down" <<
\applyMusic #notes-to-clusters \relative c { <c e>4 <f a> <b e> \change Staff = up <e a>
<a d> <d g> }
\context PianoStaff <<
\set PianoStaff.followVoice = ##t
- \context Staff = "one" \relative c''{
+ \new Staff = "one" \relative c''{
a1 \break
\change Staff=two
a,
}
- \context Staff = "two" { \clef bass \skip 1*2 }
+ \new Staff = "two" { \clef bass \skip 1*2 }
>>
<<
\chords {s2 c c c d}
- \context Voice=mel {
+ \new Voice =mel {
%% A chord for ukelele
a'2 ^\markup
}
-\context Staff = "one" \relative c''{
+\new Staff \relative c''{
% gliss non gliss and
c4 \glissando d e \glissando f \glissando \break
% consecutive
\override Glissando #'style = #'zigzag
c4 \glissando c,, \glissando c' \glissando d
}
+
\layout{
- line-width = 50.\mm indent = 0
-
+ line-width = 50.\mm
+ indent = 0
}
\layout {ragged-right = ##t}
-\context Voice = VA \relative c'' {
+\new Voice \relative c'' {
\grace b8 c4\fermata
\grace { c32[ cis32] } gis4
\grace { cis32[ dis32] } e4
\new StaffGroup <<
\context PianoStaff <<
- \context Staff = "treble" {
+ \new Staff {
\set PianoStaff.instrument = "Piano"
\set Staff.instrument = "Right" { c''4 }}
- \context Staff = "bass" {
+ \new Staff {
\set Staff.instrument = "Left"
\clef bass c4
}
<<
- \context Voice = "bla" \relative c'' {
+ \new Voice = "bla" \relative c'' {
\autoBeamOff
c2( d4) e8[ c b c] f4
}
\lyricsto "one" \new Lyrics {
Do mi nus ex
}
- \context Voice = "one" {
+ \new Voice = "one" {
\voiceOne
bes'4 bes'4
bes'4 bes'4
}
- \context Voice = "two" {
+ \new Voice = "two" {
\voiceTwo
ees'8 r8 r8 r8 ees' r8 r8 r8
}
<<
- \context Voice=A {
+ \new Voice =A {
a1 ( a1 \break
a) a2( b) \break
a2
<<
- \relative c' \context Voice = "bla" {
+ \relative c' \new Voice = "bla" {
\autoBeamOff
c4( c16 d c b) c4
d16[ e f g]
}
<<
- \context Staff = "foo" \with
+ \new Staff \with
{
% \remove "Bar_engraver"
}
\lyrics {
no Bar_Engraver_Bar_Engraver_Bar_Engraver
}
- \context Staff = "bar" \with {
+ \new Staff \with {
% \remove "Bar_engraver"
} { b1 b1 }
>>
<<
\set Score.skipBars = ##t
- \context Staff = "flute" \new Voice {
+ \new Staff \new Voice {
<< { R1*40 } { s1*0_"bla" }>>
}
>>
\context PianoStaff
<<
- \context Staff = "up" {
+ \new Staff = "up" {
\set PianoStaff.connectArpeggios = ##t
\showStaffSwitch
\clef F
c4 d \sd b a g8 f16 e32 d \su g2 \glissando a,4 \sd \break a2. \su g4 \glissando f1
}
- \context Staff = "down" {
+ \new Staff = "down" {
\clef F s1*4
}
>>
\layout { ragged-right = ##t }
<<
- \context Staff = "A" \A
- \context Staff = "B" \B
+ \new Staff \A
+ \new Staff \B
>>
\context PianoStaff <<
- \context Staff = "one" \relative c'{
+ \new Staff = "one" \relative c'{
\stemUp \slurUp
c4( c \change Staff=two c c) |
\change Staff=one
c4( \change Staff=one c c \change Staff=two c)
r1
}
- \context Staff = "two" \relative c'{
+ \new Staff = "two" \relative c'{
\clef bass
s1 s1 s1 s1 s1 s1 s1 s1 s1 s1
}
\new PianoStaff <<
- \context Staff = "up" {
+ \new Staff = "up" {
\bar "|:" r1
\bar ":|" \break r1
}
- \context Staff = "down" { r r }
+ \new Staff = "down" { r r }
>>
\relative c'
\context PianoStaff <<
\set PianoStaff.followVoice = ##t
- \context Staff = "one" \context Voice {
+ \new Staff = "one" \context Voice {
c1
\change Staff=two
b2 a
}
- \context Staff = "two" {\clef bass \skip 1*2 }
+ \new Staff = "two" {\clef bass \skip 1*2 }
>>
\score {
\context PianoStaff <<
- \context Staff = "up" {
+ \new Staff = "up" {
\time 4/8
\key c \minor
>>
}
- \context Staff = "down" {
+ \new Staff = "down" {
\clef bass
\key c \minor
\set subdivideBeams = ##f
}
-upperStaff = \context GregorianStaff = "upperStaff" <<
+upperStaff = \new GregorianStaff = "upperStaff" <<
\context GregorianVoice <<
\set Score.timing = ##f
% \set Score.forceAccidental = ##t %%%%%%%% FIXME: what happened to this property?
>>
>>
-lowerStaff = \context MensuralStaff = "lowerStaff" <<
+lowerStaff = \new MensuralStaff = "lowerStaff" <<
\context MensuralVoice <<
% this is broken until further notice -- see refman
\book {
\score {
<<
- \context StaffGroup ="legni" <<
- \context Staff ="flauti" \flauti
- \context Staff ="oboi" \oboi
- \context Staff ="clarinetti" \clarinetti
- \context Staff ="fagotti" \fagotti
+ \new StaffGroup = "legni" <<
+ \new Staff = "flauti" \flauti
+ \new Staff = "oboi" \oboi
+ \new Staff = "clarinetti" \clarinetti
+ \new Staff = "fagotti" \fagotti
>>
- \context StaffGroup ="ottoni" <<
- \context Staff ="corni" \corni
- \context Staff ="trombe" \trombe
+ \new StaffGroup = "ottoni" <<
+ \new Staff = "corni" \corni
+ \new Staff = "trombe" \trombe
>>
- \context StaffGroup ="timpani" <<
- \context Staff ="timpani" \timpani
+ \new StaffGroup = "timpani" <<
+ \new Staff = "timpani" \timpani
{
\skip 1
% Hmm: this forces a staff-bracket, that's good!
% However, I can't find where is decided on staff-bracket yes/no
}
>>
- \context StaffGroup ="archi" <<
- \context GrandStaff ="violini" <<
- \context Staff ="violinoI" \violinoI
- \context Staff ="violinoII" \violinoII
+ \new StaffGroup = "archi" <<
+ \new GrandStaff = "violini" <<
+ \new Staff = "violinoI" \violinoI
+ \new Staff = "violinoII" \violinoII
>>
- \context Staff ="viola" \viola
- \context Staff ="violoncello" \violoncello
+ \new Staff = "viola" \viola
+ \new Staff = "violoncello" \violoncello
>>
>>
\layout {
<<
\chords {d2 d d s fis fis fis s c c c}
- \context Voice = "mel" {
+ \new Voice = "mel" {
% simple D chord
d'2 ^\markup \fret-diagram-verbose #'((mute 6) (mute 5) (open 4) (place-fret 3 2) (place-fret 2 3) (place-fret 1 2))
\score {
- \context GrandStaff <<
- \context Staff = "treble" {
+ \new GrandStaff <<
+ \new Staff = "treble" {
\set GrandStaff.instrument = "Violini "
\set Staff.instrument = " vn I" { c''4 }}
- \context Staff = "bass" { \set Staff.instrument = " vn II" c''4 }>>
+ \new Staff = "bass" { \set Staff.instrument = " vn II" c''4 }>>
\layout {
\include "gregorian-init.ly"
-cantus = \context VaticanaVoice = "cantus" {
+cantus = \new VaticanaVoice = "cantus" {
\clef "vaticana-fa2"
\[ f\melisma \quilisma g \auctum \descendens a\melismaEnd \]
\[ \virga a\melisma g \pes a \inclinatum f \inclinatum d
\[ e\melisma \flexa d\melismaEnd \]
}
-verba = \context Lyrics = "verba" \lyricmode {
+verba = \new Lyrics = "verba" \lyricmode {
Al- le- lu- ia.
}
\score {
\transpose c c' \context PianoStaff <<
- \context Staff = "up" { \clef "G" }
- \context Staff = "down" { \clef "F" }
+ \new Staff = "up" { \clef "G" }
+ \new Staff = "down" { \clef "F" }
{ \applyMusic #transform {
\pat {c e g c' e' }
\pat {c d a d' f' }
\score {
\new PianoStaff
<<
- \context Staff = "up" {
+ \new Staff = "up" {
\clef bass
s1 * 4
}
- \context Staff = "down" \relative c <<
+ \new Staff = "down" \relative c <<
s1*4
{
\clef bass
\score {
{
\relative c' {
- \context Staff = One { c4 d e f }
+ \new Staff = One { c4 d e f }
<<
{c d e f | c d e f | c c c c | c c c c }
- \context TemporaryStaff = Two { c4 c8 d e4 f | c d e f |
+ \new TemporaryStaff = Two { c4 c8 d e4 f | c d e f |
c c c c | c c c8 b c b |}
>>
c4 d e f |
| f4 f | e e | d d | c2 \bar "|."
}
-acc = \chordmode {
+acc = \chords {
c2 c f c
f c g:7 c
g f c g:7
f c g:7 c
}
-text = \lyricmode{
+text = \lyrics {
\override LyricText #'font-shape = #'italic
Ah!4 vous dir -- ai -- je ma man2
\score {
<<
- \context ChordNames \acc
- \context Staff = "melody" \melodie
- \context Lyrics \text
+ \acc
+ \new Staff = "melody" \melodie
+ \text
>>
\header{
title = "Ah, vous dirais-je, maman "
\override Staff.TimeSignature #'text = #oneHalfNoteTime
\noclefs
- \context Voice = "voice" \voice
- \context Voice = "stich" \stich
+ \new Voice = "voice" \voice
+ \new Voice = "stich" \stich
>>
\lyricsto "voice" \new Lyrics {
\override VerticalAxisGroup #'minimum-Y-extent = #'(2 . 2)
Modified_font_metric::text_dimension (string text) const
{
SCM stext = scm_makfrom0str (text.c_str ());
- Box b = lookup_tex_text_dimension (orig_, stext);
- if (!b[Y_AXIS].is_empty ())
- {
- b.scale (magnification_);
- return b;
- }
-
+
+ Box b;
if (output_backend_global == "tex")
{
+ b = lookup_tex_text_dimension (orig_, stext);
+
+ if (!b[Y_AXIS].is_empty ())
+ {
+ b.scale (magnification_);
+ return b;
+ }
+
b = tex_kludge (text);
return b;
}
{
Box b;
+ /*
+ Actually, it's defined in framework-texstr, but let's see how long
+ it takes before we get a bugreport. HWN 13/2/2006.
+ */
SCM limit = ly_lily_module_constant ("TEX_STRING_HASHLIMIT");
string key_str = ly_scm2string (font->font_file_name ());
int hash_code = scm_to_int (scm_hash (text, limit));
(self-alignment-Y . ,CENTER)
(meta . ((class . Spanner)
(interfaces . (system-start-text-interface
+ system-start-delimiter-interface
side-position-interface
font-interface))))))
(def-markup-command (column layout props args) (markup-list?)
"Stack the markups in @var{args} vertically. The property
@code{baseline-skip} determines the space between each markup in @var{args}."
- (stack-lines
- -1 0.0 (chain-assoc-get 'baseline-skip props)
- (remove ly:stencil-empty?
- (map (lambda (m) (interpret-markup layout props m)) args))))
+
+ (let*
+ ((arg-stencils (map (lambda (m) (interpret-markup layout props m)) args))
+ (skip (chain-assoc-get 'baseline-skip props)))
+
+
+ (stack-lines
+ -1 0.0 skip
+ (remove ly:stencil-empty? arg-stencils))))
+
(def-markup-command (dir-column layout props args) (markup-list?)
"Make a column of args, going up or down, depending on the setting
what
""))
-(define TEX_STRING_HASHLIMIT 10000000)
+
+;; TeX C++ code actually hooks into TEX_STRING_HASHLIMIT
+(define-public TEX_STRING_HASHLIMIT 10000000)
(define-public (text font str)
(call-with-output-string
(lambda (port)