hb-ot-layout.h revision 79420ad9caf2d5fc94c3693e8292edfa27060b2d
164aef3a54999496fd1de4f5aa5b019e4c03b3836Behdad Esfahbod/*
26c78683c042250a7b5a6fc6ebae4717b03fadf9eBehdad Esfahbod * Copyright (C) 2007,2008,2009  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"
315c0adce1ccc739415c4b26ff13ffd2d77ea4bc6cBehdad Esfahbod#include "hb-buffer.h"
3212c4568c680ea2b9b98a16a8b7402ca185c90ef6Behdad Esfahbod
33f96ffd43bce0ac6d9c897933c9be0e51d543e570Behdad EsfahbodHB_BEGIN_DECLS
3412c4568c680ea2b9b98a16a8b7402ca185c90ef6Behdad Esfahbod
35aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod/*
36e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod * hb_ot_layout_t
37aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod */
38aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod
39e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodtypedef struct _hb_ot_layout_t hb_ot_layout_t;
40fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
41e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_t *
424a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_ot_layout_create (void);
434a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
444a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_ot_layout_t *
45dfa811965133bc4d1696fa5a0166e17ed4142c98Behdad Esfahbodhb_ot_layout_create_for_data (const char *font_data,
46dfa811965133bc4d1696fa5a0166e17ed4142c98Behdad Esfahbod			      int         face_index);
47fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
48fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbodvoid
49e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_destroy (hb_ot_layout_t *layout);
50fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
510f7e6b2cead0c7d527ef68ededb27e0afd71d819Behdad Esfahbod/* XXX */
520f7e6b2cead0c7d527ef68ededb27e0afd71d819Behdad Esfahbodvoid
530f7e6b2cead0c7d527ef68ededb27e0afd71d819Behdad Esfahbodhb_ot_layout_set_direction (hb_ot_layout_t *layout,
540f7e6b2cead0c7d527ef68ededb27e0afd71d819Behdad Esfahbod			    hb_bool_t r2l);
550f7e6b2cead0c7d527ef68ededb27e0afd71d819Behdad Esfahbod
56e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbodvoid
57e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbodhb_ot_layout_set_hinting (hb_ot_layout_t *layout,
58e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbod			  hb_bool_t hinted);
59e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbod
60e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbodvoid
61e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbodhb_ot_layout_set_scale (hb_ot_layout_t *layout,
62e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbod			hb_16dot16_t x_scale, hb_16dot16_t y_scale);
63e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbod
64e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbodvoid
65e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbodhb_ot_layout_set_ppem (hb_ot_layout_t *layout,
66e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbod		       unsigned int x_ppem, unsigned int y_ppem);
67e1593a6e620ee6a8184487185d1c95e0d1820ba5Behdad Esfahbod
68a84e71ad11a72feff47ead16772a8c4bcf4f69d5Behdad Esfahbod/* TODO sanitizing API/constructor (make_writable_func_t) */
69e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod/* TODO get_table_func_t constructor */
70fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
71590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod/*
72590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod * GDEF
73590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod */
74590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod
756f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbodtypedef enum {
766f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED	= 0x0000,
776f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH	= 0x0002,
786f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE	= 0x0004,
796f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_MARK		= 0x0008,
806f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod  HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT	= 0x0010
816f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod} hb_ot_layout_glyph_class_t;
826f425b11799aa20dab553085f05744191b7318e2Behdad Esfahbod
83590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbodhb_bool_t
84e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_has_font_glyph_classes (hb_ot_layout_t *layout);
85590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod
86aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbodhb_ot_layout_glyph_class_t
87e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_get_glyph_class (hb_ot_layout_t *layout,
882d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod			      hb_codepoint_t  glyph);
89fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
90fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbodvoid
91e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_set_glyph_class (hb_ot_layout_t            *layout,
922d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod			      hb_codepoint_t             glyph,
93aff831ed6787abe8e24a977e34d97ff2e0b7dc21Behdad Esfahbod			      hb_ot_layout_glyph_class_t klass);
94fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod
95590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbodvoid
96e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbodhb_ot_layout_build_glyph_classes (hb_ot_layout_t *layout,
97e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod				  uint16_t        num_total_glyphs,
982d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod				  hb_codepoint_t *glyphs,
99e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod				  unsigned char  *klasses,
100e50c3978d37b2c0d6ddd4ced6a6196f6857cd596Behdad Esfahbod				  uint16_t        count);
101590d55cbb9e21ef74dfd88eee51fd0a763958cd2Behdad Esfahbod
10279420ad9caf2d5fc94c3693e8292edfa27060b2dBehdad Esfahbodvoid
10379420ad9caf2d5fc94c3693e8292edfa27060b2dBehdad Esfahbodhb_ot_layout_get_attach_points (hb_ot_layout_t *layout,
10479420ad9caf2d5fc94c3693e8292edfa27060b2dBehdad Esfahbod				hb_codepoint_t  glyph,
10579420ad9caf2d5fc94c3693e8292edfa27060b2dBehdad Esfahbod				unsigned int   *point_count /* IN/OUT */,
10679420ad9caf2d5fc94c3693e8292edfa27060b2dBehdad Esfahbod				unsigned int   *point_array /* OUT */);
10779420ad9caf2d5fc94c3693e8292edfa27060b2dBehdad Esfahbod
108706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod/*
109706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod * GSUB/GPOS
110706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod */
111706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
112706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodtypedef enum {
113706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod  HB_OT_LAYOUT_TABLE_TYPE_GSUB,
114706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod  HB_OT_LAYOUT_TABLE_TYPE_GPOS,
115706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod  HB_OT_LAYOUT_TABLE_TYPE_NONE
116706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod} hb_ot_layout_table_type_t;
117706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
11830bd763fa2fa4aceee51433ec9fc8dc28480b5d7Behdad Esfahbodtypedef uint32_t hb_ot_layout_feature_mask_t;
1192d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
120706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_NO_SCRIPT_INDEX		((unsigned int) 0xFFFF)
121706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_NO_FEATURE_INDEX		((unsigned int) 0xFFFF)
122706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX	((unsigned int) 0xFFFF)
123706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_TAG_DEFAULT_SCRIPT		HB_TAG ('D', 'F', 'L', 'T')
124706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define HB_OT_LAYOUT_TAG_DEFAULT_LANGUAGE	HB_TAG ('d', 'f', 'l', 't')
125706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
126706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodunsigned int
127c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_script_count (hb_ot_layout_t            *layout,
128c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				     hb_ot_layout_table_type_t  table_type);
129706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
130706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_tag_t
131c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_script_tag (hb_ot_layout_t            *layout,
132c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   hb_ot_layout_table_type_t  table_type,
133c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   unsigned int               script_index);
134706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
135706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_bool_t
136c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_find_script (hb_ot_layout_t            *layout,
137c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				hb_ot_layout_table_type_t  table_type,
138c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				hb_tag_t                   script_tag,
139c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				unsigned int              *script_index);
140706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
141706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodunsigned int
142c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_feature_count (hb_ot_layout_t            *layout,
143c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      hb_ot_layout_table_type_t  table_type);
144706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
145706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_tag_t
146c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_feature_tag (hb_ot_layout_t            *layout,
147c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    hb_ot_layout_table_type_t  table_type,
148c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int               feature_index);
149706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
150706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbodhb_bool_t
1515e5eb0573f7ea2ce2cf037fef0df70a4351e82c0Behdad Esfahbodhb_ot_layout_table_find_feature (hb_ot_layout_t            *layout,
1525e5eb0573f7ea2ce2cf037fef0df70a4351e82c0Behdad Esfahbod				 hb_ot_layout_table_type_t  table_type,
1535e5eb0573f7ea2ce2cf037fef0df70a4351e82c0Behdad Esfahbod				 hb_tag_t                   feature_tag,
1545e5eb0573f7ea2ce2cf037fef0df70a4351e82c0Behdad Esfahbod				 unsigned int              *feature_index);
155c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
156c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
157c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_table_get_lookup_count (hb_ot_layout_t            *layout,
158c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				     hb_ot_layout_table_type_t  table_type);
159c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
160c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
161c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_script_get_language_count (hb_ot_layout_t            *layout,
162c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod					hb_ot_layout_table_type_t  table_type,
163c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod					unsigned int               script_index);
164c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
165c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_tag_t
166c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_script_get_language_tag (hb_ot_layout_t            *layout,
167c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      hb_ot_layout_table_type_t  table_type,
168c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      unsigned int               script_index,
169c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				      unsigned int               language_index);
1704a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
1714a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_bool_t
172c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_script_find_language (hb_ot_layout_t            *layout,
173c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   hb_ot_layout_table_type_t  table_type,
174c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   unsigned int               script_index,
175c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   hb_tag_t                   language_tag,
176c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				   unsigned int              *language_index);
177c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
178c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_bool_t
179c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_required_feature_index (hb_ot_layout_t            *layout,
180c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  hb_ot_layout_table_type_t  table_type,
181c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  unsigned int               script_index,
182c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  unsigned int               language_index,
183c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod						  unsigned int              *feature_index);
184c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
185c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
186c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_feature_count (hb_ot_layout_t            *layout,
1874a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod					 hb_ot_layout_table_type_t  table_type,
1884a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod					 unsigned int               script_index,
189c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod					 unsigned int               language_index);
1904a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
1914a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodunsigned int
192c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_feature_index (hb_ot_layout_t            *layout,
193c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         hb_ot_layout_table_type_t  table_type,
194c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         unsigned int               script_index,
195c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         unsigned int               language_index,
196c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				         unsigned int               num_feature);
1974a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
1984a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_tag_t
199c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_get_feature_tag (hb_ot_layout_t            *layout,
200c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       hb_ot_layout_table_type_t  table_type,
201c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               script_index,
202c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               language_index,
203c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               num_feature);
2044a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbod
2054a26ea408c87f0bb59deca9ff44008d138471aa3Behdad Esfahbodhb_bool_t
206c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_language_find_feature (hb_ot_layout_t            *layout,
207c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    hb_ot_layout_table_type_t  table_type,
208c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int               script_index,
209c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int               language_index,
210c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    hb_tag_t                   feature_tag,
211c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				    unsigned int              *feature_index);
212c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
213c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
214c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_feature_get_lookup_count (hb_ot_layout_t            *layout,
215c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       hb_ot_layout_table_type_t  table_type,
216c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               feature_index);
217c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod
218c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodunsigned int
219c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbodhb_ot_layout_feature_get_lookup_index (hb_ot_layout_t            *layout,
220c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       hb_ot_layout_table_type_t  table_type,
221c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               feature_index,
222c44733596c6648e209c12349e18e35424edf3d59Behdad Esfahbod				       unsigned int               num_lookup);
223706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
2242d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod/*
2252d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod * GSUB
2262d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod */
2272d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2282d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbodhb_bool_t
2292d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbodhb_ot_layout_substitute_lookup (hb_ot_layout_t              *layout,
2302d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod				hb_buffer_t                 *buffer,
2312d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod			        unsigned int                 lookup_index,
2322d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod				hb_ot_layout_feature_mask_t  mask);
2332d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2349c42f05a5ccbb48a9367b80ecdf3679e88088fcfBehdad Esfahbodhb_bool_t
2359c42f05a5ccbb48a9367b80ecdf3679e88088fcfBehdad Esfahbodhb_ot_layout_position_lookup   (hb_ot_layout_t              *layout,
2369c42f05a5ccbb48a9367b80ecdf3679e88088fcfBehdad Esfahbod				hb_buffer_t                 *buffer,
2379c42f05a5ccbb48a9367b80ecdf3679e88088fcfBehdad Esfahbod			        unsigned int                 lookup_index,
2389c42f05a5ccbb48a9367b80ecdf3679e88088fcfBehdad Esfahbod				hb_ot_layout_feature_mask_t  mask);
2392d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2402d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2412d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2422d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2432d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2442d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2452d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2462d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
2472d15e72c75931398db5e027e660f1320bb979117Behdad Esfahbod
248706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
249706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod/*
250706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod#define PANGO_OT_ALL_GLYPHS			((guint) 0xFFFF)
251706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
252706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod*/
253706ab25a4cb043d46e6088aa0a7184ee200276c9Behdad Esfahbod
254f96ffd43bce0ac6d9c897933c9be0e51d543e570Behdad EsfahbodHB_END_DECLS
25512c4568c680ea2b9b98a16a8b7402ca185c90ef6Behdad Esfahbod
256fd92a3dde32fd10df30c9eeb97641bc3c15b1e9bBehdad Esfahbod#endif /* HB_OT_LAYOUT_H */
257