Add angle to TextArea to control text rotation#1
Closed
Conversation
Owner
Author
|
I published this branch as |
tomelliot
added a commit
to tomelliot/glyphon
that referenced
this pull request
Mar 30, 2026
Add `angle` (degrees) and `rotation_origin` fields to TextArea, enabling text rotation in the vertex shader via a 2D rotation matrix applied in screen space before NDC conversion. Changes: - TextArea: new `angle: f32` and `rotation_origin: Option<[f32; 2]>` fields - GlyphToRender: new `angle` and `rotation_origin` per-instance vertex data - Shader: rotation matrix applied around rotation_origin before NDC transform - Cache: sampler switched to Linear filtering for smooth rotated glyphs - Atlas: 1px padding on glyph allocations to prevent linear filter bleed - Bounds clipping skipped for rotated text (axis-aligned clips are incorrect) Based on the approach from jonmmease#1, adapted for glyphon 0.9.0. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds an
angle: f32property toTextAreato control the rotation of the text in text area. This angle is routed through toGlyphToRenderand to the shader where it's used to construct a 2d rotation matrix which is applied to the vertex positions.To make the text look smooth when rotated, the sampler mode was changed from
FilterMode::NearesttoFilterMode::Linear.When text is rotated, linear interpolation can cause artifacts on glyph borders due to interpolation against neighboring glyphs in the texture atlas. To fix this, a one pixel buffer was added to the glyph width and height when positioning the glyph in the text atlas.