On 2019-03-11 11:30 am, David Kastrup wrote:
Urs Liska <[email protected]> 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 [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-user
