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

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh

Issue 16053004: Update harfbuzz-ng to 0.9.17 (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 6 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 | Annotate | Revision Log
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 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 } 268 }
269 269
270 inline bool apply (hb_apply_context_t *c) const 270 inline bool apply (hb_apply_context_t *c) const
271 { 271 {
272 TRACE_APPLY (this); 272 TRACE_APPLY (this);
273 if (unlikely (!substitute.len)) return TRACE_RETURN (false); 273 if (unlikely (!substitute.len)) return TRACE_RETURN (false);
274 274
275 unsigned int klass = c->buffer->cur().glyph_props() & 275 unsigned int klass = c->buffer->cur().glyph_props() &
276 HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE ? HB_OT_LAYOUT_GLYPH_ PROPS_BASE_GLYPH : 0; 276 HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE ? HB_OT_LAYOUT_GLYPH_ PROPS_BASE_GLYPH : 0;
277 unsigned int count = substitute.len; 277 unsigned int count = substitute.len;
278 for (unsigned int i = 0; i < count; i++) { 278 if (count == 1) /* Special-case to make it in-place. */
279 set_lig_props_for_component (c->buffer->cur(), i); 279 {
280 c->output_glyph (substitute.array[i], klass); 280 c->replace_glyph (substitute.array[0]);
281 } 281 }
282 c->buffer->skip_glyph (); 282 else
283 {
284 for (unsigned int i = 0; i < count; i++) {
285 » set_lig_props_for_component (c->buffer->cur(), i);
286 » c->output_glyph (substitute.array[i], klass);
287 }
288 c->buffer->skip_glyph ();
289 }
283 290
284 return TRACE_RETURN (true); 291 return TRACE_RETURN (true);
285 } 292 }
286 293
287 inline bool serialize (hb_serialize_context_t *c, 294 inline bool serialize (hb_serialize_context_t *c,
288 Supplier<GlyphID> &glyphs, 295 Supplier<GlyphID> &glyphs,
289 unsigned int num_glyphs) 296 unsigned int num_glyphs)
290 { 297 {
291 TRACE_SERIALIZE (this); 298 TRACE_SERIALIZE (this);
292 if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false); 299 if (unlikely (!c->extend_min (*this))) return TRACE_RETURN (false);
(...skipping 896 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 bool ret = false; 1196 bool ret = false;
1190 1197
1191 if (unlikely (!c->buffer->len || !c->lookup_mask)) 1198 if (unlikely (!c->buffer->len || !c->lookup_mask))
1192 return false; 1199 return false;
1193 1200
1194 c->set_recurse_func (apply_recurse_func); 1201 c->set_recurse_func (apply_recurse_func);
1195 c->set_lookup (*this); 1202 c->set_lookup (*this);
1196 1203
1197 if (likely (!is_reverse ())) 1204 if (likely (!is_reverse ()))
1198 { 1205 {
1199 » /* in/out forward substitution */ 1206 /* in/out forward substitution */
1200 » c->buffer->clear_output (); 1207 c->buffer->clear_output ();
1201 » c->buffer->idx = 0; 1208 c->buffer->idx = 0;
1202 1209
1203 » while (c->buffer->idx < c->buffer->len) 1210 while (c->buffer->idx < c->buffer->len)
1204 » { 1211 {
1205 » if ((c->buffer->cur().mask & c->lookup_mask) && 1212 » if (digest->may_have (c->buffer->cur().codepoint) &&
1206 » digest->may_have (c->buffer->cur().codepoint) && 1213 » (c->buffer->cur().mask & c->lookup_mask) &&
1207 » apply_once (c)) 1214 » apply_once (c))
1208 » ret = true; 1215 » ret = true;
1209 » else 1216 » else
1210 » c->buffer->next_glyph (); 1217 » c->buffer->next_glyph ();
1211 » } 1218 }
1212 » if (ret) 1219 if (ret)
1213 » c->buffer->swap_buffers (); 1220 » c->buffer->swap_buffers ();
1214 } 1221 }
1215 else 1222 else
1216 { 1223 {
1217 » /* in-place backward substitution */ 1224 /* in-place backward substitution */
1218 » c->buffer->remove_output (); 1225 c->buffer->remove_output ();
1219 » c->buffer->idx = c->buffer->len - 1; 1226 c->buffer->idx = c->buffer->len - 1;
1220 » do 1227 do
1221 » { 1228 {
1222 » if ((c->buffer->cur().mask & c->lookup_mask) && 1229 » if (digest->may_have (c->buffer->cur().codepoint) &&
1223 » digest->may_have (c->buffer->cur().codepoint) && 1230 » (c->buffer->cur().mask & c->lookup_mask) &&
1224 » apply_once (c)) 1231 » apply_once (c))
1225 » ret = true; 1232 » ret = true;
1226 » else 1233 » else
1227 » c->buffer->idx--; 1234 » c->buffer->idx--;
1228 1235
1229 » } 1236 }
1230 » while ((int) c->buffer->idx >= 0); 1237 while ((int) c->buffer->idx >= 0);
1231 } 1238 }
1232 1239
1233 return ret; 1240 return ret;
1234 } 1241 }
1235 1242
1236 inline SubstLookupSubTable& serialize_subtable (hb_serialize_context_t *c, 1243 inline SubstLookupSubTable& serialize_subtable (hb_serialize_context_t *c,
1237 unsigned int i) 1244 unsigned int i)
1238 { return CastR<OffsetArrayOf<SubstLookupSubTable> > (subTable)[i].serialize (c , this); } 1245 { return CastR<OffsetArrayOf<SubstLookupSubTable> > (subTable)[i].serialize (c , this); }
1239 1246
1240 inline bool serialize_single (hb_serialize_context_t *c, 1247 inline bool serialize_single (hb_serialize_context_t *c,
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 bool ret = l.apply_once (c); 1410 bool ret = l.apply_once (c);
1404 c->lookup_props = saved_lookup_props; 1411 c->lookup_props = saved_lookup_props;
1405 return ret; 1412 return ret;
1406 } 1413 }
1407 1414
1408 1415
1409 } /* namespace OT */ 1416 } /* namespace OT */
1410 1417
1411 1418
1412 #endif /* HB_OT_LAYOUT_GSUB_TABLE_HH */ 1419 #endif /* HB_OT_LAYOUT_GSUB_TABLE_HH */
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh ('k') | third_party/harfbuzz-ng/src/hb-ot-map.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698