Polices de texte dans MicroStation


 Produit:MicroStation
 Version:V8i & CONNECT
 Environnement:N\A
 Area:Annotations
 Subarea:N\A

Cet article décrit l’ensemble d'informations relatives aux polices de texte dans MicroStation.

Pourquoi mes polices ne sont-elles pas disponibles dans le sélecteur de polices ?

Vous trouverez ci-dessous quelques raisons courantes pour lesquelles vos polices ne sont pas visibles dans les sélecteurs de polices et/ou les messages d'avertissement de substitution de polices dans le centre de messages.

Masquage des noms de polices en double

Résumé :

Les polices RSC cachent les polices SHX, et les polices RSC et SHX cachent les polices TrueType (par nom).

Que faire ?

Désactivez le masquage complet des polices, ou masquez manuellement les polices non souhaitées afin que les polices souhaitées soient visibles. Voir la section "Fichier de configuration des polices" dans la rubrique d'aide de MicroStation : Accueil > Composition de dessin > Annotations > Texte > Utilisation des polices Lien

MicroStation V8i a introduit la possibilité de masquer les polices avec des noms en double ; c'est le comportement par défaut. Cela peut se produire si vous avez des polices de types (RSC - polices de ressources MicroStation, SHX - polices AutoCAD et polices TrueType), mais avec le même nom (par exemple "Arial").

RSC cache les polices de types SHX parce que MicroStation peut générer des polices SHX dans le but de les exporter vers DWG ; cela signifie que vous voudrez toujours utiliser la police RSC appropriée et ignorer les variantes SHX, à moins que vous ne deviez travailler directement avec le fichier DWG. Les SHX (et RSC) cachent les TrueType car au fil des ans, de nombreuses polices RSC et SHX ont pu être converties en équivalents TrueType pour diverses raisons. Préférer les polices TrueType pourrait potentiellement empêcher l'utilisation de nombreuses polices SHX et/ou RSC.

Le masquage des polices peut être complètement désactivé (trouvez l'élément HideDuplicateNames dans votre fichier de configuration et changez sa valeur de "true" à "false"), ou pour des polices spécifiques. Voir la page Wiki du fichier de configuration des polices MicroStation. Le masquage de certaines polices peut être la meilleure option car il préserve le comportement prévu ci-dessus, mais permet de choisir la police voulue dans certains cas.

Il peut également être préférable de supprimer la ou les polices de niveau inférieur en cause. Les polices comme "Arial" (normalement TrueType) sont parfois cachées en raison des équivalents RSC existants ; les polices TrueType présentent de nombreux avantages, et les versions TrueType, lorsqu'elles existent, sont recommandées à la place des versions RSC (ou SHX).

Définitions des polices introuvables

Résumé :

Le centre de messagerie de MicroStation indique qu'il substitue des polices parce qu'elles sont introuvables, ou parce que vous pensez que la police devrait être disponible mais qu'elle n'est pas cachée comme indiqué ci-dessus.

Que faire ?

Assurez-vous que les polices se trouvent à des endroits où MicroStation peut les trouver ; ces endroits peuvent varier en fonction du type de police (voir ci-dessous). MS_FONTPATH peut être utilisé comme chemin de recherche pour tous les types de polices :

Polices TrueType : Elles sont normalement installées au niveau du système et se trouvent dans le répertoire des polices de votre Windows (%SYSTEMROOT%\Fonts, par exemple C:\Windows\Fonts). Vous devez être administrateur sur votre ordinateur pour installer les polices TrueType à ce niveau. V8i vous permet également d'ajouter des chemins de recherche via la variable de configuration MS_FONTPATH. V8i recherche également dans le même répertoire que le fichier de conception si la police n'est pas trouvée autrement (TrueType et SHX uniquement).

Polices RSC : Ces polices ne peuvent pas être installées au niveau du système, et doivent se trouver à un emplacement trouvé par les variables de configuration. Les polices RSC sont rassemblées dans des bibliothèques de polices RSC (fichiers *.RSC) et sont généralement déployées dans un espace de travail ou dans le répertoire "system" de votre espace de travail local. MicroStation recherchera tous les fichiers de ressources dans les emplacements trouvés par les variables de configuration suivantes : MS_SYMBRSRC et MS_FONTPATH, voir comment les ajouter dans le lien-ci. Elle construit une liste de fichiers d'abord de MS_SYMBRSRC, puis de MS_FONTPATH. Lors de la lecture des polices RSC, s'il y a des conflits de numéros de police, c'est la dernière police ajoutée à la liste de fichiers qui l'emporte. S'il y a plusieurs bibliothèques de polices dans le même répertoire, l'ordre est alphabétique.

Polices SHX : Ces polices ne peuvent pas être installées au niveau du système, et doivent se trouver à un emplacement trouvé par les variables de configuration ou les entrées de registre AutoCAD, ou dans le même répertoire que le fichier DGN ou DWG dans lequel il est référencé. MicroStation effectuera une recherche dans le répertoire des polices d'AutoCAD (tel que dicté par les entrées de registre AutoCAD décrivant la dernière version d'AutoCAD), ainsi que dans tous les emplacements identifiés par les variables de configuration MS_FONTPATH et MS_DWGFONTPATH.

