Question

Je souhaite définir le style de police italique dans UITextView, mais la police italique ne fonctionne tout simplement pas pour le chinois/japonais/coréen sur iOS 7. Quelqu'un pourrait-il m'aider ?

Était-ce utile?

La solution

Comme il n’existe pas de polices chinoises de style italique sur iOS, vous devez utiliser Transformation affine pour incliner la police chinoise de style normal.

Le code ci-dessous donne une inclinaison de 15° Heiti SC Medium:

CGAffineTransform matrix = CGAffineTransformMake(1, 0, tanf(15 * (CGFloat)M_PI / 180), 1, 0, 0);
UIFontDescriptor *desc = [UIFontDescriptor fontDescriptorWithName:@"Heiti SC Medium" matrix:matrix];
textView.font = [UIFont fontWithDescriptor:desc size:17];

Effet réel :

enter image description here

Autres conseils

Je ne résolvez pas votre problème, mais de vous rappeler que ce type de "polices italiques programmatiques" a une très mauvaise lisibilité.

Pour le texte CJK, la bonne façon d'exprimer l'accent (ou une citation) est d'utiliser un autre style (généralement de police Serif). Pour les chinois simplifiés, utilisez Songti, Fangsong ou Kaïti au lieu d'être mis sur l'emphase si votre texte normal utilise Heiti (IOS par défaut). Je ne connais pas très connaître le coréen et le japonais, mais ils utilisent des approches similaires.

Voici une liste de polices pour iOS 7: http:// support. Apple.com/kb/ht5878?viewLocale=en_us&locale=fr_us Japonais Mincho Police "Hiragino Mincho Pron" est disponible directement. Les polices supplémentaires chinoises ne sont pas installées par défaut. Vous aurez besoin de télécharger en premier. Veuillez vous reporter à cet exemple pour savoir comment installer des polices supplémentaires fournies par le système: https://github.com/fdstevex/ FDSFontDownloader / .

Je sais que c'est un peu compliqué, mais c'est vraiment comment nous faisons en italique.

d'accord avec @ an0 mais de cette manière de faire transformer des transformations sont mieux à lire et à comprendre

CGAffineTransform CGAffineTransformMakeSkew (CGFloat degree) {
    CGAffineTransform t = CGAffineTransformIdentity;
    t.c = (degree * M_PI / 180.0f);
    return t;
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top