Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_text/src/glyph.rs
6596 views
1
//! This module exports types related to rendering glyphs.
2
3
use bevy_asset::AssetId;
4
use bevy_image::prelude::*;
5
use bevy_math::{IVec2, Vec2};
6
use bevy_reflect::Reflect;
7
8
/// A glyph of a font, typically representing a single character, positioned in screen space.
9
///
10
/// Contains information about how and where to render a glyph.
11
///
12
/// Used in [`TextPipeline::queue_text`](crate::TextPipeline::queue_text) and [`crate::TextLayoutInfo`] for rendering glyphs.
13
#[derive(Debug, Clone, Reflect)]
14
#[reflect(Clone)]
15
pub struct PositionedGlyph {
16
/// The position of the glyph in the text block's bounding box.
17
pub position: Vec2,
18
/// The width and height of the glyph in logical pixels.
19
pub size: Vec2,
20
/// Information about the glyph's atlas.
21
pub atlas_info: GlyphAtlasInfo,
22
/// The index of the glyph in the [`ComputedTextBlock`](crate::ComputedTextBlock)'s tracked spans.
23
pub span_index: usize,
24
/// The index of the glyph's line.
25
pub line_index: usize,
26
/// The byte index of the glyph in its line.
27
pub byte_index: usize,
28
/// The byte length of the glyph.
29
pub byte_length: usize,
30
}
31
32
/// Information about a glyph in an atlas.
33
///
34
/// Rasterized glyphs are stored as rectangles
35
/// in one or more [`FontAtlas`](crate::FontAtlas)es.
36
///
37
/// Used in [`PositionedGlyph`] and [`FontAtlasSet`](crate::FontAtlasSet).
38
#[derive(Debug, Clone, Reflect)]
39
#[reflect(Clone)]
40
pub struct GlyphAtlasInfo {
41
/// An asset ID to the [`Image`] data for the texture atlas this glyph was placed in.
42
///
43
/// An asset ID of the handle held by the [`FontAtlas`](crate::FontAtlas).
44
pub texture: AssetId<Image>,
45
/// An asset ID to the [`TextureAtlasLayout`] map for the texture atlas this glyph was placed
46
/// in.
47
///
48
/// An asset ID of the handle held by the [`FontAtlas`](crate::FontAtlas).
49
pub texture_atlas: AssetId<TextureAtlasLayout>,
50
/// Location and offset of a glyph within the texture atlas.
51
pub location: GlyphAtlasLocation,
52
}
53
54
/// The location of a glyph in an atlas,
55
/// and how it should be positioned when placed.
56
///
57
/// Used in [`GlyphAtlasInfo`] and [`FontAtlas`](crate::FontAtlas).
58
#[derive(Debug, Clone, Copy, Reflect)]
59
#[reflect(Clone)]
60
pub struct GlyphAtlasLocation {
61
/// The index of the glyph in the atlas
62
pub glyph_index: usize,
63
/// The required offset (relative positioning) when placed
64
pub offset: IVec2,
65
}
66
67