| 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 |