1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/* Pango
* pango-ot.h:
*
* Copyright (C) 2000 Red Hat Software
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __PANGO_OT_H__
#define __PANGO_OT_H__
#include <freetype/freetype.h>
#include <pango/pango-glyph.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef guint32 PangoOTTag;
typedef struct _PangoOTInfo PangoOTInfo;
typedef struct _PangoOTRuleset PangoOTRuleset;
typedef enum
{
PANGO_OT_TABLE_GSUB,
PANGO_OT_TABLE_GPOS
} PangoOTTableType;
PangoOTInfo *pango_ot_info_new (FT_Face face);
gboolean pango_ot_info_find_script (PangoOTInfo *info,
PangoOTTableType table_type,
PangoOTTag script_tag,
guint *script_index);
gboolean pango_ot_info_find_language (PangoOTInfo *info,
PangoOTTableType table_type,
guint script_index,
PangoOTTag language_tag,
guint *language_index,
guint *required_feature_index);
gboolean pango_ot_info_find_feature (PangoOTInfo *info,
PangoOTTableType table_type,
PangoOTTag feature_tag,
guint script_index,
guint language_index,
guint *feature_index);
PangoOTTag *pango_ot_info_list_scripts (PangoOTInfo *info,
PangoOTTableType table_type);
PangoOTTag *pango_ot_info_list_languages (PangoOTInfo *info,
PangoOTTableType table_type,
guint script_index,
PangoOTTag language_tag);
PangoOTTag *pango_ot_info_list_features (PangoOTInfo *info,
PangoOTTableType table_type,
PangoOTTag tag,
guint script_index,
guint language_index);
/* A pointer to a function which loads a glyph. Its parameters are
* the same as in a call to TT_Load_Glyph() -- if no glyph loading
* function will be registered with pango_ot_set_glyph_loader(),
* TT_Load_Glyph() will be called indeed. The purpose of this function
* pointer is to provide a hook for caching glyph outlines and sbits
* (using the instance's generic pointer to hold the data).
*
* If for some reason no outline data is available (e.g. for an
* embedded bitmap glyph), _glyph->outline.n_points should be set to
* zero. _glyph can be computed with
*
* _glyph = HANDLE_Glyph( glyph )
*/
typedef FT_Error (*PangoOTGlyphLoader) (FT_Face face,
FT_UInt glyphIndex,
FT_Int loadFlags,
gpointer data);
/* A pointer to a function which selects the alternate glyph. `pos' is
* the position of the glyph with index `glyphID', `num_alternates'
* gives the number of alternates in the `alternates' array. `data'
* points to the user-defined structure specified during a call to
* TT_GSUB_Register_Alternate_Function(). The function must return an
* index into the `alternates' array.
*/
typedef FT_UShort (*PangoOTAlternateFunc) (FT_ULong pos,
FT_UShort glyphID,
FT_UShort num_alternates,
FT_UShort* alternates,
gpointer data);
PangoOTRuleset *pango_ot_ruleset_new (PangoOTInfo *info);
void pango_ot_ruleset_set_glyph_loader (PangoOTRuleset *ruleset,
PangoOTGlyphLoader func,
gpointer data,
GDestroyNotify notify);
void pango_ot_ruleset_set_alternate_func (PangoOTRuleset *ruleset,
PangoOTAlternateFunc func,
gpointer data,
GDestroyNotify notify);
void pango_ot_ruleset_add_feature (PangoOTRuleset *ruleset,
PangoOTTableType table_type,
guint feature_index,
gulong property_bit);
void pango_ot_ruleset_shape (PangoOTRuleset *ruleset,
PangoGlyphString *glyphs,
gulong *properties);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __PANGO_OT_H__ */
|