2012-07-10 2 views
0

Pour une raison quelconque, lorsque j'affiche le mot "Butterfly" (ou toute autre chose avec un "fl"), le "f" et le "l" se connectent en haut (voir image ci-dessous). La police est Century Gothic Bold. C'est le code que j'utilise pour configurer UILabel. La chaîne pour l'étiquette est récupérée d'une plist:Caractères "f" et "l" adjacents

UILabel *label = [[UILabel alloc] init]; 
label.text = [self.flashcardDelegate.alphabetArr objectAtIndex:index]; 
label.textColor = [UIColor colorWithRed:.733 green:0 blue:.03137 alpha:1]; 
label.backgroundColor = [UIColor clearColor]; 
label.frame = CGRectMake(ipad ? 210.0f : 65.0f, 
         ipad ? 650.0f : 300.0f, 
         ipad ? 340.0f : 185.0f, 
         ipad ? 250.0f : 135.0f); 
label.font = [UIFont fontWithName:@"CenturyGothic-Bold" size:ipad ? 200 : 100]; 
label.textAlignment = UITextAlignmentCenter; 

Une idée pourquoi cela se produirait? Merci.

screenshot

Répondre

5

Cela s'appelle une ligature, et c'est intentionnel. Vous pouvez modifier la manière dont le système d'exploitation rend les ligatures en utilisant l'attribut kCTLigatureAttributeName si vous utilisez Core Text ou NSLigatureAttributeName si vous utilisez NSAttributedString.

+0

mon problème est le même, "f" et "i" fusionnent avec la police "Late-Bold" sur iOS NSString. Je n'utilise aucun CoreText ou NSAttributedString. De l'aide? – NaXir

1

Qu'est-ce que vous voyez est connu comme un ligature - l'idée était à l'origine pour le rendre plus facile à manipuler Crénage sur des blocs métalliques pour les presses d'impression (utiliser un glyphe pour les paires de caractères couramment jointes) , mais a maintenant persisté dans l'ère moderne comme une décision largement stylistique. Je ne sais pas comment le désactiver dans l'API, mais j'espère que ces informations supplémentaires vous aideront à trouver la réponse.

0

Voici une courte procédure. iOS 6.0+

NSMutableAttributedString *attributedString; 
attributedString = [[NSMutableAttributedString alloc] initWithString:label.text]; 
[attributedString addAttribute:NSLigatureAttributeName value:@0 range:NSMakeRange(0, label.text.length)]; 
[label.text setAttributedText:attributedString]; 
[attributedString release]; 
Questions connexes