[ot-glyph] Improve API names
This commit is contained in:
parent
af08f388ab
commit
0b559d750f
|
@ -520,6 +520,18 @@ hb_ot_color_palette_get_name_id
|
||||||
hb_ot_font_set_funcs
|
hb_ot_font_set_funcs
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>hb-ot-glyph</FILE>
|
||||||
|
hb_ot_glyph_path_t
|
||||||
|
hb_ot_glyph_path_create
|
||||||
|
hb_ot_glyph_path_create_from_font
|
||||||
|
hb_ot_glyph_path_destroy
|
||||||
|
hb_ot_glyph_path_empty
|
||||||
|
hb_ot_glyph_path_get_commands
|
||||||
|
hb_ot_glyph_path_get_coords
|
||||||
|
hb_ot_glyph_path_reference
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>hb-ot-name</FILE>
|
<FILE>hb-ot-name</FILE>
|
||||||
hb_ot_name_id_t
|
hb_ot_name_id_t
|
||||||
|
|
|
@ -52,7 +52,7 @@ hb_ot_glyph_path_empty ()
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_ot_glyph_path_t *
|
hb_ot_glyph_path_t *
|
||||||
hb_ot_glyph_create_path (hb_position_t *coords,
|
hb_ot_glyph_path_create (hb_position_t *coords,
|
||||||
unsigned int coords_count,
|
unsigned int coords_count,
|
||||||
uint8_t *commands,
|
uint8_t *commands,
|
||||||
unsigned int commands_count,
|
unsigned int commands_count,
|
||||||
|
@ -133,14 +133,14 @@ struct _hb_ot_glyph_path_vectors
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_hb_ot_glyph_free_path_vectors (void *user_data)
|
_hb_ot_glyph_path_free_vectors (void *user_data)
|
||||||
{
|
{
|
||||||
((_hb_ot_glyph_path_vectors *) user_data)->fini ();
|
((_hb_ot_glyph_path_vectors *) user_data)->fini ();
|
||||||
free (user_data);
|
free (user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_ot_glyph_path_t *
|
hb_ot_glyph_path_t *
|
||||||
hb_ot_glyph_create_path_from_font (hb_font_t *font, hb_codepoint_t glyph)
|
hb_ot_glyph_path_create_from_font (hb_font_t *font, hb_codepoint_t glyph)
|
||||||
{
|
{
|
||||||
_hb_ot_glyph_path_vectors *user_data = (_hb_ot_glyph_path_vectors *)
|
_hb_ot_glyph_path_vectors *user_data = (_hb_ot_glyph_path_vectors *)
|
||||||
malloc (sizeof (_hb_ot_glyph_path_vectors));
|
malloc (sizeof (_hb_ot_glyph_path_vectors));
|
||||||
|
@ -161,8 +161,8 @@ hb_ot_glyph_create_path_from_font (hb_font_t *font, hb_codepoint_t glyph)
|
||||||
|
|
||||||
if (unlikely (!ret)) return hb_ot_glyph_path_empty ();
|
if (unlikely (!ret)) return hb_ot_glyph_path_empty ();
|
||||||
|
|
||||||
return hb_ot_glyph_create_path (coords.arrayZ, coords.length, commands.arrayZ, commands.length,
|
return hb_ot_glyph_path_create (coords.arrayZ, coords.length, commands.arrayZ, commands.length,
|
||||||
user_data, (hb_destroy_func_t) _hb_ot_glyph_free_path_vectors);
|
user_data, (hb_destroy_func_t) _hb_ot_glyph_path_free_vectors);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,30 +36,31 @@ HB_BEGIN_DECLS
|
||||||
typedef struct hb_ot_glyph_path_t hb_ot_glyph_path_t;
|
typedef struct hb_ot_glyph_path_t hb_ot_glyph_path_t;
|
||||||
|
|
||||||
HB_EXTERN hb_ot_glyph_path_t *
|
HB_EXTERN hb_ot_glyph_path_t *
|
||||||
hb_ot_glyph_path_empty (void);
|
hb_ot_glyph_path_create (hb_position_t *coords,
|
||||||
|
|
||||||
HB_EXTERN hb_ot_glyph_path_t *
|
|
||||||
hb_ot_glyph_create_path (hb_position_t *coords,
|
|
||||||
unsigned int coords_count,
|
unsigned int coords_count,
|
||||||
uint8_t *commands,
|
uint8_t *commands,
|
||||||
unsigned int commands_count,
|
unsigned int commands_count,
|
||||||
void *user_data,
|
void *user_data,
|
||||||
hb_destroy_func_t destroy);
|
hb_destroy_func_t destroy);
|
||||||
|
|
||||||
HB_EXTERN const hb_position_t *
|
|
||||||
hb_ot_glyph_path_get_coords (hb_ot_glyph_path_t *path, unsigned int *count);
|
|
||||||
|
|
||||||
HB_EXTERN const uint8_t *
|
|
||||||
hb_ot_glyph_path_get_commands (hb_ot_glyph_path_t *path, unsigned int *count);
|
|
||||||
|
|
||||||
HB_EXTERN hb_ot_glyph_path_t *
|
HB_EXTERN hb_ot_glyph_path_t *
|
||||||
hb_ot_glyph_path_reference (hb_ot_glyph_path_t *path);
|
hb_ot_glyph_path_create_from_font (hb_font_t *font, hb_codepoint_t glyph);
|
||||||
|
|
||||||
HB_EXTERN void
|
HB_EXTERN void
|
||||||
hb_ot_glyph_path_destroy (hb_ot_glyph_path_t *path);
|
hb_ot_glyph_path_destroy (hb_ot_glyph_path_t *path);
|
||||||
|
|
||||||
HB_EXTERN hb_ot_glyph_path_t *
|
HB_EXTERN hb_ot_glyph_path_t *
|
||||||
hb_ot_glyph_create_path_from_font (hb_font_t *font, hb_codepoint_t glyph);
|
hb_ot_glyph_path_empty (void);
|
||||||
|
|
||||||
|
HB_EXTERN const uint8_t *
|
||||||
|
hb_ot_glyph_path_get_commands (hb_ot_glyph_path_t *path, unsigned int *count);
|
||||||
|
|
||||||
|
HB_EXTERN const hb_position_t *
|
||||||
|
hb_ot_glyph_path_get_coords (hb_ot_glyph_path_t *path, unsigned int *count);
|
||||||
|
|
||||||
|
HB_EXTERN hb_ot_glyph_path_t *
|
||||||
|
hb_ot_glyph_path_reference (hb_ot_glyph_path_t *path);
|
||||||
|
|
||||||
|
|
||||||
HB_END_DECLS
|
HB_END_DECLS
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
|
@ -66,30 +67,35 @@ main (int argc, char **argv)
|
||||||
" viewBox=\"%d %d %d %d\"><path d=\"",
|
" viewBox=\"%d %d %d %d\"><path d=\"",
|
||||||
extents.x_bearing, 0,
|
extents.x_bearing, 0,
|
||||||
extents.x_bearing + extents.width, font_extents.ascender - font_extents.descender); //-extents.height);
|
extents.x_bearing + extents.width, font_extents.ascender - font_extents.descender); //-extents.height);
|
||||||
hb_ot_glyph_path_t *path = hb_ot_glyph_create_path_from_font (font, gid);
|
hb_ot_glyph_path_t *path = hb_ot_glyph_path_create_from_font (font, gid);
|
||||||
unsigned int commands_count;
|
unsigned int commands_count;
|
||||||
const uint8_t *commands = hb_ot_glyph_path_get_commands (path, &commands_count);
|
const uint8_t *commands = hb_ot_glyph_path_get_commands (path, &commands_count);
|
||||||
unsigned int coords_count;
|
unsigned int coords_count;
|
||||||
const hb_position_t *coords = hb_ot_glyph_path_get_coords (path, &coords_count);
|
const hb_position_t *coords = hb_ot_glyph_path_get_coords (path, &coords_count);
|
||||||
for (unsigned i = 0, j = 0; i < commands_count && j < coords_count; ++i)
|
unsigned j = 0;
|
||||||
|
for (unsigned i = 0; i < commands_count && j < coords_count; ++i)
|
||||||
{
|
{
|
||||||
fprintf (f, "%c", commands[i]);
|
fprintf (f, "%c", commands[i]);
|
||||||
if (commands[i] == 'Z') continue;
|
if (commands[i] == 'Z') continue;
|
||||||
|
assert (coords_count >= j + 2);
|
||||||
fprintf (f, "%d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
fprintf (f, "%d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
||||||
j += 2;
|
j += 2;
|
||||||
if (commands[i] == 'Q')
|
if (commands[i] == 'Q')
|
||||||
{
|
{
|
||||||
|
assert (coords_count >= j + 2);
|
||||||
fprintf (f, " %d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
fprintf (f, " %d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
||||||
j += 2;
|
j += 2;
|
||||||
}
|
}
|
||||||
if (commands[i] == 'C')
|
if (commands[i] == 'C')
|
||||||
{
|
{
|
||||||
|
assert (coords_count >= j + 4);
|
||||||
fprintf (f, " %d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
fprintf (f, " %d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
||||||
j += 2;
|
j += 2;
|
||||||
fprintf (f, " %d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
fprintf (f, " %d,%d", coords[j], font_extents.ascender - coords[j + 1]); //extents.y_bearing - points[i].y);
|
||||||
j += 2;
|
j += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
assert (coords_count == j);
|
||||||
fprintf (f, "\"/></svg>");
|
fprintf (f, "\"/></svg>");
|
||||||
fclose (f);
|
fclose (f);
|
||||||
hb_ot_glyph_path_destroy (path);
|
hb_ot_glyph_path_destroy (path);
|
||||||
|
|
Loading…
Reference in New Issue