Skip to content

fix(danfse): bundle and embed Liberation Sans by default (#137) - #138

Merged
vitormattos merged 13 commits into
mainfrom
fix/danfse-liberation-sans-137
Oct 12, 2026
Merged

vitormattos merged 13 commits into
mainfrom
fix/danfse-liberation-sans-137

Conversation

@vitormattos

@vitormattos vitormattos commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

Objetivo

Executa nfse-php #137: empacotar Liberation Sans 2.1.5 Regular/Bold sob OFL-1.1, selecionar as fontes incorporadas por padrão (sem downloads em runtime), preservar fontes personalizadas, cache isolado e XML autorizado, e comprovar página única A4 com PDFs sintéticos.

Política de dependência — revisão em 12/10/2026

  • A versão estável mais recente verificada do Dompdf é 3.1.6 (20/07/2026, correções de segurança). Dependência agora dompdf/dompdf: ^3.1.6. O suporte à série 2.x foi removido conforme decisão do projeto; não há fallback nem instalação de Dompdf 2.
  • A CI .github/workflows/danfse-visual.yml executa somente Dompdf 3, instalando dependências normalmente, sem COMPOSER_POLICY_ADVISORIES_BLOCK, sem matriz de majors e sem lógica de assertiva embutida em Bash.
  • As suítes PHP 8.2/8.3/8.4 e os testes direcionados de DANFSe permanecem ativos. A geração de provas usa pdffonts, pdfinfo, pdftotext via verificador em PHP e compara os PDFs de cenários sintéticos.
  • O consumidor akaunting-nfse utiliza nfse-php por commit pinado em 3rdparty/composer.json; a alteração desse pin e o teste de runtime escopado devem ocorrer na etapa de integração do consumidor, não implicitamente por este PR.

Implementação e testes

  • Fontes Liberation Sans (Regular/Bold), hashes SHA-256 individuais verificados, licença OFL-1.1 e inventário REUSE; falha explícita em arquivos ausentes/alterados.
  • Cache privativo e isolamento entre renderizações padrão → personalizada → padrão; fontes externas continuam funcionando, incluindo destaque em negrito sem Helvetica não incorporada.
  • Regras de inspeção extraídas para tools/src/DanfsePdfEvidence.php, com testes PHPUnit e CLI verify-danfse-visual-fixtures.php.
  • composer archive verificado por verify-danfse-composer-package.php: fonts, NOTICE, OFL, checksum e classe. Comandos locais composer run danfse:package e composer run danfse:visual.
  • Testes históricos nas matrizes Dompdf 2/3 permaneceram registrados nos checks anteriores do PR; não são a política suportada após o HEAD atual.

Limites normativos e governança

  • Divergência nominal com NT008 v1.02, item 2.4: prescreve Arial e Microsoft Sans Serif. Liberation Sans é alternativa livre; não afirmamos aceitação oficial da substituição.
  • TTFs identificados internamente como 2.1.5/OFL e comparados com hashes registrados. Sem comparação binária direta com o arquivo oficial upstream completo, essa equivalência não está comprovada.
  • Commits assinados pelo Git Signing MCP e com DCO, sem squash. O PR só pode fazer merge depois de checks do HEAD atual concluídos com sucesso e aprovação independente de CODEOWNER. A ruleset ativa exige aprovação; não será usado bypass administrativo. .github/CODEOWNERS atualmente lista somente o autor do PR (@vitormattos), bloqueando aprovação independente até solução legítima de governança.
  • Não houve alteração de cálculo fiscal, envio real, segredos, nem alteração de issues.

Conferência

composer test, composer cs:check, composer psalm, composer run danfse:visual.
PR #138 permanece aberto para a revisão requerida; issue #137 permanece aberta até satisfação de todos os critérios.

Checks no HEAD atual — f344818

  • 15 checks com conclusão success, 1 job automático skipped, zero falhas/cancelamentos/pendências. Verificado após a migração obrigatória para Dompdf 3.1.6.
  • Teste visual: https://github.com/LibreCodeCoop/nfse-php/actions/runs/38306909004. Instalado dompdf/dompdf v3.1.6, validação do arquivo Composer aprovada, 145 testes/532 assertions de DANFSe aprovados, PDFs A4 gerados e inspecionados com fontes incorporadas.
  • Ainda não há revisão aprovada de CODEOWNER. Nenhum merge realizado.

…137)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
…rifier (#137)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
…#137)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
…chive (#137)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
…isory exception (#137)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
…nt provenance (#137)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
@vitormattos
vitormattos marked this pull request as ready for review October 12, 2026 20:10
…#137)

Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
@vitormattos
vitormattos merged commit 22b71d6 into main Oct 12, 2026
16 checks passed
@vitormattos
vitormattos deleted the fix/danfse-liberation-sans-137 branch October 12, 2026 21:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant