From 941399032b7abc610c750f5551491927c8da53b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Tue, 9 Jun 2026 22:15:44 +0200 Subject: [PATCH] Ispravljen prikaz fontova na Chart.js grafikonu u Chromium browserima (Opera, Chrome, Edge) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: u Operi i Chrome-u na Chart.js grafikonu (Izveštaji) stubići se vide, ali slova i brojevi ne. U Firefoxu sve radi ispravno. Uzrok 1 — CSP font-src 'self' (internal/middleware/bezbednost.go): Chromium primenjuje CSP font-src direktivu i na canvas.fillText(), blokirajući sistemske fontove jer nisu sa 'self' origina. Firefox ovu proveru ne radi. Uzrok 2 — nedostaje font family u Chart.js konfiguraciji: Canvas na Linuxu ne ume sam da pronađe font sa ćiriličnim slovima (Helvetica/Arial ih često nemaju za canvas iako ih imaju u DOM-u). Rešenje: - Uklonjena font-src direktiva iz CSP-a - Dodat family: 'DejaVu Sans, Ubuntu, system-ui, sans-serif' na legendu, x-osu i y-osu Chart.js grafikona --- internal/middleware/bezbednost.go | 1 - web/templates/stranice/izvestaji.html | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/middleware/bezbednost.go b/internal/middleware/bezbednost.go index a1bd922..73b3934 100644 --- a/internal/middleware/bezbednost.go +++ b/internal/middleware/bezbednost.go @@ -16,7 +16,6 @@ func BezbednostHeaders() func(http.Handler) http.Handler { "style-src 'self' 'unsafe-inline'; "+ "script-src 'self' 'unsafe-inline'; "+ "img-src 'self' data: blob:; "+ - "font-src 'self'; "+ "connect-src 'self'") next.ServeHTTP(w, r) }) diff --git a/web/templates/stranice/izvestaji.html b/web/templates/stranice/izvestaji.html index b7077a7..105d45f 100644 --- a/web/templates/stranice/izvestaji.html +++ b/web/templates/stranice/izvestaji.html @@ -226,7 +226,7 @@ maintainAspectRatio: false, plugins: { legend: { - labels: { color: tekstBoja, font: { size: 12 }, boxWidth: 12, padding: 16 } + labels: { color: tekstBoja, font: { size: 12, family: 'DejaVu Sans, Ubuntu, system-ui, sans-serif' }, boxWidth: 12, padding: 16 } }, tooltip: { callbacks: { @@ -239,13 +239,13 @@ scales: { x: { stacked: false, - ticks: { color: tekstBoja, font: { size: 11 } }, + ticks: { color: tekstBoja, font: { size: 11, family: 'DejaVu Sans, Ubuntu, system-ui, sans-serif' } }, grid: { color: ivicaBoja } }, y: { ticks: { color: tekstBoja, - font: { size: 11 }, + font: { size: 11, family: 'DejaVu Sans, Ubuntu, system-ui, sans-serif' }, callback: function(v) { return Math.round(v).toLocaleString('sr-RS') + ' din'; } }, grid: { color: ivicaBoja }