Pergunta

Depois de alterar o BaseSDK do meu projeto para 10,6 notei que o meu desenho personalizado, o texto parece diferente (veja as imagens:o mesmo código para o desenho)

Sob 10.5 BaseSDK:image1

Sob 10.6 BaseSDK:image2

Eu estou desenhando com [(NSString *)myString drawInRect:myRect withAttributes:myAttributes].

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

Qual é a razão de tal diferença, ou apenas reduzir a espessura da fonte?Eu tentei reduzir a espessura do pelo

[NSFontManager convertWeight:NO ofFont:font]

mas não parece muito melhor...

Obrigado antecipadamente.

Foi útil?

Solução 2

Agora eu sei a razão por que isso acontece e a correcção para este problema:Parece que com 10,6 foi adicionado fonte LCD opção suavização, que é ativado em Preferências -> Aparência -> "Use LCD suavização de tipo de letra quando disponível" na caixa de seleção que está marcada por padrão.

Por isso, depois de mudar a BaseSDK do projeto para o 10.6, os textos da aplicação tornou-LCD-estilo suavizadas e à procura de todo ruim.

Portanto, a correção do problema no código para alterar as opções de suavização em gráficos de contexto antes de nossos desenhos:

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

A documentação deste método diz-nos que este parâmetro é parte dos gráficos do estado de então, se você não quiser alterar esta opção em outro tipo de letra desenhos, você deve restaurar os gráficos do estado.

Graças a @NSGod para encontrar o motivo do problema.

Outras dicas

Se nós zoom e olhar de perto em ambas as imagens, vamos notar uma diferença imediata (pelo menos eu):

enter image description here

O texto na parte superior da imagem é usando CRT-estilo de suavização de tipo de letra, enquanto o texto na parte inferior da imagem está usando Médio LCD-estilo de suavização de tipo de letra.(Todos os 3 estilos de LCD suavização de tipo de letra vai apresentar cores no anti-alias pixels).

Nós precisamos de mais informações sobre os testes de configuração para ser capaz de dizer por que isso está acontecendo.Em que versão(s) do OS X que você está testando este com?Por exemplo, foi seu aplicativo construído contra o 10.6 SDK com um destino de implantação de 10,5, a parte superior da imagem foi tirada durante o teste em OS X 10.5.x (na mesma máquina), e a menor imagem foi tirada durante o teste sob 10.6.x?Ou, tudo isso foi o teste feito no Mac OS X 10.6.x, e a construção de contra 10,5 SDK resultou na parte superior da imagem, e o edifício contra o 10.6 SDK resultou na parte inferior da imagem?O modelo de Mac você está usando?Que tipo de externo LCD ou de ecrãs CRT fazer você ter ligado, se for o caso?

Apenas um par de idéias, sem ter a informação que pediu para acima.O padrão de suavização de tipo de letra estilo é CRT em 10,5, eu acredito, e 10.6 padrões para "automático".Então, se você tem um sistema com um visor LCD e estavam testando sob 10.5, mas nunca tiver alterado o tipo de letra de suavização estilo do padrão CRT-estilo, então você gostaria de obter uma imagem como a superior.Se você, em seguida, mudar para o 10.6, no mesmo sistema, é possível que o 10.6 fonte automática de suavização automaticamente detectados em seu display LCD, e usado Médio LCD-estilo de suavização de tipo de letra, o que resultaria no "aspecto mais pesado" de texto na parte inferior da imagem.

Outra coisa a ter em mente é que a suavização de fonte de valor é armazenado em uma base host.Por exemplo, na minha máquina, o AppleFontSmoothing valor é armazenado em ~/Library/Preferences/ByHost/.GlobalPreferences.##########.plist, onde o ########## é o seu hardware UUID.Eu suponho que é possível que não poderia ser de 2 diferentes valores armazenados para diferentes configurações de host.

Você está recebendo o que você pedir

[NSFont systemFontOfSize:18]

Eles são mais prováveis sutilmente diferentes fontes entre os 10.5 e 10.6.Um designer gráfico tem loucos por qualquer motivo.

O que você ganha se você registrar a saída de [NSFont systemFontOfSize:18].É que é diferente entre os 10.5 e 10.6?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top