static hb_font_t _hb_font_nil = {
HB_OBJECT_HEADER_STATIC,
+ TRUE, /* immutable */
+
&_hb_face_nil,
0, /* x_scale */
return hb_object_get_user_data (font, key);
}
+void
+hb_font_make_immutable (hb_font_t *font)
+{
+ if (hb_object_is_inert (font))
+ return;
+
+ font->immutable = true;
+}
+
+hb_bool_t
+hb_font_is_immutable (hb_font_t *font)
+{
+ return font->immutable;
+}
+
hb_face_t *
hb_font_get_face (hb_font_t *font)
void *user_data,
hb_destroy_func_t destroy)
{
- if (hb_object_is_inert (font))
+ if (font->immutable)
return;
if (font->destroy)
void **user_data,
hb_destroy_func_t *destroy)
{
+ if (font->immutable)
+ return;
+
/* None of the input arguments can be NULL. */
*klass = font->klass;
int x_scale,
int y_scale)
{
- if (hb_object_is_inert (font))
+ if (font->immutable)
return;
font->x_scale = x_scale;
unsigned int x_ppem,
unsigned int y_ppem)
{
- if (hb_object_is_inert (font))
+ if (font->immutable)
return;
font->x_ppem = x_ppem;
hb_font_get_user_data (hb_font_t *font,
hb_user_data_key_t *key);
+void
+hb_font_make_immutable (hb_font_t *font);
+
+hb_bool_t
+hb_font_is_immutable (hb_font_t *font);
+
hb_face_t *
hb_font_get_face (hb_font_t *font);
{
OBJECT_WITHOUT_IMMUTABILITY (buffer),
OBJECT_WITHOUT_IMMUTABILITY (face),
- OBJECT_WITHOUT_IMMUTABILITY (font),
OBJECT_WITH_IMMUTABILITY (blob),
+ OBJECT_WITH_IMMUTABILITY (font),
OBJECT_WITH_IMMUTABILITY (font_funcs),
OBJECT_WITH_IMMUTABILITY (unicode_funcs)
};