++ fix
This commit is contained in:
@@ -18,20 +18,39 @@
|
||||
--}}
|
||||
@php
|
||||
/**
|
||||
* Il nome del proclamatore deve stare su una riga in una cella larga
|
||||
* ~35mm. DejaVu Sans ha larghezza media ~0.52em per carattere, quindi a
|
||||
* 8pt entrano circa 23 caratteri: sotto quella soglia si scala il corpo
|
||||
* invece di mandare a capo, che sfonderebbe l'altezza fissa della riga.
|
||||
* Il nome del proclamatore deve stare su una riga: le righe hanno altezza
|
||||
* fissa e la cella è nowrap, quindi mandare a capo sfonderebbe la griglia.
|
||||
* Invece di andare a capo si scala il corpo.
|
||||
*
|
||||
* Larghezza utile della cella ~34.8mm (due colonne meno il padding).
|
||||
* DejaVu Sans occupa in media 0.52em per carattere, cioè ~0.1835mm per
|
||||
* carattere per punto di corpo: da lì il corpo massimo che entra.
|
||||
*
|
||||
* Sotto i 4.5pt il testo non sarebbe più leggibile, quindi oltre i 42
|
||||
* caratteri si tronca — l'ellissi rende visibile l'accorciamento, mentre
|
||||
* un nome che deborda corromperebbe la griglia in silenzio.
|
||||
*/
|
||||
$nomeFontSize = static function (string $nome): string {
|
||||
$LARGHEZZA_CELLA_MM = 34.8;
|
||||
$MM_PER_CARATTERE_PER_PUNTO = 0.1835;
|
||||
$CORPO_MAX_PT = 8.0;
|
||||
$CORPO_MIN_PT = 4.5;
|
||||
|
||||
$maxCaratteri = (int) floor($LARGHEZZA_CELLA_MM / ($CORPO_MIN_PT * $MM_PER_CARATTERE_PER_PUNTO));
|
||||
|
||||
$nomeTroncato = static fn (string $nome): string => mb_strlen($nome) > $maxCaratteri
|
||||
? mb_substr($nome, 0, $maxCaratteri - 1) . '…'
|
||||
: $nome;
|
||||
|
||||
$nomeFontSize = static function (string $nome) use ($LARGHEZZA_CELLA_MM, $MM_PER_CARATTERE_PER_PUNTO, $CORPO_MAX_PT, $CORPO_MIN_PT): string {
|
||||
$len = mb_strlen($nome);
|
||||
|
||||
return match (true) {
|
||||
$len <= 23 => '8pt',
|
||||
$len <= 27 => '7pt',
|
||||
$len <= 32 => '6.2pt',
|
||||
default => '5.5pt',
|
||||
};
|
||||
if ($len === 0) {
|
||||
return $CORPO_MAX_PT . 'pt';
|
||||
}
|
||||
|
||||
$pt = $LARGHEZZA_CELLA_MM / ($len * $MM_PER_CARATTERE_PER_PUNTO);
|
||||
|
||||
return round(max($CORPO_MIN_PT, min($CORPO_MAX_PT, $pt)), 1) . 'pt';
|
||||
};
|
||||
|
||||
$ultimaPagina = $pagine->count() - 1;
|
||||
@@ -42,11 +61,22 @@
|
||||
<meta charset="utf-8">
|
||||
<title>S-13 — Registrazione delle assegnazioni del territorio</title>
|
||||
<style>
|
||||
@page { margin: 12mm 10mm 10mm 10mm; }
|
||||
/* dompdf riporta i margini di @page sull'elemento body, quindi il
|
||||
reset universale qui sotto li azzererebbe: vanno ridichiarati su
|
||||
body, che per specificità vince su "*". Tenere i due valori
|
||||
allineati — è @page a definire l'area utile, body a farla
|
||||
sopravvivere al reset.
|
||||
I margini laterali sono i più larghi perché sono quelli che si
|
||||
vedono; in verticale si sta stretti, il foglio pieno misura ~266mm
|
||||
e ne restano 273. Alzando questi valori, o gli spazi sotto il
|
||||
titolo e sopra il codice, il piè di pagina scivola su una pagina
|
||||
nuova e ogni foglio ne occupa due: rimisurare dopo ogni modifica. */
|
||||
@page { margin: 14mm 16mm 10mm 16mm; }
|
||||
|
||||
* { margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
margin: 14mm 16mm 10mm 16mm;
|
||||
font-family: "DejaVu Sans", sans-serif;
|
||||
color: #000;
|
||||
}
|
||||
@@ -58,7 +88,7 @@
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
letter-spacing: 0.2pt;
|
||||
margin-bottom: 9mm;
|
||||
margin-bottom: 6mm;
|
||||
}
|
||||
|
||||
.anno {
|
||||
@@ -89,7 +119,10 @@
|
||||
/* Intestazione */
|
||||
thead th { font-weight: normal; padding: 0.5mm 0.5mm; }
|
||||
th.terr { font-size: 7.5pt; line-height: 1.15; }
|
||||
th.restituito { font-size: 6.6pt; line-height: 1.15; }
|
||||
/* 6.2pt e non di più: a 6.6pt "l'ultima volta il*" non entra nei
|
||||
~21mm utili della colonna e l'intestazione passa da due righe a tre,
|
||||
allontanandosi dal modulo originale. */
|
||||
th.restituito { font-size: 6.2pt; line-height: 1.15; white-space: nowrap; }
|
||||
th.assegnato-a { font-size: 8pt; }
|
||||
th.sotto { font-size: 6.4pt; }
|
||||
|
||||
@@ -103,7 +136,7 @@
|
||||
td.nome { line-height: 1.1; padding: 0 0.6mm; white-space: nowrap; }
|
||||
|
||||
.nota { font-size: 7.4pt; margin-top: 1.6mm; }
|
||||
.codice { font-size: 8pt; margin-top: 5mm; }
|
||||
.codice { font-size: 8pt; margin-top: 3mm; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
@@ -142,7 +175,8 @@
|
||||
<td class="numero" rowspan="2">{{ $riga['numero'] }}</td>
|
||||
<td class="rientro-prec" rowspan="2">{{ $riga['rientro_precedente'] }}</td>
|
||||
@foreach($riga['assegnazioni'] as $a)
|
||||
<td class="nome" colspan="2" style="font-size:{{ $nomeFontSize($a['nome']) }}">{{ $a['nome'] }}</td>
|
||||
@php($nome = $nomeTroncato($a['nome']))
|
||||
<td class="nome" colspan="2" style="font-size:{{ $nomeFontSize($nome) }}">{{ $nome }}</td>
|
||||
@endforeach
|
||||
</tr>
|
||||
<tr class="riga-date">
|
||||
|
||||
Reference in New Issue
Block a user