initial commit

This commit is contained in:
2026-09-21 13:41:40 +09:00
commit 855c7328df
411 changed files with 85352 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
#pragma once
#include <QByteArray>
#include <QList>
// The only text/font is beyond the worker's initial 256-page metadata batch.
// This permits a real late font RPC, after a complete initial viewport exists.
inline QByteArray deferredFontPdf() {
QList<QByteArray> objects{"<< /Type /Catalog /Pages 2 0 R >>", QByteArray{},
"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>"};
QByteArray kids;
for (int page = 0; page < 257; ++page) {
const int pageId = objects.size() + 1, streamId = pageId + 1;
kids += QByteArray::number(pageId) + " 0 R ";
objects << "<< /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Resources << /Font << /F1 3 0 R >> >> /Contents "
+ QByteArray::number(streamId) + " 0 R >>";
const QByteArray content = page == 256 ? "BT /F1 24 Tf 40 700 Td (Late font) Tj ET\n" : "0.1 0.3 0.7 rg 40 40 500 740 re f\n";
objects << "<< /Length " + QByteArray::number(content.size()) + " >>\nstream\n" + content + "endstream";
}
objects[1] = "<< /Type /Pages /Count 257 /Kids [" + kids + "] >>";
QByteArray result = "%PDF-1.7\n"; QList<qsizetype> offsets{0};
for (qsizetype i = 0; i < objects.size(); ++i) {
offsets.append(result.size()); result += QByteArray::number(i + 1) + " 0 obj\n" + objects[i] + "\nendobj\n";
}
const auto xref = result.size();
result += "xref\n0 " + QByteArray::number(offsets.size()) + "\n0000000000 65535 f \n";
for (qsizetype i = 1; i < offsets.size(); ++i) result += QByteArray::number(offsets[i]).rightJustified(10, '0') + " 00000 n \n";
result += "trailer\n<< /Size " + QByteArray::number(offsets.size()) + " /Root 1 0 R >>\nstartxref\n" + QByteArray::number(xref) + "\n%%EOF\n";
return result;
}