Question

Je dessine du texte dans le code multiplateforme Mac / iOS à l'aide de CoreText. J'utilise peut-être des polices qui n'ont pas une véritable version "italique" installée dans le système d'exploitation pour tous les utilisateurs, mais ils doivent être conscients que le texte est en italique.

Avec nsAttributedString-DrawatPoint d'Appkit: je peux utiliser nsobliquenessAtTributename pour rendre le texte incliné (et donc avoir l'air italique - enfin, oblique). CoreText ne semble pas avoir d'équivalent pour cet attribut. Au moins, je n'en ai trouvé aucun dans CTSTRINGATTRIBUTES.h (pas qu'il y ait une documentation même des années après la sortie de CoreText).

Est-ce que quelqu'un sait comment obtenir du texte oblique avec CoreText sur iOS?

Était-ce utile?

La solution

Afficher une police qui n'a pas de trait italique car l'italique est généralement une mauvaise idée. Cependant, je peux comprendre qu'il y a des cas où cela doit être appliqué de toute façon.

La seule solution qui me vient à l'esprit en ce moment est de créer une police personnalisée avec une matrice de police cisaillée:

CGAffineTransform matrix = CGAffineTransformMake(1, tan(degreesToRadians(0)), tan(degreesToRadians(20)), 1, 0, 0);  
CTFontRef myfont = CTFontCreateWithName(CFSTR("Helvetica"), 48, &matrix);

Vous devrez jouer avec la matrice et voir ce qui apporte les meilleurs résultats. (S'il vous plaît, pas qu'il s'agit d'un faux mélange de code hors de ma tête et d'Internet.)

Autres conseils

J'essaierais d'utiliser l'argument Affine Transform CTFontCreateWithName() avec une matrice de cisaillement. Par exemple

CGAffineTransform matrix = { 1, 0, 0.5, 1, 0, 0 };
CTFontRef myFont = CTFontCreateWithName(CFSTR("Helvetica"), 48, &matrix);

Cela créera un biais assez extrême (en supposant que je l'ai bien compris), mais vous avez l'idée.

Mise à jour:

En réalité, La documentation semble impliquer que c'est la bonne façon de faire les choses.

Je n'ai pas essayé, mais selon Programmation iOS poussant les limites, qui passe kCTFontItalicTrait à CTFontCreateCopyWithSymbolicTraits Choisira le vrai italique s'il est disponible, et oblique autrement. Il y a aussi kCTFontSlantTrait Pour une inclinaison décimale manuelle jusqu'à 30 degrés.

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