Podgrupa Czcionki Według Specyficznych Glifów

Mam 14MB TTF zawierający głównie uproszczone chińskie znaki.

Chciałbym zmniejszyć rozmiar, tworząc podzbiór, który zawiera tylko określone znaki na stronie HTML.

Więc, najlepiej, chciałbym przekazać programowi (Linuksowemu) blok tekstu i odtworzyć czcionkę na podstawie zawartych znaków.

Np.

 ./magic-font-squisher input.tff "ABC123水小长"

Lub

 ./magic-font-squisher input.tff /path/to/test.html

Nowa czcionka będzie miała tylko te 9 znaków.

Author: Terence Eden, 2013-05-21

2 answers

Użyli https://bitbucket.org/philip/font-optimizer/src

./subset.pl --chars="ABC 123 水小长" input.ttf output.ttf
Dokładnie tego chcę.

How I Found It

Katalog czcionek Google zawiera narzędzie podzbiór . README mówi

--string=: generuje podzbiór tylko dla podanego ciągu. Przydatne dla tworzenie podzbioru menu. Generalnie używamy subset.pl from Font Optymalizator do tego jednak.

Wyszukiwanie optymalizatora czcionek zabrało mnie do strony demo , która pozwala przetestować skrypt.

Istnieje również rozwidlone repo GitHub , które ma lepszą dokumentację.

 5
Author: Terence Eden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-21 19:45:49

Możesz to zrobić za pomocą skryptowego FontForge. To działa, choć prawdopodobnie może być bardziej sprytny lub zawinięty w zawierający skrypt.

#!/usr/bin/env fontforge
Open($1); # first param
SelectAll();
SelectFewer(0u41, 0u43, 0u31, 0u33); # a range
SelectFewer(0u6c34); # or a single codepoint
SelectFewer(0u5c0f);
SelectFewer(0u957f);
DetachAndRemoveGlyphs();
Save($2); # second param
Quit(0);

Przed uruchomieniem musiałem zdefiniować FONTFORGE_LANGUAGE:

FONTFORGE_LANGUAGE=ff ./squish source.ttf squished.ttf
 3
Author: threedaymonk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-21 16:23:20