QtBase  v6.3.1
hb-aat-layout.cc
Go to the documentation of this file.
1 /*
2  * Copyright © 2017 Google, Inc.
3  * Copyright © 2018 Ebrahim Byagowi
4  *
5  * This is part of HarfBuzz, a text shaping library.
6  *
7  * Permission is hereby granted, without written agreement and without
8  * license or royalty fees, to use, copy, modify, and distribute this
9  * software and its documentation for any purpose, provided that the
10  * above copyright notice and the following two paragraphs appear in
11  * all copies of this software.
12  *
13  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
14  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
15  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
16  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
17  * DAMAGE.
18  *
19  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
20  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
21  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
22  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
23  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
24  *
25  * Google Author(s): Behdad Esfahbod
26  */
27 
28 #include "hb.hh"
29 
30 #include "hb-aat-layout.hh"
32 #include "hb-aat-layout-bsln-table.hh" // Just so we compile it; unused otherwise.
34 #include "hb-aat-layout-just-table.hh" // Just so we compile it; unused otherwise.
38 #include "hb-aat-ltag-table.hh"
39 
40 
41 /*
42  * hb_aat_apply_context_t
43  */
44 
45 /* Note: This context is used for kerning, even without AAT, hence the condition. */
46 #if !defined(HB_NO_AAT) || !defined(HB_NO_OT_KERN)
47 
49  hb_font_t *font_,
50  hb_buffer_t *buffer_,
51  hb_blob_t *blob) :
52  plan (plan_),
53  font (font_),
54  face (font->face),
55  buffer (buffer_),
56  sanitizer (),
57  ankr_table (&Null (AAT::ankr)),
58  gdef_table (face->table.GDEF->table),
59  lookup_index (0)
60 {
61  sanitizer.init (blob);
62  sanitizer.set_num_glyphs (face->get_num_glyphs ());
63  sanitizer.start_processing ();
64  sanitizer.set_max_ops (HB_SANITIZE_MAX_OPS_MAX);
65 }
66 
68 { sanitizer.end_processing (); }
69 
70 void
72 { ankr_table = ankr_table_; }
73 
74 #endif
75 
76 
90 #if !defined(HB_NO_AAT) || defined(HAVE_CORETEXT)
91 
92 /* Mapping from OpenType feature tags to AAT feature names and selectors.
93  *
94  * Table data courtesy of Apple. Converted from mnemonics to integers
95  * when moving to this file. */
96 static const hb_aat_feature_mapping_t feature_mappings[] =
97 {
175 };
176 
190 {
191  return hb_sorted_array (feature_mappings).bsearch (tag);
192 }
193 #endif
194 
195 
196 #ifndef HB_NO_AAT
197 
198 /*
199  * mort/morx/kerx/trak
200  */
201 
202 
203 void
205  hb_aat_map_t *map)
206 {
207  const AAT::morx& morx = *mapper->face->table.morx;
208  if (morx.has_data ())
209  {
210  morx.compile_flags (mapper, map);
211  return;
212  }
213 
214  const AAT::mort& mort = *mapper->face->table.mort;
215  if (mort.has_data ())
216  {
217  mort.compile_flags (mapper, map);
218  return;
219  }
220 }
221 
222 
236 hb_bool_t
238 {
239  return face->table.morx->has_data () ||
240  face->table.mort->has_data ();
241 }
242 
243 void
245  hb_font_t *font,
247 {
248  hb_blob_t *morx_blob = font->face->table.morx.get_blob ();
249  const AAT::morx& morx = *morx_blob->as<AAT::morx> ();
250  if (morx.has_data ())
251  {
252  AAT::hb_aat_apply_context_t c (plan, font, buffer, morx_blob);
253  if (!buffer->message (font, "start table morx")) return;
254  morx.apply (&c);
255  (void) buffer->message (font, "end table morx");
256  return;
257  }
258 
259  hb_blob_t *mort_blob = font->face->table.mort.get_blob ();
260  const AAT::mort& mort = *mort_blob->as<AAT::mort> ();
261  if (mort.has_data ())
262  {
263  AAT::hb_aat_apply_context_t c (plan, font, buffer, mort_blob);
264  if (!buffer->message (font, "start table mort")) return;
265  mort.apply (&c);
266  (void) buffer->message (font, "end table mort");
267  return;
268  }
269 }
270 
271 void
273 {
274  unsigned int count = buffer->len;
275  hb_glyph_info_t *info = buffer->info;
277  for (unsigned int i = 0; i < count; i++)
278  if (unlikely (info[i].codepoint == AAT::DELETED_GLYPH))
279  pos[i].x_advance = pos[i].y_advance = pos[i].x_offset = pos[i].y_offset = 0;
280 }
281 
282 static bool
283 is_deleted_glyph (const hb_glyph_info_t *info)
284 {
285  return info->codepoint == AAT::DELETED_GLYPH;
286 }
287 
288 void
290 {
291  hb_ot_layout_delete_glyphs_inplace (buffer, is_deleted_glyph);
292 }
293 
307 hb_bool_t
309 {
310  return face->table.kerx->has_data ();
311 }
312 
313 void
315  hb_font_t *font,
317 {
318  hb_blob_t *kerx_blob = font->face->table.kerx.get_blob ();
319  const AAT::kerx& kerx = *kerx_blob->as<AAT::kerx> ();
320 
321  AAT::hb_aat_apply_context_t c (plan, font, buffer, kerx_blob);
322  if (!buffer->message (font, "start table kerx")) return;
323  c.set_ankr_table (font->face->table.ankr.get ());
324  kerx.apply (&c);
325  (void) buffer->message (font, "end table kerx");
326 }
327 
328 
340 hb_bool_t
342 {
343  return face->table.trak->has_data ();
344 }
345 
346 void
348  hb_font_t *font,
350 {
351  const AAT::trak& trak = *font->face->table.trak;
352 
354  trak.apply (&c);
355 }
356 
371 unsigned int
373  unsigned int start_offset,
374  unsigned int *feature_count, /* IN/OUT. May be NULL. */
375  hb_aat_layout_feature_type_t *features /* OUT. May be NULL. */)
376 {
377  return face->table.feat->get_feature_types (start_offset, feature_count, features);
378 }
379 
393  hb_aat_layout_feature_type_t feature_type)
394 {
395  return face->table.feat->get_feature_name_id (feature_type);
396 }
397 
419 unsigned int
421  hb_aat_layout_feature_type_t feature_type,
422  unsigned int start_offset,
423  unsigned int *selector_count, /* IN/OUT. May be NULL. */
424  hb_aat_layout_feature_selector_info_t *selectors, /* OUT. May be NULL. */
425  unsigned int *default_index /* OUT. May be NULL. */)
426 {
427  return face->table.feat->get_selector_infos (feature_type, start_offset, selector_count, selectors, default_index);
428 }
429 
430 
431 #endif
small capitals from c petite p scientific i
[1]
Definition: afcover.h:80
QMap< QString, QString > map
[6]
void hb_aat_layout_substitute(const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer)
hb_ot_name_id_t hb_aat_layout_feature_type_get_name_id(hb_face_t *face, hb_aat_layout_feature_type_t feature_type)
void hb_aat_layout_track(const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer)
void hb_aat_layout_zero_width_deleted_glyphs(hb_buffer_t *buffer)
hb_bool_t hb_aat_layout_has_substitution(hb_face_t *face)
unsigned int hb_aat_layout_get_feature_types(hb_face_t *face, unsigned int start_offset, unsigned int *feature_count, hb_aat_layout_feature_type_t *features)
const hb_aat_feature_mapping_t * hb_aat_layout_find_feature_mapping(hb_tag_t tag)
void hb_aat_layout_compile_map(const hb_aat_map_builder_t *mapper, hb_aat_map_t *map)
void hb_aat_layout_remove_deleted_glyphs(hb_buffer_t *buffer)
hb_bool_t hb_aat_layout_has_positioning(hb_face_t *face)
void hb_aat_layout_position(const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer)
unsigned int hb_aat_layout_feature_type_get_selector_infos(hb_face_t *face, hb_aat_layout_feature_type_t feature_type, unsigned int start_offset, unsigned int *selector_count, hb_aat_layout_feature_selector_info_t *selectors, unsigned int *default_index)
hb_bool_t hb_aat_layout_has_tracking(hb_face_t *face)
hb_aat_layout_feature_selector_t
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1990_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_TITLING_CAPS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_DIAGONAL_FRACTIONS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_EXPERT_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_ORDINALS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SLASHED_ZERO_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_INFERIORS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_NLCCHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_HALF_WIDTH_TEXT
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_HANJA_TO_HANGUL
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVENTEEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SCIENTIFIC_INFERIORS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THREE_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_COMMON_LIGATURES_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_UPPER_CASE
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_NAMES_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_THIRD_WIDTH_TEXT
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SUBSTITUTE_VERTICAL_FORMS_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SIMPLIFIED_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_QUARTER_WIDTH_TEXT
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_MATHEMATICAL_GREEK_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHTEEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_NORMAL_POSITION
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_VERTICAL_FRACTIONS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_VERT_KANA_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_TRANSLITERATION
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_LIGATURES_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALT_PROPORTIONAL_TEXT
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_NUMBERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_STYLE_OPTIONS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_TEXT
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIFTEEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_SMALL_CAPS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_NUMBERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_SWASH_ALTERNATES_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIX_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWO_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SEVEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINE_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_SIXTEEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SUPERIORS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_ALTERNATE_HORIZ_KANA_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ELEVEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_RARE_LIGATURES_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOURTEEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_EIGHT_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_NUMBERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWELVE_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FOUR_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_PROPORTIONAL_TEXT
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1983_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_MONOSPACED_NUMBERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_HALF_WIDTH_TEXT
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_ONE_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_DEFAULT_LOWER_CASE
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_NINETEEN_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_PETITE_CAPS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_LAYOUT_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_TRADITIONAL_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_HOJO_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_UPPER_CASE_SMALL_CAPS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CONTEXTUAL_ALTERNATES_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_HISTORICAL_LIGATURES_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_FIVE_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS1978_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_CASE_SENSITIVE_SPACING_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_SWASH_ALTERNATES_ON
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_THIRTEEN_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_STYLISTIC_ALT_TWENTY_OFF
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_LOWER_CASE_PETITE_CAPS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_JIS2004_CHARACTERS
@ HB_AAT_LAYOUT_FEATURE_SELECTOR_NO_FRACTIONS
hb_aat_layout_feature_type_t
Definition: hb-aat-layout.h:86
@ HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION
Definition: hb-aat-layout.h:93
@ HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION
@ HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA
@ HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES
Definition: hb-aat-layout.h:90
@ HB_AAT_LAYOUT_FEATURE_TYPE_LETTER_CASE
Definition: hb-aat-layout.h:92
@ HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE
@ HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES
@ HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS
@ HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS
@ HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING
Definition: hb-aat-layout.h:95
@ HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION
Definition: hb-aat-layout.h:98
@ HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN
@ HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS
@ HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING
@ HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA
@ HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE
@ HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE
@ HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE
@ HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT
@ HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS
Definition: hb-aat-layout.h:99
@ HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES
hb_sorted_array_t< T > hb_sorted_array(T *array, unsigned int length)
Definition: hb-array.hh:399
HB_EXTERN unsigned int start_offset
void hb_ot_layout_delete_glyphs_inplace(hb_buffer_t *buffer, bool(*filter)(const hb_glyph_info_t *info))
unsigned int hb_ot_name_id_t
Definition: hb-ot-name.h:109
#define HB_SANITIZE_MAX_OPS_MAX
Definition: hb-sanitize.hh:114
#define unlikely(expr)
Definition: hb.hh:251
backing_store_ptr info
[4]
Definition: jmemsys.h:161
void
Definition: png.h:1080
GLenum GLenum GLsizei count
GLenum face
GLenum GLuint buffer
const GLubyte * c
Definition: qopenglext.h:12701
GLenum GLenum GLsizei void * table
Definition: qopenglext.h:2745
HB_BEGIN_DECLS typedef int hb_bool_t
Definition: hb-common.h:97
#define HB_TAG(c1, c2, c3, c4)
Definition: hb-common.h:169
uint32_t hb_tag_t
Definition: hb-common.h:157
QDataWidgetMapper * mapper
[0]
bool apply(AAT::hb_aat_apply_context_t *c) const
HB_INTERNAL void set_ankr_table(const AAT::ankr *ankr_table_)
HB_INTERNAL hb_aat_apply_context_t(const hb_ot_shape_plan_t *plan_, hb_font_t *font_, hb_buffer_t *buffer_, hb_blob_t *blob=const_cast< hb_blob_t * >(&Null(hb_blob_t)))
HB_INTERNAL ~hb_aat_apply_context_t()
void apply(hb_aat_apply_context_t *c) const
void compile_flags(const hb_aat_map_builder_t *mapper, hb_aat_map_t *map) const
bool apply(hb_aat_apply_context_t *c) const
Definition: hb-null.hh:93
const Type * as() const
Definition: hb-blob.hh:59
XmlOutput::xml_output tag(const QString &name)
Definition: xmloutput.h:154