Newer
Older
use std::cmp::Ordering;
use bevy::reflect::Reflect;
/// A representation of a grapheme cluster, as defined by [Unicode UAX #29].
///
/// [Unicode UAX #29]: https://unicode.org/reports/tr29/
#[derive(Default, Debug, Reflect, Copy, Clone, PartialEq)]
pub struct Grapheme {
/// The index of the starting char within this grapheme, relative to the entire text content.
pub char_index: usize,
/// The total number of chars in this grapheme.
pub char_total: usize,
/// The index of the starting glyph within this grapheme, relative to the entire text content.
pub glyph_index: usize,
/// The total number of glyphs in this grapheme.
pub glyph_total: usize,
/// The position of this grapheme, relative to the entire text content.
pub position: (f32, f32),
/// The size of this grapheme.
pub size: (f32, f32),
}
impl PartialOrd for Grapheme {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
self.char_index.partial_cmp(&other.char_index)
}
}