Initial commit

This commit is contained in:
2026-08-20 11:41:17 +00:00
commit 6949695eac
2334 changed files with 646393 additions and 0 deletions
@@ -0,0 +1,30 @@
%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 600 800] /CropBox [0 0 500 700] /BleedBox [0 0 480 680] /TrimBox [0 0 460 660] /ArtBox [0 0 440 640] /Resources << /Font << /F1 5 0 R >> >> /Contents 4 0 R >>
endobj
4 0 obj
<< /Length 43 >>\nstream\nBT /F1 12 Tf 50 650 Td (Box Fixture) Tj ET
endstream
endobj
5 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000333 00000 n
0000000427 00000 n
trailer
<< /Size 6 /Root 1 0 R >>
startxref
497
%%EOF
@@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIID6zCCAtOgAwIBAgIUDf0c0hsRARroCiCYB7AQhOJRUw8wDQYJKoZIhvcNAQEL
BQAwJjESMBAGA1UEAwwJVGVzdCBDZXJ0MRAwDgYDVQQKDAdUZXN0T3JnMB4XDTI2
MDQyMTE5MDgxOFoXDTM2MDQxODE5MDgxOFowJjESMBAGA1UEAwwJVGVzdCBDZXJ0
MRAwDgYDVQQKDAdUZXN0T3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEArLHlPPtm49Pr+32TI7FMWfUQOWu8XAT11eKlQyjg9YFtj4VS71rlgZ67XqJp
ck1AxhMdNVyK1Njr1qVjDjs0cW50zOyRJ1MIrdwzLGDf3J9xOj8rr7eaL/iwkcMm
6UfIS6Smv8Ti+U0qaoUcQMDmdrMmnD/CDulMtsPLVp3674aSzhtG/dTovsU9b7fx
+Qmq+EIzINxS2XSB904R5kvr3b/BWo0e1IVb+9cbrmhjYG8er0bxHH2iNMvZ85Gi
1ompJLm2yDJ95cnunmyylfdcHivmySBBLONQVsl7rK0VRhZkaMtr+ML3BYlunKSw
DW4Js+YOQ4nruBhgI6+qF6dVSQIDAQABo4IBDzCCAQswDwYDVR0TAQH/BAUwAwEB
/zBeBggrBgEFBQcBAQRSMFAwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmV4YW1w
bGUuY29tLzAoBggrBgEFBQcwAoYcaHR0cDovL2NhLmV4YW1wbGUuY29tL2NhLmNy
dDBYBgNVHR8EUTBPMCWgI6Ahhh9odHRwOi8vY3JsLmV4YW1wbGUuY29tL3Jvb3Qu
Y3JsMCagJKAihiBodHRwOi8vY3JsMi5leGFtcGxlLmNvbS9yb290LmNybDAdBgNV
HQ4EFgQU4y57gmpbH82WnfezAYVEv2DQwmIwHwYDVR0jBBgwFoAU4y57gmpbH82W
nfezAYVEv2DQwmIwDQYJKoZIhvcNAQELBQADggEBAErTUFtJI8ZDwLyBn8vIXWYa
bwBsLFVvk84xouubkQgtGFh75ykTmNmSSF8YrB1a/rV/KHWJTdyALCtS7W0tIpVG
nUYQ6rkc5zifIRoRQUWuUWduQPhd3hEjE1oE7t+jG0Nji1ccJ2MU8qm5Lby6QhVi
S/1V5AulbWuOpRTj9yUcLdDUXpPtZitvoidj7QfeSJeP+6F2a8RDKAjrHzCf/Ikv
91KaJgdl73Fll8r87SECFQEF69cNwuLfuZccDLik/9h8v3qVZw0wiGPqO+WKaGSR
eqO1tRgws+qvi8BjUNJGHmI+jzZ4qnaeZii2nTiU1xv+Z78hr7VB0vDjnDvk1Rk=
-----END CERTIFICATE-----
@@ -0,0 +1,34 @@
[
{
"name": "non-important does not override important",
"styles": [
"color:red!important",
"color:blue"
],
"expected": "color:red!important;"
},
{
"name": "later important overrides non-important",
"styles": [
"color:red",
"color:blue!important"
],
"expected": "color:blue!important;"
},
{
"name": "later same-priority declaration wins",
"styles": [
"margin:1px",
"margin:2px"
],
"expected": "margin:2px;"
},
{
"name": "important applies per property",
"styles": [
"color:red!important;margin:1px",
"color:blue;margin:2px"
],
"expected": "color:red!important;margin:2px;"
}
]
@@ -0,0 +1,3 @@
@charset "UTF-8";
h1 { color: red; }
h2 { font-size: 14pt; }
@@ -0,0 +1 @@
h3 { color: green; }
@@ -0,0 +1,3 @@
/* base styles */
h1 { color: red; }
h2 { font-size: 14pt; }
@@ -0,0 +1,2 @@
/* overrides */
h1 { color: blue; }
@@ -0,0 +1,2 @@
@import "base.css";
h3 { margin: 0; }
@@ -0,0 +1,12 @@
a[href^="mailto:"]::after {
content: "mailto:user@example.com;subject=test";
}
div[data-url*="example.com?a=1&b=2"] {
background-image: url("https://example.com/a;b.png?x=1&y=2");
font-family: "Open Sans", "Noto Sans", sans-serif;
}
p.note {
background: linear-gradient(90deg, rgba(0,0,0,.1), rgba(255,255,255,.8));
}
@@ -0,0 +1,3 @@
.icon\:warning[data-kind="print-a"]:first-child { color: red; }
#hero\#title > a.link\+cta[href*="campaign=42"] { margin: 0; }
nav ul li:nth-child(2) > a[title="A > B"] { text-decoration: underline; }
@@ -0,0 +1,74 @@
[
{
"name": "dash-match prefix match",
"selector": " a[id|=promo]",
"node": 2,
"expected": true
},
{
"name": "dash-match exact match",
"selector": " a[id|=promo-link]",
"node": 2,
"expected": true
},
{
"name": "substring match in href",
"selector": " a[href*=\"b=2\"]",
"node": 2,
"expected": true
},
{
"name": "suffix match in href",
"selector": " a[href$=\"b=2\"]",
"node": 2,
"expected": true
},
{
"name": "prefix match in href",
"selector": " a[href^=\"https://ex.com\"]",
"node": 2,
"expected": true
},
{
"name": "includes operator with dashed attribute name",
"selector": " a[data-role~=cta]",
"node": 2,
"expected": true
},
{
"name": "quoted attribute value with space",
"selector": " a[title=\"Hello World\"]",
"node": 2,
"expected": false
},
{
"name": "lang pseudo-class with explicit tag",
"selector": " a:lang(en-US)",
"node": 2,
"expected": true
},
{
"name": "first-child pseudo true",
"selector": " a:first-child",
"node": 2,
"expected": true
},
{
"name": "last-child pseudo false",
"selector": " a:last-child",
"node": 2,
"expected": false
},
{
"name": "empty pseudo true on sibling span",
"selector": " span:empty",
"node": 3,
"expected": true
},
{
"name": "only-child pseudo false on sibling span",
"selector": " span:only-child",
"node": 3,
"expected": false
}
]
@@ -0,0 +1,34 @@
%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 200 200] /Contents 4 0 R >>
endobj
4 0 obj
<< /Length 46 >>\nstream\nBT /F1 12 Tf 20 100 Td (Encrypted Stub) Tj ET
endstream
endobj
5 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>
endobj
6 0 obj
<< /Filter /Standard /V 2 /R 3 /Length 128 >>
endobj
xref
0 7
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000202 00000 n
0000000299 00000 n
0000000369 00000 n
trailer
<< /Size 7 /Root 1 0 R /Encrypt 6 0 R >>
startxref
430
%%EOF
@@ -0,0 +1,19 @@
<style>
body{font-family:helvetica;font-size:9.5pt;color:#1f2b34;}
.kpi{float:left;width:48%;margin-right:2%;padding:6pt;border:0.5pt solid #9db0c1;background:#f4f8fb;}
.kpi h3{margin:0 0 4pt 0;font-size:11pt;}
.clear{clear:both;height:0;line-height:0;}
.table{width:100%;border-collapse:collapse;margin-top:8pt;}
.table th,.table td{border:0.5pt solid #95a8ba;padding:3pt;}
.table th{background:#e4edf5;}
</style>
<div class="kpi"><h3>Uptime</h3><p style="margin:0;">99.92% this month</p></div>
<div class="kpi"><h3>Alerts</h3><p style="margin:0;">17 open, 4 critical</p></div>
<div class="clear"></div>
<table class="table">
<tr><th>Service</th><th>Latency P95</th><th>Error Rate</th><th>Status</th></tr>
<tr><td>Gateway</td><td>238ms</td><td>0.4%</td><td>Degraded</td></tr>
<tr><td>Billing</td><td>122ms</td><td>0.1%</td><td>Healthy</td></tr>
<tr><td>Notifications</td><td>305ms</td><td>0.8%</td><td>Warning</td></tr>
<tr><td>Search</td><td>188ms</td><td>0.2%</td><td>Healthy</td></tr>
</table>
@@ -0,0 +1,47 @@
{
"version": 1,
"failure_tags": [
"overflow",
"overlap",
"dropped-style",
"selector-miss"
],
"severity_levels": [
"critical",
"high",
"medium",
"low"
],
"pages": [
{
"id": "long_form_article",
"archetype": "long-form article",
"fixture": "long_form_article.html",
"failures": []
},
{
"id": "invoice_statement",
"archetype": "invoice and statement",
"fixture": "invoice_statement.html",
"failures": []
},
{
"id": "product_docs_page",
"archetype": "product/documentation page",
"fixture": "product_docs_page.html",
"failures": []
},
{
"id": "admin_report_dashboard",
"archetype": "admin/report dashboard with tables",
"fixture": "admin_report_dashboard.html",
"failures": []
},
{
"id": "form_heavy_page",
"archetype": "form-heavy page",
"fixture": "form_heavy_page.html",
"failures": []
}
]
}
@@ -0,0 +1,22 @@
<style>
body{font-family:helvetica;font-size:10pt;color:#20252b;}
fieldset{border:0.5pt solid #9ea7b3;margin:0 0 8pt 0;padding:6pt;}
legend{font-weight:bold;}
.row{margin-bottom:4pt;}
.label{display:inline-block;width:120pt;font-weight:bold;}
.input{display:inline-block;border:0.5pt solid #b9c1cb;padding:2pt 4pt;width:240pt;}
.help{color:#53606f;font-size:8.5pt;}
</style>
<h1 style="font-size:15pt;margin:0 0 8pt 0;">Service Enrollment</h1>
<fieldset>
<legend>Applicant</legend>
<div class="row"><span class="label">Full name</span><span class="input">Jane Example</span></div>
<div class="row"><span class="label">Email</span><span class="input">jane@example.test</span></div>
<div class="row"><span class="label">Company</span><span class="input">Northwind Ltd.</span></div>
</fieldset>
<fieldset>
<legend>Preferences</legend>
<div class="row"><span class="label">Plan</span><span class="input">Professional</span></div>
<div class="row"><span class="label">Billing cycle</span><span class="input">Quarterly</span></div>
<p class="help">Interactive focus, hover, and dynamic validation states are intentionally flattened for print output.</p>
</fieldset>
@@ -0,0 +1,19 @@
<style>
body{font-family:helvetica;font-size:10pt;color:#222;}
.header{border-bottom:1pt solid #444;margin-bottom:8pt;padding-bottom:4pt;}
.meta{float:right;text-align:right;}
.table{width:100%;border-collapse:collapse;}
.table th,.table td{border:0.5pt solid #999;padding:4pt;}
.total{font-weight:bold;background:#f0f0f0;}
</style>
<div class="header">
<div class="meta">Invoice #INV-2048<br/>Date: 2026-05-08</div>
<h1 style="margin:0;font-size:16pt;">Blue Finch Supply</h1>
<p style="margin:2pt 0 0 0;">Monthly service statement</p>
</div>
<table class="table">
<tr><th>Description</th><th>Qty</th><th>Unit</th><th>Amount</th></tr>
<tr><td>Monitoring subscription</td><td>1</td><td>49.00</td><td>49.00</td></tr>
<tr><td>Priority support</td><td>2</td><td>15.00</td><td>30.00</td></tr>
<tr class="total"><td colspan="3">Total</td><td>79.00</td></tr>
</table>
@@ -0,0 +1,20 @@
<style>
body{font-family:helvetica;font-size:11pt;line-height:1.4;color:#1a1a1a;}
main{max-width:520pt;}
h1{font-size:20pt;margin:0 0 8pt 0;}
.lead{margin:0 0 10pt 0;}
.note{background:#f4f7fb;border-left:3pt solid #2f5a8a;padding:6pt;margin:8pt 0;}
code{background:#efefef;padding:1pt 2pt;}
</style>
<main>
<h1>Designing Print-Friendly CSS</h1>
<p class="lead">This article fixture stresses heading, paragraph flow, and inline code wrapping under realistic text density.</p>
<p>When building print output, prefer stable box flow and avoid relying on dynamic viewport assumptions. Combine semantic markup with conservative declarations and clear section spacing.</p>
<p class="note">Known caveat: <code>very_very_very_very_very_very_very_long_tokens_without_breaks</code> can exceed narrow columns.</p>
<h2>Checklist</h2>
<ul>
<li>Use explicit font sizes for predictable line metrics.</li>
<li>Keep paragraph width bounded for readability.</li>
<li>Use simple list and heading structures.</li>
</ul>
</main>
@@ -0,0 +1,20 @@
<style>
body{font-family:helvetica;font-size:10pt;color:#1d2833;}
.hero{background:#eaf2fb;padding:10pt;border:0.5pt solid #b7c8dc;margin-bottom:8pt;}
.grid{display:block;}
.card{border:0.5pt solid #bfcbd8;padding:6pt;margin-bottom:6pt;}
.kv td{padding:2pt 4pt;border-bottom:0.5pt solid #d2d8e0;}
</style>
<section class="hero">
<h1 style="margin:0 0 4pt 0;font-size:16pt;">API Documentation Bundle</h1>
<p style="margin:0;">Product-style landing section with mixed prose, cards, and a small specification table.</p>
</section>
<div class="grid">
<div class="card"><strong>Quick Start:</strong> Install package, configure base options, and run your first export.</div>
<div class="card"><strong>Compatibility:</strong> Targets CSS 2.1 print-safe subset with documented partials.</div>
</div>
<table class="kv" style="width:100%;border-collapse:collapse;">
<tr><td>Package</td><td>tc-lib-pdf</td></tr>
<tr><td>Runtime</td><td>PHP 8.2+</td></tr>
<tr><td>Output</td><td>PDF 1.7</td></tr>
</table>
@@ -0,0 +1,3 @@
<div style="float:left;width:25mm;border:1px solid #000">FLOAT-L</div>
<div style="float:right;width:25mm;border:1px solid #000">FLOAT-R</div>
<div style="clear:both">CLEAR-BLOCK</div>
@@ -0,0 +1,3 @@
<div style="position:relative;left:2mm;top:1mm">REL-BOX</div>
<div style="position:absolute;left:5mm;top:8mm">ABS-BOX</div>
<div style="position:fixed;left:10mm;top:15mm">FIXED-BOX</div>
@@ -0,0 +1,12 @@
<table style="table-layout:fixed;width:80mm;border:1px solid #000" cellspacing="0" cellpadding="1">
<tr>
<td style="width:20mm;border:1px solid #000">FIXED-A</td>
<td style="width:60mm;border:1px solid #000">FIXED-B-LONG-CONTENT</td>
</tr>
</table>
<table style="table-layout:auto;width:80mm;border:1px solid #000" cellspacing="0" cellpadding="1">
<tr>
<td style="border:1px solid #000">AUTO-A</td>
<td style="border:1px solid #000">AUTO-B-LONG-CONTENT</td>
</tr>
</table>
@@ -0,0 +1,2 @@
% minimal hyphenation patterns fixture
\patterns{hy4phen test1ing a1bc}
@@ -0,0 +1,43 @@
%PDF-1.4
1 0 obj
<</Type /Catalog /Pages 2 0 R>>
endobj
2 0 obj
<</Type /Pages /Kids [3 0 R 6 0 R] /Count 2>>
endobj
3 0 obj
<</Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Contents 4 0 R /Resources<</Font<</F1 5 0 R>>>>>>
endobj
4 0 obj
<</Length 47>>
stream
BT /Helvetica 12 Tf 100 700 Td (Page One) Tj ET
endstream
endobj
5 0 obj
<</Type /Font /Subtype /Type1 /BaseFont /Helvetica>>
endobj
6 0 obj
<</Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] /Contents 7 0 R /Resources<</Font<</F1 5 0 R>>>>>>
endobj
7 0 obj
<</Length 47>>
stream
BT /Helvetica 12 Tf 100 700 Td (Page Two) Tj ET
endstream
endobj
xref
0 8
0000000000 65535 f
0000000009 00000 n
0000000056 00000 n
0000000117 00000 n
0000000235 00000 n
0000000330 00000 n
0000000398 00000 n
0000000516 00000 n
trailer
<</Size 8 /Root 1 0 R>>
startxref
611
%%EOF
@@ -0,0 +1,30 @@
%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 300 500] /Rotate 90 /Resources << /Font << /F1 5 0 R >> >> /Contents 4 0 R >>
endobj
4 0 obj
<< /Length 47 >>\nstream\nBT /F1 12 Tf 40 420 Td (Rotated Fixture) Tj ET
endstream
endobj
5 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000252 00000 n
0000000350 00000 n
trailer
<< /Size 6 /Root 1 0 R >>
startxref
420
%%EOF
@@ -0,0 +1,22 @@
%PDF-1.4
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
2 0 obj<</Type/Pages/Kids[3 0 R]/Count 1>>endobj
3 0 obj<</Type/Page/Parent 2 0 R/MediaBox[0 0 612 792]/Contents 4 0 R/Resources<</Font<</F1 5 0 R>>>>>>endobj
4 0 obj<</Length 56>>
stream
BT /Helvetica 12 Tf 100 700 Td (Hello Import Test) Tj ET
endstream
endobj
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica>>endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000052 00000 n
0000000101 00000 n
0000000211 00000 n
0000000314 00000 n
trailer<</Size 6/Root 1 0 R>>
startxref
375
%%EOF
@@ -0,0 +1,35 @@
%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 600 800] /Resources << /Font << /F1 5 0 R >> /ExtGState << /GS1 6 0 R >> >> /Contents 4 0 R >>
endobj
4 0 obj
<< /Length 93 >>\nstream\nq /GS1 gs 1 0 0 rg 50 600 200 120 re f Q
BT /F1 12 Tf 60 560 Td (Transparency Fixture) Tj ET
endstream
endobj
5 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>
endobj
6 0 obj
<< /Type /ExtGState /ca 0.5 /CA 0.5 /BM /Multiply >>
endobj
xref
0 7
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000269 00000 n
0000000413 00000 n
0000000483 00000 n
trailer
<< /Size 7 /Root 1 0 R >>
startxref
551
%%EOF