PIL question. having exactly same font on multiple platforms
Irmen de Jong
irmen.NOSPAM at xs4all.nl
Thu Aug 4 21:30:59 CEST 2011
On 4-8-2011 20:54, Gelonida N wrote:
> The reason why I want the images to look identical is very simple.
> Though the final web server will run on a linux server, I use sometimes
> windows for development or as test server.
> For automated tests I would have liked pixel identical images.
> this allows calculating the md5sum of images to know whether
> a regression in the image layout occured. Well I can live without it.
Then don't run your automated tests on the dev server but deploy your stuff to a
separate test server first, that runs the same software as production. And run the tests
> The second (more import issue) is, that the images should look the same
> whether created on a Windows or Linux host.
> I didn't know that PIL delegated font rendering to the underlying OS,
> but thought it contains its own rendering.
I'm pretty sure it does have that indeed; it links with the freetype library. Are you
sure you're not just seeing differences because of differences in the typeface itself?
A courier.ttf on one system can look very different from a ms-courier-new.ttf on another...
> Here the problem is not if a few pixels are different, but currently I
> even don't know how to choose a font, and make sure it exists on both
> platforms. I also don't know how I can write portable python code, that
> will find a given font on windows and on linux independent of the exact
> font location.
I once made a module that uses PIL to draw captcha images. It uses one of the free
truetype font files that I just place next to the code. I downloaded the ttf files from
http://www.fontgirl.com/ but there are dozens of free font sites. Just be sure to check
the license terms of the the typeface files.
As far as I know, I did not see any difference in output on windows, linux and mac os x
as long as the code used the same ttf file and PIL versions. (but I'll double check now
and see if I remember this correctly).
More information about the Python-list