IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

Récupérer la liste des fonts TTF pour Reportlab


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut Récupérer la liste des fonts TTF pour Reportlab
    Bonjour à tous,

    Je cherche à récupérer la liste de toutes les polices True Font installées sur un ordinateur (nom et fichier ) afin de pouvoir les enregistrer sous ReportLab exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pdfmetrics.registerFont(TTFont('FranklinGothicBookBold', 'FRAHV.TTF'))
    Je sais qu'elles se trouvent sous windows dans le répertoire "fonts" mais je ne sais pas en faire une liste.
    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Triton972 Voir le message
    Je sais qu'elles se trouvent sous windows dans le répertoire "fonts" mais je ne sais pas en faire une liste.
    Vous devriez pouvoir faire çà avec os.listdir ou glob.glob.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Points : 207
    Points
    207
    Par défaut
    Bon trouver la liste des fonts se fait bien effectivement avec glob.glob par contre, trouver les informations à l'intérieur des fichiers de Police n'est pas vraiment intuitif. Je vous livre mes trouvailles et mes adaptations.
    Mes recherches m'ont emmené vers http://www.starrhorne.com/2012/01/18...mand-line.html que j'ai adapté pour obtenir ce que je recherchais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    from fontTools import ttLib
    import glob
    import sys, os
     
    path = "c:\\windows\\fonts\\*.ttf"  
    liste = glob.glob(path)
    FONT_SPECIFIER_NAME_ID = 4
    FONT_SPECIFIER_FAMILY_ID = 1
    for elem in liste:
        font = ttLib.ttFont.TTFont(elem)
        name = ""
        family = ""
        records = font['name'].names
        for record in records:
            if b'\x00' in record.string:
                # pour évacuer les polices exotiques ...
                continue
            else:   
                #name_str = record.string.decode('utf-8')
                name_str = record.string.decode('latin-1')
            if record.nameID == FONT_SPECIFIER_NAME_ID and not name:
                name = name_str
            elif record.nameID == FONT_SPECIFIER_FAMILY_ID and not family: 
                family = name_str
            if name and family:
                break
        if name:
            name = name.replace(" ","")
            file = os.path.basename(elem)
            print("Font : {} - Fichier : {}".format(name, file))
            pdfmetrics.registerFont(TTFont(name, file))
    En espérant que cela pourrait être utile pour certains ...

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/05/2017, 14h48
  2. Réponses: 1
    Dernier message: 29/08/2015, 16h18
  3. fonction table pour récupérer la liste des jours entre deux dates
    Par elmoul7ak dans le forum Développement
    Réponses: 2
    Dernier message: 01/05/2010, 13h22
  4. Un subselect pour récupérer la liste des champs
    Par 6BerYeti dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/05/2009, 13h46
  5. Réponses: 1
    Dernier message: 25/11/2008, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo