Отримайте підтримувані діапазони Unicode з файлу Font * .ttf на Ubuntu


9

У мене на машині Ubuntu є шрифти у форматі 'ttf'.

Я хочу знати деякі метадані тих шрифтів, про те, які діапазони унікоду та які коди, що не мають унікоду, підтримують ці файли шрифтів.

Як я можу це зробити?

Додано 1: Забув зазначити, що я хочу отримати цю інформацію для кількох сотень шрифтів, тому мені потрібна якась утиліта терміналу, яку можна автоматизувати

Відповіді:


8

fc-queryможе показувати підтримувані набори символів unicode. Хоча я не знаю інших кодових сторінок.

Наприклад, fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttfна моїй Debian показує це:

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

Він показує підтримувані діапазони символів, хоча це не той блок, якому він належить (ви повинні знати, який діапазон належить до якого блоку).

Наприклад, четвертий стовпець 0000, що відповідає U + 0060 - U + 007F, має шістнадцяткове значення 7fffffff. Це має бітове значення 0111 1111 1111 1111 1111 1111 1111 1111, де правий самий біт - U + 0060, а найбільший лівий - U + 007F. Це означає, що U + 007F не підтримується в цьому шрифті.

Вам, ймовірно, потрібно буде написати сценарій, який здійснює побітні операції над інформацією, наданою fc-query.

P / S: Мій улюблений відвідувальний сайт для інформації про унікод - FileFormat.Info


Де я можу знайти інформацію про те, який діапазон належить до якого блоку?
akaihola

Ах, номер рядка дає крайні ліві шістнадцяткові цифри кодової точки, а положення біта в бітовому полі дає дві самі шістнадцяткові цифри. Правильно?
akaihola

1

Я рекомендую FontForge . Він доступний у менеджері пакунків Ubuntu просто як fontforge.


Так, я знайшов цю програму - але, як я розумію, у неї є лише інтерфейс GUI, але мені потрібен термінал для автоматизації цієї речі
ShockwaveNN

@ShockwaveNN: ну, скажи так у своєму запитанні тоді. Ваші шанси отримати обгрунтовану відповідь на ваше запитання збільшуються, якщо ви заявите власне запитання.
Даніель Андерссон

1

Примітка для тих, хто це знайде ..

fc-запит не на 100% надійний на виході з шаблону.

Наприклад, Yogafont на dafont.com показує порожній набір символів, хоча він, безумовно, має в ньому символи.

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

Інші шрифти з малюнками, такі як WW1, показують обмежений набір символів.

$ 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.