Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git i/build/config/freetype/BUILD.gn w/build/config/freetype/BUILD.gn
- index 0ba9027167..991419c9f3 100644
- --- i/build/config/freetype/BUILD.gn
- +++ w/build/config/freetype/BUILD.gn
- @@ -10,7 +10,7 @@ group("freetype") {
- public_configs = [ "//build/linux:freetype_from_pkgconfig" ]
- } else {
- public_deps = [
- - "//third_party:freetype_harfbuzz",
- + "//third_party/freetype",
- ]
- }
- }
- diff --git i/build/linux/BUILD.gn w/build/linux/BUILD.gn
- index 54314c7687..3d1a0fad97 100644
- --- i/build/linux/BUILD.gn
- +++ w/build/linux/BUILD.gn
- @@ -3,7 +3,6 @@
- # found in the LICENSE file.
- import("//build/config/features.gni")
- -import("//build/config/freetype/freetype.gni")
- import("//build/config/linux/pkg_config.gni")
- if (use_gio) {
- @@ -16,16 +15,11 @@ if (use_gio) {
- # Looking for libspeechd? Use //third_party/speech-dispatcher
- -if (use_system_freetype) {
- - assert(!is_chromecast)
- -
- +if (!is_chromecast) {
- # Only provided for distributions which prefer to keep linking to FreeType on
- # the system, use with caution,for details see build/config/freetype/BUILD.gn.
- pkg_config("freetype_from_pkgconfig") {
- - visibility = [
- - "//third_party:freetype_harfbuzz",
- - "//third_party/harfbuzz-ng:harfbuzz_source",
- - ]
- + visibility = [ ":freetype2" ]
- packages = [ "freetype2" ]
- }
- }
- diff --git i/content/shell/BUILD.gn w/content/shell/BUILD.gn
- index e6abe24d2e..0e1fcc73e2 100644
- --- i/content/shell/BUILD.gn
- +++ w/content/shell/BUILD.gn
- @@ -394,7 +394,7 @@ static_library("content_shell_lib") {
- }
- if (is_linux) {
- - deps += [ "//build/config/freetype" ]
- + deps += [ "//third_party/freetype" ]
- }
- if (!enable_plugins) {
- diff --git i/headless/BUILD.gn w/headless/BUILD.gn
- index bf0905c2f7..9a9ed9fcc4 100644
- --- i/headless/BUILD.gn
- +++ w/headless/BUILD.gn
- @@ -249,8 +249,8 @@ if (headless_fontconfig_utils && !is_fuchsia) {
- ]
- deps = [
- - "//build/config/freetype",
- "//third_party/fontconfig",
- + "//third_party/freetype",
- ]
- configs += [ ":headless_implementation" ]
- diff --git i/remoting/host/it2me/BUILD.gn w/remoting/host/it2me/BUILD.gn
- index 69e9583607..e732fe144d 100644
- --- i/remoting/host/it2me/BUILD.gn
- +++ w/remoting/host/it2me/BUILD.gn
- @@ -55,10 +55,10 @@ source_set("common") {
- deps += [
- "//build/config/linux/gtk",
- - # GTK pulls pangoft2, which requires HarfBuzz symbols. When linking
- - # our own HarfBuzz avoid mixing symbols from system HarfBuzz and
- - # our own through the indirect dependency to harfbuzz-ng here.
- - "//third_party:freetype_harfbuzz",
- + # GTK pulls pangoft2, which requires HarfBuzz symbols. Since we
- + # link our own HarfBuzz, avoid mixing symbols from system HarfBuzz
- + # and own ones, hence the dependency to harfbuzz-ng here.
- + "//third_party/harfbuzz-ng",
- ]
- }
- }
- diff --git i/third_party/BUILD.gn w/third_party/BUILD.gn
- index 7fccf382d8..1fa7ac45b2 100644
- --- i/third_party/BUILD.gn
- +++ w/third_party/BUILD.gn
- @@ -2,8 +2,9 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- -import("//build/config/freetype/freetype.gni")
- -import("//third_party/harfbuzz-ng/harfbuzz.gni")
- +if (is_android) {
- + import("//build/config/android/config.gni")
- +}
- assert(!is_ios, "This is not used on iOS, don't drag it in unintentionally")
- @@ -56,21 +57,3 @@ group("jpeg_includes") {
- public_configs = [ "//third_party/libjpeg:libjpeg_config" ]
- }
- }
- -
- -# FreeType and HarfBuzz libraries are dependent on each other. This component
- -# will depend on the appropriate source sets or export the system packages
- -# for both FreeType and HarfBuzz.
- -component("freetype_harfbuzz") {
- - public_configs = []
- - public_deps = []
- - if (use_system_freetype) {
- - public_configs += [ "//build/linux:freetype_from_pkgconfig" ]
- - } else {
- - public_deps += [ "//third_party/freetype:freetype_source" ]
- - }
- - if (use_system_harfbuzz) {
- - public_configs += [ "//third_party/harfbuzz-ng:harfbuzz_from_pkgconfig" ]
- - } else {
- - public_deps += [ "//third_party/harfbuzz-ng:harfbuzz_source" ]
- - }
- -}
- diff --git i/third_party/WebKit/Source/platform/BUILD.gn w/third_party/WebKit/Source/platform/BUILD.gn
- index 36ac2ec9aa..0d9d786579 100644
- --- i/third_party/WebKit/Source/platform/BUILD.gn
- +++ w/third_party/WebKit/Source/platform/BUILD.gn
- @@ -1557,9 +1557,9 @@ jumbo_component("platform") {
- "//mojo/public/cpp/bindings",
- "//mojo/public/cpp/bindings:wtf_support",
- "//services/service_manager/public/cpp",
- - "//third_party:freetype_harfbuzz",
- "//third_party/WebKit/public:offscreen_canvas_mojo_bindings_blink",
- "//third_party/ced",
- + "//third_party/harfbuzz-ng",
- "//third_party/icu",
- "//ui/gfx",
- "//ui/gfx/geometry",
- @@ -1753,7 +1753,6 @@ jumbo_static_library("test_support") {
- "//components/viz/test:test_support",
- "//testing/gmock",
- "//testing/gtest:gtest",
- - "//testing/perf",
- ]
- deps = [
- @@ -1988,13 +1987,13 @@ jumbo_source_set("blink_platform_unittests_sources") {
- "//skia",
- "//testing/gmock",
- "//testing/gtest",
- - "//third_party:freetype_harfbuzz",
- "//third_party/WebKit/Source/platform/blob:unit_tests",
- "//third_party/WebKit/Source/platform/instrumentation:unit_tests",
- "//third_party/WebKit/Source/platform/loader:unit_tests",
- "//third_party/WebKit/Source/platform/network:unit_tests",
- "//third_party/WebKit/Source/platform/scheduler:unit_tests",
- "//third_party/WebKit/Source/platform/wtf",
- + "//third_party/harfbuzz-ng",
- "//ui/gfx",
- "//ui/gfx/geometry",
- "//ui/gfx/geometry/mojo:test_interfaces_blink",
- @@ -2039,7 +2038,6 @@ test("blink_platform_perftests") {
- "testing/BlinkPerfTestSuite.cpp",
- "testing/BlinkPerfTestSuite.h",
- "testing/RunAllPerfTests.cpp",
- - "testing/ShapingLineBreakerPerfTest.cpp",
- ]
- configs += [
- @@ -2057,7 +2055,6 @@ test("blink_platform_perftests") {
- "//services/network/public/cpp:cpp",
- "//testing/gtest",
- "//testing/perf",
- - "//third_party:freetype_harfbuzz",
- "//third_party/WebKit/Source/platform/scheduler:perf_tests",
- ]
- }
- diff --git i/third_party/WebKit/Source/platform/fonts/WebFontDecoder.cpp w/third_party/WebKit/Source/platform/fonts/WebFontDecoder.cpp
- index 4d17b5546b..5d78115848 100644
- --- i/third_party/WebKit/Source/platform/fonts/WebFontDecoder.cpp
- +++ w/third_party/WebKit/Source/platform/fonts/WebFontDecoder.cpp
- @@ -38,10 +38,10 @@
- #include "platform/instrumentation/tracing/TraceEvent.h"
- #include "platform/wtf/Time.h"
- #include "public/platform/Platform.h"
- +#include "third_party/harfbuzz-ng/src/hb.h"
- #include "third_party/ots/include/ots-memory-stream.h"
- #include "third_party/skia/include/core/SkStream.h"
- -#include <hb.h>
- #include <stdarg.h>
- namespace blink {
- diff --git i/third_party/freetype/BUILD.gn w/third_party/freetype/BUILD.gn
- index 0213b648e2..1bab287a46 100644
- --- i/third_party/freetype/BUILD.gn
- +++ w/third_party/freetype/BUILD.gn
- @@ -6,8 +6,6 @@ import("//build/config/chromecast_build.gni")
- import("//build/config/freetype/freetype.gni")
- import("//third_party/harfbuzz-ng/harfbuzz.gni")
- -assert(!use_system_freetype, "Not used when using system freetype.")
- -
- config("freetype_config") {
- include_dirs = [
- "include",
- @@ -49,40 +47,32 @@ config("freetype-warnings") {
- }
- }
- -source_set("freetype_source") {
- - visibility = [ "//third_party:freetype_harfbuzz" ]
- +# This component is used to resolve a cyclic dependency between HarfBuzz and
- +# FreeType. HarfBuzz needs basic FreeType glyph information symbols for its
- +# hb-ft.* functions, FreeType needs HarfBuzz' OpenType parsing functionality in
- +# the autohinting code. We start by building a minimum FreeType here - enough to
- +# satisfy harfbuzz-ng-ft symbol requirements. Then we can build harfbuzz-ng-ft
- +# based on the minimal FreeType and harfbuzz-ng which does not depend on
- +# FreeType itself. Then we build FreeType depending on harfbuzz-ng-ft and
- +# harfbuzz-ng.
- +static_library("bootstrap_freetype_for_harfbuzz") {
- + visibility = [
- + "//third_party/harfbuzz-ng:harfbuzz-ng-ft",
- + ":freetype",
- + ]
- defines = []
- - include_dirs = []
- sources = [
- "include/freetype-custom-config/ftconfig.h",
- "include/freetype-custom-config/ftmodule.h",
- "include/freetype-custom-config/ftoption.h",
- - "src/src/autofit/autofit.c",
- "src/src/base/ftbase.c",
- - "src/src/base/ftbbox.c",
- "src/src/base/ftbitmap.c",
- - "src/src/base/ftfntfmt.c",
- - "src/src/base/ftfstype.c",
- - "src/src/base/ftgasp.c",
- - "src/src/base/ftglyph.c",
- - "src/src/base/ftinit.c",
- - "src/src/base/ftlcdfil.c",
- - "src/src/base/ftmm.c",
- - "src/src/base/ftstroke.c",
- - "src/src/base/fttype1.c",
- - "src/src/cff/cff.c",
- - "src/src/gzip/ftgzip.c",
- - "src/src/psaux/psaux.c",
- - "src/src/pshinter/pshinter.c",
- - "src/src/psnames/psnames.c",
- - "src/src/raster/raster.c",
- - "src/src/sfnt/sfnt.c",
- - "src/src/smooth/smooth.c",
- - "src/src/truetype/truetype.c",
- ]
- + include_dirs = []
- +
- # ftsystem.c provides implementations of FT_Memory and FT_Stream_Open.
- # While Chromium itself avoids using this code, any build of Chromium which
- # depends on //third_party/fontconfig:fontconfig with use_bundled_fontconfig
- @@ -105,6 +95,68 @@ source_set("freetype_source") {
- sources += [ "src/src/base/ftsystem.c" ]
- }
- + if (is_mac && !is_component_build) {
- + defines += [ "MAC_RESTRICT_VISIBILITY" ]
- + }
- +
- + defines += [
- + "FT2_BUILD_LIBRARY",
- + "DARWIN_NO_CARBON",
- +
- + # Long directory name to avoid accidentally using wrong headers.
- + # GN currently does not escape '<' and '>' when generating xml based Visual
- + # Studio project files. As a result, use quotes instead of pointy brackets
- + # in these defines.
- + "FT_CONFIG_CONFIG_H=\"freetype-custom-config/ftconfig.h\"",
- + "FT_CONFIG_MODULES_H=\"freetype-custom-config/ftmodule.h\"",
- + "FT_CONFIG_OPTIONS_H=\"freetype-custom-config/ftoption.h\"",
- + ]
- +
- + if (is_win && is_component_build) {
- + # Used for managing declspec(dllimport/export) visibility.
- + defines += [ "FT2_BUILD_DLL" ]
- + }
- +
- + public_configs = [ ":freetype_config" ]
- + configs -= [ "//build/config/compiler:chromium_code" ]
- + configs += [ "//build/config/compiler:no_chromium_code" ]
- +
- + configs += [ ":freetype-warnings" ]
- +}
- +
- +component("freetype") {
- + if (is_linux) {
- + output_name = "freetype"
- + output_extension = "so.6"
- + }
- +
- + defines = []
- +
- + sources = [
- + "include/freetype-custom-config/ftconfig.h",
- + "include/freetype-custom-config/ftmodule.h",
- + "include/freetype-custom-config/ftoption.h",
- + "src/src/autofit/autofit.c",
- + "src/src/base/ftbbox.c",
- + "src/src/base/ftfntfmt.c",
- + "src/src/base/ftfstype.c",
- + "src/src/base/ftgasp.c",
- + "src/src/base/ftglyph.c",
- + "src/src/base/ftinit.c",
- + "src/src/base/ftlcdfil.c",
- + "src/src/base/ftmm.c",
- + "src/src/base/ftstroke.c",
- + "src/src/base/fttype1.c",
- + "src/src/cff/cff.c",
- + "src/src/gzip/ftgzip.c",
- + "src/src/pshinter/pshinter.c",
- + "src/src/psnames/psnames.c",
- + "src/src/raster/raster.c",
- + "src/src/sfnt/sfnt.c",
- + "src/src/smooth/smooth.c",
- + "src/src/truetype/truetype.c",
- + ]
- +
- if (!is_android) {
- sources += [
- "src/src/cid/type1cid.c",
- @@ -132,20 +184,29 @@ source_set("freetype_source") {
- defines += [ "FT2_BUILD_DLL" ]
- }
- - if (use_system_harfbuzz) {
- - configs += [ "//third_party/harfbuzz-ng:harfbuzz_from_pkgconfig" ]
- - } else {
- - configs += [ "//third_party/harfbuzz-ng:harfbuzz_config" ]
- - }
- + public_configs = [ ":freetype_config" ]
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [ "//build/config/compiler:no_chromium_code" ]
- configs += [ "//build/config/sanitizers:cfi_icall_generalize_pointers" ]
- configs += [ ":freetype-warnings" ]
- - public_configs = [ ":freetype_config" ]
- -
- deps = [
- "//third_party/libpng",
- "//third_party/zlib",
- ]
- +
- + if (!use_system_freetype) {
- + deps += [ ":bootstrap_freetype_for_harfbuzz" ]
- + }
- +
- + if (!use_system_harfbuzz) {
- + if (!is_android) {
- + # See "WITHOUT_HARFBUZZ" above, harfbuzz-ng-ft is only needed if we build
- + # FreeType with HarfBuzz support.
- + deps += [ "//third_party/harfbuzz-ng:harfbuzz-ng-ft" ]
- + }
- + deps += [ "//third_party/harfbuzz-ng:harfbuzz-ng-without-freetype" ]
- + } else {
- + deps += [ "//third_party/harfbuzz-ng:harfbuzz-ng" ]
- + }
- }
- diff --git i/third_party/harfbuzz-ng/BUILD.gn w/third_party/harfbuzz-ng/BUILD.gn
- index dcb74529d8..e9695c0356 100644
- --- i/third_party/harfbuzz-ng/BUILD.gn
- +++ w/third_party/harfbuzz-ng/BUILD.gn
- @@ -5,21 +5,31 @@
- import("//build/config/chrome_build.gni")
- import("//build/config/features.gni")
- import("//build/config/freetype/freetype.gni")
- +import("//build/config/linux/pkg_config.gni")
- import("//build/config/ui.gni")
- import("//testing/libfuzzer/fuzzer_test.gni")
- import("//third_party/harfbuzz-ng/harfbuzz.gni")
- if (use_system_harfbuzz) {
- import("//build/config/linux/pkg_config.gni")
- - pkg_config("harfbuzz_from_pkgconfig") {
- - visibility = [
- - "//third_party:freetype_harfbuzz",
- - "//third_party/freetype:freetype_source",
- - ]
- + pkg_config("harfbuzz_pkgconfig") {
- packages = [ "harfbuzz" ]
- }
- + group("harfbuzz-ng") {
- + public_configs = [ ":harfbuzz_pkgconfig" ]
- + }
- } else {
- - config("harfbuzz_config") {
- + # The :harfbuzz-ng target combines the staged build steps required to resolve
- + # the cyclic dependency between parts of FreeType and HarfBuzz.
- + group("harfbuzz-ng") {
- + public_deps = [
- + ":harfbuzz-ng-ft",
- + ":harfbuzz-ng-without-freetype",
- + "//build/config/freetype",
- + ]
- + }
- +
- + config("harfbuzz-ng_config") {
- include_dirs = [ "src" ]
- }
- @@ -41,9 +51,7 @@ if (use_system_harfbuzz) {
- }
- }
- - source_set("harfbuzz_source") {
- - visibility = [ "//third_party:freetype_harfbuzz" ]
- -
- + static_library("harfbuzz-ng-without-freetype") {
- sources = [
- "src/hb-atomic-private.hh",
- "src/hb-blob.cc",
- @@ -66,8 +74,6 @@ if (use_system_harfbuzz) {
- "src/hb-font-private.hh",
- "src/hb-font.cc",
- "src/hb-font.h",
- - "src/hb-ft.cc",
- - "src/hb-ft.h",
- "src/hb-icu.cc",
- "src/hb-icu.h",
- "src/hb-mutex-private.hh",
- @@ -156,6 +162,11 @@ if (use_system_harfbuzz) {
- "src/hb.h",
- ]
- + if (is_component_build && !is_win) {
- + configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
- + configs += [ "//build/config/gcc:symbol_visibility_default" ]
- + }
- +
- defines = [
- "HAVE_OT",
- "HAVE_ICU",
- @@ -163,20 +174,6 @@ if (use_system_harfbuzz) {
- "HAVE_INTEL_ATOMIC_PRIMITIVES",
- ]
- - if (is_component_build) {
- - if (is_win) {
- - defines += [ "HB_EXTERN=__declspec (dllexport) extern" ]
- - } else {
- - configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
- - configs += [ "//build/config/gcc:symbol_visibility_default" ]
- - }
- - }
- -
- - if (use_system_freetype) {
- - configs += [ "//build/linux:freetype_from_pkgconfig" ]
- - } else {
- - configs += [ "//third_party/freetype:freetype_config" ]
- - }
- configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [
- "//build/config/compiler:no_chromium_code",
- @@ -185,7 +182,7 @@ if (use_system_harfbuzz) {
- # correctly.
- ":harfbuzz_warnings",
- ]
- - public_configs = [ ":harfbuzz_config" ]
- + public_configs = [ ":harfbuzz-ng_config" ]
- deps = [
- "//third_party/icu:icuuc",
- @@ -212,6 +209,45 @@ if (use_system_harfbuzz) {
- ]
- }
- }
- +
- + static_library("harfbuzz-ng-ft") {
- + sources = [
- + "src/hb-ft.cc",
- + "src/hb-ft.h",
- + ]
- +
- + if (is_component_build && !is_win) {
- + configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
- + configs += [ "//build/config/gcc:symbol_visibility_default" ]
- + }
- +
- + configs -= [ "//build/config/compiler:chromium_code" ]
- + configs += [
- + "//build/config/compiler:no_chromium_code",
- +
- + # Must be after no_chromium_code for warning flags to be ordered
- + # correctly.
- + ":harfbuzz_warnings",
- + ]
- + public_configs = [ ":harfbuzz-ng_config" ]
- +
- + defines = [
- + "HAVE_OT",
- + "HAVE_ICU",
- + "HAVE_ICU_BUILTIN",
- + "HAVE_INTEL_ATOMIC_PRIMITIVES",
- + ]
- +
- + if (use_system_freetype) {
- + deps = [
- + "//build/config/freetype:freetype",
- + ]
- + } else {
- + deps = [
- + "//third_party/freetype:bootstrap_freetype_for_harfbuzz",
- + ]
- + }
- + }
- }
- fuzzer_test("harfbuzz_fuzzer") {
- @@ -219,7 +255,7 @@ fuzzer_test("harfbuzz_fuzzer") {
- "fuzz/harfbuzz_fuzzer.cc",
- ]
- deps = [
- - "//third_party:freetype_harfbuzz",
- + ":harfbuzz-ng",
- ]
- libfuzzer_options = [ "max_len=16800" ]
- seed_corpus = "fuzz/seed_corpus"
- diff --git i/ui/gfx/BUILD.gn w/ui/gfx/BUILD.gn
- index 580b686cf4..cc19292227 100644
- --- i/ui/gfx/BUILD.gn
- +++ w/ui/gfx/BUILD.gn
- @@ -301,7 +301,7 @@ jumbo_component("gfx") {
- } else {
- deps += [
- "//cc/paint",
- - "//third_party:freetype_harfbuzz",
- + "//third_party/harfbuzz-ng",
- ]
- }
- @@ -713,6 +713,10 @@ test("gfx_unittests") {
- sources += [ "paint_vector_icon_unittest.cc" ]
- }
- + if (!is_android && !is_ios) {
- + sources += [ "render_text_unittest.cc" ]
- + }
- +
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
- configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
- @@ -733,11 +737,6 @@ test("gfx_unittests") {
- "//ui/resources:ui_test_pak",
- ]
- - if (!is_android && !is_ios) {
- - sources += [ "render_text_unittest.cc" ]
- - deps += [ "//third_party:freetype_harfbuzz" ]
- - }
- -
- data_deps = [
- "//ui/resources:ui_test_pak",
- ]
- diff --git i/ui/gfx/harfbuzz_font_skia.h w/ui/gfx/harfbuzz_font_skia.h
- index abc6c79387..bdf6dc12e7 100644
- --- i/ui/gfx/harfbuzz_font_skia.h
- +++ w/ui/gfx/harfbuzz_font_skia.h
- @@ -5,12 +5,11 @@
- #ifndef UI_GFX_HARFBUZZ_FONT_SKIA_H_
- #define UI_GFX_HARFBUZZ_FONT_SKIA_H_
- +#include "third_party/harfbuzz-ng/src/hb.h"
- #include "third_party/skia/include/core/SkRefCnt.h"
- #include "third_party/skia/include/core/SkScalar.h"
- #include "ui/gfx/font_render_params.h"
- -#include <hb.h>
- -
- class SkTypeface;
- namespace gfx {
- diff --git i/ui/gfx/render_text_harfbuzz.cc w/ui/gfx/render_text_harfbuzz.cc
- index 79a7a863cd..11805e23d6 100644
- --- i/ui/gfx/render_text_harfbuzz.cc
- +++ w/ui/gfx/render_text_harfbuzz.cc
- @@ -20,6 +20,7 @@
- #include "base/strings/utf_string_conversions.h"
- #include "base/trace_event/trace_event.h"
- #include "build/build_config.h"
- +#include "third_party/harfbuzz-ng/src/hb.h"
- #include "third_party/icu/source/common/unicode/ubidi.h"
- #include "third_party/icu/source/common/unicode/utf16.h"
- #include "third_party/skia/include/core/SkColor.h"
- @@ -41,8 +42,6 @@
- #include "base/mac/mac_util.h"
- #endif
- -#include <hb.h>
- -
- namespace gfx {
- namespace {
- diff --git i/ui/gfx/render_text_harfbuzz.h w/ui/gfx/render_text_harfbuzz.h
- index b883e84fdd..c8ab77c62f 100644
- --- i/ui/gfx/render_text_harfbuzz.h
- +++ w/ui/gfx/render_text_harfbuzz.h
- @@ -12,12 +12,11 @@
- #include <vector>
- #include "base/macros.h"
- +#include "third_party/harfbuzz-ng/src/hb.h"
- #include "third_party/icu/source/common/unicode/ubidi.h"
- #include "third_party/icu/source/common/unicode/uscript.h"
- #include "ui/gfx/render_text.h"
- -#include <hb.h>
- -
- namespace base {
- namespace i18n {
- class BreakIterator;
Add Comment
Please, Sign In to add comment