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.