Crate gfx_glyph[][src]

Fast GPU cached text rendering using gfx-rs & rusttype.

Makes use of three kinds of caching to optimise frame performance.

  • Caching of glyph positioning output to avoid repeated cost of identical text rendering on sequential frames.
  • Caches draw calculations to avoid repeated cost of identical text rendering on sequential frames.
  • GPU cache logic to dynamically maintain a GPU texture of rendered glyphs.

Example

extern crate gfx_glyph;
use gfx_glyph::{GlyphBrushBuilder, Section};

let dejavu: &[u8] = include_bytes!("../examples/DejaVuSans.ttf");
let mut glyph_brush = GlyphBrushBuilder::using_font_bytes(dejavu).build(gfx_factory.clone());

let section = Section {
    text: "Hello gfx_glyph",
    ..Section::default()
};

glyph_brush.queue(section);
glyph_brush.queue(some_other_section);

glyph_brush.draw_queued(&mut gfx_encoder, &gfx_color, &gfx_depth)?;

Structs

Font

A single font. This may or may not own the font data.

FontId

Id for a font, the default FontId(0) will always be present in a GlyphBrush

Glyph

A single glyph of a font. this may either be a thin wrapper referring to the font and the glyph id, or it may be a standalone glyph that owns the data needed by it.

GlyphBrush

Object allowing glyph drawing, containing cache state. Manages glyph positioning cacheing, glyph draw caching & efficient GPU texture cache updating and re-sizing on demand.

GlyphBrushBuilder

Builder for a GlyphBrush.

GlyphCalculator

Cut down version of a GlyphBrush that can calculate pixel bounds, but is unable to actually render anything.

GlyphCalculatorBuilder

Builder for a GlyphCalculator.

GlyphCalculatorGuard

GlyphCalculator scoped cache lock.

GlyphId

Represents a glyph identifier for a particular font. This identifier will not necessarily correspond to the correct glyph in a font other than the one that it was obtained from.

HMetrics

The "horizontal metrics" of a glyph. This is useful for calculating the horizontal offset of a glyph from the previous one in a string when laying a string out horizontally.

OwnedSectionText
OwnedVariedSection
Point

A point in 2-dimensional space, with each dimension of type N.

PositionedGlyph

A glyph augmented with positioning and scaling information. You can query such a glyph for information that depends on the scale and position of the glyph.

Rect

A rectangle, with top-left corner at min, and bottom-right corner at max.

Scale

Defines the size of a rendered face of a font, in pixels, horizontally and vertically. A vertical scale of y pixels means that the distance betwen the ascent and descent lines (see VMetrics) of the face will be y pixels. If x and y are equal the scaling is uniform. Non-uniform scaling by a factor f in the horizontal direction is achieved by setting x equal to f times y.

ScaledGlyph

A glyph augmented with scaling information. You can query such a glyph for information that depends on the scale of the glyph.

Section

An object that contains all the info to render a section of text.

SectionText
VMetrics

The "vertical metrics" of a font at a particular scale. This is useful for calculating the amount of vertical space to give a line of text, and for computing the vertical offset between successive lines.

VariedSection

An object that contains all the info to render a varied section of text. That is one including many parts with differing fonts/scales/colors bowing to a single layout.

Enums

BuiltInLineBreaker
HorizontalAlign

Describes horizontal alignment preference for positioning & bounds.

Layout

Built-in GlyphPositioner implementations.

LineBreak

Indicator that a character is a line break, soft or hard. Includes the offset (byte-index) position.

SharedBytes

SharedBytes handles the lifetime of font data used in RustType. The data is either a shared reference to externally owned data, or managed by reference counting. SharedBytes can be conveniently used with From and Into, and dereferences to the contained bytes.

VerticalAlign

Describes vertical alignment preference for positioning & bounds. Currently a placeholder for future functionality.

Traits

GlyphCruncher

Common glyph layout logic.

GlyphPositioner

Logic to calculate glyph positioning based on Font and VariedSection

LineBreaker

Producer of a LineBreak iterator. Used to allow to the Layout to be line break aware in a generic way.

Type Definitions

FontMap

Map of FontIdFont.

PositionedGlyphIter

PositionedGlyph iterator.