OLD | NEW |
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 978 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 continue; | 989 continue; |
990 | 990 |
991 unsigned int new_len = buffer->backtrack_len () + buffer->lookahead_len (); | 991 unsigned int new_len = buffer->backtrack_len () + buffer->lookahead_len (); |
992 int delta = new_len - orig_len; | 992 int delta = new_len - orig_len; |
993 | 993 |
994 if (!delta) | 994 if (!delta) |
995 continue; | 995 continue; |
996 | 996 |
997 /* Recursed lookup changed buffer len. Adjust. */ | 997 /* Recursed lookup changed buffer len. Adjust. */ |
998 | 998 |
999 /* end can't go back past the current match position. | 999 end = int (end) + delta; |
1000 * Note: this is only true because we do NOT allow MultipleSubst | 1000 if (end <= match_positions[idx]) |
1001 * with zero sequence len. */ | 1001 { |
1002 end = MAX (MIN((int) match_positions[idx] + 1, (int) new_len), int (end) + d
elta); | 1002 /* There can't be any further changes. */ |
| 1003 assert (end == match_positions[idx]); |
| 1004 break; |
| 1005 } |
1003 | 1006 |
1004 unsigned int next = idx + 1; /* next now is the position after the recursed
lookup. */ | 1007 unsigned int next = idx + 1; /* next now is the position after the recursed
lookup. */ |
1005 | 1008 |
1006 if (delta > 0) | 1009 if (delta > 0) |
1007 { | 1010 { |
1008 if (unlikely (delta + count > HB_MAX_CONTEXT_LENGTH)) | 1011 if (unlikely (delta + count > HB_MAX_CONTEXT_LENGTH)) |
1009 break; | 1012 break; |
1010 } | 1013 } |
1011 else | 1014 else |
1012 { | 1015 { |
(...skipping 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2287 lookupList; /* LookupList table */ | 2290 lookupList; /* LookupList table */ |
2288 public: | 2291 public: |
2289 DEFINE_SIZE_STATIC (10); | 2292 DEFINE_SIZE_STATIC (10); |
2290 }; | 2293 }; |
2291 | 2294 |
2292 | 2295 |
2293 } /* namespace OT */ | 2296 } /* namespace OT */ |
2294 | 2297 |
2295 | 2298 |
2296 #endif /* HB_OT_LAYOUT_GSUBGPOS_PRIVATE_HH */ | 2299 #endif /* HB_OT_LAYOUT_GSUBGPOS_PRIVATE_HH */ |
OLD | NEW |