| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright © 2009,2010 Red Hat, Inc. | 2 * Copyright © 2009,2010 Red Hat, Inc. |
| 3 * Copyright © 2010,2011,2012 Google, Inc. | 3 * Copyright © 2010,2011,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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 (feature->start == 0 && feature->end == (unsigned int) -1)
? | 121 (feature->start == 0 && feature->end == (unsigned int) -1)
? |
| 122 F_GLOBAL : F_NONE); | 122 F_GLOBAL : F_NONE); |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 | 125 |
| 126 | 126 |
| 127 /* | 127 /* |
| 128 * shaper face data | 128 * shaper face data |
| 129 */ | 129 */ |
| 130 | 130 |
| 131 HB_SHAPER_DATA_ENSURE_DEFINE(ot, face) |
| 132 |
| 131 hb_ot_shaper_face_data_t * | 133 hb_ot_shaper_face_data_t * |
| 132 _hb_ot_shaper_face_data_create (hb_face_t *face) | 134 _hb_ot_shaper_face_data_create (hb_face_t *face) |
| 133 { | 135 { |
| 134 return _hb_ot_layout_create (face); | 136 return _hb_ot_layout_create (face); |
| 135 } | 137 } |
| 136 | 138 |
| 137 void | 139 void |
| 138 _hb_ot_shaper_face_data_destroy (hb_ot_shaper_face_data_t *data) | 140 _hb_ot_shaper_face_data_destroy (hb_ot_shaper_face_data_t *data) |
| 139 { | 141 { |
| 140 _hb_ot_layout_destroy (data); | 142 _hb_ot_layout_destroy (data); |
| 141 } | 143 } |
| 142 | 144 |
| 143 | 145 |
| 144 /* | 146 /* |
| 145 * shaper font data | 147 * shaper font data |
| 146 */ | 148 */ |
| 147 | 149 |
| 150 HB_SHAPER_DATA_ENSURE_DEFINE(ot, font) |
| 151 |
| 148 struct hb_ot_shaper_font_data_t {}; | 152 struct hb_ot_shaper_font_data_t {}; |
| 149 | 153 |
| 150 hb_ot_shaper_font_data_t * | 154 hb_ot_shaper_font_data_t * |
| 151 _hb_ot_shaper_font_data_create (hb_font_t *font HB_UNUSED) | 155 _hb_ot_shaper_font_data_create (hb_font_t *font HB_UNUSED) |
| 152 { | 156 { |
| 153 return (hb_ot_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED; | 157 return (hb_ot_shaper_font_data_t *) HB_SHAPER_DATA_SUCCEEDED; |
| 154 } | 158 } |
| 155 | 159 |
| 156 void | 160 void |
| 157 _hb_ot_shaper_font_data_destroy (hb_ot_shaper_font_data_t *data) | 161 _hb_ot_shaper_font_data_destroy (hb_ot_shaper_font_data_t *data) |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 { | 371 { |
| 368 pre_mask = c->plan->numr_mask | c->plan->frac_mask; | 372 pre_mask = c->plan->numr_mask | c->plan->frac_mask; |
| 369 post_mask = c->plan->frac_mask | c->plan->dnom_mask; | 373 post_mask = c->plan->frac_mask | c->plan->dnom_mask; |
| 370 } | 374 } |
| 371 else | 375 else |
| 372 { | 376 { |
| 373 pre_mask = c->plan->frac_mask | c->plan->dnom_mask; | 377 pre_mask = c->plan->frac_mask | c->plan->dnom_mask; |
| 374 post_mask = c->plan->numr_mask | c->plan->frac_mask; | 378 post_mask = c->plan->numr_mask | c->plan->frac_mask; |
| 375 } | 379 } |
| 376 | 380 |
| 377 /* TODO look in pre/post context text also. */ | |
| 378 unsigned int count = buffer->len; | 381 unsigned int count = buffer->len; |
| 379 hb_glyph_info_t *info = buffer->info; | 382 hb_glyph_info_t *info = buffer->info; |
| 380 for (unsigned int i = 0; i < count; i++) | 383 for (unsigned int i = 0; i < count; i++) |
| 381 { | 384 { |
| 382 if (info[i].codepoint == 0x2044u) /* FRACTION SLASH */ | 385 if (info[i].codepoint == 0x2044u) /* FRACTION SLASH */ |
| 383 { | 386 { |
| 384 unsigned int start = i, end = i + 1; | 387 unsigned int start = i, end = i + 1; |
| 385 while (start && | 388 while (start && |
| 386 _hb_glyph_info_get_general_category (&info[start - 1]) == | 389 _hb_glyph_info_get_general_category (&info[start - 1]) == |
| 387 HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER) | 390 HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER) |
| (...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 913 hb_set_t copy; | 916 hb_set_t copy; |
| 914 copy.init (); | 917 copy.init (); |
| 915 do { | 918 do { |
| 916 copy.set (glyphs); | 919 copy.set (glyphs); |
| 917 for (hb_codepoint_t lookup_index = -1; hb_set_next (&lookups, &lookup_index)
;) | 920 for (hb_codepoint_t lookup_index = -1; hb_set_next (&lookups, &lookup_index)
;) |
| 918 hb_ot_layout_lookup_substitute_closure (font->face, lookup_index, glyphs); | 921 hb_ot_layout_lookup_substitute_closure (font->face, lookup_index, glyphs); |
| 919 } while (!copy.is_equal (glyphs)); | 922 } while (!copy.is_equal (glyphs)); |
| 920 | 923 |
| 921 hb_shape_plan_destroy (shape_plan); | 924 hb_shape_plan_destroy (shape_plan); |
| 922 } | 925 } |
| OLD | NEW |