2013-04-09 18 views
9

Z językiem skryptowym (Python lub Ruby, powiedzmy) na systemie opartym na Debianie, chciałbym znaleźć któryś z:Jak można znaleźć kody kodowe Unicode, dla których czcionka ma glify, w systemie opartym na Debianie?

  1. Wszystkie Unicode codepoints że dana czcionka ma glify dla
  2. Wszystko czcionki, które mają glify dla konkretnego Unicode kodowy

(Oczywiście zarówno formularz 1 lub 2 może pochodzić z drugiej strony, tak, co jest łatwiejsze byłoby świetnie.) zrobiłem to w przeszłości przez wykonanie:

fc-list : file charset 

... i analizowanie danych wyjściowych na końcu każdej linii, na podstawie this code from fontconfig , ale wydaje mi się, że powinien być o wiele prostszy sposób robienia tego.

(nie jestem całkowicie pewien, że to jest właściwe miejsce Stack Exchange Network na to pytanie, ale szukam odpowiedzi, które mogą być wykorzystane programowo.)

+0

"Powinien być prostszy sposób"? Czy wiesz, ile istnieje formatów czcionek? A chcesz móc przetworzyć * wszystkie * z nich ?! –

+0

@Kerrek SB: Wiem (oczywiście!), Że istnieje wiele różnych formatów czcionek, ale mamy biblioteki, które sobie z tym radzą - na przykład polecenie fontconfig, które dałem w pytaniu, dostarcza informacji, o które prosiłem. czcionki o różnych formatach. –

+1

Powiązane: http://stackoverflow.com/questions/4458696/finding-out-what-characters-a-font-supports – leonbloy

Odpowiedz

6

chciałbym spróbować któregokolwiek z FreeType 2 language bindings. Oto rozwiązanie Perl notować punkty kodowe Unicode czcionki używając Font::FreeType:

use Font::FreeType; 
Font::FreeType->new->face('DejaVuSans.ttf')->foreach_char(sub { 
    printf("%04X\n", $_->char_code); 
}); 
+0

+1 Dzięki, to bardzo pomocne - zaczekam trochę przed zaznaczeniem "zaakceptuj" w przypadku, gdy są inne odpowiedzi. –

+1

Każdy pomysł, dlaczego nie wydaje się zauważyć glify, które są przydzielone do obszarów użytku prywatnego, takich jak alternatywne znaki przekierowania? – tchrist

+0

Nie, ale z pewnością nie jest to problem związany z powiązaniami Perla. Od szybkiego spojrzenia na kod źródłowy freetype2, może ['find_unicode_charmap'] (http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/src/base/ftobjs.c#n973) wybiera zły urok? – nwellnhof

1

I niedawno wymienione odwzorowanie z codepoints Unicode glypths w TTF wykorzystaniem TTX/FontTools. To narzędzie jest napisane w Pythonie, więc pasuje do tagu Python w twoim poście. Komenda

ttx -t cmap foo.ttf 

wygeneruje plik XML foo.ttx który opisuje, że mapowanie, z różnych środowisk i kodowania. Zobacz np. this reference, aby uzyskać opis znaczenia znaczników platformy i kodowania. Zakładam, że pakiet może być używany jako biblioteka, a także jako narzędzie wiersza poleceń, ale nie mam tam żadnego doświadczenia.

Powiązane problemy