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