Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:04:02

0001 /*
0002  * Copyright © 2007,2008,2009  Red Hat, Inc.
0003  *
0004  *  This is part of HarfBuzz, a text shaping library.
0005  *
0006  * Permission is hereby granted, without written agreement and without
0007  * license or royalty fees, to use, copy, modify, and distribute this
0008  * software and its documentation for any purpose, provided that the
0009  * above copyright notice and the following two paragraphs appear in
0010  * all copies of this software.
0011  *
0012  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
0013  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
0014  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
0015  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
0016  * DAMAGE.
0017  *
0018  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
0019  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
0020  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
0021  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
0022  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
0023  *
0024  * Red Hat Author(s): Behdad Esfahbod
0025  */
0026 
0027 #if !defined(HB_OT_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
0028 #error "Include <hb-ot.h> instead."
0029 #endif
0030 
0031 #ifndef HB_OT_LAYOUT_H
0032 #define HB_OT_LAYOUT_H
0033 
0034 #include "hb.h"
0035 
0036 #include "hb-ot-name.h"
0037 
0038 HB_BEGIN_DECLS
0039 
0040 
0041 /**
0042  * HB_OT_TAG_BASE:
0043  *
0044  * OpenType [Baseline Table](https://docs.microsoft.com/en-us/typography/opentype/spec/base).
0045  */
0046 #define HB_OT_TAG_BASE HB_TAG('B','A','S','E')
0047 /**
0048  * HB_OT_TAG_GDEF:
0049  *
0050  * OpenType [Glyph Definition Table](https://docs.microsoft.com/en-us/typography/opentype/spec/gdef).
0051  */
0052 #define HB_OT_TAG_GDEF HB_TAG('G','D','E','F')
0053 /**
0054  * HB_OT_TAG_GSUB:
0055  *
0056  * OpenType [Glyph Substitution Table](https://docs.microsoft.com/en-us/typography/opentype/spec/gsub).
0057  */
0058 #define HB_OT_TAG_GSUB HB_TAG('G','S','U','B')
0059 /**
0060  * HB_OT_TAG_GPOS:
0061  *
0062  * OpenType [Glyph Positioning Table](https://docs.microsoft.com/en-us/typography/opentype/spec/gpos).
0063  */
0064 #define HB_OT_TAG_GPOS HB_TAG('G','P','O','S')
0065 /**
0066  * HB_OT_TAG_JSTF:
0067  *
0068  * OpenType [Justification Table](https://docs.microsoft.com/en-us/typography/opentype/spec/jstf).
0069  */
0070 #define HB_OT_TAG_JSTF HB_TAG('J','S','T','F')
0071 
0072 
0073 /*
0074  * Script & Language tags.
0075  */
0076 
0077 /**
0078  * HB_OT_TAG_DEFAULT_SCRIPT:
0079  *
0080  * OpenType script tag, `DFLT`, for features that are not script-specific.
0081  *
0082  */
0083 #define HB_OT_TAG_DEFAULT_SCRIPT    HB_TAG ('D', 'F', 'L', 'T')
0084 /**
0085  * HB_OT_TAG_DEFAULT_LANGUAGE:
0086  *
0087  * OpenType language tag, `dflt`. Not a valid language tag, but some fonts
0088  * mistakenly use it.
0089  */
0090 #define HB_OT_TAG_DEFAULT_LANGUAGE  HB_TAG ('d', 'f', 'l', 't')
0091 
0092 /**
0093  * HB_OT_MAX_TAGS_PER_SCRIPT:
0094  *
0095  * Maximum number of OpenType tags that can correspond to a give #hb_script_t.
0096  *
0097  * Since: 2.0.0
0098  **/
0099 #define HB_OT_MAX_TAGS_PER_SCRIPT   3u
0100 /**
0101  * HB_OT_MAX_TAGS_PER_LANGUAGE:
0102  *
0103  * Maximum number of OpenType tags that can correspond to a give #hb_language_t.
0104  *
0105  * Since: 2.0.0
0106  **/
0107 #define HB_OT_MAX_TAGS_PER_LANGUAGE 3u
0108 
0109 HB_EXTERN void
0110 hb_ot_tags_from_script_and_language (hb_script_t   script,
0111                      hb_language_t language,
0112                      unsigned int *script_count /* IN/OUT */,
0113                      hb_tag_t     *script_tags /* OUT */,
0114                      unsigned int *language_count /* IN/OUT */,
0115                      hb_tag_t     *language_tags /* OUT */);
0116 
0117 HB_EXTERN hb_script_t
0118 hb_ot_tag_to_script (hb_tag_t tag);
0119 
0120 HB_EXTERN hb_language_t
0121 hb_ot_tag_to_language (hb_tag_t tag);
0122 
0123 HB_EXTERN void
0124 hb_ot_tags_to_script_and_language (hb_tag_t       script_tag,
0125                    hb_tag_t       language_tag,
0126                    hb_script_t   *script /* OUT */,
0127                    hb_language_t *language /* OUT */);
0128 
0129 
0130 /*
0131  * GDEF
0132  */
0133 
0134 HB_EXTERN hb_bool_t
0135 hb_ot_layout_has_glyph_classes (hb_face_t *face);
0136 
0137 /**
0138  * hb_ot_layout_glyph_class_t:
0139  * @HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED: Glyphs not matching the other classifications
0140  * @HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH: Spacing, single characters, capable of accepting marks
0141  * @HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE: Glyphs that represent ligation of multiple characters
0142  * @HB_OT_LAYOUT_GLYPH_CLASS_MARK: Non-spacing, combining glyphs that represent marks
0143  * @HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT: Spacing glyphs that represent part of a single character
0144  *
0145  * The GDEF classes defined for glyphs.
0146  *
0147  **/
0148 typedef enum {
0149   HB_OT_LAYOUT_GLYPH_CLASS_UNCLASSIFIED = 0,
0150   HB_OT_LAYOUT_GLYPH_CLASS_BASE_GLYPH   = 1,
0151   HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE = 2,
0152   HB_OT_LAYOUT_GLYPH_CLASS_MARK     = 3,
0153   HB_OT_LAYOUT_GLYPH_CLASS_COMPONENT    = 4
0154 } hb_ot_layout_glyph_class_t;
0155 
0156 HB_EXTERN hb_ot_layout_glyph_class_t
0157 hb_ot_layout_get_glyph_class (hb_face_t      *face,
0158                   hb_codepoint_t  glyph);
0159 
0160 HB_EXTERN void
0161 hb_ot_layout_get_glyphs_in_class (hb_face_t                  *face,
0162                   hb_ot_layout_glyph_class_t  klass,
0163                   hb_set_t                   *glyphs /* OUT */);
0164 
0165 /* Not that useful.  Provides list of attach points for a glyph that a
0166  * client may want to cache */
0167 HB_EXTERN unsigned int
0168 hb_ot_layout_get_attach_points (hb_face_t      *face,
0169                 hb_codepoint_t  glyph,
0170                 unsigned int    start_offset,
0171                 unsigned int   *point_count /* IN/OUT */,
0172                 unsigned int   *point_array /* OUT */);
0173 
0174 /* Ligature caret positions */
0175 HB_EXTERN unsigned int
0176 hb_ot_layout_get_ligature_carets (hb_font_t      *font,
0177                   hb_direction_t  direction,
0178                   hb_codepoint_t  glyph,
0179                   unsigned int    start_offset,
0180                   unsigned int   *caret_count /* IN/OUT */,
0181                   hb_position_t  *caret_array /* OUT */);
0182 
0183 
0184 /*
0185  * GSUB/GPOS feature query and enumeration interface
0186  */
0187 
0188 /**
0189  * HB_OT_LAYOUT_NO_SCRIPT_INDEX:
0190  *
0191  * Special value for script index indicating unsupported script.
0192  */
0193 #define HB_OT_LAYOUT_NO_SCRIPT_INDEX        0xFFFFu
0194 /**
0195  * HB_OT_LAYOUT_NO_FEATURE_INDEX:
0196  *
0197  * Special value for feature index indicating unsupported feature.
0198  */
0199 #define HB_OT_LAYOUT_NO_FEATURE_INDEX       0xFFFFu
0200 /**
0201  * HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX:
0202  *
0203  * Special value for language index indicating default or unsupported language.
0204  */
0205 #define HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX 0xFFFFu
0206 /**
0207  * HB_OT_LAYOUT_NO_VARIATIONS_INDEX:
0208  *
0209  * Special value for variations index indicating unsupported variation.
0210  */
0211 #define HB_OT_LAYOUT_NO_VARIATIONS_INDEX    0xFFFFFFFFu
0212 
0213 HB_EXTERN unsigned int
0214 hb_ot_layout_table_get_script_tags (hb_face_t    *face,
0215                     hb_tag_t      table_tag,
0216                     unsigned int  start_offset,
0217                     unsigned int *script_count /* IN/OUT */,
0218                     hb_tag_t     *script_tags /* OUT */);
0219 
0220 HB_EXTERN hb_bool_t
0221 hb_ot_layout_table_find_script (hb_face_t    *face,
0222                 hb_tag_t      table_tag,
0223                 hb_tag_t      script_tag,
0224                 unsigned int *script_index /* OUT */);
0225 
0226 HB_EXTERN hb_bool_t
0227 hb_ot_layout_table_select_script (hb_face_t      *face,
0228                   hb_tag_t        table_tag,
0229                   unsigned int    script_count,
0230                   const hb_tag_t *script_tags,
0231                   unsigned int   *script_index /* OUT */,
0232                   hb_tag_t       *chosen_script /* OUT */);
0233 
0234 HB_EXTERN unsigned int
0235 hb_ot_layout_table_get_feature_tags (hb_face_t    *face,
0236                      hb_tag_t      table_tag,
0237                      unsigned int  start_offset,
0238                      unsigned int *feature_count /* IN/OUT */,
0239                      hb_tag_t     *feature_tags /* OUT */);
0240 
0241 HB_EXTERN unsigned int
0242 hb_ot_layout_script_get_language_tags (hb_face_t    *face,
0243                        hb_tag_t      table_tag,
0244                        unsigned int  script_index,
0245                        unsigned int  start_offset,
0246                        unsigned int *language_count /* IN/OUT */,
0247                        hb_tag_t     *language_tags /* OUT */);
0248 
0249 HB_EXTERN hb_bool_t
0250 hb_ot_layout_script_select_language (hb_face_t      *face,
0251                      hb_tag_t        table_tag,
0252                      unsigned int    script_index,
0253                      unsigned int    language_count,
0254                      const hb_tag_t *language_tags,
0255                      unsigned int   *language_index /* OUT */);
0256 
0257 HB_EXTERN hb_bool_t
0258 hb_ot_layout_script_select_language2 (hb_face_t      *face,
0259                      hb_tag_t        table_tag,
0260                      unsigned int    script_index,
0261                      unsigned int    language_count,
0262                      const hb_tag_t *language_tags,
0263                      unsigned int   *language_index /* OUT */,
0264                      hb_tag_t       *chosen_language /* OUT */);
0265 
0266 HB_EXTERN hb_bool_t
0267 hb_ot_layout_language_get_required_feature_index (hb_face_t    *face,
0268                           hb_tag_t      table_tag,
0269                           unsigned int  script_index,
0270                           unsigned int  language_index,
0271                           unsigned int *feature_index /* OUT */);
0272 
0273 HB_EXTERN hb_bool_t
0274 hb_ot_layout_language_get_required_feature (hb_face_t    *face,
0275                         hb_tag_t      table_tag,
0276                         unsigned int  script_index,
0277                         unsigned int  language_index,
0278                         unsigned int *feature_index /* OUT */,
0279                         hb_tag_t     *feature_tag /* OUT */);
0280 
0281 HB_EXTERN unsigned int
0282 hb_ot_layout_language_get_feature_indexes (hb_face_t    *face,
0283                        hb_tag_t      table_tag,
0284                        unsigned int  script_index,
0285                        unsigned int  language_index,
0286                        unsigned int  start_offset,
0287                        unsigned int *feature_count /* IN/OUT */,
0288                        unsigned int *feature_indexes /* OUT */);
0289 
0290 HB_EXTERN unsigned int
0291 hb_ot_layout_language_get_feature_tags (hb_face_t    *face,
0292                     hb_tag_t      table_tag,
0293                     unsigned int  script_index,
0294                     unsigned int  language_index,
0295                     unsigned int  start_offset,
0296                     unsigned int *feature_count /* IN/OUT */,
0297                     hb_tag_t     *feature_tags /* OUT */);
0298 
0299 HB_EXTERN hb_bool_t
0300 hb_ot_layout_language_find_feature (hb_face_t    *face,
0301                     hb_tag_t      table_tag,
0302                     unsigned int  script_index,
0303                     unsigned int  language_index,
0304                     hb_tag_t      feature_tag,
0305                     unsigned int *feature_index /* OUT */);
0306 
0307 HB_EXTERN unsigned int
0308 hb_ot_layout_feature_get_lookups (hb_face_t    *face,
0309                   hb_tag_t      table_tag,
0310                   unsigned int  feature_index,
0311                   unsigned int  start_offset,
0312                   unsigned int *lookup_count /* IN/OUT */,
0313                   unsigned int *lookup_indexes /* OUT */);
0314 
0315 HB_EXTERN unsigned int
0316 hb_ot_layout_table_get_lookup_count (hb_face_t    *face,
0317                      hb_tag_t      table_tag);
0318 
0319 HB_EXTERN void
0320 hb_ot_layout_collect_features (hb_face_t      *face,
0321                    hb_tag_t        table_tag,
0322                    const hb_tag_t *scripts,
0323                    const hb_tag_t *languages,
0324                    const hb_tag_t *features,
0325                    hb_set_t       *feature_indexes /* OUT */);
0326 
0327 HB_EXTERN void
0328 hb_ot_layout_collect_features_map (hb_face_t      *face,
0329                    hb_tag_t        table_tag,
0330                    unsigned        script_index,
0331                    unsigned        language_index,
0332                    hb_map_t       *feature_map /* OUT */);
0333 
0334 HB_EXTERN void
0335 hb_ot_layout_collect_lookups (hb_face_t      *face,
0336                   hb_tag_t        table_tag,
0337                   const hb_tag_t *scripts,
0338                   const hb_tag_t *languages,
0339                   const hb_tag_t *features,
0340                   hb_set_t       *lookup_indexes /* OUT */);
0341 
0342 HB_EXTERN void
0343 hb_ot_layout_lookup_collect_glyphs (hb_face_t    *face,
0344                     hb_tag_t      table_tag,
0345                     unsigned int  lookup_index,
0346                     hb_set_t     *glyphs_before, /* OUT.  May be NULL */
0347                     hb_set_t     *glyphs_input,  /* OUT.  May be NULL */
0348                     hb_set_t     *glyphs_after,  /* OUT.  May be NULL */
0349                     hb_set_t     *glyphs_output  /* OUT.  May be NULL */);
0350 
0351 
0352 /* Variations support */
0353 
0354 HB_EXTERN hb_bool_t
0355 hb_ot_layout_table_find_feature_variations (hb_face_t    *face,
0356                         hb_tag_t      table_tag,
0357                         const int    *coords,
0358                         unsigned int  num_coords,
0359                         unsigned int *variations_index /* out */);
0360 
0361 HB_EXTERN unsigned int
0362 hb_ot_layout_feature_with_variations_get_lookups (hb_face_t    *face,
0363                           hb_tag_t      table_tag,
0364                           unsigned int  feature_index,
0365                           unsigned int  variations_index,
0366                           unsigned int  start_offset,
0367                           unsigned int *lookup_count /* IN/OUT */,
0368                           unsigned int *lookup_indexes /* OUT */);
0369 
0370 
0371 /*
0372  * GSUB
0373  */
0374 
0375 HB_EXTERN hb_bool_t
0376 hb_ot_layout_has_substitution (hb_face_t *face);
0377 
0378 HB_EXTERN unsigned
0379 hb_ot_layout_lookup_get_glyph_alternates (hb_face_t      *face,
0380                       unsigned        lookup_index,
0381                       hb_codepoint_t  glyph,
0382                       unsigned        start_offset,
0383                       unsigned       *alternate_count /* IN/OUT */,
0384                       hb_codepoint_t *alternate_glyphs /* OUT */);
0385 
0386 HB_EXTERN hb_bool_t
0387 hb_ot_layout_lookup_would_substitute (hb_face_t            *face,
0388                       unsigned int          lookup_index,
0389                       const hb_codepoint_t *glyphs,
0390                       unsigned int          glyphs_length,
0391                       hb_bool_t             zero_context);
0392 
0393 HB_EXTERN void
0394 hb_ot_layout_lookup_substitute_closure (hb_face_t    *face,
0395                     unsigned int  lookup_index,
0396                     hb_set_t     *glyphs
0397                     /*TODO , hb_bool_t  inclusive */);
0398 
0399 HB_EXTERN void
0400 hb_ot_layout_lookups_substitute_closure (hb_face_t      *face,
0401                      const hb_set_t *lookups,
0402                      hb_set_t       *glyphs);
0403 
0404 
0405 /*
0406  * GPOS
0407  */
0408 
0409 HB_EXTERN hb_bool_t
0410 hb_ot_layout_has_positioning (hb_face_t *face);
0411 
0412 /* Optical 'size' feature info.  Returns true if found.
0413  * https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#size */
0414 HB_EXTERN hb_bool_t
0415 hb_ot_layout_get_size_params (hb_face_t       *face,
0416                   unsigned int    *design_size,       /* OUT.  May be NULL */
0417                   unsigned int    *subfamily_id,      /* OUT.  May be NULL */
0418                   hb_ot_name_id_t *subfamily_name_id, /* OUT.  May be NULL */
0419                   unsigned int    *range_start,       /* OUT.  May be NULL */
0420                   unsigned int    *range_end          /* OUT.  May be NULL */);
0421 
0422 HB_EXTERN hb_position_t
0423 hb_ot_layout_lookup_get_optical_bound (hb_font_t      *font,
0424                        unsigned        lookup_index,
0425                        hb_direction_t  direction,
0426                        hb_codepoint_t  glyph);
0427 
0428 
0429 /*
0430  * GSUB/GPOS
0431  */
0432 
0433 HB_EXTERN hb_bool_t
0434 hb_ot_layout_feature_get_name_ids (hb_face_t       *face,
0435                    hb_tag_t         table_tag,
0436                    unsigned int     feature_index,
0437                    hb_ot_name_id_t *label_id             /* OUT.  May be NULL */,
0438                    hb_ot_name_id_t *tooltip_id           /* OUT.  May be NULL */,
0439                    hb_ot_name_id_t *sample_id            /* OUT.  May be NULL */,
0440                    unsigned int    *num_named_parameters /* OUT.  May be NULL */,
0441                    hb_ot_name_id_t *first_param_id       /* OUT.  May be NULL */);
0442 
0443 
0444 HB_EXTERN unsigned int
0445 hb_ot_layout_feature_get_characters (hb_face_t      *face,
0446                      hb_tag_t        table_tag,
0447                      unsigned int    feature_index,
0448                      unsigned int    start_offset,
0449                      unsigned int   *char_count    /* IN/OUT.  May be NULL */,
0450                      hb_codepoint_t *characters    /* OUT.     May be NULL */);
0451 
0452 
0453 /*
0454  * BASE
0455  */
0456 
0457 HB_EXTERN hb_bool_t
0458 hb_ot_layout_get_font_extents (hb_font_t         *font,
0459                    hb_direction_t     direction,
0460                    hb_tag_t           script_tag,
0461                    hb_tag_t           language_tag,
0462                    hb_font_extents_t *extents);
0463 
0464 HB_EXTERN hb_bool_t
0465 hb_ot_layout_get_font_extents2 (hb_font_t         *font,
0466                 hb_direction_t     direction,
0467                 hb_script_t        script,
0468                 hb_language_t      language,
0469                 hb_font_extents_t *extents);
0470 
0471 /**
0472  * hb_ot_layout_baseline_tag_t:
0473  * @HB_OT_LAYOUT_BASELINE_TAG_ROMAN: The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek.
0474  * In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise.
0475  * (This would not apply to alphabetic characters that remain upright in vertical writing mode, since these
0476  * characters are not rotated.)
0477  * @HB_OT_LAYOUT_BASELINE_TAG_HANGING: The hanging baseline. In horizontal direction, this is the horizontal
0478  * line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode,
0479  * for Tibetan (or some other similar script) characters rotated 90 degrees clockwise.
0480  * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT: Ideographic character face bottom or left edge,
0481  * if the direction is horizontal or vertical, respectively.
0482  * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT: Ideographic character face top or right edge,
0483  * if the direction is horizontal or vertical, respectively.
0484  * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL: The center of the ideographic character face. Since: 4.0.0
0485  * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT: Ideographic em-box bottom or left edge,
0486  * if the direction is horizontal or vertical, respectively.
0487  * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT: Ideographic em-box top or right edge baseline,
0488  * @HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL: The center of the ideographic em-box. Since: 4.0.0
0489  * if the direction is horizontal or vertical, respectively.
0490  * @HB_OT_LAYOUT_BASELINE_TAG_MATH: The baseline about which mathematical characters are centered.
0491  * In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered.
0492  *
0493  * Baseline tags from [Baseline Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags) registry.
0494  *
0495  * Since: 2.6.0
0496  */
0497 typedef enum {
0498   HB_OT_LAYOUT_BASELINE_TAG_ROMAN           = HB_TAG ('r','o','m','n'),
0499   HB_OT_LAYOUT_BASELINE_TAG_HANGING         = HB_TAG ('h','a','n','g'),
0500   HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT    = HB_TAG ('i','c','f','b'),
0501   HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT  = HB_TAG ('i','c','f','t'),
0502   HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_CENTRAL       = HB_TAG ('I','c','f','c'),
0503   HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT   = HB_TAG ('i','d','e','o'),
0504   HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT = HB_TAG ('i','d','t','p'),
0505   HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_CENTRAL      = HB_TAG ('I','d','c','e'),
0506   HB_OT_LAYOUT_BASELINE_TAG_MATH            = HB_TAG ('m','a','t','h'),
0507 
0508   /*< private >*/
0509   _HB_OT_LAYOUT_BASELINE_TAG_MAX_VALUE = HB_TAG_MAX_SIGNED /*< skip >*/
0510 } hb_ot_layout_baseline_tag_t;
0511 
0512 HB_EXTERN hb_ot_layout_baseline_tag_t
0513 hb_ot_layout_get_horizontal_baseline_tag_for_script (hb_script_t script);
0514 
0515 HB_EXTERN hb_bool_t
0516 hb_ot_layout_get_baseline (hb_font_t                   *font,
0517                hb_ot_layout_baseline_tag_t  baseline_tag,
0518                hb_direction_t               direction,
0519                hb_tag_t                     script_tag,
0520                hb_tag_t                     language_tag,
0521                hb_position_t               *coord        /* OUT.  May be NULL. */);
0522 
0523 HB_EXTERN hb_bool_t
0524 hb_ot_layout_get_baseline2 (hb_font_t                   *font,
0525                 hb_ot_layout_baseline_tag_t  baseline_tag,
0526                 hb_direction_t               direction,
0527                 hb_script_t                  script,
0528                 hb_language_t                language,
0529                 hb_position_t               *coord        /* OUT.  May be NULL. */);
0530 
0531 HB_EXTERN void
0532 hb_ot_layout_get_baseline_with_fallback (hb_font_t                   *font,
0533                      hb_ot_layout_baseline_tag_t  baseline_tag,
0534                      hb_direction_t               direction,
0535                      hb_tag_t                     script_tag,
0536                      hb_tag_t                     language_tag,
0537                      hb_position_t               *coord        /* OUT */);
0538 
0539 HB_EXTERN void
0540 hb_ot_layout_get_baseline_with_fallback2 (hb_font_t                   *font,
0541                       hb_ot_layout_baseline_tag_t  baseline_tag,
0542                       hb_direction_t               direction,
0543                       hb_script_t                  script,
0544                       hb_language_t                language,
0545                       hb_position_t               *coord        /* OUT */);
0546 
0547 HB_END_DECLS
0548 
0549 #endif /* HB_OT_LAYOUT_H */