Obtenha intervalos Unicode suportados do arquivo Font * .ttf no Ubuntu

9

Eu tenho algumas fontes no formato 'ttf' na minha máquina Ubuntu.

Quero conhecer alguns metadados dessas fontes, sobre quais intervalos unicode e quais páginas de código não unicode esses arquivos de fonte são compatíveis.

Como posso fazer isso?

Adicionado 1: Esqueci de mencionar que quero obter essas informações para várias centenas de fontes, por isso preciso de algum tipo de utilitário de terminal que possa ser automatizado

ShockwaveNN
fonte

Respostas:

8

fc-querypode mostrar conjuntos de caracteres unicode suportados. Não conheço outras páginas de código.

Por exemplo, fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfno meu Debian mostra isso:

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

Ele mostra os intervalos de caracteres suportados, embora não indique a qual bloco pertence (você precisa saber a qual intervalo pertence a qual bloco).

Por exemplo, a quarta coluna de 0000, que corresponde a U + 0060 - U + 007F, possui um valor hexadecimal de 7fffffff. Isso tem um valor de bit de 0111 1111 1111 1111 1111 1111 1111 1111, onde o bit mais à direita é U + 0060 e o mais à esquerda é U + 007F. Isso significa que U + 007F não é suportado nesta fonte.

Você provavelmente precisará escrever um script que faça operações bit a bit nas informações fornecidas por fc-query.

P / S: Meu site favorito para obter informações sobre o código único é FileFormat.Info

syockit
fonte
Onde encontro as informações sobre qual intervalo pertence a qual bloco?
akaihola
Ah, o número da linha fornece os dígitos hexadecimais à esquerda do ponto de código e a posição do bit no campo de bits fornece os dois dígitos hexadecimais à direita. Direita?
akaihola
1

Eu recomendo o FontForge . Está disponível no gerenciador de pacotes do Ubuntu simplesmente como fontforge.

Daniel Andersson
fonte
Sim, eu encontrei este programm - mas como eu entendo que tem interface única GUI, mas eu preciso de terminal, para automatizar esta coisa
ShockwaveNN
@ShockwaveNN: bem, diga-o na sua pergunta então. Suas chances de obter uma resposta adequada à sua pergunta aumentam se você a indicar.
Daniel Andersson
1

Nota para quem encontrar isso ..

O fc-query não é 100% confiável na saída do conjunto de caracteres.

Por exemplo, Yogafont no dafont.com, isso mostra um conjunto de caracteres vazio, embora definitivamente tenha caracteres.

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

Outras fontes com desenhos, como WW1, mostram um conjunto de caracteres limitado.

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