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