Gli emoji nei PDF sembravano un dettaglio estetico. Oggi non lo sono più.
Nei documenti rivolti ai clienti, gli emoji spesso trasportano informazione:
- Una ricevuta può usare ✅ per pagato, 🎁 per premio, ⭐ per valutazione o 🔥 per offerta limitata.
- Un avviso di consegna può usare 📦, 🚚 e 🙏 come segnali rapidi di stato.
- Un record di assistenza può includere messaggi WhatsApp, LINE, KakaoTalk o WeChat in cui l’emoji è parte della prova.
- Certificati, coupon, biglietti o carte fedeltà possono usare 🏆, 🎓, 🎉 o 💯 come parte dell’identità visiva.
Se questi emoji spariscono, diventano quadratini vuoti o gonfiano il PDF di centinaia di KB, il documento non rappresenta più fedelmente il contenuto originale. A volume elevato, diventa un problema di prodotto, storage, banda, email, archivio e talvolta compliance.
“Supportare emoji” non è una sola casella da spuntare. Un generatore PDF può affidarsi ai font del browser o del sistema operativo, chiedere al cliente di configurare un font emoji, convertire gli emoji in immagini o vettori, oppure incorporare dati di font a colori. Tutti i percorsi possono funzionare, ma i compromessi sono diversi.
Il problema pratico: supporto contro dimensione
Gli emoji a colori sono difficili in PDF perché non sono semplici glifi in bianco e nero. La PDF Association riassume bene il tema: gli OpenType color fonts esistono in diversi formati concorrenti, ma questi formati non sono nativi in PDF come i font outline tradizionali.
Il renderer deve quindi scegliere una rappresentazione:
- usare font a colori del browser o del sistema operativo;
- incorporare o subsettare dati di un font emoji;
- convertire gli emoji in immagini o grafica vettoriale;
- oppure ripiegare su glifi monocromatici, box mancanti o testo semplice.
Con uno o due emoji la differenza può sembrare minima. In ricevute, coupon, export di chat o archivi supporto pieni di emoji, diventa importante.
Un piccolo benchmark: 50 emoji comuni
Il 20 maggio 2026 abbiamo eseguito uno smoke test locale sulla stessa pagina A4:
- una versione solo testo;
- una versione con 50 emoji comuni nel corpo;
- Chrome 148 headless print-to-PDF;
- generazione locale gPdf con lo stesso set di 50 emoji.
Non è un benchmark universale per ogni documento o versione di engine. È un modo semplice per mostrare il comportamento della dimensione quando sono presenti molti emoji a colori distinti.
| Generatore | PDF senza emoji | Stessa pagina con 50 emoji | Aumento | Rapporto |
|---|---|---|---|---|
| Chrome 148 print-to-PDF | 31,250 bytes | 435,630 bytes | +404,380 bytes | 13.94x |
| gPdf local generation | 8,766 bytes | 43,466 bytes | +34,700 bytes | 4.96x |
Chrome ha incorporato subset AppleColorEmoji Type 3. È un modo valido per rendere visibili gli emoji, ma l’impatto sulla dimensione del file è evidente.
gPdf non ha incorporato un font emoji a colori completo. La versione con emoji è più grande di quella solo testo, come è giusto: l’artwork a colori deve essere rappresentato nel file. La differenza è che l’output cresce con gli emoji effettivamente usati nel documento, non con un percorso largo di font browser o OS.
La domanda di acquisto non è “un sorriso compare sul mio laptop?”, ma:
Cosa succede quando il documento contiene decine di emoji diversi e il PDF viene generato nei sistemi reali di produzione?
Come gli altri generatori PDF gestiscono emoji
Il confronto onesto non è “gli altri falliscono”. Diversi strumenti maturi supportano gli emoji a colori. Il punto è come li supportano, e cosa significa per setup, determinismo e dimensione dell’output.
Puppeteer, Chrome e API basate su Chromium
Puppeteer usa il percorso PDF di Chrome. La documentazione descrive page.pdf() come generazione del PDF della pagina con media type print, e la guida indica che di default attende il caricamento dei font. È utile se la fonte di verità è già una pagina web.
Per documenti strutturati ricchi di emoji, il compromesso è la dipendenza dall’ambiente browser/font. Nel nostro esempio locale, Chrome ha reso correttamente gli emoji, ma il file è passato da 31 KB a 436 KB.
Questo non rende Puppeteer sbagliato. È prima di tutto uno strumento di automazione browser. Per catturare una pagina esistente è adatto. Per ricevute, etichette, ticket, estratti o record di supporto compatti e ripetibili, il percorso browser può essere pesante.
DocRaptor e Prince
DocRaptor avvolge Prince, e Prince è un forte engine HTML-to-PDF. È particolarmente adatto quando l’input è davvero HTML/CSS e il documento richiede funzionalità paged media complesse.
L’annuncio Pipeline 9 / Prince 14 di DocRaptor elenca esplicitamente il supporto agli emoji a colori. Le release notes di Prince 14 citano anche SVG-in-OpenType, CBLC/CBDT color emoji fonts, Apple sbix ed emoji tag sequences. Quindi l’affermazione corretta non è “DocRaptor non può renderizzare emoji”.
Il confine utile è più preciso: DocRaptor/Prince è un percorso HTML-to-PDF di alta qualità; gPdf è un percorso structured JSON-to-PDF. Per documenti strutturati ricchi di emoji, quando l’input è già dato applicativo, gPdf evita di passare il problema da un renderer HTML/CSS generale.
PDFreactor
PDFreactor supporta anche emoji a colori. Il manuale dice che gli emoji a colori sono usati di default e che sono supportati formati come CBDT, SBIX e OpenType-SVG.
Lo stesso manuale indica limiti: dimensione PDF più grande usando OpenType-SVG e assenza di selezione o copia in quel percorso. È proprio il tipo di tradeoff da comprendere prima di trattare “supporto emoji” come sì/no.
iText e pdfHTML
iText può generare emoji quando il documento ha un font program capace di disegnare quei caratteri. La guida ufficiale pdfHTML mostra il pattern previsto: aggiungere un font con emoji al FontProvider, poi eseguire la conversione.
È potente per team che vogliono controllo a livello SDK. Significa però che configurazione dei font, test, deploy e manutenzione restano all’applicazione.
Perché la copertura conta
È facile testare il caso sbagliato. Se un renderer mostra 😂, non significa che gestisca gli emoji che gli utenti inviano davvero.
L’uso reale include:
- variation selectors;
- skin-tone modifiers;
- zero-width-joiner sequences;
- bandiere e tag sequences;
- emoji mescolati con CJK, arabo, latino e altri script;
- vecchi PDF viewer e pipeline documentali enterprise.
Nei documenti cliente, la coerenza è parte del prodotto. Un transcript di supporto non dovrebbe mostrare emoji diversi in base al server. Una ricevuta non dovrebbe mostrare un segno di stato su macOS e un box in un container Linux. Un marketplace non dovrebbe chiedere a ogni merchant di installare lo stesso stack di font emoji.
La posizione di gPdf è semplice: gli emoji a colori devono funzionare nei PDF generati senza chiedere ai clienti di installare font, regolare un runtime browser o accettare file grandi come default.
Dove gli emoji contano di più
I PDF pieni di emoji non sono solo marketing consumer. Appaiono anche nei sistemi operativi.
| Tipo documento | Perché conta |
|---|---|
| Ricevute e voucher | Stato, premio, rating e promo sono parte della customer experience. |
| Conferme di consegna e prenotazione | Stati come confirmed, packed, shipped, delivered si leggono più velocemente. |
| Record di supporto | Gli export di chat perdono tono e prova se gli emoji vengono rimossi. |
| Archivi community e social | Gli emoji sono parte della conversazione. |
| Certificati e badge | Trofei, lauree e celebrazioni possono essere parte del design. |
| PDF clienti multilingue | Gli emoji comunicano stato oltre le barriere linguistiche. |
Per questo la dimensione conta. Un aumento di 400 KB una volta sembra poco. A 100,000 ricevute al mese, diventa storage, banda, email deliverability, tempo di download mobile e costo archivio. Negli export di chat l’effetto cresce.
Dove si inserisce gPdf
gPdf non prova a essere un browser completo né a sostituire ogni engine HTML-to-PDF. Se il source document è una pagina web arbitraria, un layout editoriale complesso o una dashboard con grafici JavaScript, usa un browser o un engine HTML-to-PDF maturo.
gPdf è costruito per l’altro caso:
- l’input è già structured data;
- l’output deve essere predictable;
- il sistema genera ad alto volume;
- il PDF deve restare compact;
- lo stesso payload deve dare output consistente tra ambienti;
- emoji, CJK, barcodes, PDF/A e metadata sono product requirements.
In questo workload, il supporto emoji dovrebbe essere noioso. Dovresti poter inserire stato, sentiment e segnali del linguaggio cliente senza trasformare PDF generation in un progetto di installazione font.
Cosa chiedere a un vendor PDF
Quando valuti emoji, chiedi più di uno screenshot:
- Potete generare un PDF con 50 emoji comuni distinti?
- Qual è la dimensione con e senza quegli emoji?
- L’output dipende dai font del sistema operativo?
- Il cliente deve installare o registrare un font emoji?
- Cosa succede con ZWJ sequences, flags e variation selectors?
- L’output resta stabile dopo runtime upgrades?
- Il comportamento emoji è documentato o è un effetto dell’ambiente host?
Le risposte mostrano se il supporto emoji è una vera product capability o un effetto accidentale del runtime.
Sources
- PDF Association: OpenType color fonts in PDF
- Puppeteer: Page.pdf()
- Puppeteer: PDF generation guide
- DocRaptor: Pipeline 9 with color emoji and Prince 14
- Prince 14 release notes
- PDFreactor manual: color fonts and emojis
- iText pdfHTML: using emojis
- Twemoji: license and attribution
Nota: gPdf uses Twemoji graphics. Twemoji graphics are copyright 2019 Twitter, Inc and other contributors and are licensed under CC BY 4.0.