Существует множество способов рендеринга шрифтов. Судя по всему, в Photoshop есть собственный движок рендеринга шрифтов, и он отличается от того, что NSTextField
делает по умолчанию.
Если вы увеличите изображение (таким образом, чтобы не пытаться сгладить результат), вы увидите, что рендеринг Photoshop использует сглаживание в оттенках серого, а рендеринг OS X использует сглаживание субпикселей. . Рендеринг OS X имеет цветную окантовку. При отображении в нормальных размерах эти цвета в конечном итоге освещают различные элементы RGB на ЖК-экране. Вместо того, чтобы выглядеть цветным, он просто выглядит как изменение яркости. По сути, субпиксельное сглаживание использует расположение цветовых элементов в пикселях ЖК-дисплея для увеличения разрешения, с которым он может отображаться.
Я также подозреваю, что механизм рендеринга OS X использует субпиксельное позиционирование глифов. Это позволяет размеру и интервалу глифов более точно соответствовать тому, что предписывает шрифт, делая меньшие компромиссы при отображении в сетке пикселей. Например, посмотрите на первую строку (Helvetica Neue 22pt: Photoshop). Расстояние между «H» и «e», а также между «l» и «v» кажется мне неправильным. OS X выглядит лучше, на мой взгляд.
Если вы визуализируете текст самостоятельно, вы можете отключить субпиксельное сглаживание с помощью CGContextSetShouldSubpixelQuantizeFonts()
и отключить субпиксельное позиционирование с помощью CGContextSetShouldSubpixelPositionFonts()
. (Документация предполагает, что отключение субпиксельного позиционирования также отключает субпиксельное сглаживание, хотя я не уверен, почему это обязательно последует.) Посмотрите, приведет ли это к результатам, более похожим на то, что дает вам Photoshop.
Кстати, вероятно, можно также настроить, как Photoshop отображает шрифт. Тот факт, что две вещи якобы отображают один и тот же шрифт, не означает, что они будут создавать одинаковые пиксели.
person
Ken Thomases
schedule
04.02.2015