А вы задумывались когда-нибудь как хранятся глифы шрифтов?
Глиф - это просто картинка одного символа (векторная или растровая). Но для того, чтобы его правильно расположить в шрифтах хранят ещё три значения:
- Advance: на сколько двигать курсор после отрисовки символа. По факту это ширина символа, если его выделить
- Bearing X: расстояние от курсора до левой границы картинки. В этом примере отрицательное, поэтому картинка начинается левее курсора
- Bearing Y: расстояние от baseline (линии на которой, визуально, "сидят" все символы) до верхней границы картинки
(Чего только не узнаешь занимаясь реверсом визуальной новеллы...)
Глиф - это просто картинка одного символа (векторная или растровая). Но для того, чтобы его правильно расположить в шрифтах хранят ещё три значения:
- Advance: на сколько двигать курсор после отрисовки символа. По факту это ширина символа, если его выделить
- Bearing X: расстояние от курсора до левой границы картинки. В этом примере отрицательное, поэтому картинка начинается левее курсора
- Bearing Y: расстояние от baseline (линии на которой, визуально, "сидят" все символы) до верхней границы картинки
(Чего только не узнаешь занимаясь реверсом визуальной новеллы...)
👍3🤯1
useless stuff
А вы задумывались когда-нибудь как хранятся глифы шрифтов? Глиф - это просто картинка одного символа (векторная или растровая). Но для того, чтобы его правильно расположить в шрифтах хранят ещё три значения: - Advance: на сколько двигать курсор после отрисовки…
There's a lot of stuff in the text rendering...
For example, to efficiently render the glyphs you need to pack them into texture atlas (otherwise you would have to do a lot of small draw calls, which is inefficient in modern GPUs)
And that in itself is... Hard. For example, here's how guys in mozilla did it in their renderer
https://mozillagfx.wordpress.com/2021/02/04/improving-texture-atlas-allocation-in-webrender/
For example, to efficiently render the glyphs you need to pack them into texture atlas (otherwise you would have to do a lot of small draw calls, which is inefficient in modern GPUs)
And that in itself is... Hard. For example, here's how guys in mozilla did it in their renderer
https://mozillagfx.wordpress.com/2021/02/04/improving-texture-atlas-allocation-in-webrender/
Mozilla Gfx Team Blog
Improving texture atlas allocation in WebRender
This is going to be a rather technical dive into a recent improvement that went into WebRender. Texture atlas allocation In order to submit work to the GPU efficiently, WebRender groups as many dra…
This media is not supported in your browser
VIEW IN TELEGRAM
My reimplementation draws text (almost) the same way that the original game does!
👍2
useless stuff
My reimplementation draws text (almost) the same way that the original game does!
This media is not supported in your browser
VIEW IN TELEGRAM
Got character sprites now!
(and text is now unreadable...)
Need to add an outline or the textbox ig
(and text is now unreadable...)
Need to add an outline or the textbox ig
This media is not supported in your browser
VIEW IN TELEGRAM
Писать оверлеи на egui - классно!
А ещё как-то приятно в них наблюдать как отточенно меняются состояния программы
А ещё как-то приятно в них наблюдать как отточенно меняются состояния программы
🥰2