43 bool has_color =
false;
44 std::vector<TextRun> runs;
51 const auto glyph_count =
run.glyphCount();
53 switch (
run.positioning()) {
55 std::vector<SkRect> glyph_bounds;
56 glyph_bounds.resize(glyph_count);
58 auto font_size = font.getSize();
64 font.getBounds(
glyphs, glyph_count, glyph_bounds.data(),
nullptr);
66 std::vector<TextRun::GlyphPosition> positions;
67 positions.reserve(glyph_count);
68 for (
auto i = 0u; i < glyph_count; i++) {
71 const auto* point = glyph_points + i;
72 Glyph::Type
type = paths.glyph(
glyphs[i])->isColor()
73 ? Glyph::Type::kBitmap
75 has_color |=
type == Glyph::Type::kBitmap;
80 Point{point->
x(), point->y()}});
83 runs.emplace_back(text_run);
91 return std::make_shared<TextFrame>(runs,
ToRect(blob->bounds()), has_color);
Represents a collection of positioned glyphs from a specific font.