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

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-shape-complex-hangul.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 © 2013 Google, Inc. 2 * Copyright © 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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 return hangul_plan; 79 return hangul_plan;
80 } 80 }
81 81
82 static void 82 static void
83 data_destroy_hangul (void *data) 83 data_destroy_hangul (void *data)
84 { 84 {
85 free (data); 85 free (data);
86 } 86 }
87 87
88 /* Constants for algorithmic hangul syllable [de]composition. */ 88 /* Constants for algorithmic hangul syllable [de]composition. */
89 #define LBase 0x1100 89 #define LBase 0x1100u
90 #define VBase 0x1161 90 #define VBase 0x1161u
91 #define TBase 0x11A7 91 #define TBase 0x11A7u
92 #define LCount 19 92 #define LCount 19u
93 #define VCount 21 93 #define VCount 21u
94 #define TCount 28 94 #define TCount 28u
95 #define SBase 0xAC00 95 #define SBase 0xAC00u
96 #define NCount (VCount * TCount) 96 #define NCount (VCount * TCount)
97 #define SCount (LCount * NCount) 97 #define SCount (LCount * NCount)
98 98
99 #define isCombiningL(u) (hb_in_range<hb_codepoint_t> ((u), LBase, LBase+LCount-1 )) 99 #define isCombiningL(u) (hb_in_range ((u), LBase, LBase+LCount-1))
100 #define isCombiningV(u) (hb_in_range<hb_codepoint_t> ((u), VBase, VBase+VCount-1 )) 100 #define isCombiningV(u) (hb_in_range ((u), VBase, VBase+VCount-1))
101 #define isCombiningT(u) (hb_in_range<hb_codepoint_t> ((u), TBase+1, TBase+TCount -1)) 101 #define isCombiningT(u) (hb_in_range ((u), TBase+1, TBase+TCount-1))
102 #define isCombinedS(u) (hb_in_range<hb_codepoint_t> ((u), SBase, SBase+SCount-1) ) 102 #define isCombinedS(u) (hb_in_range ((u), SBase, SBase+SCount-1))
103 103
104 #define isL(u) (hb_in_ranges<hb_codepoint_t> ((u), 0x1100, 0x115F, 0xA960, 0xA97 C)) 104 #define isL(u) (hb_in_ranges ((u), 0x1100u, 0x115Fu, 0xA960u, 0xA97Cu))
105 #define isV(u) (hb_in_ranges<hb_codepoint_t> ((u), 0x1160, 0x11A7, 0xD7B0, 0xD7C 6)) 105 #define isV(u) (hb_in_ranges ((u), 0x1160u, 0x11A7u, 0xD7B0u, 0xD7C6u))
106 #define isT(u) (hb_in_ranges<hb_codepoint_t> ((u), 0x11A8, 0x11FF, 0xD7CB, 0xD7F B)) 106 #define isT(u) (hb_in_ranges ((u), 0x11A8u, 0x11FFu, 0xD7CBu, 0xD7FBu))
107 107
108 #define isHangulTone(u) (hb_in_range<hb_codepoint_t> ((u), 0x302e, 0x302f)) 108 #define isHangulTone(u) (hb_in_range ((u), 0x302Eu, 0x302Fu))
109 109
110 /* buffer var allocations */ 110 /* buffer var allocations */
111 #define hangul_shaping_feature() complex_var_u8_0() /* hangul jamo shaping featu re */ 111 #define hangul_shaping_feature() complex_var_u8_0() /* hangul jamo shaping featu re */
112 112
113 static bool 113 static bool
114 is_zero_width_char (hb_font_t *font, 114 is_zero_width_char (hb_font_t *font,
115 hb_codepoint_t unicode) 115 hb_codepoint_t unicode)
116 { 116 {
117 hb_codepoint_t glyph; 117 hb_codepoint_t glyph;
118 return hb_font_get_glyph (font, unicode, 0, &glyph) && hb_font_get_glyph_h_adv ance (font, glyph) == 0; 118 return hb_font_get_glyph (font, unicode, 0, &glyph) && hb_font_get_glyph_h_adv ance (font, glyph) == 0;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 /* Merge clusters across the (possibly reordered) syllable+tone. 204 /* Merge clusters across the (possibly reordered) syllable+tone.
205 * We want to merge even in the zero-width tone mark case here, 205 * We want to merge even in the zero-width tone mark case here,
206 * so that clustering behavior isn't dependent on how the tone mark 206 * so that clustering behavior isn't dependent on how the tone mark
207 * is handled by the font. 207 * is handled by the font.
208 */ 208 */
209 buffer->merge_out_clusters (start, end + 1); 209 buffer->merge_out_clusters (start, end + 1);
210 } 210 }
211 else 211 else
212 { 212 {
213 /* No valid syllable as base for tone mark; try to insert dotted circle. */ 213 /* No valid syllable as base for tone mark; try to insert dotted circle. */
214 » if (font->has_glyph (0x25cc)) 214 » if (font->has_glyph (0x25CCu))
215 { 215 {
216 hb_codepoint_t chars[2]; 216 hb_codepoint_t chars[2];
217 if (!is_zero_width_char (font, u)) { 217 if (!is_zero_width_char (font, u)) {
218 chars[0] = u; 218 chars[0] = u;
219 » chars[1] = 0x25cc; 219 » chars[1] = 0x25CCu;
220 } else { 220 } else {
221 » chars[0] = 0x25cc; 221 » chars[0] = 0x25CCu;
222 chars[1] = u; 222 chars[1] = u;
223 } 223 }
224 buffer->replace_glyphs (1, 2, chars); 224 buffer->replace_glyphs (1, 2, chars);
225 } 225 }
226 else 226 else
227 { 227 {
228 /* No dotted circle available in the font; just leave tone mark untouc hed. */ 228 /* No dotted circle available in the font; just leave tone mark untouc hed. */
229 buffer->next_glyph (); 229 buffer->next_glyph ();
230 } 230 }
231 } 231 }
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 data_create_hangul, /* data_create */ 408 data_create_hangul, /* data_create */
409 data_destroy_hangul, /* data_destroy */ 409 data_destroy_hangul, /* data_destroy */
410 preprocess_text_hangul, 410 preprocess_text_hangul,
411 HB_OT_SHAPE_NORMALIZATION_MODE_NONE, 411 HB_OT_SHAPE_NORMALIZATION_MODE_NONE,
412 NULL, /* decompose */ 412 NULL, /* decompose */
413 NULL, /* compose */ 413 NULL, /* compose */
414 setup_masks_hangul, /* setup_masks */ 414 setup_masks_hangul, /* setup_masks */
415 HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE, 415 HB_OT_SHAPE_ZERO_WIDTH_MARKS_NONE,
416 false, /* fallback_position */ 416 false, /* fallback_position */
417 }; 417 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698