[sbix] Remove dump method from sbix accelerator
This commit is contained in:
parent
6a38fd68a8
commit
5e2a52f71a
|
@ -58,15 +58,30 @@ cbdt_callback (const uint8_t* data, unsigned int length,
|
|||
}
|
||||
|
||||
static void
|
||||
sbix_callback (hb_blob_t *blob, unsigned int group, unsigned int gid)
|
||||
sbix_dump (hb_face_t *face)
|
||||
{
|
||||
char output_path[255];
|
||||
sprintf (output_path, "out/sbix-%d-%d.png", group, gid);
|
||||
FILE *f = fopen (output_path, "wb");
|
||||
unsigned int length;
|
||||
const char* data = hb_blob_get_data (blob, &length);
|
||||
fwrite (data, 1, length, f);
|
||||
fclose (f);
|
||||
OT::sbix::accelerator_t sbix;
|
||||
sbix.init (face);
|
||||
unsigned int length = 0;
|
||||
unsigned int *available_ppems = sbix.get_available_ppems (&length);
|
||||
unsigned int num_glyphs = face->num_glyphs;
|
||||
for (unsigned int group = 0; group < length; group++)
|
||||
for (unsigned int glyph_id = 0; glyph_id < num_glyphs; glyph_id++)
|
||||
{
|
||||
hb_blob_t *blob;
|
||||
blob = sbix.reference_blob_for_glyph (glyph_id, 0, available_ppems[group],
|
||||
HB_TAG('p','n','g',' '), NULL, NULL);
|
||||
if (hb_blob_get_length (blob) == 0) continue;
|
||||
|
||||
char output_path[255];
|
||||
sprintf (output_path, "out/sbix-%d-%d.png", available_ppems[group], glyph_id);
|
||||
FILE *f = fopen (output_path, "wb");
|
||||
unsigned int length;
|
||||
const char* data = hb_blob_get_data (blob, &length);
|
||||
fwrite (data, 1, length, f);
|
||||
fclose (f);
|
||||
}
|
||||
sbix.fini ();
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -273,10 +288,7 @@ main (int argc, char **argv)
|
|||
cbdt.dump (cbdt_callback);
|
||||
cbdt.fini ();
|
||||
|
||||
OT::sbix::accelerator_t sbix;
|
||||
sbix.init (face);
|
||||
sbix.dump (sbix_callback);
|
||||
sbix.fini ();
|
||||
sbix_dump (face);
|
||||
|
||||
if (hb_ot_color_has_svg (face))
|
||||
svg_dump (face);
|
||||
|
|
|
@ -153,23 +153,17 @@ struct sbix
|
|||
hb_blob_destroy (sbix_blob);
|
||||
}
|
||||
|
||||
inline void dump (void (*callback) (hb_blob_t *data,
|
||||
unsigned int group, unsigned int gid)) const
|
||||
/* only to support dump-emoji, don't use it anywhere else */
|
||||
inline unsigned int *get_available_ppems (unsigned int *length)
|
||||
{
|
||||
for (unsigned group = 0; group < sbix_table->strikes.len; group++)
|
||||
{
|
||||
const SBIXStrike &strike = sbix_table+sbix_table->strikes[group];
|
||||
for (unsigned int glyph_id = 0; glyph_id < num_glyphs; glyph_id++)
|
||||
{
|
||||
hb_tag_t tag;
|
||||
hb_blob_t *blob;
|
||||
blob = strike.get_glyph_blob (glyph_id, sbix_blob, sbix_len,
|
||||
sbix_table->strikes[group],
|
||||
nullptr, nullptr,
|
||||
HB_TAG('p','n','g',' '), num_glyphs);
|
||||
if (hb_blob_get_length (blob)) callback (blob, group, glyph_id);
|
||||
}
|
||||
}
|
||||
if (unlikely (sbix_len == 0 || sbix_table->strikes.len == 0))
|
||||
return nullptr;
|
||||
*length = sbix_table->strikes.len;
|
||||
unsigned int *result;
|
||||
result = (unsigned int *) malloc (sizeof (unsigned int) * sbix_table->strikes.len);
|
||||
for (unsigned int i = 0; i < sbix_table->strikes.len; i++)
|
||||
result[i] = (sbix_table+sbix_table->strikes[i]).get_ppem ();
|
||||
return result;
|
||||
}
|
||||
|
||||
inline hb_blob_t *reference_blob_for_glyph (hb_codepoint_t glyph_id,
|
||||
|
|
Loading…
Reference in New Issue