Obtenez les plages Unicode prises en charge à partir du fichier Font * .ttf sur Ubuntu

9

J'ai des polices au format 'ttf' sur ma machine Ubuntu.

Je veux connaître certaines métadonnées de ces polices, sur quelles plages unicode et quelles pages de code non unicode ces fichiers de polices sont pris en charge.

Comment je peux le faire?

Ajouté 1: J'ai oublié de mentionner que je veux obtenir ces informations pour plusieurs centaines de polices, j'ai donc besoin d'une sorte d'utilitaire de terminal, qui peut être automatisé

ShockwaveNN
la source

Réponses:

8

fc-querypeut afficher les jeux de caractères Unicode pris en charge. Je ne connais cependant pas d'autres pages de codes.

Par exemple, fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfsur mon Debian montre ceci:

…
charset: 
    0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
    0001: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
    0002: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff 008873ff
…

Il montre les plages de caractères prises en charge, bien qu'il ne sache pas à quel bloc il appartient (vous devez savoir à quelle plage appartient quel bloc).

Par exemple, la quatrième colonne de 0000, qui correspond à U + 0060 - U + 007F, a une valeur hexadécimale de 7fffffff. Cela a une valeur en bits de 0111 1111 1111 1111 1111 1111 1111 1111, où le bit le plus à droite est U + 0060 et le plus à gauche est U + 007F. Cela signifie que U + 007F n'est pas pris en charge dans cette police.

Vous auriez probablement besoin d'écrire un script qui effectue des opérations au niveau du bit sur les informations fournies par fc-query.

P / S: Mon site préféré pour les informations unicode est FileFormat.Info

syockit
la source
Où puis-je trouver les informations sur quelle plage appartient à quel bloc?
akaihola
Ah, le numéro de ligne donne les chiffres hexadécimaux les plus à gauche du point de code, et la position du bit dans le champ de bits donne les deux chiffres hexadécimaux les plus à droite. Droite?
akaihola
1

Je recommanderais FontForge . Il est disponible simplement dans le gestionnaire de paquets d'Ubuntu fontforge.

Daniel Andersson
la source
Oui, j'ai trouvé ce programme - mais si je comprends bien, il n'a qu'une interface graphique, mais j'ai besoin d'un terminal pour automatiser cette chose
ShockwaveNN
@ShockwaveNN: eh bien, dites-le alors dans votre question. Vos chances d'obtenir une réponse appropriée à votre question augmentent si vous énoncez votre question réelle.
Daniel Andersson
1

Remarque pour tous ceux qui trouvent cela ..

fc-query n'est pas fiable à 100% sur la sortie du jeu de caractères.

Par exemple, Yogafont sur dafont.com, cela montre un jeu de caractères vide, bien qu'il contienne certainement des caractères.

$ fc-query yogafont.TTF
Pattern has 20 elts (size 32)
    family: "Yogafont"(s)
    familylang: "en"(s)
    style: "Regular"(s)
    stylelang: "en"(s)
    fullname: "Yogafont"(s)
    fullnamelang: "en"(s)
    slant: 0(i)(s)
    weight: 80(i)(s)
    width: 100(i)(s)
    spacing: 100(i)(s)
    foundry: "unknown"(s)
    file: "yogafont.TTF"(s)
    index: 0(i)(s)
    outline: FcTrue(s)
    scalable: FcTrue(s)
    charset: 
(s)
    lang: (s)
    fontversion: 0(i)(s)
    fontformat: "TrueType"(s)
    decorative: FcFalse(s)

D'autres polices avec des dessins comme WW1 affichent un jeu de caractères limité.

$ fc-query WW1-A___.TTF 
Pattern has 19 elts (size 32)
    family: "WW1  A"(s)
    familylang: "en"(s)
    style: "Regular"(s)
    stylelang: "en"(s)
    fullname: "WW1  A"(s)
    fullnamelang: "en"(s)
    slant: 0(i)(s)
    weight: 80(i)(s)
    width: 100(i)(s)
    foundry: "unknown"(s)
    file: "WW1-A___.TTF"(s)
    index: 0(i)(s)
    outline: FcTrue(s)
    scalable: FcTrue(s)
    charset: 
    0000: 00000000 00000001 00000000 0001fffe 00000000 00000000 00000000 00000000
(s)
    lang: (s)
    fontversion: 65536(i)(s)
    fontformat: "TrueType"(s)
    decorative: FcFalse(s)
Paul J
la source