Объединение произвольных символов Юникода или символов Юникода с отрицательной шириной - PullRequest
0 голосов
/ 23 октября 2018

В прежние времена ZX Spectrum был способ напечатать один глиф поверх другого, создав составной глиф с помощью инструкции OVER 1.

Интересно, есть ли Unicode?способ сделать то же самое на современных компьютерах?Могу ли я наложить два совершенно произвольных печатаемых символа (например, 7 и ~) друг на друга, как если бы они были OR или XOR для получения этого результата?

DIGIT SEVEN (U+0037) TILDE (U+007E) OR'ed combination of DIGIT SEVEN and TILDE XOR'ed combination of DIGIT SEVEN and TILDE

Или, альтернативно, есть ли символы Unicode с "отрицательной шириной"

1 Ответ

0 голосов
/ 23 октября 2018

Невозможно закодировать суперпозицию двух произвольных символов в Unicode.

В некоторых кодировках, предшествующих даже 8-битным компьютерам, вы можете перегружать произвольные символы, передавая backspace, поэтому è будетbackspace `.Это не работало на ранних компьютерных экранах, но работало на механических линейных принтерах!

В Unicode есть комбинируемые символы, включая 7̴ и 7̃.Только не тот конкретный.

Ближайшая вещь, которую нужно поддерживать для объединения произвольных символов в одну графему, - это Zero-Width Joiner ( zwidge ), который, например, используется для создания ? (женщина) + ZWJ + ⚕ (кадуцей) = ?‍⚕️ (медицинский работник женского пола).В смайликах и во многих скриптах, таких как деванагари и арабский, это означает что-то иное, чем наложение символов.

Шрифты OpenType поддерживают лигатуры, поэтому данный шрифт может определять 7 ~ или 7 ZWJ ~ в качестве этого символа.Линотип Palatino поддерживает интерробанг (‽) таким образом.

Как правило, вам необходимо сообщить об этом вашему приложению другим способом, например, встроить собственный шрифт или передать глиф как встроенный вектор.графический.

...