Я пишу игру, которая принимает пользовательский ввод и отображает его на экране. Движок, который я использую для этого, полностью дружественный к юникоду, поэтому я хотел бы сохранить его, если это вообще возможно. Проблема в том, что цикл рендеринга выглядит так:
"string".each_byte do |c|
render_this_letter(c)
end
Я не очень много знаю о i18n, но знаю достаточно, чтобы знать, что приведенный выше код будет работать только для меня и людей, говорящих на моем языке. Я бы предпочел что-то вроде:
"unicode string".each_unicode_letter do |u|
render_unicode_letter(u)
end
Существует ли это в ядре дистрибутива? Я немного против добавления дополнительных требований к установке, но если это единственный способ сделать это, я буду жить.
Для дополнительного удовольствия у меня нет возможности узнать, является ли строка фактически строкой Юникода.
РЕДАКТИРОВАТЬ: библиотека, которую я использую, действительно может отображать целые строки, однако я позволяю пользователю редактировать то, что происходит на лету - если они нажимают «backspace», по сути, мне нужно знать, сколько байтов нужно нарезать с конца.