Je cherche à comprendre l’écart entre les tailles de police que les utilisateurs sélectionnent ou spécifient (par exemple, à l’aide de FontDialog ) et la taille em indiquée par la classe Font dans .NET.
Par exemple:
using (FontDialog dlg = new FontDialog()) { if (dlg.ShowDialog() == DialogResult.OK) { Console.WriteLine("Selected font size: " + dlg.Font.SizeInPoints.ToSsortingng("0.##")); } }
En utilisant le code ci-dessus, vous obtiendrez des résultats déroutants:
La sélection de 11 dans la boîte de dialog produit 11,25
La sélection de 12 dans la boîte de dialog produit 12
La sélection de 14 dans la boîte de dialog produit 14,25
La sélection de 16 dans la boîte de dialog produit 15,75
Ce problème se produit indépendamment de la police que vous choisissez. Comme vous pouvez le voir ci-dessus, il n’y a pas de motif dans cet écart, il semble varier de manière aléatoire entre +0.25 et -0.25.
Je contourne cela dans les interfaces utilisateur en affichant uniquement la taille de la police sous forme de nombre entier arrondi, mais je jure que j’ai vu des packages de traitement de texte / PAO permettant aux utilisateurs de sélectionner des tailles de police fractionnelles – et ces packages ne présentent pas le comportement ci-dessus. lors de l’interaction avec les boîtes de dialog de fonts Windows.
Quelqu’un peut-il fournir une explication rationnelle à cela? Existe-t-il une technique recommandée pour afficher la taille de la police dans une interface utilisateur? Qu’en est-il lorsque l’utilisateur souhaite une taille fractionnaire telle que “10.5”?
il n’y a pas de motif dans la divergence
Comme vous pouvez le constater, la taille des fonts est définie par incréments de 0,75.
Edit: Vous pouvez affiner les tailles si vous n’utilisez pas la boîte de dialog de la police, mais les résultats, je suppose, seront moins satisfaisants que les tailles “préférées”.
Considérez ces petites choses:
Ce 0,75 est regrettable! Cela signifie que si nous permettons à l’utilisateur de choisir des points directement vers le haut, le rendu idéal ne s’appuierait que sur une partie d’un point logique. Ce serait bien si nous pouvions aligner le rendu entier vers le point logique le plus proche.
Prêt? Et c’est parti!
Vous avez eu l’idée.
Rappelez-vous que ces chiffres changeront si l’utilisateur change de résolution logique (96 dpi, 120 dpi, etc.)