OLD | NEW |
1 /* | 1 /* |
2 * Copyright © 2010,2012 Google, Inc. | 2 * Copyright © 2010,2012 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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 hb_glyph_info_t t = buffer->out_info[end - 2]; | 346 hb_glyph_info_t t = buffer->out_info[end - 2]; |
347 memmove (buffer->out_info + start + 1, | 347 memmove (buffer->out_info + start + 1, |
348 buffer->out_info + start, | 348 buffer->out_info + start, |
349 sizeof (buffer->out_info[0]) * (end - start - 2)); | 349 sizeof (buffer->out_info[0]) * (end - start - 2)); |
350 buffer->out_info[start] = t; | 350 buffer->out_info[start] = t; |
351 } | 351 } |
352 else | 352 else |
353 { | 353 { |
354 /* Since we decomposed, and NIKHAHIT is combining, merge clusters with the | 354 /* Since we decomposed, and NIKHAHIT is combining, merge clusters with the |
355 * previous cluster. */ | 355 * previous cluster. */ |
356 if (start) | 356 if (start && buffer->cluster_level == HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRA
PHEMES) |
357 buffer->merge_out_clusters (start - 1, end); | 357 buffer->merge_out_clusters (start - 1, end); |
358 } | 358 } |
359 } | 359 } |
360 buffer->swap_buffers (); | 360 buffer->swap_buffers (); |
361 | 361 |
362 /* If font has Thai GSUB, we are done. */ | 362 /* If font has Thai GSUB, we are done. */ |
363 if (plan->props.script == HB_SCRIPT_THAI && !plan->map.found_script[0]) | 363 if (plan->props.script == HB_SCRIPT_THAI && !plan->map.found_script[0]) |
364 do_thai_pua_shaping (plan, buffer, font); | 364 do_thai_pua_shaping (plan, buffer, font); |
365 } | 365 } |
366 | 366 |
367 const hb_ot_complex_shaper_t _hb_ot_complex_shaper_thai = | 367 const hb_ot_complex_shaper_t _hb_ot_complex_shaper_thai = |
368 { | 368 { |
369 "thai", | 369 "thai", |
370 NULL, /* collect_features */ | 370 NULL, /* collect_features */ |
371 NULL, /* override_features */ | 371 NULL, /* override_features */ |
372 NULL, /* data_create */ | 372 NULL, /* data_create */ |
373 NULL, /* data_destroy */ | 373 NULL, /* data_destroy */ |
374 preprocess_text_thai, | 374 preprocess_text_thai, |
375 HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT, | 375 HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT, |
376 NULL, /* decompose */ | 376 NULL, /* decompose */ |
377 NULL, /* compose */ | 377 NULL, /* compose */ |
378 NULL, /* setup_masks */ | 378 NULL, /* setup_masks */ |
379 HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT, | 379 HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT, |
380 false,/* fallback_position */ | 380 false,/* fallback_position */ |
381 }; | 381 }; |
OLD | NEW |