Я разрабатываю библиотеку рендеринга текста, похожую на Свободный тип для моей игры. Я не знаю, как определить ширину вкладки.
Когда я обрабатывал управляющие символы, я обнаружил проблему, заключающуюся в том, что мой текстовый рендерер предназначен не только для моноширинных шрифтов, но и для немоноширинные шрифты. Я знаю, что для моноширинных шрифтов ширина выравнивания табуляции может составлять 4 или 8 пробелов, в зависимости от использования текстового рендерера (Насколько мне известно, большинство программных IDE предполагают табуляцию на 4 пробела; и для создания таблиц программное обеспечение часто предназначены вкладки до 8 пробелов). Но какое значение следует использовать для немоноширинных шрифтов?
После наблюдения за поведением IDE при обработке немоноширинных шрифтов я нашел ответ:
Используйте ширину символ пробела ('\x20') в качестве единицы ширины вкладки, а ширина вкладки по умолчанию должна быть 4 места.
Также я дал пользователям возможность определить, как выровнять символы для немоноширинных шрифтов, один из них — выравнивать символы нормально, поскольку мы видим, как другие программы (такие как Microsoft Word, Chrome и т. д.) выравнивают текст немоноширинного шрифта, другой заключается в символах выравнивание силы в моноширинном стиле путем фиксирования значения ширины каждого символа, а значение фиксированной ширины определяется сканированием всех алфавитов, цифр и знаков препинания и поиском максимального значения для него. А для символов полная ширина я просто задаю значение ширины x 2.