2010-02-21 6 views
10

Lorsque j'appelle la méthode PrivateFontCollection.AddFontFile dans Mono.net Elle renvoie toujours une famille de polices standard. Ce bug a déjà été signalé sur plusieurs sites Web, mais autant que je sache, sans moyen de le résoudre. Le bug lui-même n'est pas encore fixé dans les bibliothèques mono. Y at-il une solution de contournement pour cela?Solution de contournement pour le bogue Mono PrivateFontCollection.AddFontFile

EDIT: En réaction à la réponse de sbire je posterai le code:

PrivateFontCollection pfc = new PrivateFontCollection(); 
pfc.AddFontFile("myFontFamily.ttf"); 
myFontFamily = pfc.Families[0x00]; 
Font myFont = new Font(myFontFamily,14.0f); 

Je sais que ce code fonctionne bien sur le cadre de Microsoft.Net, mais lors de l'exécution sur Mono, il donne juste une norme font-family (je pense que c'est Arial) avec le nom de myFontFamily.ttf

+4

Avez-vous déposé un bug dans bugzilla de Mono? C'est la seule façon pour l'équipe de savoir qu'il y a un bug à corriger en premier lieu. –

+0

Le bug a déjà été signalé par quelqu'un d'autre en novembre sur http://bugzilla.ximian.com/show_bug.cgi?id=77498 –

+0

Ce bug est marqué comme RESOLVED, et il s'agissait d'un crash. Maintenant, le crash est corrigé, mais le comportement est toujours faux. Veuillez déposer un nouveau bug avec le comportement attendu approprié. Merci! –

Répondre

1

Trouvé cet article de google. Si c'est une consolation, j'éprouve le même problème avec AddMemoryFont (fonctionne bien sur Windows, mono me donne une police générique). Si c'est une consolation, on dirait que c'est un problème avec Mono, et pas votre code.

En explorant la source, System.Windows.Drawing.PrivateFontCollection est principalement juste un wrapper autour de GDIPlus.GdipPrivateAddFontFile, qui est lui-même un wrapper autour de FcConfigAppFontAddFile de fontconfig. La raison pour laquelle il ne semble pas y avoir d'erreur est que GDIplus ne vérifie pas la valeur de retour de fontconfig, donc il semble que fontconfig ne soit pas capable de lire la police pour une raison quelconque, mais GDIplus ne la connait pas , donc PrivateFontCollection non plus.

Questions connexes