12e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod/* 22e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * Copyright © 2009 Red Hat, Inc. 32e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * 42e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * This is part of HarfBuzz, a text shaping library. 52e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * 62e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * Permission is hereby granted, without written agreement and without 72e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this 82e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * software and its documentation for any purpose, provided that the 92e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * above copyright notice and the following two paragraphs appear in 102e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * all copies of this software. 112e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * 122e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 132e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 142e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 152e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 162e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * DAMAGE. 172e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * 182e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 192e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 202e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 212e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 222e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 232e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * 242e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * Red Hat Author(s): Behdad Esfahbod 252e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod */ 262e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 272e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#ifndef HB_H_IN 282e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#error "Include <hb.h> instead." 292e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#endif 302e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 312e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#ifndef HB_FACE_H 322e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#define HB_FACE_H 332e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 342e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#include "hb-common.h" 352e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#include "hb-blob.h" 362e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 372e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad EsfahbodHB_BEGIN_DECLS 382e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 392e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 402e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod/* 412e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod * hb_face_t 422e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod */ 432e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 442e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodtypedef struct hb_face_t hb_face_t; 452e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 462e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_t * 472e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_create (hb_blob_t *blob, 482e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod unsigned int index); 492e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 502e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodtypedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); 512e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 522e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod/* calls destroy() when not needing user_data anymore */ 532e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_t * 542e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_create_for_tables (hb_reference_table_func_t reference_table_func, 552e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod void *user_data, 562e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod hb_destroy_func_t destroy); 572e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 582e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_t * 592e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_get_empty (void); 602e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 612e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_t * 622e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_reference (hb_face_t *face); 632e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 642e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodvoid 652e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_destroy (hb_face_t *face); 662e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 672e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_bool_t 682e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_set_user_data (hb_face_t *face, 692e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod hb_user_data_key_t *key, 702e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod void * data, 712e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod hb_destroy_func_t destroy, 722e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod hb_bool_t replace); 732e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 742e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 752e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodvoid * 762e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_get_user_data (hb_face_t *face, 772e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod hb_user_data_key_t *key); 782e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 792e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodvoid 802e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_make_immutable (hb_face_t *face); 812e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 822e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_bool_t 832e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_is_immutable (hb_face_t *face); 842e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 852e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 862e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_blob_t * 872e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_reference_table (hb_face_t *face, 882e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod hb_tag_t tag); 892e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 902e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_blob_t * 912e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_reference_blob (hb_face_t *face); 922e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 932e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodvoid 942e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_set_index (hb_face_t *face, 952e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod unsigned int index); 962e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 972e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodunsigned int 982e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_get_index (hb_face_t *face); 992e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 1002e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodvoid 1012e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_set_upem (hb_face_t *face, 1022e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod unsigned int upem); 1032e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 1042e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodunsigned int 1052e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_get_upem (hb_face_t *face); 1062e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 1072e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodvoid 1082e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_set_glyph_count (hb_face_t *face, 1092e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod unsigned int glyph_count); 1102e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 1112e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodunsigned int 1122e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbodhb_face_get_glyph_count (hb_face_t *face); 1132e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 1142e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 1152e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad EsfahbodHB_END_DECLS 1162e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod 1172e3a07abdf97b0ad2105c3a52f3ff0e0b60b29c4Behdad Esfahbod#endif /* HB_FACE_H */ 118