Uzyskaj obsługiwane zakresy Unicode z pliku Font * .ttf na Ubuntu

9

Mam kilka czcionek w formacie „ttf” na moim komputerze Ubuntu.

Chcę poznać niektóre metadane tych czcionek, o których zakresach Unicode i które strony kodowe inne niż Unicode są obsługiwane.

Jak mogę to zrobić?

Dodano 1: Zapomniałem wspomnieć, że chcę uzyskać te informacje dla kilkuset czcionek, więc potrzebuję jakiegoś narzędzia terminalowego, które można zautomatyzować

ShockwaveNN
źródło

Odpowiedzi:

8

fc-querymoże wyświetlać obsługiwane zestawy znaków Unicode. Nie znam jednak innych stron kodowych.

Na przykład fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfna moim Debianie pokazuje to:

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

Pokazuje obsługiwane zakresy znaków, chociaż nie ma tego, do którego bloku należy (musisz wiedzieć, do którego zakresu należy dany blok).

Na przykład czwarta kolumna 0000, która odpowiada U + 0060 - U + 007F, ma wartość szesnastkową 7fffffff. Ma to wartość bitu 0111 1111 1111 1111 1111 1111 1111 1111, gdzie najbardziej prawy bit to U + 0060, a lewy najbardziej to U + 007F. Oznacza to, że U + 007F nie jest obsługiwany w tej czcionce.

Prawdopodobnie będziesz musiał napisać skrypt wykonujący operacje bitowe na informacjach dostarczonych przez fc-query.

P / S: Moja ulubiona witryna z informacjami o Unicode to FileFormat.Info

syockit
źródło
Gdzie znajdę informację o tym, który zakres należy do którego bloku?
akaihola,
Ach, numer linii podaje cyfry szesnastkowe skrajnie lewe punktu kodowego, a pozycja bitu w polu bitowym daje dwie skrajnie prawe cyfry szesnastkowe. Dobrze?
akaihola,
1

Polecam FontForge . Jest dostępny w menedżerze pakietów Ubuntu po prostu jako fontforge.

Daniel Andersson
źródło
Tak, znalazłem ten program - ale, jak rozumiem, ma tylko interfejs GUI, ale potrzebuję terminalu, aby zautomatyzować tę rzecz
ShockwaveNN
@ShockwaveNN: cóż, powiedz to w swoim pytaniu. Twoje szanse na uzyskanie właściwej odpowiedzi na twoje pytanie wzrosną, jeśli podasz swoje aktualne pytanie.
Daniel Andersson,
1

Uwaga dla każdego, kto to znajdzie ..

zapytanie fc nie jest w 100% niezawodne na wyjściu charset.

Na przykład Yogafont na dafont.com pokazuje pusty zestaw znaków, chociaż na pewno ma w nim znaki.

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

Inne czcionki z rysunkami, takie jak WW1, mają ograniczony zestaw znaków.

$ 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.
źródło