-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Description
What did you do?
For a data generator, I need to use lots of fonts in different sizes. Randomly one of that is used to generate a sample. Since I didn't want to load a font every time we generate a sample, I created a nested dictionary that dynamicalle loads fonts of a given size when it wasn't loaded previously. It worked fine at the beginning. Then I tried to generate some more samples (>1k) and got "OSError: cannot open resource" every time. I double checked the paths and tried to load the font with the same path and that worked just fine. It definitely isn't related to the path encoding bugs.
To reproduce that, you can use the code below.
What did you expect to happen?
It should be able to load fonts until the RAM is full ;)
What actually happened?
OSError after loading exactly 509 fonts.
After clearing my dictionary as soon as the error occurs (temporary workaround), it works fine again.
What are your OS, Python and Pillow versions?
- OS: Win10
- Python: 3.6
- Pillow: 5.4.1
Please include code that reproduces the issue and whenever possible, an image that demonstrates the issue. Please upload images to GitHub, not to third-party file hosting sites. If necessary, add the image to a zip or tar archive.
The best reproductions are self-contained scripts with minimal dependencies. If you are using a framework such as plone, Django, or buildout, try to replicate the issue just using Pillow.
from PIL import ImageFont
test = []
for i in range(1000):
test.append(ImageFont.truetype("fonts/AbyssinicaSIL-R.ttf", 15))