2017-04-03 4 views
2

tout d'abord, je veux juste savoir, pourquoi dans PYCHARM IDE sur Windows 10, alors que "Afficher seulement les polices monospaced" cochée, beaucoup de polices ne seront pas listées dans la boîte de dialogue de sélection de police de l'éditeur [settings/editor/colors et polices/font], également en mintty.Comment une police dit-elle au système d'exploitation que "JE SUIS UNE POLICE MONSPACED/FIXED-WIDTH"?

Je ne sais pas comment fonctionne le pycharm, mais la mintty utilise l'API win32 "LOGFONT". Comment le système d'exploitation Windows a-t-il pu savoir si la police est à espacement fixe (largeur fixe)?

-à-dire: "code source pro" est répertorié, « code source pro noir/extralight/lumière ... ne sont pas;

"Code fira" est répertorié, mais la lumière de code fira/moyen/rétine sont non;.

et, d'autres polices à espacement fixe ne sont pas répertoriées là si « montrer que monospaced »

il semble que PyCharm ne reconnaisse le nom de famille de polices quand elle est cochée « Afficher uniquement monospced polices »

dans OSX (Mavericks) est un peu compliqué: si le 'Afficher uniquement les polices à espacement fixe' était coché, pycharm pourrait toujours obtenir le nom de famille, mais il ne pourrait pas savoir quel poids de police est par défaut si la version de police pondérée rugueuse était installée.


puis, je l'ai essayé de modifier certaines polices, et par la façon d'avoir un coup d'oeil à la « file-info » de la police d'origine dans la forge de la police, mais je ne sais pas quelle partie à des effets vraiment WINDOWS ou PyCharm (IDEA/INTELIJ/par JDK en fait?) Pour savoir quelle police est monospace.

Dans la partie "OS/2", tous les paramètres mentionnés fixed-width/monospace/monospaced sont vérifiés, mais pas aidé, et dans pycharm Windows ne peut toujours pas les détecter. Enfin, je me demande vraiment quel est le paramètre utilisé par les fichiers TTF ou tout autre type de fichier de police pour indiquer au système d'exploitation [windows/osx/mac os/linux] que 'je suis monospace'?

Répondre

1

Une police TrueType peut contenir une table post. La table post contient un champ de 32 bits nommé isFixedPitch. Si celui-ci contient un 0, cela indique une police proportionnelle. Une police à espacement fixe devrait avoir cet ensemble à 1 (mais il est normalement recommandé qu'un moteur de police doit accepter toute valeur non nulle comme indiquant une police monospace, puisque c'est ce que les premières versions de la spécification TT requis).

Une police monospaced devrait également avoir la numberOfHMetrics dans les hhea et hmtx des tables à 3.

Il existe également des données dans les données de correspondance de police panose (dans la table OS/2) pour spécifier si une police est à espacement fixe ou non. Si je devais deviner, je dirais que Apple est plus susceptible d'utiliser la table post, tandis que Microsoft est plus susceptible d'utiliser les données Panose (mais je pourrais facilement se tromper sur l'un ou l'autre de ces deux).


Références:

  1. Apple documentation of 'post' table
  2. Microsoft OpenType Recommendations
  3. Panose Classification Metrics Guide
+0

Merci beaucoup, monde incroyable d'obtenir des réponses précieuses. il a semblé que la police que j'ai modifiée avec un panose bit '9' pour monospace était réussie et OSX l'a reconnu avec succès, et selon votre reflink # 2, Microsoft recommande d'utiliser des données panose, mais le pycharm ne pouvait pas le reconnaître, peut-être c'est le problème de pycharm ou de jdk alors. –