2012-08-29 18 views
5

- [NSString drawInRect: withAttributes:] kullanılırken, esas olarak yerleşik Helvetica Neue kullanıldığında, ancak diğer yazı tipleriyle de kullanıldığında, karakter aralığı çok kötü. Ancak, aynı dize Metin Düzenleme'de (NSTextView kullanır) oluşturulduğunda, karakter aralığı mükemmeldir. Bu iki dizeleri düşünün: (Text Edit itibaren) ikinci vaka çok daha iyi iken küçük nokta boyutları içinKullanırken kötü karakter kullanımı - [NSString drawInRect: withAttributes:]

Bad kerning

Good kerning

, (kakao içinde işlenen) ilk dava, neredeyse okunaksız olduğunu. Karakter bilgisi bilgilerinin burada kullanıldığını sanmıyorum. NSKernAttribute değerini 0,0 değerine uygularsam (belgeye göre karakter aralığı kapanır), aynı sonucu elde ederim.

Ayrıca CTLineDraw ile Çekirdek Metin kullanmayı denedim, ancak yine de hatalı karakter aralığı var. Bu yüzden sorum şu: Kakao metin sistemindeki karakterleri etkinleştirmek için yapmam gereken özel bir şey var mı? Değilse, NSTextView karakter aralığı nasıl uygulanır?

+0

Hangi işletim sistemini kullanıyorsunuz? 10.7.4'ümde bir fark yok. 72pt H.Neue için 10.6.8'de 2-piksel farkı görüyorum, fakat bu hala ekran görüntüsünden çok daha düşük. NSTextView'ınızdaki varsayılan yazım özelliklerinin zaten bir değer içermediğinden emin misiniz, 'useStandardKerning: '? – hamstergene

+0

Bu standart Helvetica Neue (sürüm 7.0d27e1) ile birlikte 10.7.4'tür. İkinci ekran resmi, yeni bir belge kullanarak Metin Düzenleme'den (uygulama). – Aderstedt

+0

Tümü, Biçim, Yazı Tipi, Kern, Varsayılanı Kullan/Yok - herhangi bir şeyi değiştirir mi? TextEdit ve özel olarak çizilmiş atıflı dize arasında bu fark yok. NSTextFieldCell ve NSButtonCell hakkında ne düşünüyorsunuz? – hamstergene

cevap

1

Üstteki örnek 'daha sıkı' ve alttaki 'gevşek', bkz -[NSTextView tightenKerning], -[NSTextView loosenKerning]. Burada Apple kafa karıştırıcı bir şekilde başkalarının 'Takip' olarak adlandırdığı şeyi 'Kerning' olarak adlandırıyor. Her glif arasında, yazı içinde belirtilen 'karakter ilerlemesi' sonrasında, metnin görünür, iyi, daha sıkı veya daha gevşek görünmesini sağlamak için sabit bir miktarda ek alan (pozitif veya negatif) uygulanır.

Varsayılan 'sıkılık' veya 'gevşeklik', yazı tipi değil, görüntü oluşturma motorunun bir özelliğidir ve farklı OSX sürümleri, uygulamalar veya UI öğeleri arasında kolayca farklı olabilir.

Bir yazı tipinde, karakter aralığı tablosu, belirli bir çift glifler tarafından gereken karakter ilerlemesinin ayarlanması içindir, örneğin, varsayımsal yazı tipimde: 'AV' karakter aralığı olarak listelenir - 'A' daha küçük olmalıdır Bunu takip eden karakter bir 'V' olduğunda ilerler.

OSX yazı tipleri Helvetica ve HelveticaNeue (ve diğer yazı tiplerinin çoğunda) hiçbir karakter bilgisine sahip değildir, bu nedenle örnekleriniz için karakter bilgilerinin kullanılmadığı konusunda haklısınız.

Yazı tipinde Kerning bilgisi yoksa "Sorguyu Kakao metin sisteminde nasıl etkinleştiririm?" anlam ifade etmiyor ya da düşündüğünüzü kastetmiyor (?).

+0

Gerçek yazı tipindeki 'kern' tablosuna bakıldığında Helvetica Neue, 98 karakter aralığı içeren bir karakter aralığı tablosunu içerir. Söylemeni sağlayan şey nedir? – Aderstedt

+0

Haklısın, biraz var. Şaşırdım ve eminim ki hiç yoktu. Yine de, verilen örnekle alakalı değil, değil mi? diğer bir deyişle- – hooleyhoop

+0

rakamları içeren çiftler yok ve çoğu çift sadece negatif ayarlardır. Yani, muhtemelen haklısınız, bu farklı bir izleme. Varsayılan izlemenin neden 10.7 ile 10.8 arasında çok farklı olduğunu merak ediyorum. Bunun için çözümüm, çıkışı 10.7 kullanıcı için "sıkışık" görünmek ve 10,8'e yükseltmek için rahatsız edenleri bilgilendirmek. – Aderstedt