/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1998--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
LilyPond is free software: you can redistribute it and/or modify
// avoid the locale-dependent isspace
if (cur == '\n' || cur == '\t' || cur == '\v')
- (*str)[i] = ' ';
+ (*str)[i] = ' ';
vsize char_len = utf8_char_len (cur);
MAKE_SCHEME_CALLBACK (Text_interface, interpret_string, 3);
SCM
Text_interface::interpret_string (SCM layout_smob,
- SCM props,
- SCM markup)
+ SCM props,
+ SCM markup)
{
LY_ASSERT_SMOB (Output_def, layout_smob, 1);
LY_ASSERT_TYPE (scm_is_string, markup, 3);
if it matches one of the music font encodings. --pmccarty
*/
SCM encoding = ly_chain_assoc_get (ly_symbol2scm ("font-encoding"),
- props,
- SCM_BOOL_F);
+ props,
+ SCM_BOOL_F);
SCM music_encodings = ly_lily_module_constant ("all-music-font-encodings");
- if (scm_memq (encoding, music_encodings) != SCM_BOOL_F)
- return fm->word_stencil (str, true).smobbed_copy ();
- else
- return fm->word_stencil (str, false).smobbed_copy ();
+ bool is_music = (scm_memq (encoding, music_encodings) != SCM_BOOL_F);
+ return fm->text_stencil (layout, str, is_music).smobbed_copy ();
}
MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Text_interface, interpret_markup, 3, 0,
- "Convert a text markup into a stencil."
-" Takes three arguments, @var{layout}, @var{props}, and @var{markup}.\n"
-"\n"
-"@var{layout} is a @code{\\layout} block; it may be obtained from a grob with"
-" @code{ly:grob-layout}. @var{props} is an alist chain, i.e. a list of"
-" alists. This is typically obtained with"
-" @code{(ly:grob-alist-chain grob (ly:output-def-lookup layout 'text-font-defaults))}."
-" @var{markup} is the markup text to be processed.");
+ "Convert a text markup into a stencil."
+ " Takes three arguments, @var{layout}, @var{props}, and @var{markup}.\n"
+ "\n"
+ "@var{layout} is a @code{\\layout} block; it may be obtained from a grob with"
+ " @code{ly:grob-layout}. @var{props} is an alist chain, i.e. a list of"
+ " alists. This is typically obtained with"
+ " @code{(ly:grob-alist-chain grob (ly:output-def-lookup layout 'text-font-defaults))}."
+ " @var{markup} is the markup text to be processed.");
SCM
Text_interface::interpret_markup (SCM layout_smob, SCM props, SCM markup)
{
SCM func = scm_car (markup);
SCM args = scm_cdr (markup);
if (!is_markup (markup))
- programming_error ("markup head has no markup signature");
+ programming_error ("markup head has no markup signature");
return scm_apply_2 (func, layout_smob, props, args);
}
Text_interface::is_markup (SCM x)
{
return (scm_is_string (x)
- || (scm_is_pair (x)
- && SCM_BOOL_F
- != scm_object_property (scm_car (x),
- ly_symbol2scm ("markup-signature"))));
+ || (scm_is_pair (x)
+ && SCM_BOOL_F
+ != scm_object_property (scm_car (x),
+ ly_symbol2scm ("markup-signature"))));
}
bool
return scm_is_true (scm_call_1 (music_list_p, x));
}
-
ADD_INTERFACE (Text_interface,
- "A Scheme markup text, see @ruser{Formatting text} and"
- " @rextend{New markup command definition}.\n"
- "\n"
- "There are two important commands:"
- " @code{ly:text-interface::print}, which is a"
- " grob callback, and"
- " @code{ly:text-interface::interpret-markup}.",
-
- /* properties */
- "baseline-skip "
- "text "
- "word-space "
- "text-direction "
- );
+ "A Scheme markup text, see @ruser{Formatting text} and"
+ " @rextend{New markup command definition}.\n"
+ "\n"
+ "There are two important commands:"
+ " @code{ly:text-interface::print}, which is a"
+ " grob callback, and"
+ " @code{ly:text-interface::interpret-markup}.",
+
+ /* properties */
+ "baseline-skip "
+ "text "
+ "word-space "
+ "text-direction "
+ );