Отображать символы полной ширины с вдвое большей длиной, чем символы половинной ширины?

Я не уверен, что это правильное место, чтобы задать этот вопрос, но я не знаю других сайтов, которые подошли бы лучше. И вопрос как-то связан с программированием, так что:

Я пишу форматированное txt-руководство. Пожалуйста, взгляните на этот отрывок: http://mad-gaksha.homelinux.net/public/width.txt. Мне нужно, чтобы символы полной ширины отображались так, чтобы они занимали ровно вдвое больше места, чем символы половинной ширины. В то время как моноширинные шрифты, похоже, нормально работают только с символами половинной ширины, большинство полноширинных шрифтов «фиксированной ширины», которые я пробовал, не дали желаемого результата.

В firefox это работает, когда я устанавливаю для моноширинного шрифта («Правка»> «Настройки»> «Содержимое»> «Дополнительно») значение «моноширинный». Но только для размера шрифта 14. То же самое с gedit, шрифтом фиксированной ширины MS-Gothic, работает только для размеров шрифта 13/14.

Поскольку я нахожу это поведение довольно странным и не хотел бы, чтобы мои читатели были обеспокоены техническими деталями, есть ли у кого-нибудь предложения или ресурсы, или кто-нибудь может объяснить, что здесь происходит? Почему кажется таким сложным просто отобразить каждый глиф фиксированного размера?

Заранее спасибо, что нашли время.


person blutorange    schedule 27.08.2011    source источник
comment
Вы можете использовать HTML, а не текст. Это сняло бы проблему. И ваши пользователи не будут вообще обеспокоены.   -  person Clement Bellot    schedule 28.08.2011


Ответы (1)


Похоже, это связано с округлением дробных пикселей.

Визуализатор шрифта может настроить горизонтальное позиционирование, если ширина глифа не равна целому числу пикселей экрана. Я считаю, что рендеринг Cairo, используемый gedit и Firefox в Linux, не выполняет субпиксельное позиционирование шрифтов, поэтому здесь это может быть необходимо.

В истинном моноширинном шрифте это не имеет значения, потому что каждый глиф имеет одинаковую ширину, поэтому обрабатывается одинаково, но там, где есть смесь символов полной и половинной ширины, округление не будет равномерным, если только глифы не совпадут. быть целым числом пикселей в ширину (что происходит в вашем случае при размере шрифта 14).

Обратите внимание, что в Windows для большинства небольших размеров шрифты, такие как MS Gothic, будут отображаться с использованием настраиваемых встроенных растровых изображений в файле шрифта вместо отображения контуров и их показателей. Это делает все глифы обязательно фиксированным числом пикселей в ширину. Однако это приводит к типичному олдскульному «зубчатому» стилю рендеринга.

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

Я согласен с комментарием Клемента о том, что использование HTML для получения желаемого рендеринга было бы более надежным, современным и удобным. Использование HTML для макета избавляет вас от необходимости беспокоиться о выравнивании символов и позволяет вам получить шрифты, которые менее уродливы, чем вся эта моноширинная латиница с половинной шириной.

person bobince    schedule 28.08.2011
comment
Не поэтому ли шрифты в Microsoft всегда выглядят ужасно ужасно по сравнению с Apple? Я пользуюсь Оперой и часто масштабирую до забавных процентов. Шрифты гладкие на Apple, но ужасно неровные на Microsoft. - person tchrist; 28.08.2011
comment
@tchrist: конечно, шрифты CJK в Windows исторически были ужасны. До ClearType алгоритм «сглаживания» шрифта был ужасен и особенно не работал для кандзи. Даже с ClearType в XP+ у вас должны были быть такие шрифты, как Meiryo, которые были специально разработаны для использования строго горизонтальных штрихов вместо почти горизонтальных штрихов, которые ужасно отображались, потому что ClearType предпочитает сглаживание только вдоль оси X (что обычно хорошо работает для Форма латинских букв, но это катастрофа для идеографов CJK). - person bobince; 29.08.2011
comment
В наши дни это, наконец, исправлено в WPF, но большинство приложений не используют это, поэтому мы застряли с использованием Meiryo или получением неровных горизонтальных штрихов. - person bobince; 29.08.2011