On 2019-03-11 11:30 am, David Kastrup wrote:
Urs Liska <li...@openlilylib.org> writes:
Hi,
I've written a poor-man's implementation of a simple \letterspaced
markup command:
#(define-markup-command
(letterspaced layout props text)(markup?)
(let*
((chars (string->list text))
(dummy (ly:message "Chars: ~a" chars))
(spaced-text
(string-join
(map string chars) " ")))
(interpret-markup layout props
(markup spaced-text))))
However, this scrambles umlauts and presumably other UTF-8 characters
as you can see with
{
s1 ^\markup \letterspaced "Täst"
}
=>Chars: (T � � s t)
Obviously the characters are wrongly en/decoded along the way, which
makes me think whether I have simply forgotten an encoding setting
somewhere (although I have no idea where and how I should include
that) or whether that whole routine is totally clumsy.
Any pointer would be appreciated.
Guile-1.8 has only byte strings, not Unicode character strings.
However, the regexp procedures are locale aware, so you can use
something like
/./ isn't smart enough to match Unicode graphemes. You would need /\X/,
however that is not supported in POSIX ERE. Neither is the
approximation /\P{M}\p{M}*+/.
-- Aaron Hill
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user