Проблема с толщиной шрифта после смены базового базового от 10,5 до 10,6

StackOverflow https://stackoverflow.com/questions/5977821

Вопрос

После изменения базового проекта моего проекта до 10.6 я заметил, что мой пользовательский текст выглядит другим (посмотрите на изображения: тот же код для рисования)

до 10,5 базового: Image1

до 10,6 базового: Image2

Я рисую с MyString [(NSString *) MyString Rookinrect: MyRect Contributes: MyAttributes].

myAttributes = [[NSMutableDictionary alloc] initWithObjectsAndKeys: [NSColor myColor], NSForegroundColorAttributeName, [NSFont systemFontOfSize:18], NSFontAttributeName, paragraphStyle, NSParagraphStyleAttributeName, shadow, NSShadowAttributeName, nil];

Какова причина такой разницы или только как уменьшить толщину шрифта? Я пытался уменьшить толщину от

[NSFontManager convertWeight:NO ofFont:font]

Но это выглядит не намного лучше ...

Спасибо заранее.

Это было полезно?

Решение 2

Теперь я знаю причину, почему это происходит и исправление этой проблемы: Кажется, что с 10.6 был добавлен опция сглаживания шрифта LCD, который включен в настройках -> Внешний вид -> «Использовать сглаживание шрифта ЖК-дисплея, когда доступно», когда флажок, который проверяется по умолчанию.

Вот почему после изменения базового проекта до 10,6 тексты в приложении стали сглаженным стилем ЖКД и выглядеть плохо.

Так что исправление проблемы в коде состоит в том, чтобы изменить параметры сглаживания в графическом контексте перед нашими рисунками:

CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];
CGContextSetShouldSmoothFonts(context, NO);
.

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

Благодаря @nsgod для нахождения причины этой проблемы.

Другие советы

Если мы увеличиваем и смотрите внимательно на обоих изображениях, мы заметим немедленную разницу (по крайней мере, я делаю):

Введите описание изображения здесь

Текст в верхнем изображении использует сглаживание шрифта стиль CRT, в то время как текст в нижнем изображении использует сглаживание шрифта стиль среднего ЖК-дисплея. (Все 3 стили сглаживания ЖК-шрифта введуют цветные каста в антисеменные пиксели).

Нам нужно больше информации о вашей настройке тестирования, чтобы сказать, почему это происходит. Под какими версиями OS X вы тестируете это? Например, было ваше приложение, построенное на 10,6 SDK с целью развертывания 10,5, верхнее изображение было предпринято при тестировании под os x 10.5.x (на одной и той же машине), а нижнее изображение было предпринято при тестировании до 10.6.x ? Или все проводили тестирование в Mac OS X 10.6.x, и построение на 10,5 SDK, привело к верхнему образу, а построение на 10,6 SDK, привело к более низком образе? Какую модель Mac вы используете? Какой тип внешних дисплеев LCD или CRT вы подключались, если таковые имеются?

Просто пара идей, не имея информацию, которую не задают выше. Стиль сглаживания шрифта по умолчанию - это CRT в 10.5, я полагаю, и 10,6 по умолчанию на «Автоматический». Итак, если у вас есть система с ЖК-дисплеем и тестировала до 10,5, но никогда не изменила стиль сглаживания шрифта из стиля CRT по умолчанию, то вы получите изображение, как верхний. Если вы затем перешли на 10,6 в той же системе, возможно, что 10,6 автоматического сглаживания шрифта автоматически обнаружили ваш ЖК-дисплей, и использовал сглаживание шрифта стиль среднего ЖК-дисплея, что приведет к тому, что «тяжелый» текст в нижнем изображении ,

Другое, что нужно помнить, заключается в том, что значение сглаживания шрифта хранится на базе по размеру. Например, на моей машине значение AppleFontSmoothing хранится в ~ / библиотеке / предпочтениях / byhost / .GlobalPreferences. ##########. Plist, где ########## Ваше оборудование UUID. Я полагаю, возможно, что могут быть 2 разных значения, хранящиеся для разных установок хоста.

Вы получаете то, что вы спрашиваете

[NSFont systemFontOfSize:18]

Они скорее всего, тонко разные шрифты от 10,5 до 10,6.Графический дизайнер сошел с ума по какой-либо причине.

Что вы получаете, если вы регистрируете вывод [NSFont systemFontOfSize:18].Это отличается от 10,5 до 10,6?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top