|
Store a full matrix for the partial order of
coverage subsets. To avoid this growing too
large, use an indirection to store the information
only once for identical charsets.
On my system, with 4000 fonts, I see ~300 different
charsets. Computing the full matrix takes a while -
~240ms. But we only have to do this once, we do it
in a thread, and we can possibly store it and
load it from disk.
Unlike our other thread use, we won't block for
the coverage, ever. Until it is available, things
are simply slower.
With the coverage order data, we can avoid most
of the expensive charset subset calculations when
trimming fontsets.
This finally gets a font chooser up on the screen
in less a second, on my system (~800ms).
|