Google App Engine上的PIL可用哪些系统字体?

5
哪些字体可以在App Engine上使用PIL?我知道我可以将字体作为应用程序的一部分上传,但基本上我想要的是一个由系统提供的无衬线字体,它能够与Unicode字符一起使用,并且外观良好,比如Helvetica(或替代字体)。Google服务器可能已经安装了一些字体,这就是我想要了解的内容。我想寻找一个支持Unicode的字体,以便使用PIL正确渲染日语和其他字符。我有一个网页,使用font-family: 'Helvetica Neue',Helvetica, Arial, sans-serif;可以正确显示Unicode字符。但当我使用PIL渲染相同的Unicode字符时,它们无法正确呈现。我上传的字体没有必要的Unicode字符。以下是我现在正在使用的相关Python代码行。
import Image, ImageDraw, ImageFont  

draw = ImageDraw.Draw(my_output)  
font = ImageFont.truetype("FontIAmUsing.otf", font_size, encoding="utf-8")  
draw.text((5, 51), 'abc', fill='#2A2A2A', font=font)

你是如何使用字体的呢?有一些代码片段吗?(我对PIL不是很熟悉,正在尝试寻找一些相关内容,例如:import os, PIL; print os.listdir(os.path.dirname(PIL.__file__)),来自于https://shell-27.appspot.com) - bossylobster
"FontIAmUsing.otf" 文件通常存放在哪里?如果我理解正确,它应该在你调用代码的目录中。你不能直接将字体与应用程序一起打包并部署吗?这篇文章似乎涵盖了字体存储的位置以及如何在本地包含它们的方法。 - bossylobster
好的,我已经阅读了那篇文章,并且我上传了我的字体。我希望有一个系统字体能够像 sans-serif 一样支持 Unicode 字符,就像使用 Unicode 字符的网页所使用的那样。在 Mac 上,我认为 sans-serif 回退到 Helvetica。我没有一个带有 Unicode 字符的 Helvetica 字体可供应用程序上传。我仍然希望 Google 可能有一些系统安装的字体(Helvetica?),我可以利用它们。 - philipfc
据我所知,没有系统字体被上传,即使是PIL默认分发的那几个字体也没有。仍在努力寻找中。 - bossylobster
1个回答

4
考虑到PIL只带有一个默认的位图字体(难看且可能不包含很多Unicode字符),并且由于您必须提供字体文件的完整路径,而且不能离开GAE的沙箱环境,因此最好将字体与应用程序一起上传。如果您没有指定路径,它将查看您的Web应用程序的根目录。我正在使用GoogleAppEngineLauncher for OSX,在部署时会上传所有找到的文件(包括我使用ImageDraw的.ttf文件)。
文档网站http://effbot.org/imagingbook/imagefont.htm中指出:(新版本1.1.4中)加载“好过没有”的默认字体。我刚刚确认了默认字体在GAE上是可用的。

我已决定按照您的建议上传字体。 - philipfc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接