J'essaie de dessiner dans la police système actuellement sélectionnée en utilisant l'API ATSU dans une application Carbon. Et les polices sortent plus audacieuses que toutes les autres applications natives. Voici un exemple d'écran de ce que je parle:Les polices carbone/cacao sont différentes
http://memecode.com/images/blog/carbon-fonts.png
La ligne supérieure est XCode, et le milieu est mon application avec une police non-gras et le fond est mon application avec une police en gras . J'ai utilisé le même texte pour qu'il soit facile de voir la différence de poids entre eux. Le code que je utilise pour créer les styles que je dessine avec est:
if (Face() AND !(e = ATSUCreateStyle(&d->hFont)))
{
// Lookup ID
ATSUFontID atsuFont = 0;
e = ATSUFindFontFromName(Face(),
strlen(Face()),
kFontFamilyName,
(FontPlatformCode)kFontNoPlatform,
(FontScriptCode)kFontNoScript,
(FontLanguageCode)kFontNoLanguage,
&atsuFont);
if (!e)
{
Fixed Size;
Size = PointSize() << 16;
Boolean IsBold = Bold();
Boolean IsItalic = Italic();
Boolean IsUnder = Underline();
// Set style attr
ATSUAttributeTag Tags[] = {kATSUFontTag, kATSUSizeTag, kATSUQDItalicTag, kATSUQDUnderlineTag, kATSUQDBoldfaceTag};
ATSUAttributeValuePtr Values[] = {&atsuFont, &Size, &IsItalic, &IsUnder, &IsBold};
ByteCount Lengths[] = {sizeof(atsuFont), sizeof(Size), sizeof(IsItalic), sizeof(IsUnder), sizeof(IsBold)};
if (!(e = ATSUSetAttributes(d->hFont,
CountOf(Tags),
Tags,
Lengths,
Values)))
{
GDisplayString ds(this, "A");
d->Height = ds.Y();
return true;
}
}
}
Où « Face() » retourne une chaîne C contenant le nom de la police, « PointSize() » retourne un entier contenant la taille point I veulent etc etc. Je suis retreiving ces valeurs avec ce code:
Str255 Name;
SInt16 Size;
Style St;
OSStatus e = GetThemeFont( kThemeSmallSystemFont,
smSystemScript,
Name,
&Size,
&St);
if (e) printf("%s:%i - GetThemeFont failed with %i\n", __FILE__, __LINE__, e);
else
{
Info.Face(p2c(Name));
Info.PointSize(Size);
Status = true;
}
et elle retourne valide regardant le visage/informations pointsize, et en fait la police semble correcte à part, il recherche plus audacieux que d'autres applications. Cela peut ne pas sembler une grande différence, mais quand votre application est pleine de texte, cela devient évident. Et mon produit phare est un client de messagerie ... donc beaucoup de texte. Le code de dessin qui crée les mises en page et appelle éventuellement ATSUDrawText est assez long, et je ne suis pas sûr que cela provoque le problème .. Je pense que c'est plus lié au style ... mais si besoin par je posterai un lien à cette source plus tard.
Est-ce que quelqu'un peut aider à rendre mes polices moins audacieuses?
Mais je passe en faux que la valeur de la balise kATSUQDBoldfaceTag. Carbone déconseillé? Eh bien, c'est bien ... mais je n'ai pas le temps de réécrire mes applications en ce moment. – fret