Obtenga rangos Unicode compatibles del archivo Font * .ttf en Ubuntu

9

Tengo algunas fuentes en formato 'ttf' en mi máquina Ubuntu.

Quiero conocer algunos metadatos de esas fuentes, sobre qué rangos unicode y qué páginas de códigos no unicode son compatibles esos archivos de fuentes.

¿Cómo puedo hacerlo?

Agregado 1: Olvidé mencionar que quiero obtener esa información para varios cientos de fuentes, por lo que necesito algún tipo de utilidad de terminal que pueda automatizarse

ShockwaveNN
fuente

Respuestas:

8

fc-querypuede mostrar juegos de caracteres unicode compatibles. Sin embargo, no conozco otras páginas de códigos.

Por ejemplo, fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfen mi Debian muestra esto:

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

Muestra los rangos de caracteres admitidos, aunque no sabe a qué bloque pertenece (debe saber qué rango pertenece a qué bloque).

Por ejemplo, la cuarta columna de 0000, que corresponde a U + 0060 - U + 007F, tiene un valor hexadecimal de 7fffffff. Esto tiene un valor de bit de 0111 1111 1111 1111 1111 1111 1111 1111, donde el bit más a la derecha es U + 0060, y el más a la izquierda es U + 007F. Esto significa que U + 007F no es compatible con esta fuente.

Probablemente necesite escribir un script que realice operaciones bit a bit sobre la información proporcionada por fc-query.

P / S: Mi sitio favorito para obtener información Unicode es FileFormat.Info

syockit
fuente
¿Dónde encuentro la información sobre qué rango pertenece a qué bloque?
akaihola
Ah, el número de línea da los dígitos hexadecimales más a la izquierda del punto de código, y la posición del bit en el campo de bits da los dos dígitos hexadecimales más a la derecha. ¿Derecha?
akaihola
1

Recomiendo FontForge . Está disponible en el administrador de paquetes de Ubuntu simplemente como fontforge.

Daniel Andersson
fuente
Sí, encontré este programa, pero según tengo entendido, solo tiene una interfaz GUI, pero necesito un terminal para automatizar esto
ShockwaveNN
@ShockwaveNN: bueno, dilo en tu pregunta entonces. Sus posibilidades de obtener una respuesta adecuada a su pregunta aumentan si formula su pregunta real.
Daniel Andersson
1

Nota para cualquiera que encuentre esto ...

fc-query no es 100% confiable en la salida del juego de caracteres.

Por ejemplo, Yogafont en dafont.com muestra un conjunto de caracteres vacío, aunque definitivamente tiene 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)

Otras fuentes con dibujos como WW1 muestran un 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
fuente