Программно определять, занимает ли символ Unicode более одного символьного пространства в терминале

Я обнаружил, что в терминале Mac OS X некоторые символы Unicode занимают более одного символьного пространства. Например, 27FC (длинная стрелка вправо от бара). Он печатает два символа шириной, но второй символ печатается поверх любого следующего символа, поэтому вам нужно сделать ⟼ <пробел> , чтобы он печатался правильно. Например, ⟼a печатает как. Arrow + a (Я увеличил размер шрифта, чтобы вы могли его видеть, но он делает это для всех размеров шрифта.)

Кстати, это шрифт Menlo в приложении Mac OS X 10.6 Terminal.

23B3 ( SUMMATION TOP) на самом деле печатается как два символа шириной и высотой (по крайней мере, в Safari, это делается и в браузере, обратите внимание, как это перекрывается с приведенной выше строкой) ⎲

Однако в терминале в Ubuntu, ни один из этих символов не печатается шире или выше одного символа.

Есть ли способ программно определить, занимает ли символ более одного места?

Я использую Python, поэтому что-то, что работает либо на чистом Python, либо на POSIX (т. Е. Я могу вызвать некоторую команду bash, используя модуль os ) будет предпочтительнее.

Кроме того, я должен отметить, что если я увеличу параметр «Межсимвольный интервал» в настройках шрифта терминала до 1,5 (со значения по умолчанию 1,0), то он выглядит как Arrow + a spaced.

Также было бы неплохо, если бы ответ мог дать некоторое представление обо всем этом (то есть, почему это происходит?)

9
задан Jonathan Leffler 17 August 2011 в 04:28
поделиться