API : Qu'est-ce qu'un numéro de police ? (et pourquoi vous ne devriez pas les utiliser)

La plupart des informations suivantes proviennent du fichier d'en-tête FontManager.h de l'API publique, qui contient également des informations supplémentaires.

Les polices sont identifiées par leur nom et leur type. Cependant, il serait inefficace de stocker une copie du nom de la police chaque fois qu'elle est référencée dans un fichier de conception. C'est pourquoi MicroStation stocke une "table des polices" dans la zone de stockage hors modèle des fichiers de conception. La table des polices stocke une correspondance entre un "numéro de police" et un nom de police. Ainsi, pour un fichier de conception donné, tous les éléments qui font référence à un numéro de police donné se réfèrent à la même police. Toutefois, il devrait être évident que les éléments d'un fichier de conception différent peuvent se référer à la même police par le biais d'un numéro de police différent. Notez également qu'il n'existe qu'une seule table des polices pour l'ensemble du fichier de conception, afin que tous les éléments de tous les modèles utilisent la même table de polices.

Pour trouver un objet Font à partir du numéro de la police dans un élément, la procédure est la suivante

  1. Obtenir le fichier DgnFile qui contient (ou contiendra) l'élément
  2. Obtenir la FontNumMap de ce fichier DgnFile via l'une des méthodes de FontManager
  3. Appelez GetFont ou ResolveFont sur la FontNumMap pour obtenir un pointeur vers la police

Il existe une méthode pratique sur FontManager pour renvoyer une FontNumMap à partir d'un DgnModelRef, car c'est souvent la valeur la plus pratique pour trouver un DgnFile. Notez que c'est simplement une méthode de commodité et que cela n'implique pas qu'il y ait une FontNumMap associée aux DgnModelRef. Les DgnModelRef sont associés à des DgnFiles et les DgnFiles ont des FontNumMaps. Par conséquent, tous les appels à GetFontMap via DgnModelRef depuis le même DgnFile retourneront la même valeur.

Il peut y avoir une certaine confusion sur les numéros de police liés aux API existantes. Par exemple :

-Le numéro de polices varie : La plupart des API MicroStation existantes codent la signification des valeurs des numéros de police. Elle définit implicitement que les numéros de police de 0 à 255 sont des polices RSC, les numéros de police de 256 à 1023 sont des polices SHX et les numéros de police 1024 et plus sont des polices TrueType. L'une des raisons pour lesquelles ces plages sont implicites est que la table des polices ne stocke qu'une correspondance entre le numéro de la police et le nom de la police. Elle ne stocke pas le type de police. Par conséquent, le numéro de la police spécifie implicitement le type de police. Rétrospectivement, cette association entre le numéro de police et le type de police est une erreur et entraîne des limitations et des erreurs. Dans une future version de MicroStation, cette limitation sera corrigée et les numéros de police n'impliqueront PAS le type de police. Les programmeurs ne devraient jamais, désormais avec l'API FontManager, présumer d'une association entre le numéro et le nom de la police. La bonne façon d'indiquer le type de police pour un numéro de police est d'obtenir un objet Font pour la police, et de l'interroger directement.

-Les numéros de police RSC : Les polices RSC existaient avant l'invention des tables de polices. Une police RSC donnée a donc le même numéro de police dans tous les fichiers. [N.B. En fait, les polices RSC n'apparaissent même pas dans la table des polices. Il s'agit là d'une grave limitation dans la mesure où il est impossible de dire le nom de la police RSC référencée dans un élément sans la bibliothèque de polices appropriée (.rsc), et la police changera de manière inattendue si une bibliothèque de polices différente de celle d'origine est présente sur l'ordinateur cible]. Par conséquent, les programmeurs paresseux ou non informés peuvent passer "n'importe quel" fichier pour rechercher une RSC et celle-ci réussira. Il est préférable d'oublier ce fait et d'écrire un code qui fonctionne pour tous les types de polices.

Questions sur les numéros de police communs

Q : Comment obtenir le numéro d'une police de caractères ?

R : Cette question n'a aucun sens. La même police peut être référencée par de nombreux numéros de police différents provenant de différents fichiers de conception. Maintenant, si la question est "Comment puis-je déterminer si une police existe dans la table des polices pour un fichier de conception et, si oui, par quel numéro", alors la réponse est d'obtenir la FontNumMap pour ce fichier et d'appeler GetFontNumber.

Q : Comment obtenir une police à partir d'un numéro de police ?

R : La question n'a de sens que si vous qualifiez le numéro de police avec un DgnFile. Dans ce cas, obtenez la FontNumMap du fichier et appelez soit GetFont soit ResolveFont.

Voir Aussi

Bentley communities

Autres sources linguistiques:

English