Dapatkan Unicode Ranges yang Didukung dari file Font * .ttf di Ubuntu

9

Saya memiliki beberapa font dalam format 'ttf' di mesin Ubuntu saya.

Saya ingin mengetahui beberapa metadata font-font itu, tentang unicode mana yang berkisar dan kode-kode non-unicode mana file font yang didukung.

Bagaimana saya bisa melakukannya?

Ditambahkan 1: Lupa untuk menyebutkan, bahwa saya ingin mendapatkan informasi itu untuk beberapa ratusan font, jadi saya perlu semacam utilitas terminal, yang dapat diotomatisasi

ShockwaveNN
sumber

Jawaban:

8

fc-querydapat menampilkan set karakter unicode yang didukung. Saya tidak tahu kode halaman lain.

Misalnya, fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfpada Debian saya menunjukkan ini:

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

Ini menunjukkan rentang karakter yang didukung, meskipun bukan yang blok miliknya (Anda harus tahu rentang mana milik blok mana).

Misalnya, kolom keempat 0000, yang sesuai dengan U + 0060 - U + 007F, memiliki nilai hex sebesar 7fffffff. Ini memiliki nilai bit 0111 1111 1111 1111 1111 1111 1111 1111, di mana bit paling kanan adalah U + 0060, dan yang paling kiri adalah U + 007F. Ini berarti bahwa U + 007F tidak didukung dalam font ini.

Anda mungkin perlu menulis skrip yang membuat operasi bitwise pada informasi yang disediakan oleh fc-query.

P / S: Situs masuk favorit saya untuk informasi unicode adalah FileFormat.Info

Syockit
sumber
Di mana saya menemukan informasi tentang rentang mana yang termasuk blok mana?
akaihola
Ah, nomor baris memberikan digit hex paling kiri dari titik kode, dan posisi bit di bidang bit memberikan dua digit hex paling kanan. Baik?
akaihola
1

Saya akan merekomendasikan FontForge . Ini tersedia di manajer paket Ubuntu hanya sebagai fontforge.

Daniel Andersson
sumber
Yap, Saya menemukan program ini - tetapi seperti yang saya mengerti hanya memiliki antarmuka GUI, tapi saya perlu terminal, untuk mengotomatisasi hal ini
ShockwaveNN
@ShockwaveNN: baiklah, katakan demikian dalam pertanyaan Anda. Peluang Anda untuk mendapatkan jawaban yang cocok untuk pertanyaan Anda meningkat jika Anda menyatakan pertanyaan Anda yang sebenarnya.
Daniel Andersson
1

Catatan untuk siapa saja yang menemukan ini ..

fc-query tidak 100% andal pada output charset.

Misalnya Yogafont di dafont.com ini menunjukkan set karakter kosong, meskipun itu pasti memiliki karakter di dalamnya.

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

Font lain dengan gambar di dalamnya seperti WW1 menunjukkan rangkaian karakter terbatas.

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