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

Side by Side Diff: ui/gfx/render_text_harfbuzz.cc

Issue 299023003: Remove reference to hb-icu which is not built on CrOS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: eol Created 6 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/render_text_harfbuzz.h" 5 #include "ui/gfx/render_text_harfbuzz.h"
6 6
7 #include <map> 7 #include <map>
8 8
9 #include "base/i18n/break_iterator.h" 9 #include "base/i18n/break_iterator.h"
10 #include "base/i18n/char_iterator.h" 10 #include "base/i18n/char_iterator.h"
11 #include "third_party/harfbuzz-ng/src/hb-icu.h"
12 #include "third_party/harfbuzz-ng/src/hb.h" 11 #include "third_party/harfbuzz-ng/src/hb.h"
13 #include "third_party/icu/source/common/unicode/ubidi.h" 12 #include "third_party/icu/source/common/unicode/ubidi.h"
14 #include "third_party/skia/include/core/SkColor.h" 13 #include "third_party/skia/include/core/SkColor.h"
15 #include "third_party/skia/include/core/SkTypeface.h" 14 #include "third_party/skia/include/core/SkTypeface.h"
16 #include "ui/gfx/canvas.h" 15 #include "ui/gfx/canvas.h"
17 #include "ui/gfx/utf16_indexing.h" 16 #include "ui/gfx/utf16_indexing.h"
18 17
19 #if defined(OS_WIN) 18 #if defined(OS_WIN)
20 #include "ui/gfx/font_smoothing_win.h" 19 #include "ui/gfx/font_smoothing_win.h"
21 #endif 20 #endif
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 while (char_iterator.Advance()) { 306 while (char_iterator.Advance()) {
308 ScriptSetIntersect(char_iterator.get(), scripts, &scripts_size); 307 ScriptSetIntersect(char_iterator.get(), scripts, &scripts_size);
309 if (scripts_size == 0U) 308 if (scripts_size == 0U)
310 return char_iterator.array_pos(); 309 return char_iterator.array_pos();
311 *script = scripts[0]; 310 *script = scripts[0];
312 } 311 }
313 312
314 return length; 313 return length;
315 } 314 }
316 315
316 // A port of hb_icu_script_to_script because harfbuzz on CrOS is built without
317 // hb-icu. See http://crbug.com/356929
318 inline hb_script_t ICUScriptToHBScript(UScriptCode script) {
319 if (script == USCRIPT_INVALID_CODE)
320 return HB_SCRIPT_INVALID;
321 return hb_script_from_string(uscript_getShortName(script), -1);
322 }
323
317 } // namespace 324 } // namespace
318 325
319 namespace internal { 326 namespace internal {
320 327
321 TextRunHarfBuzz::TextRunHarfBuzz() 328 TextRunHarfBuzz::TextRunHarfBuzz()
322 : width(0), 329 : width(0),
323 preceding_run_widths(0), 330 preceding_run_widths(0),
324 direction(UBIDI_LTR), 331 direction(UBIDI_LTR),
325 level(0), 332 level(0),
326 script(USCRIPT_INVALID_CODE), 333 script(USCRIPT_INVALID_CODE),
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 908
902 hb_font_t* harfbuzz_font = CreateHarfBuzzFont(run->skia_face.get(), 909 hb_font_t* harfbuzz_font = CreateHarfBuzzFont(run->skia_face.get(),
903 run->font_size); 910 run->font_size);
904 911
905 // Create a HarfBuzz buffer and add the string to be shaped. The HarfBuzz 912 // Create a HarfBuzz buffer and add the string to be shaped. The HarfBuzz
906 // buffer holds our text, run information to be used by the shaping engine, 913 // buffer holds our text, run information to be used by the shaping engine,
907 // and the resulting glyph data. 914 // and the resulting glyph data.
908 hb_buffer_t* buffer = hb_buffer_create(); 915 hb_buffer_t* buffer = hb_buffer_create();
909 hb_buffer_add_utf16(buffer, reinterpret_cast<const uint16*>(text.c_str()), 916 hb_buffer_add_utf16(buffer, reinterpret_cast<const uint16*>(text.c_str()),
910 text.length(), run->range.start(), run->range.length()); 917 text.length(), run->range.start(), run->range.length());
911 hb_buffer_set_script(buffer, hb_icu_script_to_script(run->script)); 918 hb_buffer_set_script(buffer, ICUScriptToHBScript(run->script));
912 hb_buffer_set_direction(buffer, 919 hb_buffer_set_direction(buffer,
913 run->direction == UBIDI_LTR ? HB_DIRECTION_LTR : HB_DIRECTION_RTL); 920 run->direction == UBIDI_LTR ? HB_DIRECTION_LTR : HB_DIRECTION_RTL);
914 // TODO(ckocagil): Should we determine the actual language? 921 // TODO(ckocagil): Should we determine the actual language?
915 hb_buffer_set_language(buffer, hb_language_get_default()); 922 hb_buffer_set_language(buffer, hb_language_get_default());
916 923
917 // Shape the text. 924 // Shape the text.
918 hb_shape(harfbuzz_font, buffer, NULL, 0); 925 hb_shape(harfbuzz_font, buffer, NULL, 0);
919 926
920 // Populate the run fields with the resulting glyph data in the buffer. 927 // Populate the run fields with the resulting glyph data in the buffer.
921 unsigned int glyph_count = 0; 928 unsigned int glyph_count = 0;
(...skipping 14 matching lines...) Expand all
936 run->positions[i].set(run->width + x_offset, y_offset); 943 run->positions[i].set(run->width + x_offset, y_offset);
937 run->width += 944 run->width +=
938 SkScalarRoundToInt(SkFixedToScalar(hb_positions[i].x_advance)); 945 SkScalarRoundToInt(SkFixedToScalar(hb_positions[i].x_advance));
939 } 946 }
940 947
941 hb_buffer_destroy(buffer); 948 hb_buffer_destroy(buffer);
942 hb_font_destroy(harfbuzz_font); 949 hb_font_destroy(harfbuzz_font);
943 } 950 }
944 951
945 } // namespace gfx 952 } // namespace gfx
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698