Рендеринг курсивных шрифтов - PullRequest
0 голосов
/ 18 мая 2018

У меня есть некоторый опыт рендеринга текста в opengl, где подход состоит в том, чтобы использовать глифы шрифтов (которые можно создавать с помощью таких вещей, как freetype), а затем использовать, потянув отдельные объекты с использованием координат текстуры, однако я хотел попробовать использовать более созданиешрифт и думал о том, как отрисовать курсивные шрифты.Я заметил, что многие шрифты здесь являются курсивными шрифтами и не смогли найти какую-либо информацию о рендеринге курсивных шрифтов.Я понимаю, что подход поиска текстуры, вероятно, не будет работать таким же образом.Я ищу некоторый совет, чтобы указать направление, так как я не смог его найти.

https://www.fontsquirrel.com/fonts/list/popular

Единственное, о чем я могу подумать, это придумать набор кривых Безье для представления всего предложения, а затем отобразить его.Это затруднит динамический рендеринг текста, так как кривые необходимо будет соединять в реальном времени для обеспечения плавности.

Кто-нибудь имел успех с рендерингом курсивных шрифтов?

Ответы [ 2 ]

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

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

Глиф характеризуется не только шириной и высотой.Он также имеет дополнительную информацию, которая используется для размещения текста.В FreeType это подшипники и расстояния перемещения (см. Документацию ).Расстояние продвижения говорит вам, на сколько будет перемещаться текстовый курсор, т. Е. Где начнется следующий глиф.Направление скажет вам, сколько места нужно оставить пустым между текущим текстовым курсором и фактическим глифом.Для очень искаженных глифов этот азимут может быть отрицательным, то есть глиф начинается слева от позиции курсора.Аналогично, расстояние перемещения может быть меньше ширины глифа.Это позволяет соседним символам переплетаться.

Кстати, разные API называют эти метрики шрифта по-разному.Например, DirectWrite называет их свесами.

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

По сути, вам нужно определить отношения между символами и использовать визуальные вариации одних и тех же символов, чтобы они выглядели связанными.

Например, строчная буква «L» рядом с строчной буквой«О» свяжет нижнюю часть буквы L с верхней частью буквы «О»;тогда как, если буква после L была, скажем, «i», то она должна была бы связать символы внизу.

Если вы намереваетесь использовать какой-то заранее определенный текст, то вы, конечно, можете также простовручную расставлять вещи.Если вы ищете решение в реальном времени, вам понадобится описанный выше метод.

Возьмите лут на этой странице и, возможно, некоторые библиотеки, найденные в разделе "реализации", который должен указывать вам в сторону готовых к использованию активов.

...