/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
LilyPond is free software: you can redistribute it and/or modify
*/
#include "text-interface.hh"
+#include "skyline-pair.hh"
+#include "lookup.hh"
#include "config.hh"
#include "font-interface.hh"
#include "grob.hh"
{
/* Don't match in mid-UTF-8 */
if ((str[i] & 0xc0) == 0x80)
- continue;
+ continue;
for (vsize j = max_length + 1; j--;)
{
- if (j > str.size () - i)
- continue;
+ if (j > str.size () - i)
+ continue;
string dummy = str.substr (i, j);
SCM ligature = ly_assoc_get (ly_string2scm (dummy),
- replacement_alist, SCM_BOOL_F);
- if (scm_is_true (ligature))
+ replacement_alist, SCM_BOOL_F);
+ if (scm_is_true (ligature))
str.replace (i, j, robust_scm2string (ligature, ""));
}
}
{
if (scm_is_string (markup))
return interpret_string (layout_smob, props, markup);
- else if (scm_is_pair (markup))
+ else if (is_markup (markup))
{
SCM func = scm_car (markup);
SCM args = scm_cdr (markup);
- if (!is_markup (markup))
- programming_error ("markup head has no markup signature");
/* Use a hare/tortoise algorithm to detect whether we are in a cycle,
* i.e. whether we have already encountered the same markup in the
}
else
{
- programming_error ("Object is not a markup. ");
+ programming_error ("Object is not a markup.");
scm_puts ("This object should be a markup: ", scm_current_error_port ());
scm_display (markup, scm_current_error_port ());
scm_puts ("\n", scm_current_error_port ());
bool
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"))));
+ return scm_is_string (x)
+ || (scm_is_pair (x)
+ && scm_is_true
+ (scm_object_property (scm_car (x),
+ ly_symbol2scm ("markup-signature")))
+ && scm_is_false
+ (scm_object_property (scm_car (x),
+ ly_symbol2scm ("markup-list-command"))));
}
bool
"text "
"word-space "
"text-direction "
+ "flag-style "
);