Для вашего случая не сглаженных растровых изображений, эти небольшие растровые изображения должны быть уже включены в файл шрифтов, по крайней мере, для собственных шрифтов, таких как 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?)

Ответы на вопрос(5)

Ваш ответ на вопрос