Для вашего случая не сглаженных растровых изображений, эти небольшие растровые изображения должны быть уже включены в файл шрифтов, по крайней мере, для собственных шрифтов, таких как Arial и Times. IIRC Они хранятся внутри TTF для особых небольших размеров обычно 7-16 пт и в виде 1-битных масок. Вопрос только в том, как извлечь или получить их из приложения. Я не знаю, на самом деле, я вижу это просто как устаревшие вещи. Я больше в реалистичной проблематике рендеринга.
ть: Блокнот открыт, шрифт выбран как «Arial, размер 11», слова «это просто тест», аккуратно введены, сделан снимок экрана:
оригинал http://i53.tinypic.com/200skuv.png
Следующий код Python введен и запущен:
import ImageFont, ImageDraw, Image
im = Image.open("c:/textimg.png") #the above image
pilfont = ImageFont.truetype("arial.ttf", 11)
compimg = Image.new("RGB", im.size, (255, 255, 255))
draw = ImageDraw.Draw(compimg)
draw.text((0,0), "this is just a test", (0,0,0), font=pilfont)
compimg.save("c:/compimg.png")
И все же результат неутешительно отличается:
грустный http://i56.tinypic.com/9h7x55.png
Это не только неправильный размер, но и слегка затененный, в то время как рендеринг в блокноте четкий и не пересекает границы пикселей.
Как я могу заставить это сделать, как это делает блокнот? У меня была именно эта проблема с pygame, так что я думаю, что мне здесь не хватает фундаментального понимания о TTF.
ОБНОВЛЕНИЕ: я попробовал это с pygame снова. Это делает то же самое. У него есть возможность отключить сглаживание, но похоже, что он просто обрезает любые пиксели, которые он будет сглаживать, основываясь на некотором пороге. Самое близкое приближение, которое я получил, использовало размер 15. Код был:
pygfont = pygame.font.Font(r"c:\windows\fonts\arial.ttf", 15)
surf = pygfont.render("this is just a test", False, (0,0,0), (255,255,255))
pygame.image.save(surf, r"c:\pygameimg.png")
и результат (оригинальный блокнот сверху для сравнения):
УБИТЬ МЕНЯ http://i56.tinypic.com/2r26mbs.png
Гах, почему я не могу сразу предложить награду?
ОБНОВЛЕНИЕ: здесь сравниваются все методы:
AIFEOIFEF http://i56.tinypic.com/51ybtg.png
PIL 15, затем блокнот 11, затем отключение сглаживания Pygame 15, затем включение сглаживания Pygame 15.
PIL 15 на самом деле имеет правильные пропорции, это просто сглаживание. итак: почему 15 против 11? Как заставить это сделать так же, как Windows? (и что делает Pygame?)