summaryrefslogtreecommitdiff
path: root/chromium-125-debian-bad-font-gc00.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-09-25 09:55:25 +0000
committerCoprDistGit <infra@openeuler.org>2024-09-25 09:55:25 +0000
commit8fe37c454512853c40108c2c0d19c2d39d15af19 (patch)
treeaefee73b38da5be91c6d7b3a2e1ba13848f41938 /chromium-125-debian-bad-font-gc00.patch
parent0dc651d979e28d3c6b3e380b056741946893de1d (diff)
automatic import of chromiumopeneuler20.03
Diffstat (limited to 'chromium-125-debian-bad-font-gc00.patch')
-rw-r--r--chromium-125-debian-bad-font-gc00.patch159
1 files changed, 159 insertions, 0 deletions
diff --git a/chromium-125-debian-bad-font-gc00.patch b/chromium-125-debian-bad-font-gc00.patch
new file mode 100644
index 0000000..ff3a15e
--- /dev/null
+++ b/chromium-125-debian-bad-font-gc00.patch
@@ -0,0 +1,159 @@
+Revert the following commit:
+
+commit 59daae50fc3c47f7a8dbcc828446fdaa9f8c12c4
+Author: Ian Kilpatrick <ikilpatrick@chromium.org>
+Date: Tue Feb 20 18:35:11 2024 +0000
+
+ [gc] Make OpenTypeVerticalData gc'd.
+
+ There should be no user-visible behaviour change.
+
+ Bug: 41490008
+ Change-Id: Id93c85a7beb710944e07cff614cff2409c818436
+ Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5302893
+ Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
+ Reviewed-by: Dominik Röttsches <drott@chromium.org>
+ Cr-Commit-Position: refs/heads/main@{#1262805}
+
+--- a/third_party/blink/renderer/platform/fonts/font_platform_data.cc
++++ b/third_party/blink/renderer/platform/fonts/font_platform_data.cc
+@@ -308,6 +308,11 @@ SkFont FontPlatformData::CreateSkFont(co
+ }
+ #endif // !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_IOS)
+
++scoped_refptr<OpenTypeVerticalData> FontPlatformData::CreateVerticalData()
++ const {
++ return OpenTypeVerticalData::CreateUnscaled(typeface_);
++}
++
+ IdentifiableToken FontPlatformData::ComputeTypefaceDigest() const {
+ DCHECK(typeface_);
+ int table_count = typeface_->countTables();
+--- a/third_party/blink/renderer/platform/fonts/font_platform_data.h
++++ b/third_party/blink/renderer/platform/fonts/font_platform_data.h
+@@ -59,6 +59,7 @@ typedef const struct __CTFont* CTFontRef
+ namespace blink {
+
+ class HarfBuzzFace;
++class OpenTypeVerticalData;
+
+ class PLATFORM_EXPORT FontPlatformData
+ : public GarbageCollected<FontPlatformData> {
+@@ -137,6 +138,8 @@ class PLATFORM_EXPORT FontPlatformData
+
+ SkFont CreateSkFont(const FontDescription* = nullptr) const;
+
++ scoped_refptr<OpenTypeVerticalData> CreateVerticalData() const;
++
+ // Computes a digest from the typeface. The digest only depends on the
+ // underlying font itself, and does not vary by the style (size, weight,
+ // italics, etc). This is aimed at discovering the fingerprinting information
+--- a/third_party/blink/renderer/platform/fonts/opentype/open_type_vertical_data.h
++++ b/third_party/blink/renderer/platform/fonts/opentype/open_type_vertical_data.h
+@@ -27,10 +27,10 @@
+
+ #include "base/memory/scoped_refptr.h"
+ #include "third_party/blink/renderer/platform/fonts/glyph.h"
+-#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
+ #include "third_party/blink/renderer/platform/platform_export.h"
+ #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
+ #include "third_party/blink/renderer/platform/wtf/hash_map.h"
++#include "third_party/blink/renderer/platform/wtf/ref_counted.h"
+ #include "third_party/blink/renderer/platform/wtf/vector.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #include "third_party/skia/include/core/SkTypeface.h"
+@@ -40,11 +40,14 @@ class SkFont;
+ namespace blink {
+
+ class PLATFORM_EXPORT OpenTypeVerticalData
+- : public GarbageCollected<OpenTypeVerticalData> {
+- public:
+- explicit OpenTypeVerticalData(sk_sp<SkTypeface>);
++ : public RefCounted<OpenTypeVerticalData> {
++ USING_FAST_MALLOC(OpenTypeVerticalData);
+
+- void Trace(Visitor*) const {}
++ public:
++ static scoped_refptr<OpenTypeVerticalData> CreateUnscaled(
++ sk_sp<SkTypeface> typeface) {
++ return base::AdoptRef(new OpenTypeVerticalData(typeface));
++ }
+
+ void SetScaleAndFallbackMetrics(float size_per_unit,
+ float ascent,
+@@ -60,6 +63,8 @@ class PLATFORM_EXPORT OpenTypeVerticalDa
+ float* out_xy_array) const;
+
+ private:
++ explicit OpenTypeVerticalData(sk_sp<SkTypeface>);
++
+ void LoadMetrics(sk_sp<SkTypeface>);
+ bool HasVORG() const { return !vert_origin_y_.empty(); }
+
+--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
++++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
+@@ -202,7 +202,8 @@
+ void* user_data) {
+ HarfBuzzFontData* hb_font_data =
+ reinterpret_cast<HarfBuzzFontData*>(font_data);
+- OpenTypeVerticalData* vertical_data = hb_font_data->VerticalData();
++ scoped_refptr<OpenTypeVerticalData> vertical_data =
++ hb_font_data->VerticalData();
+ if (!vertical_data) {
+ return false;
+ }
+@@ -223,7 +223,8 @@ static hb_position_t HarfBuzzGetGlyphVer
+ void* user_data) {
+ HarfBuzzFontData* hb_font_data =
+ reinterpret_cast<HarfBuzzFontData*>(font_data);
+- OpenTypeVerticalData* vertical_data = hb_font_data->VerticalData();
++ scoped_refptr<OpenTypeVerticalData> vertical_data =
++ hb_font_data->VerticalData();
+ if (!vertical_data) {
+ return SkiaScalarToHarfBuzzPosition(hb_font_data->height_fallback_);
+ }
+--- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
++++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
+@@ -32,10 +32,7 @@ struct HarfBuzzFontData final : public G
+ HarfBuzzFontData(const HarfBuzzFontData&) = delete;
+ HarfBuzzFontData& operator=(const HarfBuzzFontData&) = delete;
+
+- void Trace(Visitor* visitor) const {
+- visitor->Trace(vertical_data_);
+- visitor->Trace(range_set_);
+- }
++ void Trace(Visitor* visitor) const { visitor->Trace(range_set_); }
+
+ // The vertical origin and vertical advance functions in HarfBuzzFace require
+ // the ascent and height metrics as fallback in case no specific vertical
+@@ -70,18 +67,18 @@ struct HarfBuzzFontData final : public G
+ }
+ }
+
+- OpenTypeVerticalData* VerticalData() {
++ scoped_refptr<OpenTypeVerticalData> VerticalData() {
+ if (!vertical_data_) {
+ DCHECK_NE(ascent_fallback_, kInvalidFallbackMetricsValue);
+ DCHECK_NE(height_fallback_, kInvalidFallbackMetricsValue);
+ DCHECK_NE(size_per_unit_, kInvalidFallbackMetricsValue);
+
+ vertical_data_ =
+- MakeGarbageCollected<OpenTypeVerticalData>(font_.refTypeface());
++ OpenTypeVerticalData::CreateUnscaled(font_.refTypeface());
+ }
+ vertical_data_->SetScaleAndFallbackMetrics(size_per_unit_, ascent_fallback_,
+ height_fallback_);
+- return vertical_data_.Get();
++ return vertical_data_;
+ }
+
+ const hb::unique_ptr<hb_font_t> unscaled_font_;
+@@ -100,7 +97,7 @@ struct HarfBuzzFontData final : public G
+ SpaceGlyphInOpenTypeTables space_in_gsub_ =
+ SpaceGlyphInOpenTypeTables::kUnknown;
+
+- Member<OpenTypeVerticalData> vertical_data_;
++ scoped_refptr<OpenTypeVerticalData> vertical_data_;
+ Member<const UnicodeRangeSet> range_set_;
+ };
+