hb-font-private.hh revision bf36a1074ab23abeab0a7a6c47db26770dc1ab0a
1/*
2 * Copyright (C) 2009  Red Hat, Inc.
3 *
4 *  This is part of HarfBuzz, a text shaping library.
5 *
6 * Permission is hereby granted, without written agreement and without
7 * license or royalty fees, to use, copy, modify, and distribute this
8 * software and its documentation for any purpose, provided that the
9 * above copyright notice and the following two paragraphs appear in
10 * all copies of this software.
11 *
12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16 * DAMAGE.
17 *
18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23 *
24 * Red Hat Author(s): Behdad Esfahbod
25 */
26
27#ifndef HB_FONT_PRIVATE_H
28#define HB_FONT_PRIVATE_H
29
30#include "hb-private.h"
31
32#include "hb-font.h"
33
34#include "hb-ot-head-private.hh"
35
36HB_BEGIN_DECLS
37
38/*
39 * hb_font_funcs_t
40 */
41
42struct _hb_font_funcs_t {
43  hb_reference_count_t ref_count;
44
45  hb_bool_t immutable;
46
47  struct {
48    hb_font_get_glyph_func_t		get_glyph;
49    hb_font_get_contour_point_func_t	get_contour_point;
50    hb_font_get_glyph_metrics_func_t	get_glyph_metrics;
51    hb_font_get_kerning_func_t		get_kerning;
52  } v;
53};
54
55extern HB_INTERNAL hb_font_funcs_t _hb_font_funcs_nil;
56
57
58/*
59 * hb_face_t
60 */
61
62struct _hb_face_t {
63  hb_reference_count_t ref_count;
64
65  hb_get_table_func_t  get_table;
66  hb_destroy_func_t    destroy;
67  void                *user_data;
68
69  hb_blob_t *head_blob;
70  const struct head *head_table;
71
72  struct hb_ot_layout_t *ot_layout;
73};
74
75
76/*
77 * hb_font_t
78 */
79
80struct _hb_font_t {
81  hb_reference_count_t ref_count;
82
83  unsigned int x_scale;
84  unsigned int y_scale;
85
86  unsigned int x_ppem;
87  unsigned int y_ppem;
88
89  hb_font_funcs_t   *klass;
90  hb_destroy_func_t  destroy;
91  void              *user_data;
92};
93
94
95HB_END_DECLS
96
97#endif /* HB_FONT_PRIVATE_H */
98