Retrouver le nom d'une police de caractères avec le registre

Soyez le premier à donner votre avis sur cette source.

Vue 31 036 fois - Téléchargée 729 fois

Description

Retrouve à partir du registre le nom d'une police de caractères, et dit au passage si elle est TrueType (on le savait depuis l'extension :-). Celle-ci doit bien sûr y être référencée pour en connaître son nom.

Le processus énumère toutes les polices dans une liste et retrouve par l'analyse de toutes ces clés le nom recherché. Le code ne cherche donc pas bêtement le contenu d'une clé précise.

Conclusion :


Vous pouvez toujours aller voir http://altert.family.free.fr/

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
16
J'ai refait le code (pas en entier bien sûr): création d'une petite unité à part que tous pourront reprendre. Par ailleurs, le problème de GetWindowsDirectory est règlé.

Plusieurs choses sur ce projet:
1) pourquoi ne pas avoir utilisé Screen.Fonts ? L'intérêt est nul puisque cela ne nous donne pas le nom du fichier. De plus, le nom donné par Screen.Fonts n'est pas le nom de la clé dans le registre: respectivement "Arial" et "Arial (TrueType)".
2) avant la mise à jour, il n'y avait que la TListBox et on ne voyait pas très rapidement le nom des polices. J'ai donc ajouté un TListView. Critique: si j'avais énuméré les valeurs du registre puis lu leur contenu, ça aurait été plus rapide. Certes, mais cette méthode n'illustre pas le principe du projet.
3) Le TListView ne fait pas la liste de toutes les polices du système mais seulement de celles qui se trouvent dans un dossier précis donné par l'utilisateur. Si je sélectionne 5 polices et que je les met dans un dossier, si je demande au programme de me donner leurs noms, je n'aurais que leurs noms (et pas les autres). Par défaut, dans le programme, le répertoire est c:\windows\fonts\. Mais en modifiant le programme, on arrive facilement à quelques résultats.

J'espère avoir été compréhensible...
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
16
[DelphiProg]
1) J'ai admis que la majeure partie des gens ont un simple c:\windows\.
2) Je ne connaissais pas GetWindowsDirectory, mais une autre qui détecte C:\Program Files\. C'est surement pas si différent ??
3) Pourtant, je fais l'effort de séparer les codes. J'ai justement fait une procédure qui peut être réutilisable, mais je ne peux toujours pas m'empêcher d'utiliser l'interface. Une procedure avec 40000 paramètres n'est pas forcément agréable. De plus, il suffit de remplacer que quelques lignes...

[DrJerome]
1) Je n'ai pas détecté direct dans le fichier, car je ne suis pas renseigné au niveau des entêtes et de la manière dont les fichiers TTF sont bâtis. Donc, le registre est facile...
2) Ton code à l'air sympa.

[DelphiCool]
Je suis toujours dans l'excellent bon vieux Win98 et ne connait pas la disposition de WinXP. Ce décalage temporel sera prochaînement résolu.
Messages postés
455
Date d'inscription
mardi 24 juillet 2001
Statut
Modérateur
Dernière intervention
10 mars 2009

je crois que le mieux c'est que tu créer une variable globale (windows et system)

et tu recherche les chemin avec les API windows

J'ai XP Pro et pas de répertoire WINNT
Messages postés
455
Date d'inscription
mardi 24 juillet 2001
Statut
Modérateur
Dernière intervention
10 mars 2009

comme dit delphiprog.
il est preférable de mettre ceci dans FormCreate

var Arr :Array[0..255]of char;
Windows :string;
begin
GetWindowsDirectory(Arr, 255);
Windows := Arr;
if Windows[length(Windows)] <> '\' then Windows := Windows + '\';

frPolices.Show;
EnumFiles( cbPolices.Items, Windows + '\fonts', '*.ttf;*.fon');
end;
Messages postés
436
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015

vous reconnaitrez dans ces deux JPG
(http://jerome-rod.chez.tiscali.fr//images/glyf1.JPG
et
http://jerome-rod.chez.tiscali.fr//images/glyf2.JPG)

l'indien que j'ai créé en caractère de police et que j'ai mis dans mon, logo :
http://jerome-rod.chez.tiscali.fr//jroddore.gif


DrJerome JROD DorotheeJ
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.