2013-12-09 8 views
5

Prawn ha un numero limitato di caratteri sotto Prawn::BASEDIR}/data/fonts/Utilizzando font TTF esterni per generare PDF con testo giapponese con gamberi

ho provato gkai00mp.ttf, ma generato PDF mostra solo la prima lettera "千" di 千葉, per esempio.

Mi sembra che questo font sia adatto per i caratteri cinesi.

font("#{Prawn::BASEDIR}/data/fonts/gkai00mp.ttf") do 
    text "千葉" 
end 

È possibile caricare e utilizzare caratteri esterni? Se sì, da dove si possono ottenere i caratteri?

Ambiente personale: Ultimo rubino e rotaie. versione Prawn 0.12.0

risposta

5

Qui voglio condividere con la soluzione.

ho anche postato il problema qui https://github.com/prawnpdf/prawn/issues/595 e il consiglio era:

I font TTF forniti con gamberi sono per la verifica e l'uso con manuale ... non sono stati pensati per regolare uso. Fai una ricerca sul web per "Font giapponese TTF gratuito" e sono sicuro che probabilmente troverai qualcosa.

Così, ho Googled e trovato http://www.wazu.jp/gallery/Fonts_Japanese.html e testato mona.ttf, in particolare, e questo ha funzionato.

+2

+1 per dare seguito e risolvere la propria domanda (barrare anche la propria risposta a risolverlo). Se c'è un altro codice interessante che hai usato per farlo funzionare, aggiungilo alla tua risposta per gli utenti futuri. –

1

Recentemente ho usato Prawn (versione 2.0.2 con prawn-table versione 0.2.2) per generare un PDF in giapponese, e sfortunatamente non ho avuto fortuna con nessuno dei font TTF inseriti nella risposta accettata (la risposta accettata è stato comunque di grande aiuto sapere che il testo giapponese non può essere reso con i font incorporati di Prawn, però!).

Tuttavia, ho avuto fortuna ad usare i file TTF da IPA fonts con Prawn, in particolare il "pacchetto di 4 caratteri" che hanno elencato nella pagina che contiene i font IPA Mincho e IPA Gothic. Ho usato il font IPAPMincho (ipamp.ttf) per il carattere "normale" e IPAPGothic (ipagp.ttf) per "grassetto"; sono caratteri diversi, ma uno ha funzionato per me come "versione audace" dell'altro.

Nella mia configurazione di Prawn, ho utilizzato i caratteri predefiniti in cui potevo (ad esempio, per i documenti inglesi), ma i file TTF per il giapponese, che sono stati configurati in tempo reale. Questo ha portato ad un codice che sembrava simile al seguente:

Prawn::Document.generate("MyJapaneseDocument.pdf") do |pdf| 
    # assume `font_name` here is something like "IPA", 
    # ie not a font that is shipped with the Prawn gem 
    unless Prawn::Font::AFM::BUILT_INS.include?(font_name) 
    pdf.font_families.update(
     font_name => { 
     normal: "path/to/ipamp.ttf", 
     bold: "path/to/ipagp.ttf" 
     } 
    ) 
    end 
    pdf.font font_name 
end 
Problemi correlati