Erhalten Sie unterstützte Unicode-Bereiche aus der Font * .ttf-Datei unter Ubuntu


9

Ich habe einige Schriftarten im 'ttf'-Format auf meinem Ubuntu-Computer.

Ich möchte einige Metadaten dieser Schriftarten wissen, welche Unicode-Bereiche und welche Nicht-Unicode-Codepages diese Schriftarten unterstützen.

Wie kann ich es tun?

Hinzugefügt 1: Ich habe vergessen zu erwähnen, dass ich diese Informationen für mehrere Hundert Schriftarten erhalten möchte, daher benötige ich eine Art Terminal-Dienstprogramm, das automatisiert werden kann

Antworten:


8

fc-querykann unterstützte Unicode-Zeichensätze anzeigen. Ich kenne jedoch keine anderen Codepages.

Zum Beispiel fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfzeigt mein Debian Folgendes:

…
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
…

Es zeigt die unterstützten Zeichenbereiche an, obwohl nicht bekannt ist, zu welchem ​​Block es gehört (Sie müssen wissen, welcher Bereich zu welchem ​​Block gehört).

Beispielsweise hat die vierte Spalte von 0000, die U + 0060 - U + 007F entspricht, einen Hex-Wert von 7fffffff. Dies hat einen Bitwert von 0111 1111 1111 1111 1111 1111 1111 1111, wobei das am weitesten rechts stehende Bit U + 0060 und das am weitesten links stehende U + 007F ist. Dies bedeutet, dass U + 007F in dieser Schriftart nicht unterstützt wird.

Sie müssten wahrscheinlich ein Skript schreiben, das bitweise Operationen mit den von bereitgestellten Informationen ausführt fc-query.

P / S: Meine bevorzugte Website für Unicode-Informationen ist FileFormat.Info


Wo finde ich Informationen darüber, welcher Bereich zu welchem ​​Block gehört?
— Akaihola

Ah, die Zeilennummer gibt die hexadezimalen Ziffern ganz links des Codepunkts an, und die Position des Bits im Bitfeld gibt die zwei hexadezimalen Ziffern ganz rechts an. Richtig?
— Akaihola

1

Ich würde FontForge empfehlen . Es ist im Ubuntu-Paketmanager einfach als verfügbar fontforge.


Ja, ich habe dieses Programm gefunden - aber so wie ich es verstehe, hat es nur eine GUI-Oberfläche, aber ich brauche ein Terminal, um dieses Ding zu automatisieren
— ShockwaveNN

@ShockwaveNN: Nun, dann sag es in deiner Frage. Ihre Chancen, eine passende Antwort auf Ihre Frage zu erhalten, steigen, wenn Sie Ihre eigentliche Frage angeben.
— Daniel Andersson

1

Hinweis für alle, die dies finden ..

fc-query ist für die Zeichensatzausgabe nicht 100% zuverlässig.

Zum Beispiel zeigt Yogafont auf dafont.com einen leeren Zeichensatz, obwohl er definitiv Zeichen enthält.

$ 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)

Andere Schriftarten mit Zeichnungen wie WW1 weisen einen begrenzten Zeichensatz auf.

$ 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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.