Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Pass the missing strut half leading flag over to skia paragraph builder #50385

1 change: 1 addition & 0 deletions third_party/txt/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ if (enable_unittests) {

sources = [
"tests/font_collection_tests.cc",
"tests/paragraph_builder_skia_tests.cc",
"tests/paragraph_unittests.cc",
"tests/txt_run_all_unittests.cc",
]
Expand Down
1 change: 1 addition & 0 deletions third_party/txt/src/skia/paragraph_builder_skia.cc
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ skt::ParagraphStyle ParagraphBuilderSkia::TxtToSkia(const ParagraphStyle& txt) {
strut_style.setFontSize(SkDoubleToScalar(txt.strut_font_size));
strut_style.setHeight(SkDoubleToScalar(txt.strut_height));
strut_style.setHeightOverride(txt.strut_has_height_override);
strut_style.setHalfLeading(txt.strut_half_leading);

std::vector<SkString> strut_fonts;
std::transform(txt.strut_font_families.begin(), txt.strut_font_families.end(),
Expand Down
2 changes: 2 additions & 0 deletions third_party/txt/src/skia/paragraph_builder_skia.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ class ParagraphBuilderSkia : public ParagraphBuilder {
virtual std::unique_ptr<Paragraph> Build() override;

private:
friend class SkiaParagraphBuilderTests_ParagraphStrutStyle_Test;

skia::textlayout::ParagraphPainter::PaintID CreatePaintID(
const flutter::DlPaint& dl_paint);
skia::textlayout::ParagraphStyle TxtToSkia(const ParagraphStyle& txt);
Expand Down
45 changes: 45 additions & 0 deletions third_party/txt/tests/paragraph_builder_skia_tests.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/*
* Copyright 2017 Google, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "gtest/gtest.h"

#include <sstream>

#include "skia/paragraph_builder_skia.h"
#include "txt/paragraph_style.h"

namespace txt {

class SkiaParagraphBuilderTests : public ::testing::Test {
public:
SkiaParagraphBuilderTests() {}

void SetUp() override {}
};

TEST_F(SkiaParagraphBuilderTests, ParagraphStrutStyle) {
ParagraphStyle style = ParagraphStyle();
auto collection = std::make_shared<FontCollection>();
auto builder = ParagraphBuilderSkia(style, collection, false);

auto strut_style = builder.TxtToSkia(style).getStrutStyle();
ASSERT_FALSE(strut_style.getHalfLeading());

style.strut_half_leading = true;
strut_style = builder.TxtToSkia(style).getStrutStyle();
ASSERT_TRUE(strut_style.getHalfLeading());
}
} // namespace txt