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

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-shape-complex-sea.cc

Issue 396393005: Roll HarfBuzz to 0.9.32 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for include order presubmit issue Created 6 years, 5 months 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 © 2011,2012,2013 Google, Inc. 2 * Copyright © 2011,2012,2013 Google, Inc.
3 * 3 *
4 * This is part of HarfBuzz, a text shaping library. 4 * This is part of HarfBuzz, a text shaping library.
5 * 5 *
6 * Permission is hereby granted, without written agreement and without 6 * Permission is hereby granted, without written agreement and without
7 * license or royalty fees, to use, copy, modify, and distribute this 7 * license or royalty fees, to use, copy, modify, and distribute this
8 * software and its documentation for any purpose, provided that the 8 * software and its documentation for any purpose, provided that the
9 * above copyright notice and the following two paragraphs appear in 9 * above copyright notice and the following two paragraphs appear in
10 * all copies of this software. 10 * all copies of this software.
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 OT_VPst = 29, 132 OT_VPst = 29,
133 OT_T = 3, /* Tone Marks */ 133 OT_T = 3, /* Tone Marks */
134 // OT_A = 10, /* Anusvara */ 134 // OT_A = 10, /* Anusvara */
135 }; 135 };
136 136
137 static inline void 137 static inline void
138 set_sea_properties (hb_glyph_info_t &info) 138 set_sea_properties (hb_glyph_info_t &info)
139 { 139 {
140 hb_codepoint_t u = info.codepoint; 140 hb_codepoint_t u = info.codepoint;
141 unsigned int type = hb_indic_get_categories (u); 141 unsigned int type = hb_indic_get_categories (u);
142 indic_category_t cat = (indic_category_t) (type & 0x7F); 142 indic_category_t cat = (indic_category_t) (type & 0x7Fu);
143 indic_position_t pos = (indic_position_t) (type >> 8); 143 indic_position_t pos = (indic_position_t) (type >> 8);
144 144
145 /* Medial Ra */ 145 /* Medial Ra */
146 if (u == 0x1A55 || u == 0xAA34) 146 if (u == 0x1A55u || u == 0xAA34u)
147 cat = (indic_category_t) OT_MR; 147 cat = (indic_category_t) OT_MR;
148 148
149 if (cat == OT_M) 149 if (cat == OT_M)
150 { 150 {
151 switch ((int) pos) 151 switch ((int) pos)
152 { 152 {
153 case POS_PRE_C: cat = (indic_category_t) OT_VPre; break; 153 case POS_PRE_C: cat = (indic_category_t) OT_VPre; break;
154 case POS_ABOVE_C: cat = (indic_category_t) OT_VAbv; break; 154 case POS_ABOVE_C: cat = (indic_category_t) OT_VAbv; break;
155 case POS_BELOW_C: cat = (indic_category_t) OT_VBlw; break; 155 case POS_BELOW_C: cat = (indic_category_t) OT_VBlw; break;
156 case POS_POST_C: cat = (indic_category_t) OT_VPst; break; 156 case POS_POST_C: cat = (indic_category_t) OT_VPst; break;
(...skipping 10 matching lines...) Expand all
167 hb_buffer_t *buffer, 167 hb_buffer_t *buffer,
168 hb_font_t *font HB_UNUSED) 168 hb_font_t *font HB_UNUSED)
169 { 169 {
170 HB_BUFFER_ALLOCATE_VAR (buffer, sea_category); 170 HB_BUFFER_ALLOCATE_VAR (buffer, sea_category);
171 HB_BUFFER_ALLOCATE_VAR (buffer, sea_position); 171 HB_BUFFER_ALLOCATE_VAR (buffer, sea_position);
172 172
173 /* We cannot setup masks here. We save information about characters 173 /* We cannot setup masks here. We save information about characters
174 * and setup masks later on in a pause-callback. */ 174 * and setup masks later on in a pause-callback. */
175 175
176 unsigned int count = buffer->len; 176 unsigned int count = buffer->len;
177 hb_glyph_info_t *info = buffer->info;
177 for (unsigned int i = 0; i < count; i++) 178 for (unsigned int i = 0; i < count; i++)
178 set_sea_properties (buffer->info[i]); 179 set_sea_properties (info[i]);
179 } 180 }
180 181
181 static void 182 static void
182 setup_syllables (const hb_ot_shape_plan_t *plan HB_UNUSED, 183 setup_syllables (const hb_ot_shape_plan_t *plan HB_UNUSED,
183 hb_font_t *font HB_UNUSED, 184 hb_font_t *font HB_UNUSED,
184 hb_buffer_t *buffer) 185 hb_buffer_t *buffer)
185 { 186 {
186 find_syllables (buffer); 187 find_syllables (buffer);
187 } 188 }
188 189
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 } 272 }
272 273
273 static inline void 274 static inline void
274 insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED, 275 insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
275 hb_font_t *font, 276 hb_font_t *font,
276 hb_buffer_t *buffer) 277 hb_buffer_t *buffer)
277 { 278 {
278 /* Note: This loop is extra overhead, but should not be measurable. */ 279 /* Note: This loop is extra overhead, but should not be measurable. */
279 bool has_broken_syllables = false; 280 bool has_broken_syllables = false;
280 unsigned int count = buffer->len; 281 unsigned int count = buffer->len;
282 hb_glyph_info_t *info = buffer->info;
281 for (unsigned int i = 0; i < count; i++) 283 for (unsigned int i = 0; i < count; i++)
282 if ((buffer->info[i].syllable() & 0x0F) == broken_cluster) { 284 if ((info[i].syllable() & 0x0F) == broken_cluster)
285 {
283 has_broken_syllables = true; 286 has_broken_syllables = true;
284 break; 287 break;
285 } 288 }
286 if (likely (!has_broken_syllables)) 289 if (likely (!has_broken_syllables))
287 return; 290 return;
288 291
289 292
290 hb_codepoint_t dottedcircle_glyph; 293 hb_codepoint_t dottedcircle_glyph;
291 if (!font->get_glyph (0x25CC, 0, &dottedcircle_glyph)) 294 if (!font->get_glyph (0x25CCu, 0, &dottedcircle_glyph))
292 return; 295 return;
293 296
294 hb_glyph_info_t dottedcircle = {0}; 297 hb_glyph_info_t dottedcircle = {0};
295 dottedcircle.codepoint = 0x25CC; 298 dottedcircle.codepoint = 0x25CCu;
296 set_sea_properties (dottedcircle); 299 set_sea_properties (dottedcircle);
297 dottedcircle.codepoint = dottedcircle_glyph; 300 dottedcircle.codepoint = dottedcircle_glyph;
298 301
299 buffer->clear_output (); 302 buffer->clear_output ();
300 303
301 buffer->idx = 0; 304 buffer->idx = 0;
302 unsigned int last_syllable = 0; 305 unsigned int last_syllable = 0;
303 while (buffer->idx < buffer->len) 306 while (buffer->idx < buffer->len)
304 { 307 {
305 unsigned int syllable = buffer->cur().syllable(); 308 unsigned int syllable = buffer->cur().syllable();
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 NULL, /* data_create */ 371 NULL, /* data_create */
369 NULL, /* data_destroy */ 372 NULL, /* data_destroy */
370 NULL, /* preprocess_text */ 373 NULL, /* preprocess_text */
371 HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT, 374 HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT,
372 NULL, /* decompose */ 375 NULL, /* decompose */
373 NULL, /* compose */ 376 NULL, /* compose */
374 setup_masks_sea, 377 setup_masks_sea,
375 HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE, 378 HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
376 false, /* fallback_position */ 379 false, /* fallback_position */
377 }; 380 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698