Supposons que j'ai une police dans un format modestement populaire ( .ttf
, .otf
, etc.), et je les droits légaux pour le modifier. En l'état, il s'agit d'une police normale avec différents caractères (glyphes?) Variant en largeur et en espacement. Comment pourrais-je transformer cette police en police à espacement fixe (par exemple, tous les caractères ont les mêmes dimensions, etc.)?
Si possible, existe-t-il des outils automatisés qui peuvent vous aider à deviner? (Les résultats ne doivent pas nécessairement être parfaits .) La police peut être volumineuse (plusieurs caractères) et sa modification peut être fastidieuse.
Toutes les suggestions sur le problème sont très appréciées! :)
Avertissement: désolé si cela est considéré comme un simple guide , mais Google a très peu d'informations sur le sujet, et pour un programmeur qui ne traite pas beaucoup des graphiques ou des polices, ce n'est certainement pas simple . Aussi, désolé si ma terminologie est désactivée ...: P
Réponses:
Si vous n'avez pas encore de logiciel d'édition de polices, la bonne nouvelle est que Fontforge est gratuit et open source. La mauvaise nouvelle est qu'il a une courbe d'apprentissage relativement élevée et une interface utilisateur quelque peu inhabituelle.
Fondamentalement, pour qu'une police soit considérée comme monospace, chaque glyphe doit avoir la même largeur, jusqu'au même nombre exact d'unités. Cela inclut même les glyphes qui devraient normalement avoir une largeur nulle ou une certaine largeur (tels que les espaces em, les tirets em, etc.).
Voir l'entrée FAQ "Comment marquer une police comme étant à espacement fixe?"
Pour réellement modifier la largeur de tous les glyphes à la fois dans un lot, vous pouvez simplement aller dans "Metrics" -> "Set Width" dans le menu, mais je ne m'attendrais pas à ce que cela fonctionne pour tous les caractères. Vous devrez probablement modifier manuellement tous les caractères larges tels que «W», «M», «@», etc. afin qu'ils ne se chevauchent pas. Et la combinaison de signes diacritiques (accents destinés à être "combinés" avec des lettres au moment du rendu) peut avoir toutes leurs positions gâchées (ce qui est difficile à tester si vous êtes américain / anglais et que vous ne les utilisez presque jamais).
Une personne qui sait créer et modifier des polices serait en mesure de faire cette tâche, mais ce ne serait toujours pas simple.
la source
Set Width
dansMetrics
le menu déroulant sous: définissez tous les glyphes sur une largeur moyenne (modifiez plus tard si nécessaire) et enfin, sélectionnezEqualise Sidebearings
également sous leMetrics
menu pour centrer les glyphes dans le carré em. Bien sûr: étudiez comment d'autres ont surmonté les difficultés particulières de conception de polices à largeur fixe réussies.thomasrutter offre plus d'une réponse technique; Je vais vous montrer quelques principes de typographie pour vous décourager de faire ce que vous voulez faire, sauf si vous en avez vraiment besoin.
Zoomez sur un «i» et un «m» dans Consolas ou Courier, puis Corbel ou Verdana. Remarquez à quel point les lettres doivent être différentes pour que le monospace fonctionne. Pour convertir correctement une police en monospace, il faut beaucoup de connaissances et de travail. L'idée générale d'étirer les polices est désapprouvée par tout concepteur digne de ce nom, c'est pourquoi même passer de la normale à une variante condensée prend une refonte de tous les glyphes.
Donc, regardez Consolas vs Corbel ici et voyez comment, quand il est zoomé, vous pouvez regarder 1) l'espacement entre les lettres, 2) la cohérence de l'épaisseur du trait et 3) la façon dont chaque lettre s'inscrit dans sa boîte. Regardez la face à espacement fixe (première) par rapport à la face à espacement variable (seconde), puis voyez les troisième et quatrième pour voir ce qui se passe lorsque vous essayez de vous étirer et d'espacer pour la rendre égale. Pour le quatrième, j'ai fait le squish Ms à 75% pour entrer dans la boîte, mais maintenant ils sont beaucoup plus maigres que les is. ce sera perceptible quand il sera utilisé.
Donc, en bref: ne jouez pas avec les polices de caractères; ils sont beaucoup plus formidables que vous ne le pensez!
la source
Je suis tombé sur ce problème en essayant de modifier le code source en faisant un usage intensif des symboles Unicode. Dans ce contexte, la plupart du code source est affiché dans une police monospace, et quelques symboles qui ne sont pas couverts par cette police finissent par ruiner l'alignement.
Bien qu'il soit vrai que "monospacifier" une police complète produira des résultats horribles (crénage, largeurs de trait et équilibre général seront entièrement gâchés), l'importation de quelques symboles d'une police à largeur variable dans une police monospace donne des résultats décents. L'animation ci-dessous montre l'utilisation de Consolas + Symbola comme solution de rechange, par rapport à l'utilisation de Consolas + une version monospacifiée de Symbola:
Cela est inutile pour une typographie avancée, mais c'est un bon compromis si vous souhaitez utiliser des symboles dans votre code source sans ruiner l'indentation. Il y a cependant un certain nombre de mises en garde:
J'ai lancé un projet GitHub pour gérer automatiquement ce type de transformations de polices. Il comprend des polices pré-générées et du code utilisant les liaisons Python de fontforge.
Voir aussi cette question emacs.se .
la source
En traitement de texte, j'ai: (1) créé une table; (2) divisé en colonnes - une colonne pour chaque lettre; (3) centré les lettres; et (4) rendu toutes les frontières, internes et externes invisibles.
la source