forked from pool/nodejs-electron
- New upstream release 30.2.0 * Node 20.15.0 * Enabled the Windows Control Overlay API on Linux. * Expose systemPreferences to utilityProcess. * Fixed a focus issue when calling BrowserWindow.setTopBrowserView. * Fixed an issue where fetch-dependent interfaces could be missing in Web Workers with nodeIntegrationInWorker enabled. * Fixed an issue where control could fail to return properly after saving a dialog using showOpenDialogSync on Linux. * Fixes an issue where the user-specified default path did not work in some circumstances when using Linux dialogs. * Fixes potentially incorrect exit code in UtilityProcess. * (Leap 15.5) Fix heap buffer overflow in libaom (CVE-2024-5493 bsc#1225690) * Security fixes for V8: CVE-2024-6100, CVE-2024-6101 (bsc#1226504) * Fix use after free in Swiftshader (CVE-2024-6291 bsc#1226933) - Update to 30.1.2 XXXFIXMEXXX * ABI break: NODE_MODULE_VERSION is now 123 * Chromium 124.0.6367.243 * Node 20.14.0 * V8 12.4 * Added WebContentsView and BaseWindow, replacing the now-deprecated BrowserView APIs. * cross-origin iframes now use Permission Policy to access features * Removed: The --disable-color-correct-rendering switch * The inputFieldType property in the context-menu params has been removed * Removed: process.getIOCounters() * see https://www.electronjs.org/blog/electron-30-0 and https://github.com/electron/electron/releases/tag/v30.0.0 for more - Fedora: use bundled simdutf as the system version is too old - Drop no longer needed patches * chromium-122-avoid-SFINAE-TypeConverter.patch * chromium-122-BookmarkNode-missing-operator.patch * chromium-98-EnumTable-crash.patch * chromium-gcc11.patch * CVE-2024-30260-undici-clear-proxy-authorization.patch * CVE-2024-30261-undici-fetch-integrity.patch * ElectronDesktopWindowTreeHostLinux-OnWindowTiledStateChanged-crash.patch * grid_sizing_tree-Wchanges-meaning.patch * hit_test_request-missing-optional.patch * InternalAllocator-too-many-initializers.patch * material_color_utilities-tones-missing-round.patch * nested-nested-nested-nested-nested-nested-regex-patterns.patch * perfetto-numeric_storage-double_t.patch * plus_address_types-missing-optional.patch * race_network_request_write_buffer_manager-missing-optional.patch * resolution_monitor-missing-bitset.patch * script_promise_resolver-explicit-specialization.patch * search_engine_choice_service-missing-optional.patch * text_break_iterator-icu74-breakAllLineBreakClassTable-should-be-consistent.patch * v8-instance-type-inl-constexpr-used-before-its-definition.patch - Drop no longer needed -Wno-error=narrowing from CXXFLAGS - Add patches to fix build * chromium-124-shims.patch * enable_stack_trace_line_numbers-symbol_level.patch * angle-FramebufferVk-powf.patch * licenses.py-FileNotFoundError.patch * span_reader-missing-optional.patch * bitset-missing-uint8_t-memcpy.patch * temporal_scalability_id_extractor-missing-bitset.patch * gpu_adapter_info-missing-optional.patch * first_party_sets_handler_database_helper-missing-optional.patch * async_iterable-forwarding.patch * preview_cancel_reason-missing-string.patch * script_streamer-atomic-include.patch - Add -Wno-packed-not-aligned -Wno-address to CXXFLAGS to suppress build logspam - Add libaom_av1_encoder-aom37-AV1E_SET_MAX_CONSEC_FRAME_DROP_CBR.patch to build with old libaom - Add backported DesktopNativeWidgetAura-HandleActivationChanged-crash.patch - Revert upstream changes which introduce a use-after-free bug causing crashes (bsc#1224178 deb#1067886) * bad-font-gc0000.patch * bad-font-gc000.patch * bad-font-gc00.patch * bad-font-gc0.patch * bad-font-gc11.patch * bad-font-gc1.patch * bad-font-gc2.patch * bad-font-gc3.patch OBS-URL: https://build.opensuse.org/request/show/1187058 OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=159
532 lines
22 KiB
Diff
532 lines
22 KiB
Diff
From aa2ff2bee16776301bd840a4e18bdebdfb916822 Mon Sep 17 00:00:00 2001
|
|
From: Munira Tursunova <moonira@google.com>
|
|
Date: Tue, 04 Oct 2022 14:20:04 +0000
|
|
Subject: [PATCH] Replacing Chromium scoped types with HarfBuzz custom types.
|
|
|
|
Removed the Chromium side type HbScoped and move to the
|
|
HarfBuzz custom type.
|
|
|
|
Bug: 1363228
|
|
Change-Id: I9d390808953e2c36651533cbf5f4958beff2e14d
|
|
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3927859
|
|
Reviewed-by: Dominik Röttsches <drott@chromium.org>
|
|
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
|
|
Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
|
|
Commit-Queue: Munira Tursunova <moonira@google.com>
|
|
Cr-Commit-Position: refs/heads/main@{#1054692}
|
|
---
|
|
|
|
diff --git a/components/paint_preview/common/BUILD.gn b/components/paint_preview/common/BUILD.gn
|
|
index 377dc92..c39757d 100644
|
|
--- a/components/paint_preview/common/BUILD.gn
|
|
+++ b/components/paint_preview/common/BUILD.gn
|
|
@@ -37,7 +37,6 @@
|
|
"//components/crash/core/common:crash_key_lib",
|
|
"//skia",
|
|
"//third_party:freetype_harfbuzz",
|
|
- "//third_party/harfbuzz-ng:hb_scoped_util",
|
|
"//ui/gfx/geometry",
|
|
"//url",
|
|
]
|
|
diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc
|
|
index 8298861d5..147dfc3 100644
|
|
--- a/components/paint_preview/common/subset_font.cc
|
|
+++ b/components/paint_preview/common/subset_font.cc
|
|
@@ -7,6 +7,7 @@
|
|
// clang-format off
|
|
#include <hb.h>
|
|
#include <hb-subset.h>
|
|
+#include <hb-cplusplus.hh>
|
|
// clang-format on
|
|
|
|
#include <memory>
|
|
@@ -17,7 +18,6 @@
|
|
#include "base/numerics/safe_conversions.h"
|
|
#include "components/crash/core/common/crash_key.h"
|
|
#include "skia/ext/font_utils.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
#include "third_party/skia/include/core/SkFontMgr.h"
|
|
#include "third_party/skia/include/core/SkStream.h"
|
|
#include "third_party/skia/include/core/SkTypeface.h"
|
|
@@ -45,11 +45,11 @@
|
|
}
|
|
|
|
// Converts SkData to a hb_blob_t.
|
|
-HbScoped<hb_blob_t> MakeBlob(sk_sp<SkData> data) {
|
|
+hb::unique_ptr<hb_blob_t> MakeBlob(sk_sp<SkData> data) {
|
|
if (!data ||
|
|
!base::IsValueInRangeForNumericType<unsigned int, size_t>(data->size()))
|
|
- return nullptr;
|
|
- return HbScoped<hb_blob_t>(
|
|
+ return hb::unique_ptr<hb_blob_t>(nullptr);
|
|
+ return hb::unique_ptr<hb_blob_t>(
|
|
hb_blob_create(static_cast<const char*>(data->data()),
|
|
static_cast<unsigned int>(data->size()),
|
|
HB_MEMORY_MODE_READONLY, nullptr, nullptr));
|
|
@@ -72,8 +72,9 @@
|
|
family_name.c_str());
|
|
int ttc_index = 0;
|
|
sk_sp<SkData> data = StreamToData(typeface->openStream(&ttc_index));
|
|
- HbScoped<hb_face_t> face(hb_face_create(MakeBlob(data).get(), ttc_index));
|
|
- HbScoped<hb_subset_input_t> input(hb_subset_input_create_or_fail());
|
|
+ hb::unique_ptr<hb_face_t> face(
|
|
+ hb_face_create(MakeBlob(data).get(), ttc_index));
|
|
+ hb::unique_ptr<hb_subset_input_t> input(hb_subset_input_create_or_fail());
|
|
if (!face || !input) {
|
|
return nullptr;
|
|
}
|
|
@@ -102,14 +103,16 @@
|
|
hb_set_add(skip_subset, HB_TAG('G', 'S', 'U', 'B'));
|
|
hb_set_add(skip_subset, HB_TAG('G', 'P', 'O', 'S'));
|
|
|
|
- HbScoped<hb_face_t> subset_face(hb_subset_or_fail(face.get(), input.get()));
|
|
+ hb::unique_ptr<hb_face_t> subset_face(
|
|
+ hb_subset_or_fail(face.get(), input.get()));
|
|
if (!subset_face) {
|
|
return nullptr;
|
|
}
|
|
// Store the correct collection index for the subsetted font.
|
|
const int final_ttc_index = hb_face_get_index(subset_face.get());
|
|
|
|
- HbScoped<hb_blob_t> subset_blob(hb_face_reference_blob(subset_face.get()));
|
|
+ hb::unique_ptr<hb_blob_t> subset_blob(
|
|
+ hb_face_reference_blob(subset_face.get()));
|
|
if (!subset_blob) {
|
|
return nullptr;
|
|
}
|
|
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
|
|
index 88cef3c..ae88e5a 100644
|
|
--- a/third_party/blink/renderer/platform/BUILD.gn
|
|
+++ b/third_party/blink/renderer/platform/BUILD.gn
|
|
@@ -1683,7 +1683,6 @@
|
|
"//third_party/blink/renderer/platform/wtf",
|
|
"//third_party/ced",
|
|
"//third_party/emoji-segmenter",
|
|
- "//third_party/harfbuzz-ng:hb_scoped_util",
|
|
"//third_party/icu",
|
|
"//third_party/libyuv",
|
|
"//third_party/one_euro_filter",
|
|
diff --git a/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc b/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc
|
|
index 7c7057b..d43668f1 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc
|
|
+++ b/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc
|
|
@@ -7,10 +7,10 @@
|
|
// Include HarfBuzz to have a cross-platform way to retrieve table tags without
|
|
// having to rely on the platform being able to instantiate this font format.
|
|
#include <hb.h>
|
|
+#include <hb-cplusplus.hh>
|
|
|
|
#include "base/sys_byteorder.h"
|
|
#include "third_party/blink/renderer/platform/wtf/vector.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
#include "third_party/skia/include/core/SkTypeface.h"
|
|
|
|
namespace blink {
|
|
@@ -27,7 +27,8 @@
|
|
const unsigned int kMinCOLRHeaderSize = 14;
|
|
if (table_tags.size() && table_tags.Contains(kCOLRTag) &&
|
|
table_tags.Contains(HB_TAG('C', 'P', 'A', 'L'))) {
|
|
- HbScoped<hb_blob_t> table_blob(hb_face_reference_table(face, kCOLRTag));
|
|
+ hb::unique_ptr<hb_blob_t> table_blob(
|
|
+ hb_face_reference_table(face, kCOLRTag));
|
|
if (hb_blob_get_length(table_blob.get()) < kMinCOLRHeaderSize)
|
|
return FontFormatCheck::COLRVersion::kNoCOLR;
|
|
|
|
@@ -51,11 +52,11 @@
|
|
} // namespace
|
|
|
|
FontFormatCheck::FontFormatCheck(sk_sp<SkData> sk_data) {
|
|
- HbScoped<hb_blob_t> font_blob(
|
|
+ hb::unique_ptr<hb_blob_t> font_blob(
|
|
hb_blob_create(reinterpret_cast<const char*>(sk_data->bytes()),
|
|
base::checked_cast<unsigned>(sk_data->size()),
|
|
HB_MEMORY_MODE_READONLY, nullptr, nullptr));
|
|
- HbScoped<hb_face_t> face(hb_face_create(font_blob.get(), 0));
|
|
+ hb::unique_ptr<hb_face_t> face(hb_face_create(font_blob.get(), 0));
|
|
|
|
unsigned table_count = 0;
|
|
table_count = hb_face_get_table_tags(face.get(), 0, nullptr, nullptr);
|
|
diff --git a/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc b/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc
|
|
index 5e6d1f2..73b984a 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc
|
|
+++ b/third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.cc
|
|
@@ -5,10 +5,10 @@
|
|
// clang-format off
|
|
#include <hb.h>
|
|
#include <hb-aat.h>
|
|
+#include <hb-cplusplus.hh>
|
|
// clang-format on
|
|
|
|
#include "third_party/blink/renderer/platform/fonts/opentype/open_type_caps_support.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
|
|
namespace blink {
|
|
|
|
@@ -146,9 +146,9 @@
|
|
hb_face_t* const hb_face =
|
|
hb_font_get_face(harfbuzz_face_->GetScaledFont());
|
|
|
|
- HbScoped<hb_blob_t> morx_blob(
|
|
+ hb::unique_ptr<hb_blob_t> morx_blob(
|
|
hb_face_reference_table(hb_face, HB_TAG('m', 'o', 'r', 'x')));
|
|
- HbScoped<hb_blob_t> mort_blob(
|
|
+ hb::unique_ptr<hb_blob_t> mort_blob(
|
|
hb_face_reference_table(hb_face, HB_TAG('m', 'o', 'r', 't')));
|
|
|
|
// TODO(crbug.com/911149): Use hb_aat_layout_has_substitution() for
|
|
diff --git a/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc b/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc
|
|
index 86c289c..98cbd7a 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc
|
|
+++ b/third_party/blink/renderer/platform/fonts/opentype/open_type_cpal_lookup.cc
|
|
@@ -6,11 +6,11 @@
|
|
|
|
#include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h"
|
|
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
#include "third_party/skia/include/core/SkStream.h"
|
|
|
|
// clang-format off
|
|
#include <hb.h>
|
|
+#include <hb-cplusplus.hh>
|
|
#include <hb-ot.h>
|
|
// clang-format on
|
|
|
|
@@ -28,7 +28,7 @@
|
|
if (!typeface || !typeface->getTableSize(kCpalTag))
|
|
return absl::nullopt;
|
|
|
|
- HbScoped<hb_face_t> face(HbFaceFromSkTypeface(typeface));
|
|
+ hb::unique_ptr<hb_face_t> face(HbFaceFromSkTypeface(typeface));
|
|
|
|
if (!face || !hb_ot_color_has_palettes(face.get()))
|
|
return absl::nullopt;
|
|
@@ -49,7 +49,7 @@ absl::optional<uint16_t> OpenTypeCpalLoo
|
|
Vector<Color> OpenTypeCpalLookup::RetrieveColorRecords(
|
|
sk_sp<SkTypeface> typeface,
|
|
unsigned palette_index) {
|
|
- HbScoped<hb_face_t> face(HbFaceFromSkTypeface(typeface));
|
|
+ hb::unique_ptr<hb_face_t> face(HbFaceFromSkTypeface(typeface));
|
|
|
|
if (!face) {
|
|
return Vector<Color>();
|
|
diff --git a/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc b/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc
|
|
index ebab0fa8..4ecd886 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc
|
|
+++ b/third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.cc
|
|
@@ -4,12 +4,12 @@
|
|
|
|
#include "third_party/blink/renderer/platform/fonts/opentype/variable_axes_names.h"
|
|
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
#include "third_party/skia/include/core/SkStream.h"
|
|
#include "third_party/skia/include/core/SkTypeface.h"
|
|
|
|
// clang-format off
|
|
#include <hb.h>
|
|
+#include <hb-cplusplus.hh>
|
|
#include <hb-ot.h>
|
|
// clang-format on
|
|
|
|
@@ -23,11 +23,11 @@
|
|
return output;
|
|
sk_sp<SkData> sk_data =
|
|
SkData::MakeFromStream(stream.get(), stream->getLength());
|
|
- HbScoped<hb_blob_t> blob(
|
|
+ hb::unique_ptr<hb_blob_t> blob(
|
|
hb_blob_create(reinterpret_cast<const char*>(sk_data->bytes()),
|
|
base::checked_cast<unsigned>(sk_data->size()),
|
|
HB_MEMORY_MODE_READONLY, nullptr, nullptr));
|
|
- HbScoped<hb_face_t> face(hb_face_create(blob.get(), 0));
|
|
+ hb::unique_ptr<hb_face_t> face(hb_face_create(blob.get(), 0));
|
|
unsigned axes_count = hb_ot_var_get_axis_count(face.get());
|
|
std::unique_ptr<hb_ot_var_axis_info_t[]> axes =
|
|
std::make_unique<hb_ot_var_axis_info_t[]>(axes_count);
|
|
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
|
|
index b4bb5a3..b6ee0a8f 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
|
|
+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
|
|
@@ -32,6 +32,7 @@
|
|
|
|
// clang-format off
|
|
#include <hb.h>
|
|
+#include <hb-cplusplus.hh>
|
|
#include <hb-ot.h>
|
|
// clang-format on
|
|
|
|
@@ -52,7 +53,6 @@
|
|
#include "third_party/blink/renderer/platform/wtf/hash_map.h"
|
|
#include "third_party/blink/renderer/platform/wtf/math_extras.h"
|
|
#include "third_party/blink/renderer/platform/wtf/text/character_names.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
#include "third_party/skia/include/core/SkPaint.h"
|
|
#include "third_party/skia/include/core/SkPath.h"
|
|
#include "third_party/skia/include/core/SkPoint.h"
|
|
@@ -203,7 +203,7 @@
|
|
const hb_codepoint_t kInvalidCodepoint = static_cast<hb_codepoint_t>(-1);
|
|
hb_codepoint_t space = kInvalidCodepoint;
|
|
|
|
- HbScoped<hb_set_t> glyphs(hb_set_create());
|
|
+ hb::unique_ptr<hb_set_t> glyphs(hb_set_create());
|
|
|
|
// Check whether computing is needed and compute for gpos/gsub.
|
|
if (features & kKerning &&
|
|
@@ -391,8 +391,8 @@
|
|
}
|
|
|
|
// TODO(yosin): We should move |CreateFace()| to "harfbuzz_font_cache.cc".
|
|
-static HbScoped<hb_face_t> CreateFace(FontPlatformData* platform_data) {
|
|
- HbScoped<hb_face_t> face;
|
|
+static hb::unique_ptr<hb_face_t> CreateFace(FontPlatformData* platform_data) {
|
|
+ hb::unique_ptr<hb_face_t> face;
|
|
|
|
sk_sp<SkTypeface> typeface = sk_ref_sp(platform_data->Typeface());
|
|
CHECK(typeface);
|
|
@@ -402,8 +402,8 @@
|
|
|
|
// Fallback to table copies if there is no in-memory access.
|
|
if (!face) {
|
|
- face.reset(hb_face_create_for_tables(HarfBuzzSkiaGetTable, typeface.get(),
|
|
- nullptr));
|
|
+ face = hb::unique_ptr<hb_face_t>(hb_face_create_for_tables(
|
|
+ HarfBuzzSkiaGetTable, typeface.get(), nullptr));
|
|
}
|
|
|
|
DCHECK(face);
|
|
@@ -415,7 +415,7 @@
|
|
static scoped_refptr<HarfBuzzFontData> CreateHarfBuzzFontData(
|
|
hb_face_t* face,
|
|
SkTypeface* typeface) {
|
|
- HbScoped<hb_font_t> ot_font(hb_font_create(face));
|
|
+ hb::unique_ptr<hb_font_t> ot_font(hb_font_create(face));
|
|
hb_ot_font_set_funcs(ot_font.get());
|
|
|
|
int axis_count = typeface->getVariationDesignPosition(nullptr, 0);
|
|
@@ -445,7 +445,7 @@
|
|
FontPlatformData* platform_data) {
|
|
const auto& result = font_map_.insert(platform_data->UniqueID(), nullptr);
|
|
if (result.is_new_entry) {
|
|
- HbScoped<hb_face_t> face = CreateFace(platform_data);
|
|
+ hb::unique_ptr<hb_face_t> face = CreateFace(platform_data);
|
|
result.stored_value->value =
|
|
CreateHarfBuzzFontData(face.get(), platform_data->Typeface());
|
|
}
|
|
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
|
|
index cbfb1c15..eb0dcb75 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
|
|
+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
|
|
@@ -38,9 +38,9 @@
|
|
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
|
|
#include "third_party/blink/renderer/platform/wtf/ref_counted.h"
|
|
#include "third_party/blink/renderer/platform/wtf/text/character_names.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
|
|
#include <hb.h>
|
|
+#include <hb-cplusplus.hh>
|
|
|
|
namespace blink {
|
|
|
|
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc
|
|
index 4561bc9..a2d2eb1d 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc
|
|
+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.cc
|
|
@@ -16,9 +16,8 @@
|
|
} // namespace
|
|
|
|
namespace blink {
|
|
-
|
|
-HbScoped<hb_face_t> HbFaceFromSkTypeface(sk_sp<SkTypeface> typeface) {
|
|
- HbScoped<hb_face_t> return_face(nullptr);
|
|
+hb::unique_ptr<hb_face_t> HbFaceFromSkTypeface(sk_sp<SkTypeface> typeface) {
|
|
+ hb::unique_ptr<hb_face_t> return_face(nullptr);
|
|
int ttc_index = 0;
|
|
|
|
// Have openStream() write the ttc index of this typeface within the stream to
|
|
@@ -28,7 +27,7 @@
|
|
if (tf_stream && tf_stream->getMemoryBase()) {
|
|
const void* tf_memory = tf_stream->getMemoryBase();
|
|
size_t tf_size = tf_stream->getLength();
|
|
- HbScoped<hb_blob_t> face_blob(hb_blob_create(
|
|
+ hb::unique_ptr<hb_blob_t> face_blob(hb_blob_create(
|
|
reinterpret_cast<const char*>(tf_memory),
|
|
base::checked_cast<unsigned int>(tf_size), HB_MEMORY_MODE_READONLY,
|
|
tf_stream.release(), DeleteTypefaceStream));
|
|
@@ -38,7 +37,8 @@
|
|
// See https://github.com/harfbuzz/harfbuzz/issues/248 .
|
|
unsigned int num_hb_faces = hb_face_count(face_blob.get());
|
|
if (0 < num_hb_faces && static_cast<unsigned>(ttc_index) < num_hb_faces) {
|
|
- return_face.reset(hb_face_create(face_blob.get(), ttc_index));
|
|
+ return_face =
|
|
+ hb::unique_ptr<hb_face_t>(hb_face_create(face_blob.get(), ttc_index));
|
|
}
|
|
}
|
|
return return_face;
|
|
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h
|
|
index 8817f06..f00d6f2 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h
|
|
+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face_from_typeface.h
|
|
@@ -8,9 +8,8 @@
|
|
#include "third_party/blink/renderer/platform/platform_export.h"
|
|
#include "third_party/skia/include/core/SkTypeface.h"
|
|
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
-
|
|
#include <hb.h>
|
|
+#include <hb-cplusplus.hh>
|
|
|
|
namespace blink {
|
|
|
|
@@ -25,7 +24,7 @@
|
|
// from copying all font tables on Mac into newly allocated memory, causing a
|
|
// potentially quite large allocations (in the megabytes range). See the
|
|
// implementation of SkTypeface_Mac::onOpenStream.
|
|
-PLATFORM_EXPORT HbScoped<hb_face_t> HbFaceFromSkTypeface(
|
|
+PLATFORM_EXPORT hb::unique_ptr<hb_face_t> HbFaceFromSkTypeface(
|
|
sk_sp<SkTypeface> typeface);
|
|
} // namespace blink
|
|
|
|
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
|
|
index 763f3a3..c50910df 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
|
|
+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
|
|
@@ -5,12 +5,11 @@
|
|
#include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h"
|
|
#include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h"
|
|
#include "third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
|
|
namespace blink {
|
|
|
|
HbFontCacheEntry::HbFontCacheEntry(hb_font_t* font)
|
|
- : hb_font_(HbScoped<hb_font_t>(font)),
|
|
+ : hb_font_(hb::unique_ptr<hb_font_t>(font)),
|
|
hb_font_data_(std::make_unique<HarfBuzzFontData>()) {}
|
|
|
|
HbFontCacheEntry::~HbFontCacheEntry() = default;
|
|
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
|
|
index 1b0accf..eaedd0b 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
|
|
+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
|
|
@@ -7,9 +7,9 @@
|
|
|
|
#include "third_party/blink/renderer/platform/fonts/font_metrics.h"
|
|
#include "third_party/blink/renderer/platform/fonts/unicode_range_set.h"
|
|
-#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
|
|
|
|
#include <hb.h>
|
|
+#include <hb-cplusplus.hh>
|
|
|
|
#include <memory>
|
|
|
|
@@ -39,7 +39,7 @@ class HbFontCacheEntry : public RefCount
|
|
private:
|
|
explicit HbFontCacheEntry(hb_font_t* font);
|
|
|
|
- HbScoped<hb_font_t> hb_font_;
|
|
+ hb::unique_ptr<hb_font_t> hb_font_;
|
|
std::unique_ptr<HarfBuzzFontData> hb_font_data_;
|
|
};
|
|
|
|
diff --git a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
|
|
index caf5d49..0d4b6f9 100644
|
|
--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
|
|
+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
|
|
@@ -5,6 +5,8 @@
|
|
#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_HARFBUZZ_FONT_DATA_H_
|
|
#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_HARFBUZZ_FONT_DATA_H_
|
|
|
|
+#include <hb-cplusplus.hh>
|
|
+
|
|
#include "base/check_op.h"
|
|
#include "third_party/blink/renderer/platform/fonts/font_platform_data.h"
|
|
#include "third_party/blink/renderer/platform/fonts/opentype/open_type_vertical_data.h"
|
|
diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
|
|
index 522e164d..4b64e1b 100644
|
|
--- a/third_party/harfbuzz-ng/BUILD.gn
|
|
+++ b/third_party/harfbuzz-ng/BUILD.gn
|
|
@@ -41,6 +41,7 @@
|
|
"src/src/hb-blob.h",
|
|
"src/src/hb-buffer.h",
|
|
"src/src/hb-common.h",
|
|
+ "src/src/hb-cplusplus.hh",
|
|
"src/src/hb-deprecated.h",
|
|
"src/src/hb-face.h",
|
|
"src/src/hb-font.h",
|
|
@@ -409,11 +410,6 @@
|
|
}
|
|
}
|
|
|
|
-source_set("hb_scoped_util") {
|
|
- sources = [ "utils/hb_scoped.h" ]
|
|
- deps = [ "//third_party:freetype_harfbuzz" ]
|
|
-}
|
|
-
|
|
# Not all checkouts have a //base directory.
|
|
if (build_with_chromium) {
|
|
fuzzer_test("hb_shape_fuzzer") {
|
|
diff --git a/third_party/harfbuzz-ng/utils/hb_scoped.h b/third_party/harfbuzz-ng/utils/hb_scoped.h
|
|
deleted file mode 100644
|
|
index 887f6b90..0000000
|
|
--- a/third_party/harfbuzz-ng/utils/hb_scoped.h
|
|
+++ /dev/null
|
|
@@ -1,60 +0,0 @@
|
|
-// Copyright 2020 The Chromium Authors. All rights reserved.
|
|
-// Use of this source code is governed by a BSD-style license that can be
|
|
-// found in the LICENSE file.
|
|
-
|
|
-#ifndef THIRD_PARTY_HARFBUZZ_NG_UTILS_HB_SCOPED_H_
|
|
-#define THIRD_PARTY_HARFBUZZ_NG_UTILS_HB_SCOPED_H_
|
|
-
|
|
-// clang-format off
|
|
-#include <hb.h>
|
|
-#include <hb-subset.h>
|
|
-// clang-format on
|
|
-
|
|
-#include <memory>
|
|
-#include <type_traits>
|
|
-
|
|
-template <typename T>
|
|
-struct always_false : std::false_type {};
|
|
-
|
|
-template <class T>
|
|
-struct HbSpecializedDeleter {
|
|
- inline void operator()(T* obj) {
|
|
- static_assert(always_false<T>::value,
|
|
- "HbScoped is only allowed for HarfBuzz types that have a "
|
|
- "deleter specialization.");
|
|
- }
|
|
-};
|
|
-
|
|
-// Defines a scoped pointer type HbScoped based on std::unique_ptr, using the
|
|
-// corresponsing HarfBuzz destructors to commonly used public HarfBuzz types.
|
|
-// The interface of HbScoped is the same as that of std::unique_ptr.
|
|
-//
|
|
-// void MyFunction() {
|
|
-// HbScoped<hb_blob_t> scoped_harfbuzz_blob(
|
|
-// hb_blob_create(mydata, mylength));
|
|
-//
|
|
-// DoSomethingWithBlob(scoped_harfbuzz_blob.get());
|
|
-// }
|
|
-//
|
|
-// When |scoped_harfbuzz_buffer| goes out of scope, hb_blob_destroy() is called
|
|
-// for the hb_blob_t* created from hb_blob_create().
|
|
-template <class T>
|
|
-using HbScoped = std::unique_ptr<T, HbSpecializedDeleter<T>>;
|
|
-
|
|
-#define SPECIALIZED_DELETER_FOR_HARFBUZZ_TYPE(TYPE, DESTRUCTOR) \
|
|
- template <> \
|
|
- struct HbSpecializedDeleter<TYPE> { \
|
|
- inline void operator()(TYPE* obj) { DESTRUCTOR(obj); } \
|
|
- };
|
|
-
|
|
-#define HB_TYPE_DESTRUCTOR_PAIRS_REPEAT(F) \
|
|
- F(hb_blob_t, hb_blob_destroy) \
|
|
- F(hb_buffer_t, hb_buffer_destroy) \
|
|
- F(hb_face_t, hb_face_destroy) \
|
|
- F(hb_font_t, hb_font_destroy) \
|
|
- F(hb_set_t, hb_set_destroy) \
|
|
- F(hb_subset_input_t, hb_subset_input_destroy)
|
|
-
|
|
-HB_TYPE_DESTRUCTOR_PAIRS_REPEAT(SPECIALIZED_DELETER_FOR_HARFBUZZ_TYPE)
|
|
-
|
|
-#endif // THIRD_PARTY_HARFBUZZ_NG_UTILS_HB_SCOPED_H_
|