Масштабирование шрифта TrueType приводит к размытому тексту? - PullRequest
0 голосов
/ 26 мая 2018

Я использую FreeType для рендеринга текста.Мне сказали, что TrueType опирается на математику и поэтому не должен размываться при масштабировании, как растровые шрифты.Тем не менее, это именно то, что происходит со мной.

Что я делаю, так это то, что я сначала инициализирую 'face' в FreeType, а затем сохраняю сгенерированный битовый рисунок глифа в текстуре.Затем я масштабирую эту текстуру на 4 и рендеринг - и она выглядит размытой!

Итак, вот что я сделал (приблизительно):

FT_Face face;
if(FT_New_Face(ft, "fonts/arial.ttf", 0, &face))
    std::cout << "Failed to load font\n";

затем сгенерировал текстуру

unsigned int texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, face->glyph->bitmap.width,
    face->glyph->bitmap.rows, 0, GL_RED, GL_UNSIGNED_BYTE, face->glyph->bitmap.buffer);

, которая затем масштабируется путем растягивания текстуры по большейquad ...

Так почему мой шрифт TrueType становится размытым при масштабировании так же, как растровые шрифты?

1 Ответ

0 голосов
/ 26 мая 2018

Растровые шрифты становятся размытыми при масштабировании, потому что они растровые.Размытость проистекает из того факта, что масштабирование их от их естественного разрешения требует изобретения новой информации о пикселях, где у растрового изображения ее нет.Эта «новая информация» является размытой частью.

Текстуры - это растровые изображения (более или менее).Поэтому, когда вы преобразуете шрифт True-Type в текстуру, он становится растровым изображением.Текстуры не могут вернуться к тому, что их создало для производства этой новой информации.У них есть информация, которую они имеют в то время, когда вы загружаете в них данные, в зависимости от разрешения, которое вы им предоставляете.

Таким образом, независимо от того, как текстура получает свои данные, она будет вести себя при масштабировании подобно растровому изображению, которым она является.: смазываясьИли вы можете использовать растеризация шрифта со знаком .

...