DOMpdf failing to render certain accented characters

Shane Dowling
Tech Blog
Published in
2 min readAug 21, 2014

I’ve noticed some issues with DOMpdf when trying to generate PDFs using
their internal Helvetica font. After banging my head against a wall for
a few hours trying to “fix” UTF-8 support, it turned out UTF-8 support
was working fine. Essentially DOMpdf’s internal Helvetica font didn’t
support a few polish characters. Specifically the Sacute, sacute and a
few others like this. This was a bit of a killer problem for my
requirements so I needed a work-around. My workaround was to use Arial
fonts(they were close enough), but if you really need Helvetica you
could source a copy of the .ttfs and replicate these steps.

Download Arial fonts

wget http://www.drivehq.com/file/df.aspx/shareID2129391/fileID59377155/arial.ttf
wget http://www.911fonts.com/fonts/6/0/5/605.ttf -O arialit.ttf
wget http://4nts.com/fonts/arialbd.ttf
wget http://www.911fonts.com/fonts/6/0/4/604.ttf -O arialbit.ttf

This downloads arial, arial-bold, arial-oblique and arial-boldoblique.

Generate compatible dompdf files

Pull up a terminal and cd into your dompdf folder. If you’re using
composer, it’ll be /vendor/dompdf/dompdf

php load_font.php arial ~/arial.ttf ~/arialbd.ttf ~/arialit.ttf ~/arialbit.ttf

You should now see an entry in lib/fonts/dompdf_font_family_cache.php

arial’ =>
array (
‘normal’ => DOMPDF_FONT_DIR . ‘arial’,
‘bold’ => DOMPDF_FONT_DIR . ‘arialbd’,
‘italic’ => DOMPDF_FONT_DIR . ‘arialit’,
‘bold_italic’ => DOMPDF_FONT_DIR . ‘arialbit’,
),

You can now reference the Arial font-family in your DOMpdf stylesheets
and have it render some nice Helvetica like fonts.

If you are using composer with DOMpdf, I would highly recommend not
leaving your custom fonts in DOMpdfs vendor folder. Copy the fonts
directory somewhere in your projects directory, and over-ride this
variable with your own def, referencing the new folder location.

def(“DOMPDF_FONT_DIR”, DOMPDF_DIR . “/lib/fonts/”);

This means you shouldn’t need to rely on dodgy customisations to the
vendor folder.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Tech Blog
Tech Blog
Shane Dowling
Shane Dowling

No responses yet

Write a response