1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Copyright © 2009 Red Hat, Inc. 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * This is part of HarfBuzz, a text shaping library. 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Permission is hereby granted, without written agreement and without 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * license or royalty fees, to use, copy, modify, and distribute this 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * software and its documentation for any purpose, provided that the 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * above copyright notice and the following two paragraphs appear in 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * all copies of this software. 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * DAMAGE. 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Red Hat Author(s): Behdad Esfahbod 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef HB_H_IN 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#error "Include <hb.h> instead." 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef HB_FACE_H 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define HB_FACE_H 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "hb-common.h" 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "hb-blob.h" 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)HB_BEGIN_DECLS 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * hb_face_t 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef struct hb_face_t hb_face_t; 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_t * 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_create (hb_blob_t *blob, 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) unsigned int index); 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* calls destroy() when not needing user_data anymore */ 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_t * 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void *user_data, 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_destroy_func_t destroy); 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_t * 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_get_empty (void); 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_t * 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_reference (hb_face_t *face); 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_destroy (hb_face_t *face); 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_bool_t 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_set_user_data (hb_face_t *face, 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_user_data_key_t *key, 70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void * data, 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_destroy_func_t destroy, 72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_bool_t replace); 73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void * 76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_get_user_data (hb_face_t *face, 77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_user_data_key_t *key); 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_make_immutable (hb_face_t *face); 81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_bool_t 83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_is_immutable (hb_face_t *face); 84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_blob_t * 87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_reference_table (hb_face_t *face, 88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) hb_tag_t tag); 89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_blob_t * 91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_reference_blob (hb_face_t *face); 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_set_index (hb_face_t *face, 95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) unsigned int index); 96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)unsigned int 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_get_index (hb_face_t *face); 99f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void 101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_set_upem (hb_face_t *face, 102f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) unsigned int upem); 103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)unsigned int 105f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_get_upem (hb_face_t *face); 106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void 108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_set_glyph_count (hb_face_t *face, 109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) unsigned int glyph_count); 110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)unsigned int 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)hb_face_get_glyph_count (hb_face_t *face); 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 114f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)HB_END_DECLS 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif /* HB_FACE_H */ 118