// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Also licensed under MIT license, at your choice. use std::ops::Range; use peniko::{Font, Style}; use super::{StreamOffsets, Transform}; /// Positioned glyph. #[derive(Copy, Clone, Default, Debug)] pub struct Glyph { /// Glyph identifier. pub id: u32, /// X-offset in run, relative to transform. pub x: f32, /// Y-offset in run, relative to transform. pub y: f32, } /// Properties for a sequence of glyphs in an encoding. #[derive(Clone)] pub struct GlyphRun { /// Font for all glyphs in the run. pub font: Font, /// Global run transform. pub transform: Transform, /// Per-glyph transform. pub glyph_transform: Option, /// Size of the font in pixels per em. pub font_size: f32, /// True if hinting is enabled. pub hint: bool, /// Range of normalized coordinates in the parent encoding. pub normalized_coords: Range, /// Fill or stroke style. pub style: Style, /// Range of glyphs in the parent encoding. pub glyphs: Range, /// Stream offsets where this glyph run should be inserted. pub stream_offsets: StreamOffsets, }