Domanda

Dopo aver cambiato il BasosDK del mio progetto a 10.6 ho notato che il mio testo disegnato personalizzato sembra diverso (guarda le immagini: lo stesso codice per il disegno)

Under 10.5 BasesDK: immagine1

Under 10.6 BasesDK: immagine2

Sto disegnando con [(NSString *) MyString Drawinrect: Myrect WithAttributes: myattributes].

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

Qual è la ragione di tale differenza, o solo come ridurre lo spessore del carattere? Ho provato a ridurre lo spessore di

[NSFontManager convertWeight:NO ofFont:font]

Ma non sembra molto meglio ...

Grazie in anticipo.

È stato utile?

Soluzione 2

Ora conosco il motivo per cui succede e la correzione di questo problema: Sembra che con 10.6 sia stata aggiunta opzione LCD Font LCD, che è abilitata nelle preferenze -> Aspetto -> "Utilizzare il carattere LCD Smoothing quando disponibile" come casella di controllo che viene controllata per impostazione predefinita.

Ecco perché dopo aver cambiato il basosdk del progetto a 10.6, i testi nell'applicazione sono diventati LCD-Style levigati e sembrando male.

Quindi la correzione del problema nel codice è modificare le opzioni di levigatura nel contesto grafico prima dei nostri disegni:

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

La documentazione di questo metodo ci dice che questo parametro fa parte dello stato grafico, quindi se non si desidera modificare questa opzione in altri disegni di font, è necessario ripristinare lo stato grafico.

Grazie a @nsgod per trovare il motivo di questo problema.

Altri suggerimenti

Se ingrandiamo e guardiamo da vicino in entrambe le immagini, noteremo una differenza immediata (almeno lo faccio):

Inserisci Descrizione dell'immagine qui

Il testo nell'immagine superiore utilizza la levigatura del carattere in stile CRT, mentre il testo nell'immagine inferiore utilizza la levigatura del carattere stile LCD medio. (Tutti e 3 gli stili del LCD Font Smoothing introdurranno i lanci a colori nei pixel anti-alias).

Avevamo bisogno di maggiori informazioni sulla tua configurazione dei test per poter dire perché sta accadendo. Sotto quale versione / i di OS X stai provando questo? Ad esempio, la tua app è stata creata contro il 10,6 SDK con un obiettivo di distribuzione di 10.5, l'immagine superiore è stata presa durante il test in OS X 10.5.x (sulla stessa macchina), e l'immagine inferiore è stata presa durante il test inferiore a 10.6.x ? Oppure, è stato fatto tutto il test in Mac OS X 10.6.x, e la costruzione contro il 10,5 SDK ha portato all'immagine superiore e la costruzione contro il 10,6 SDK ha portato all'immagine inferiore? Che modello Mac stai usando? Che tipo di display LCD o CRT esterni hai collegato, se presente?

Solo un paio di idee, senza avere le informazioni poste sopra. Lo stile di levigatura del carattere predefinito è CRT in 10.5, credo, e 10,6 impostazioni predefinite a "Automatic". Quindi, se si dispone di un sistema con un display LCD e si stavano testando sotto 10.5, ma non hanno mai cambiato lo stile Lisciatura del carattere dallo stile predefinito del CRT, quindi avresti ottenuto un'immagine come quella superiore. Se si è quindi passata a 10.6 sullo stesso sistema, è possibile che il carattere automatico automatico 10.6 ha rilevato automaticamente il display LCD, e utilizzato la levigatura del carattere del carattere in stile LCD medio, che comporterebbe il testo "più pesante" nell'immagine inferiore .

Un'altra cosa da tenere a mente è che il valore di levigatura del carattere è memorizzato su base a-host. Ad esempio, sulla mia macchina, il valore AppleFontSmoothing viene memorizzato in ~ / libreria / preferenze / byhost / .globalpreferences. ##########. Plista, dove è il ################. il tuo hardware uuid. Suppongo che sia possibile che ci possano essere 2 valori diversi memorizzati per diverse configurazioni host.

Stai ottenendo ciò che chiedi

[NSFont systemFontOfSize:18]

Sono più probabili caratteri sottilmente diversi tra 10,5 e 10.6.Un grafico è impazzito per qualsiasi motivo.

Cosa ottieni se si registra l'uscita di [NSFont systemFontOfSize:18].È diverso tra 10,5 e 10,6?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top