hb-ot-layout.h revision 2d15e72c75931398db5e027e660f1320bb979117
164aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod/*
264aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * Copyright (C) 2007,2008  Red Hat, Inc.
364aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod *
464aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod *  This is part of HarfBuzz, an OpenType Layout engine library.
564aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod *
664aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * Permission is hereby granted, without written agreement and without
764aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this
864aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * software and its documentation for any purpose, provided that the
964aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * above copyright notice and the following two paragraphs appear in
1064aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * all copies of this software.
1164aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod *
1264aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
1364aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
1464aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
1564aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
1664aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * DAMAGE.
1764aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod *
1864aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
1964aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
2064aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
2164aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
2264aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
2364aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod *
2464aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod * Red Hat Author(s): Behdad Esfahbod
2564aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod */
2664aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod
27fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod#ifndef HB_OT_LAYOUT_H
28fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod#define HB_OT_LAYOUT_H
2912c4568c680ea2b9b98a16a8b7402ca185c90ef6Behdad Esfahbod
308dd1c8b8d6797d899d0f5b0a8015886bf6520ca2Behdad Esfahbod#include "hb-common.h"
3112c4568c680ea2b9b98a16a8b7402ca185c90ef6Behdad Esfahbod
328dd1c8b8d6797d899d0f5b0a8015886bf6520ca2Behdad EsfahbodHB_BEGIN_DECLS();
3312c4568c680ea2b9b98a16a8b7402ca185c90ef6Behdad Esfahbod
34aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod/*
35e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod * hb_ot_layout_t
36aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod */
37aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod
38e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodtypedef struct _hb_ot_layout_t hb_ot_layout_t;
39fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
40e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_t *
414a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_ot_layout_create (void);
424a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
434a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_ot_layout_t *
44dfa811965133bc4d1696fa5a0166e17ed4142c98Behdad Esfahbodhb_ot_layout_create_for_data (const char *font_data,
45dfa811965133bc4d1696fa5a0166e17ed4142c98Behdad Esfahbod			      int         face_index);
46fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
47fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbodvoid
48e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_destroy (hb_ot_layout_t *layout);
49fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
50e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod/* TODO sanitizing API/constructor (make_wrieable_func_t) */
51e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod/* TODO get_table_func_t constructor */
52fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
53590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod/*
54590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod * GDEF
55590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod */
56590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod
576f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbodtypedef enum {
586f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED	= 0x0000,
596f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH	= 0x0002,
606f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE	= 0x0004,
616f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_MARK		= 0x0008,
626f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT	= 0x0010
636f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod} hb_ot_layout_glyph_class_t;
646f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod
65590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbodhb_bool_t
66e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_has_font_glyph_classes (hb_ot_layout_t *layout);
67590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod
68aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbodhb_ot_layout_glyph_class_t
69e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_get_glyph_class (hb_ot_layout_t *layout,
702d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod			      hb_codepoint_t  glyph);
71fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
72fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbodvoid
73e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_set_glyph_class (hb_ot_layout_t            *layout,
742d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod			      hb_codepoint_t             glyph,
75aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod			      hb_ot_layout_glyph_class_t klass);
76fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
77590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbodvoid
78e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_build_glyph_classes (hb_ot_layout_t *layout,
79e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod				  uint16_t        num_total_glyphs,
802d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod				  hb_codepoint_t *glyphs,
81e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod				  unsigned char  *klasses,
82e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod				  uint16_t        count);
83590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod
84706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod/*
85706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod * GSUB/GPOS
86706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod */
87706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
88706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodtypedef enum {
89706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod  HB_OT_LAYOUT_TABLE_TYPE_GSUB,
90706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod  HB_OT_LAYOUT_TABLE_TYPE_GPOS,
91706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod  HB_OT_LAYOUT_TABLE_TYPE_NONE
92706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod} hb_ot_layout_table_type_t;
93706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
942d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbodtypedef uint16_t hb_ot_layout_feature_mask_t;
952d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
962d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod#define HB_OT_LAYOUT_MAX_NESTING_LEVEL		100
972d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
98706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_NO_SCRIPT_INDEX		((unsigned int) 0xFFFF)
99706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_NO_FEATURE_INDEX		((unsigned int) 0xFFFF)
100706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX	((unsigned int) 0xFFFF)
101706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_TAG_DEFAULT_SCRIPT		HB_TAG ('D', 'F', 'L', 'T')
102706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_TAG_DEFAULT_LANGUAGE	HB_TAG ('d', 'f', 'l', 't')
103706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
104706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodunsigned int
105c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_script_count (hb_ot_layout_t            *layout,
106c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				     hb_ot_layout_table_type_t  table_type);
107706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
108706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_tag_t
109c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_script_tag (hb_ot_layout_t            *layout,
110c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   hb_ot_layout_table_type_t  table_type,
111c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   unsigned int               script_index);
112706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
113706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_bool_t
114c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_find_script (hb_ot_layout_t            *layout,
115c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				hb_ot_layout_table_type_t  table_type,
116c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				hb_tag_t                   script_tag,
117c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				unsigned int              *script_index);
118706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
119706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodunsigned int
120c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_feature_count (hb_ot_layout_t            *layout,
121c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      hb_ot_layout_table_type_t  table_type);
122706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
123706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_tag_t
124c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_feature_tag (hb_ot_layout_t            *layout,
125c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    hb_ot_layout_table_type_t  table_type,
126c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int               feature_index);
127706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
128706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_bool_t
129c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_find_script (hb_ot_layout_t            *layout,
130c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				hb_ot_layout_table_type_t  table_type,
131c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				hb_tag_t                   feature_tag,
132c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				unsigned int              *feature_index);
133c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
134c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
135c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_lookup_count (hb_ot_layout_t            *layout,
136c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				     hb_ot_layout_table_type_t  table_type);
137c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
138c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
139c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_script_get_language_count (hb_ot_layout_t            *layout,
140c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod					hb_ot_layout_table_type_t  table_type,
141c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod					unsigned int               script_index);
142c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
143c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_tag_t
144c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_script_get_language_tag (hb_ot_layout_t            *layout,
145c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      hb_ot_layout_table_type_t  table_type,
146c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      unsigned int               script_index,
147c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      unsigned int               language_index);
1484a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
1494a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_bool_t
150c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_script_find_language (hb_ot_layout_t            *layout,
151c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   hb_ot_layout_table_type_t  table_type,
152c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   unsigned int               script_index,
153c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   hb_tag_t                   language_tag,
154c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   unsigned int              *language_index);
155c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
156c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_bool_t
157c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_required_feature_index (hb_ot_layout_t            *layout,
158c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  hb_ot_layout_table_type_t  table_type,
159c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  unsigned int               script_index,
160c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  unsigned int               language_index,
161c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  unsigned int              *feature_index);
162c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
163c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
164c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_feature_count (hb_ot_layout_t            *layout,
1654a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod					 hb_ot_layout_table_type_t  table_type,
1664a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod					 unsigned int               script_index,
167c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod					 unsigned int               language_index);
1684a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
1694a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodunsigned int
170c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_feature_index (hb_ot_layout_t            *layout,
171c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         hb_ot_layout_table_type_t  table_type,
172c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         unsigned int               script_index,
173c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         unsigned int               language_index,
174c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         unsigned int               num_feature);
1754a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
1764a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_tag_t
177c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_feature_tag (hb_ot_layout_t            *layout,
178c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       hb_ot_layout_table_type_t  table_type,
179c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               script_index,
180c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               language_index,
181c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               num_feature);
1824a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
1834a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_bool_t
184c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_find_feature (hb_ot_layout_t            *layout,
185c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    hb_ot_layout_table_type_t  table_type,
186c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int               script_index,
187c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int               language_index,
188c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    hb_tag_t                   feature_tag,
189c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int              *feature_index);
190c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
191c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
192c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_feature_get_lookup_count (hb_ot_layout_t            *layout,
193c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       hb_ot_layout_table_type_t  table_type,
194c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               feature_index);
195c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
196c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
197c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_feature_get_lookup_index (hb_ot_layout_t            *layout,
198c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       hb_ot_layout_table_type_t  table_type,
199c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               feature_index,
200c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               num_lookup);
201706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
2022d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod/*
2032d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod * GSUB
2042d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod */
2052d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2062d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbodhb_bool_t
2072d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbodhb_ot_layout_substitute_lookup (hb_ot_layout_t              *layout,
2082d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod				hb_buffer_t                 *buffer,
2092d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod			        unsigned int                 lookup_index,
2102d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod				hb_ot_layout_feature_mask_t  mask);
2112d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2122d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2132d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2142d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2152d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2162d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2172d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2182d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2192d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2202d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
221706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
222706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod/*
223706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define PANGO_OT_ALL_GLYPHS			((guint) 0xFFFF)
224706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
225706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod*/
226706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
2278dd1c8b8d6797d899d0f5b0a8015886bf6520ca2Behdad EsfahbodHB_END_DECLS();
22812c4568c680ea2b9b98a16a8b7402ca185c90ef6Behdad Esfahbod
229fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod#endif /* HB_OT_LAYOUT_H */
230