in platform/cc/shaper/Shaper.cc [282:301]
SkShaper::RunHandler::Buffer runBuffer(const SkShaper::RunHandler::RunInfo& info) {
fGlyphs = std::vector<jshort>(info.glyphCount);
fPositions = std::vector<SkPoint>(info.glyphCount);
fClusters = std::vector<jint>(info.glyphCount);
skija::AutoLocal<jobject> runInfoObj(fEnv, skija::shaper::RunInfo::toJava(fEnv, info, fIndicesConverter));
skija::AutoLocal<jobject> point(fEnv, fEnv->CallObjectMethod(fRunHandler, skija::shaper::RunHandler::runOffset, runInfoObj.get()));
java::lang::Throwable::exceptionThrown(fEnv);
fEnv->SetLongField(runInfoObj.get(), skija::shaper::RunInfo::_fontPtr, 0);
jfloat x = fEnv->GetFloatField(point.get(), skija::Point::x);
jfloat y = fEnv->GetFloatField(point.get(), skija::Point::y);
return SkShaper::RunHandler::Buffer{
reinterpret_cast<SkGlyphID*>(fGlyphs.data()),
fPositions.data(),
nullptr,
reinterpret_cast<uint32_t*>(fClusters.data()),
{x, y}};
}