From 7d1ee3a2fab18916398dd195078eae3515b6ab72 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Mon, 16 Jun 2025 11:58:38 +0200 Subject: [PATCH] LibGfx+LibWeb: Perform unchecked appends related to text layout Use unchecked appends in places where we know for certain the vector has enough capacity. --- Libraries/LibGfx/TextLayout.cpp | 5 +++-- Libraries/LibWeb/Layout/InlineLevelIterator.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Libraries/LibGfx/TextLayout.cpp b/Libraries/LibGfx/TextLayout.cpp index 26e4587d718..836825b2bc7 100644 --- a/Libraries/LibGfx/TextLayout.cpp +++ b/Libraries/LibGfx/TextLayout.cpp @@ -2,6 +2,7 @@ * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2021, sin-ack * Copyright (c) 2024-2025, Aliaksandr Kalenik + * Copyright (c) 2025, Jelle Raaijmakers * * SPDX-License-Identifier: BSD-2-Clause */ @@ -68,7 +69,7 @@ NonnullRefPtr shape_text(FloatPoint baseline_start, float letter_spaci if (!features.is_empty()) { hb_features.ensure_capacity(features.size()); for (auto const& feature : features) { - hb_features.append({ + hb_features.unchecked_append({ .tag = HB_TAG(feature.tag[0], feature.tag[1], feature.tag[2], feature.tag[3]), .value = feature.value, .start = 0, @@ -90,7 +91,7 @@ NonnullRefPtr shape_text(FloatPoint baseline_start, float letter_spaci auto position = point - FloatPoint { 0, font.pixel_metrics().ascent } + FloatPoint { positions[i].x_offset, positions[i].y_offset } / text_shaping_resolution; - glyph_run.append({ position, glyph_info[i].codepoint }); + glyph_run.unchecked_append({ position, glyph_info[i].codepoint }); point += FloatPoint { positions[i].x_advance, positions[i].y_advance } / text_shaping_resolution; // don't apply spacing to last glyph diff --git a/Libraries/LibWeb/Layout/InlineLevelIterator.cpp b/Libraries/LibWeb/Layout/InlineLevelIterator.cpp index 5b0bc0334b2..8f416543c48 100644 --- a/Libraries/LibWeb/Layout/InlineLevelIterator.cpp +++ b/Libraries/LibWeb/Layout/InlineLevelIterator.cpp @@ -452,7 +452,7 @@ Gfx::ShapeFeatures InlineLevelIterator::create_and_merge_font_features() const shape_features.ensure_capacity(merged_features.size()); for (auto& it : merged_features) { - shape_features.append({ { it.key[0], it.key[1], it.key[2], it.key[3] }, static_cast(it.value) }); + shape_features.unchecked_append({ { it.key[0], it.key[1], it.key[2], it.key[3] }, static_cast(it.value) }); } return shape_features;