Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh

Issue 1476763003: Roll HarfBuzz to 1.1.1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: windows line height rebaseline Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright © 2007,2008,2009,2010 Red Hat, Inc. 2 * Copyright © 2007,2008,2009,2010 Red Hat, Inc.
3 * Copyright © 2010,2012 Google, Inc. 3 * Copyright © 2010,2012 Google, Inc.
4 * 4 *
5 * This is part of HarfBuzz, a text shaping library. 5 * This is part of HarfBuzz, a text shaping library.
6 * 6 *
7 * Permission is hereby granted, without written agreement and without 7 * Permission is hereby granted, without written agreement and without
8 * license or royalty fees, to use, copy, modify, and distribute this 8 * license or royalty fees, to use, copy, modify, and distribute this
9 * software and its documentation for any purpose, provided that the 9 * software and its documentation for any purpose, provided that the
10 * above copyright notice and the following two paragraphs appear in 10 * above copyright notice and the following two paragraphs appear in
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 } 67 }
68 68
69 hb_face_t *face; 69 hb_face_t *face;
70 hb_set_t *glyphs; 70 hb_set_t *glyphs;
71 recurse_func_t recurse_func; 71 recurse_func_t recurse_func;
72 unsigned int nesting_level_left; 72 unsigned int nesting_level_left;
73 unsigned int debug_depth; 73 unsigned int debug_depth;
74 74
75 hb_closure_context_t (hb_face_t *face_, 75 hb_closure_context_t (hb_face_t *face_,
76 hb_set_t *glyphs_, 76 hb_set_t *glyphs_,
77 » » unsigned int nesting_level_left_ = MAX_NESTING_LEVEL) : 77 » » unsigned int nesting_level_left_ = HB_MAX_NESTING_LEVEL) :
78 face (face_), 78 face (face_),
79 glyphs (glyphs_), 79 glyphs (glyphs_),
80 recurse_func (NULL), 80 recurse_func (NULL),
81 nesting_level_left (nesting_level_left_), 81 nesting_level_left (nesting_level_left_),
82 debug_depth (0) {} 82 debug_depth (0) {}
83 83
84 void set_recurse_func (recurse_func_t func) { recurse_func = func; } 84 void set_recurse_func (recurse_func_t func) { recurse_func = func; }
85 }; 85 };
86 86
87 87
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 recurse_func_t recurse_func; 189 recurse_func_t recurse_func;
190 hb_set_t recursed_lookups; 190 hb_set_t recursed_lookups;
191 unsigned int nesting_level_left; 191 unsigned int nesting_level_left;
192 unsigned int debug_depth; 192 unsigned int debug_depth;
193 193
194 hb_collect_glyphs_context_t (hb_face_t *face_, 194 hb_collect_glyphs_context_t (hb_face_t *face_,
195 hb_set_t *glyphs_before, /* OUT. May be NULL */ 195 hb_set_t *glyphs_before, /* OUT. May be NULL */
196 hb_set_t *glyphs_input, /* OUT. May be NULL */ 196 hb_set_t *glyphs_input, /* OUT. May be NULL */
197 hb_set_t *glyphs_after, /* OUT. May be NULL */ 197 hb_set_t *glyphs_after, /* OUT. May be NULL */
198 hb_set_t *glyphs_output, /* OUT. May be NULL */ 198 hb_set_t *glyphs_output, /* OUT. May be NULL */
199 » » » unsigned int nesting_level_left_ = MAX_NESTING_LE VEL) : 199 » » » unsigned int nesting_level_left_ = HB_MAX_NESTING _LEVEL) :
200 face (face_), 200 face (face_),
201 before (glyphs_before ? glyphs_before : hb_set_get _empty ()), 201 before (glyphs_before ? glyphs_before : hb_set_get _empty ()),
202 input (glyphs_input ? glyphs_input : hb_set_get _empty ()), 202 input (glyphs_input ? glyphs_input : hb_set_get _empty ()),
203 after (glyphs_after ? glyphs_after : hb_set_get _empty ()), 203 after (glyphs_after ? glyphs_after : hb_set_get _empty ()),
204 output (glyphs_output ? glyphs_output : hb_set_get _empty ()), 204 output (glyphs_output ? glyphs_output : hb_set_get _empty ()),
205 recurse_func (NULL), 205 recurse_func (NULL),
206 recursed_lookups (), 206 recursed_lookups (),
207 nesting_level_left (nesting_level_left_), 207 nesting_level_left (nesting_level_left_),
208 debug_depth (0) 208 debug_depth (0)
209 { 209 {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 /* Ignore ZWNJ if we are matching GSUB context, or matching GPOS. */ 348 /* Ignore ZWNJ if we are matching GSUB context, or matching GPOS. */
349 matcher.set_ignore_zwnj (context_match || c->table_index == 1); 349 matcher.set_ignore_zwnj (context_match || c->table_index == 1);
350 /* Ignore ZWJ if we are matching GSUB context, or matching GPOS, or if ask ed to. */ 350 /* Ignore ZWJ if we are matching GSUB context, or matching GPOS, or if ask ed to. */
351 matcher.set_ignore_zwj (context_match || c->table_index == 1 || c->auto_zw j); 351 matcher.set_ignore_zwj (context_match || c->table_index == 1 || c->auto_zw j);
352 matcher.set_mask (context_match ? -1 : c->lookup_mask); 352 matcher.set_mask (context_match ? -1 : c->lookup_mask);
353 } 353 }
354 inline void set_lookup_props (unsigned int lookup_props) 354 inline void set_lookup_props (unsigned int lookup_props)
355 { 355 {
356 matcher.set_lookup_props (lookup_props); 356 matcher.set_lookup_props (lookup_props);
357 } 357 }
358 inline void set_match_func (matcher_t::match_func_t match_func, 358 inline void set_match_func (matcher_t::match_func_t match_func_,
359 » » » » const void *match_data, 359 » » » » const void *match_data_,
360 const USHORT glyph_data[]) 360 const USHORT glyph_data[])
361 { 361 {
362 matcher.set_match_func (match_func, match_data); 362 matcher.set_match_func (match_func_, match_data_);
363 match_glyph_data = glyph_data; 363 match_glyph_data = glyph_data;
364 } 364 }
365 365
366 inline void reset (unsigned int start_index_, 366 inline void reset (unsigned int start_index_,
367 unsigned int num_items_) 367 unsigned int num_items_)
368 { 368 {
369 idx = start_index_; 369 idx = start_index_;
370 num_items = num_items_; 370 num_items = num_items_;
371 end = c->buffer->len; 371 end = c->buffer->len;
372 matcher.set_syllable (start_index_ == c->buffer->idx ? c->buffer->cur().sy llable () : 0); 372 matcher.set_syllable (start_index_ == c->buffer->idx ? c->buffer->cur().sy llable () : 0);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 476
477 hb_apply_context_t (unsigned int table_index_, 477 hb_apply_context_t (unsigned int table_index_,
478 hb_font_t *font_, 478 hb_font_t *font_,
479 hb_buffer_t *buffer_) : 479 hb_buffer_t *buffer_) :
480 table_index (table_index_), 480 table_index (table_index_),
481 font (font_), face (font->face), buffer (buffer_), 481 font (font_), face (font->face), buffer (buffer_),
482 direction (buffer_->props.direction), 482 direction (buffer_->props.direction),
483 lookup_mask (1), 483 lookup_mask (1),
484 auto_zwj (true), 484 auto_zwj (true),
485 recurse_func (NULL), 485 recurse_func (NULL),
486 » » » nesting_level_left (MAX_NESTING_LEVEL), 486 » » » nesting_level_left (HB_MAX_NESTING_LEVEL),
487 lookup_props (0), 487 lookup_props (0),
488 gdef (*hb_ot_layout_from_face (face)->gdef), 488 gdef (*hb_ot_layout_from_face (face)->gdef),
489 has_glyph_classes (gdef.has_glyph_classes ()), 489 has_glyph_classes (gdef.has_glyph_classes ()),
490 iter_input (), 490 iter_input (),
491 iter_context (), 491 iter_context (),
492 lookup_index ((unsigned int) -1), 492 lookup_index ((unsigned int) -1),
493 debug_depth (0) {} 493 debug_depth (0) {}
494 494
495 inline void set_lookup_mask (hb_mask_t mask) { lookup_mask = mask; } 495 inline void set_lookup_mask (hb_mask_t mask) { lookup_mask = mask; }
496 inline void set_auto_zwj (bool auto_zwj_) { auto_zwj = auto_zwj_; } 496 inline void set_auto_zwj (bool auto_zwj_) { auto_zwj = auto_zwj_; }
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 return false; 697 return false;
698 698
699 return true; 699 return true;
700 } 700 }
701 static inline bool match_input (hb_apply_context_t *c, 701 static inline bool match_input (hb_apply_context_t *c,
702 unsigned int count, /* Including the first glyph (not matched) */ 702 unsigned int count, /* Including the first glyph (not matched) */
703 const USHORT input[], /* Array of input values-- start with second glyph */ 703 const USHORT input[], /* Array of input values-- start with second glyph */
704 match_func_t match_func, 704 match_func_t match_func,
705 const void *match_data, 705 const void *match_data,
706 unsigned int *end_offset, 706 unsigned int *end_offset,
707 » » » » unsigned int match_positions[MAX_CONTEXT_LENGTH] , 707 » » » » unsigned int match_positions[HB_MAX_CONTEXT_LENG TH],
708 bool *p_is_mark_ligature = NULL, 708 bool *p_is_mark_ligature = NULL,
709 unsigned int *p_total_component_count = NULL) 709 unsigned int *p_total_component_count = NULL)
710 { 710 {
711 TRACE_APPLY (NULL); 711 TRACE_APPLY (NULL);
712 712
713 if (unlikely (count > MAX_CONTEXT_LENGTH)) return_trace (false); 713 if (unlikely (count > HB_MAX_CONTEXT_LENGTH)) return_trace (false);
714 714
715 hb_buffer_t *buffer = c->buffer; 715 hb_buffer_t *buffer = c->buffer;
716 716
717 hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; 717 hb_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input;
718 skippy_iter.reset (buffer->idx, count - 1); 718 skippy_iter.reset (buffer->idx, count - 1);
719 skippy_iter.set_match_func (match_func, match_data, input); 719 skippy_iter.set_match_func (match_func, match_data, input);
720 720
721 /* 721 /*
722 * This is perhaps the trickiest part of OpenType... Remarks: 722 * This is perhaps the trickiest part of OpenType... Remarks:
723 * 723 *
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 if (p_is_mark_ligature) 777 if (p_is_mark_ligature)
778 *p_is_mark_ligature = is_mark_ligature; 778 *p_is_mark_ligature = is_mark_ligature;
779 779
780 if (p_total_component_count) 780 if (p_total_component_count)
781 *p_total_component_count = total_component_count; 781 *p_total_component_count = total_component_count;
782 782
783 return_trace (true); 783 return_trace (true);
784 } 784 }
785 static inline bool ligate_input (hb_apply_context_t *c, 785 static inline bool ligate_input (hb_apply_context_t *c,
786 unsigned int count, /* Including the first glyp h */ 786 unsigned int count, /* Including the first glyp h */
787 » » » » unsigned int match_positions[MAX_CONTEXT_LENGTH ], /* Including the first glyph */ 787 » » » » unsigned int match_positions[HB_MAX_CONTEXT_LEN GTH], /* Including the first glyph */
788 unsigned int match_length, 788 unsigned int match_length,
789 hb_codepoint_t lig_glyph, 789 hb_codepoint_t lig_glyph,
790 bool is_mark_ligature, 790 bool is_mark_ligature,
791 unsigned int total_component_count) 791 unsigned int total_component_count)
792 { 792 {
793 TRACE_APPLY (NULL); 793 TRACE_APPLY (NULL);
794 794
795 hb_buffer_t *buffer = c->buffer; 795 hb_buffer_t *buffer = c->buffer;
796 796
797 buffer->merge_clusters (buffer->idx, buffer->idx + match_length); 797 buffer->merge_clusters (buffer->idx, buffer->idx + match_length);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 unsigned int last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur()); 829 unsigned int last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
830 unsigned int last_num_components = _hb_glyph_info_get_lig_num_comps (&buffer-> cur()); 830 unsigned int last_num_components = _hb_glyph_info_get_lig_num_comps (&buffer-> cur());
831 unsigned int components_so_far = last_num_components; 831 unsigned int components_so_far = last_num_components;
832 832
833 if (!is_mark_ligature) 833 if (!is_mark_ligature)
834 { 834 {
835 _hb_glyph_info_set_lig_props_for_ligature (&buffer->cur(), lig_id, total_com ponent_count); 835 _hb_glyph_info_set_lig_props_for_ligature (&buffer->cur(), lig_id, total_com ponent_count);
836 if (_hb_glyph_info_get_general_category (&buffer->cur()) == HB_UNICODE_GENER AL_CATEGORY_NON_SPACING_MARK) 836 if (_hb_glyph_info_get_general_category (&buffer->cur()) == HB_UNICODE_GENER AL_CATEGORY_NON_SPACING_MARK)
837 { 837 {
838 _hb_glyph_info_set_general_category (&buffer->cur(), HB_UNICODE_GENERAL_CA TEGORY_OTHER_LETTER); 838 _hb_glyph_info_set_general_category (&buffer->cur(), HB_UNICODE_GENERAL_CA TEGORY_OTHER_LETTER);
839 _hb_glyph_info_set_modified_combining_class (&buffer->cur(), 0);
840 } 839 }
841 } 840 }
842 c->replace_glyph_with_ligature (lig_glyph, klass); 841 c->replace_glyph_with_ligature (lig_glyph, klass);
843 842
844 for (unsigned int i = 1; i < count; i++) 843 for (unsigned int i = 1; i < count; i++)
845 { 844 {
846 while (buffer->idx < match_positions[i]) 845 while (buffer->idx < match_positions[i] && !buffer->in_error)
847 { 846 {
848 if (!is_mark_ligature) { 847 if (!is_mark_ligature) {
849 unsigned int new_lig_comp = components_so_far - last_num_components + 848 unsigned int new_lig_comp = components_so_far - last_num_components +
850 MIN (MAX (_hb_glyph_info_get_lig_comp (&buff er->cur()), 1u), last_num_components); 849 MIN (MAX (_hb_glyph_info_get_lig_comp (&buff er->cur()), 1u), last_num_components);
851 _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_c omp); 850 _hb_glyph_info_set_lig_props_for_mark (&buffer->cur(), lig_id, new_lig_c omp);
852 } 851 }
853 buffer->next_glyph (); 852 buffer->next_glyph ();
854 } 853 }
855 854
856 last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur()); 855 last_lig_id = _hb_glyph_info_get_lig_id (&buffer->cur());
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 static inline void recurse_lookups (context_t *c, 936 static inline void recurse_lookups (context_t *c,
938 unsigned int lookupCount, 937 unsigned int lookupCount,
939 const LookupRecord lookupRecord[] /* Array o f LookupRecords--in design order */) 938 const LookupRecord lookupRecord[] /* Array o f LookupRecords--in design order */)
940 { 939 {
941 for (unsigned int i = 0; i < lookupCount; i++) 940 for (unsigned int i = 0; i < lookupCount; i++)
942 c->recurse (lookupRecord[i].lookupListIndex); 941 c->recurse (lookupRecord[i].lookupListIndex);
943 } 942 }
944 943
945 static inline bool apply_lookup (hb_apply_context_t *c, 944 static inline bool apply_lookup (hb_apply_context_t *c,
946 unsigned int count, /* Including the first glyp h */ 945 unsigned int count, /* Including the first glyp h */
947 » » » » unsigned int match_positions[MAX_CONTEXT_LENGTH ], /* Including the first glyph */ 946 » » » » unsigned int match_positions[HB_MAX_CONTEXT_LEN GTH], /* Including the first glyph */
948 unsigned int lookupCount, 947 unsigned int lookupCount,
949 const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */ 948 const LookupRecord lookupRecord[], /* Array of LookupRecords--in design order */
950 unsigned int match_length) 949 unsigned int match_length)
951 { 950 {
952 TRACE_APPLY (NULL); 951 TRACE_APPLY (NULL);
953 952
954 hb_buffer_t *buffer = c->buffer; 953 hb_buffer_t *buffer = c->buffer;
955 unsigned int end; 954 unsigned int end;
956 955
957 /* All positions are distance from beginning of *output* buffer. 956 /* All positions are distance from beginning of *output* buffer.
958 * Adjust. */ 957 * Adjust. */
959 { 958 {
960 unsigned int bl = buffer->backtrack_len (); 959 unsigned int bl = buffer->backtrack_len ();
961 end = bl + match_length; 960 end = bl + match_length;
962 961
963 int delta = bl - buffer->idx; 962 int delta = bl - buffer->idx;
964 /* Convert positions to new indexing. */ 963 /* Convert positions to new indexing. */
965 for (unsigned int j = 0; j < count; j++) 964 for (unsigned int j = 0; j < count; j++)
966 match_positions[j] += delta; 965 match_positions[j] += delta;
967 } 966 }
968 967
969 for (unsigned int i = 0; i < lookupCount; i++) 968 for (unsigned int i = 0; i < lookupCount; i++)
970 { 969 {
971 unsigned int idx = lookupRecord[i].sequenceIndex; 970 unsigned int idx = lookupRecord[i].sequenceIndex;
972 if (idx >= count) 971 if (idx >= count)
973 continue; 972 continue;
974 973
974 /* Don't recurse to ourself at same position.
975 * Note that this test is too naive, it doesn't catch longer loops. */
976 if (idx == 0 && lookupRecord[i].lookupListIndex == c->lookup_index)
977 continue;
978
975 buffer->move_to (match_positions[idx]); 979 buffer->move_to (match_positions[idx]);
976 980
977 unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len (); 981 unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
978 if (!c->recurse (lookupRecord[i].lookupListIndex)) 982 if (!c->recurse (lookupRecord[i].lookupListIndex))
979 continue; 983 continue;
980 984
981 unsigned int new_len = buffer->backtrack_len () + buffer->lookahead_len (); 985 unsigned int new_len = buffer->backtrack_len () + buffer->lookahead_len ();
982 int delta = new_len - orig_len; 986 int delta = new_len - orig_len;
983 987
984 if (!delta) 988 if (!delta)
985 continue; 989 continue;
986 990
987 /* Recursed lookup changed buffer len. Adjust. */ 991 /* Recursed lookup changed buffer len. Adjust. */
988 992
989 /* end can't go back past the current match position. 993 /* end can't go back past the current match position.
990 * Note: this is only true because we do NOT allow MultipleSubst 994 * Note: this is only true because we do NOT allow MultipleSubst
991 * with zero sequence len. */ 995 * with zero sequence len. */
992 end = MAX ((int) match_positions[idx] + 1, int (end) + delta); 996 end = MAX (MIN((int) match_positions[idx] + 1, (int) new_len), int (end) + d elta);
993 997
994 unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */ 998 unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */
995 999
996 if (delta > 0) 1000 if (delta > 0)
997 { 1001 {
998 if (unlikely (delta + count > MAX_CONTEXT_LENGTH)) 1002 if (unlikely (delta + count > HB_MAX_CONTEXT_LENGTH))
999 break; 1003 break;
1000 } 1004 }
1001 else 1005 else
1002 { 1006 {
1003 /* NOTE: delta is negative. */ 1007 /* NOTE: delta is negative. */
1004 delta = MAX (delta, (int) next - (int) count); 1008 delta = MAX (delta, (int) next - (int) count);
1005 next -= delta; 1009 next -= delta;
1006 } 1010 }
1007 1011
1008 /* Shift! */ 1012 /* Shift! */
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 lookup_context.funcs.match, lookup_context.match_dat a); 1091 lookup_context.funcs.match, lookup_context.match_dat a);
1088 } 1092 }
1089 static inline bool context_apply_lookup (hb_apply_context_t *c, 1093 static inline bool context_apply_lookup (hb_apply_context_t *c,
1090 unsigned int inputCount, /* Including t he first glyph (not matched) */ 1094 unsigned int inputCount, /* Including t he first glyph (not matched) */
1091 const USHORT input[], /* Array of input values--start with second glyph */ 1095 const USHORT input[], /* Array of input values--start with second glyph */
1092 unsigned int lookupCount, 1096 unsigned int lookupCount,
1093 const LookupRecord lookupRecord[], 1097 const LookupRecord lookupRecord[],
1094 ContextApplyLookupContext &lookup_conte xt) 1098 ContextApplyLookupContext &lookup_conte xt)
1095 { 1099 {
1096 unsigned int match_length = 0; 1100 unsigned int match_length = 0;
1097 unsigned int match_positions[MAX_CONTEXT_LENGTH]; 1101 unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
1098 return match_input (c, 1102 return match_input (c,
1099 inputCount, input, 1103 inputCount, input,
1100 lookup_context.funcs.match, lookup_context.match_data, 1104 lookup_context.funcs.match, lookup_context.match_data,
1101 &match_length, match_positions) 1105 &match_length, match_positions)
1102 && apply_lookup (c, 1106 && apply_lookup (c,
1103 inputCount, match_positions, 1107 inputCount, match_positions,
1104 lookupCount, lookupRecord, 1108 lookupCount, lookupRecord,
1105 match_length); 1109 match_length);
1106 } 1110 }
1107 1111
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 const USHORT backtrack[], 1618 const USHORT backtrack[],
1615 unsigned int inputCount, /* Inclu ding the first glyph (not matched) */ 1619 unsigned int inputCount, /* Inclu ding the first glyph (not matched) */
1616 const USHORT input[], /* Array of input values--start with second glyph */ 1620 const USHORT input[], /* Array of input values--start with second glyph */
1617 unsigned int lookaheadCount, 1621 unsigned int lookaheadCount,
1618 const USHORT lookahead[], 1622 const USHORT lookahead[],
1619 unsigned int lookupCount, 1623 unsigned int lookupCount,
1620 const LookupRecord lookupRecord[] , 1624 const LookupRecord lookupRecord[] ,
1621 ChainContextApplyLookupContext &l ookup_context) 1625 ChainContextApplyLookupContext &l ookup_context)
1622 { 1626 {
1623 unsigned int match_length = 0; 1627 unsigned int match_length = 0;
1624 unsigned int match_positions[MAX_CONTEXT_LENGTH]; 1628 unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
1625 return match_input (c, 1629 return match_input (c,
1626 inputCount, input, 1630 inputCount, input,
1627 lookup_context.funcs.match, lookup_context.match_data[1], 1631 lookup_context.funcs.match, lookup_context.match_data[1],
1628 &match_length, match_positions) 1632 &match_length, match_positions)
1629 && match_backtrack (c, 1633 && match_backtrack (c,
1630 backtrackCount, backtrack, 1634 backtrackCount, backtrack,
1631 lookup_context.funcs.match, lookup_context.match_data[ 0]) 1635 lookup_context.funcs.match, lookup_context.match_data[ 0])
1632 && match_lookahead (c, 1636 && match_lookahead (c,
1633 lookaheadCount, lookahead, 1637 lookaheadCount, lookahead,
1634 lookup_context.funcs.match, lookup_context.match_data[ 2], 1638 lookup_context.funcs.match, lookup_context.match_data[ 2],
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
2277 lookupList; /* LookupList table */ 2281 lookupList; /* LookupList table */
2278 public: 2282 public:
2279 DEFINE_SIZE_STATIC (10); 2283 DEFINE_SIZE_STATIC (10);
2280 }; 2284 };
2281 2285
2282 2286
2283 } /* namespace OT */ 2287 } /* namespace OT */
2284 2288
2285 2289
2286 #endif /* HB_OT_LAYOUT_GSUBGPOS_PRIVATE_HH */ 2290 #endif /* HB_OT_LAYOUT_GSUBGPOS_PRIVATE_HH */
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh ('k') | third_party/harfbuzz-ng/src/hb-ot-layout-private.hh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698