Справочник API: TextBlob и Builder
TextBlob — это неизменяемое, оптимизированное представление набора глифов. Это самый быстрый способ рисования текста в Skija, если макет текста (позиции глифов) не меняется.
TextBlob
TextBlob объединяет глифы, позиции и шрифты в единый объект, который можно повторно использовать.
Свойства
getBounds(): Возвращает консервативную ограничивающую рамку блоба.getUniqueId(): Возвращает уникальный идентификатор для кэширования.serializeToData(): Сериализует блоб в объектData.
Создание из позиций
Если вы уже рассчитали позиции глифов (например, с помощью Shaper или вручную), вы можете создать блоб напрямую.
// Только горизонтальные позиции (y постоянен)
TextBlob blob = TextBlob.makeFromPosH(glyphs, xPositions, y, font);
// Полные позиции (x, y) для каждого глифа
TextBlob blob2 = TextBlob.makeFromPos(glyphs, points, font);
// RSXform (Поворот + Масштаб + Сдвиг) для каждого глифа
TextBlob blob3 = TextBlob.makeFromRSXform(glyphs, xforms, font);Отрисовка
canvas.drawTextBlob(blob, x, y, paint);TextBlobBuilder
TextBlobBuilder позволяет построить TextBlob, добавляя несколько "серий" (runs) текста. "Серия" — это последовательность глифов, которые используют один и тот же шрифт и Paint.
Базовое использование
TextBlobBuilder builder = new TextBlobBuilder();
// Добавить серию текста
builder.appendRun(font, "Hello ", 0, 0);
// Добавить другую серию (например, с другим стилем или позицией)
builder.appendRun(boldFont, "World!", 100, 0);
// Построить неизменяемый TextBlob
TextBlob blob = builder.build();Расширенное добавление
appendRun(font, glyphs, x, y, bounds): Добавляет глифы с общим началом координат.appendRunPosH(...): Добавляет глифы с явными позициями X.appendRunPos(...): Добавляет глифы с явными позициями (X, Y).appendRunRSXform(...): Добавляет глифы с полными аффинными преобразованиями (поворот/масштаб).
Совет по производительности
Если вы рисуете один и тот же абзац текста несколько раз (даже если холст перемещается), создайте TextBlob один раз и используйте его повторно. Это позволяет избежать повторного вычисления позиций и форм глифов.