pub trait PlatformTextSystem: Send + Sync {
Show 19 methods
// Required methods
fn add_fonts(&self, fonts: Vec<Cow<'static, [u8]>>) -> Result<()>;
fn all_font_names(&self) -> Vec<String>;
fn font_id(&self, descriptor: &Font) -> Result<FontId>;
fn font_metrics(&self, font_id: FontId) -> FontMetrics;
fn typographic_bounds(
&self,
font_id: FontId,
glyph_id: GlyphId,
) -> Result<Bounds<f32>>;
fn advance(&self, font_id: FontId, glyph_id: GlyphId) -> Result<Size<f32>>;
fn glyph_for_char(&self, font_id: FontId, ch: char) -> Option<GlyphId>;
fn glyph_raster_bounds(
&self,
params: &RenderGlyphParams,
) -> Result<Bounds<DevicePixels>>;
fn rasterize_glyph(
&self,
params: &RenderGlyphParams,
raster_bounds: Bounds<DevicePixels>,
) -> Result<(Size<DevicePixels>, Vec<u8>)>;
fn layout_line(
&self,
text: &str,
font_size: Pixels,
runs: &[FontRun],
) -> LineLayout;
fn recommended_rendering_mode(
&self,
_font_id: FontId,
_font_size: Pixels,
) -> TextRenderingMode;
// Provided methods
fn set_missing_glyph_sink(&self, _sink: Option<Arc<dyn MissingGlyphSink>>) { ... }
fn font_capabilities(&self) -> FontCapabilities { ... }
fn font_table(
&self,
_font_id: FontId,
_tag: FontTag,
) -> Result<FontQuery<Option<Vec<u8>>>> { ... }
fn font_axes(
&self,
font_id: FontId,
) -> Result<FontQuery<Vec<VariationAxisInfo>>> { ... }
fn opentype_features(
&self,
font_id: FontId,
) -> Result<FontQuery<Vec<OpenTypeFeatureInfo>>> { ... }
fn prewarm_fonts(&self, _font_ids: &[FontId]) { ... }
fn shape_paragraph(
&self,
_request: ParagraphRequest<'_>,
) -> Result<Arc<dyn PlatformParagraphShape>> { ... }
fn glyph_dilation_for_color(&self, _color: Hsla) -> u8 { ... }
}Required Methods§
fn add_fonts(&self, fonts: Vec<Cow<'static, [u8]>>) -> Result<()>
Sourcefn all_font_names(&self) -> Vec<String>
fn all_font_names(&self) -> Vec<String>
Get all available font names.
Sourcefn font_metrics(&self, font_id: FontId) -> FontMetrics
fn font_metrics(&self, font_id: FontId) -> FontMetrics
Get metrics for a font.
Sourcefn typographic_bounds(
&self,
font_id: FontId,
glyph_id: GlyphId,
) -> Result<Bounds<f32>>
fn typographic_bounds( &self, font_id: FontId, glyph_id: GlyphId, ) -> Result<Bounds<f32>>
Get typographic bounds for a glyph.
Sourcefn advance(&self, font_id: FontId, glyph_id: GlyphId) -> Result<Size<f32>>
fn advance(&self, font_id: FontId, glyph_id: GlyphId) -> Result<Size<f32>>
Get the advance width for a glyph.
Sourcefn glyph_for_char(&self, font_id: FontId, ch: char) -> Option<GlyphId>
fn glyph_for_char(&self, font_id: FontId, ch: char) -> Option<GlyphId>
Get the glyph ID for a character.
Sourcefn glyph_raster_bounds(
&self,
params: &RenderGlyphParams,
) -> Result<Bounds<DevicePixels>>
fn glyph_raster_bounds( &self, params: &RenderGlyphParams, ) -> Result<Bounds<DevicePixels>>
Get raster bounds for a glyph.
Sourcefn rasterize_glyph(
&self,
params: &RenderGlyphParams,
raster_bounds: Bounds<DevicePixels>,
) -> Result<(Size<DevicePixels>, Vec<u8>)>
fn rasterize_glyph( &self, params: &RenderGlyphParams, raster_bounds: Bounds<DevicePixels>, ) -> Result<(Size<DevicePixels>, Vec<u8>)>
Rasterize a glyph.
Sourcefn layout_line(
&self,
text: &str,
font_size: Pixels,
runs: &[FontRun],
) -> LineLayout
fn layout_line( &self, text: &str, font_size: Pixels, runs: &[FontRun], ) -> LineLayout
Layout a line of text with the given font runs.
Sourcefn recommended_rendering_mode(
&self,
_font_id: FontId,
_font_size: Pixels,
) -> TextRenderingMode
fn recommended_rendering_mode( &self, _font_id: FontId, _font_size: Pixels, ) -> TextRenderingMode
Returns the recommended text rendering mode for the given font and size.
Provided Methods§
Sourcefn set_missing_glyph_sink(&self, _sink: Option<Arc<dyn MissingGlyphSink>>)
fn set_missing_glyph_sink(&self, _sink: Option<Arc<dyn MissingGlyphSink>>)
Installs a nonblocking sink for unresolved grapheme clusters.
Sourcefn font_capabilities(&self) -> FontCapabilities
fn font_capabilities(&self) -> FontCapabilities
Reports support for font inspection and explicit static variations.
Sourcefn font_table(
&self,
_font_id: FontId,
_tag: FontTag,
) -> Result<FontQuery<Option<Vec<u8>>>>
fn font_table( &self, _font_id: FontId, _tag: FontTag, ) -> Result<FontQuery<Option<Vec<u8>>>>
Reads one OpenType table from the resolved face identified by font_id.
Unsupported means table access is unavailable. Supported(None) means
the face has no such table; Supported(Some(bytes)) returns its contents.
Supporting backends return errors for invalid IDs or failed reads, rather
than treating them as missing tables. Tags are in OpenType byte order;
platform-specific tag conversion and buffer lifetimes belong to the backend.
The default inspection methods parse these bytes privately in core GPUI.
Sourcefn font_axes(
&self,
font_id: FontId,
) -> Result<FontQuery<Vec<VariationAxisInfo>>>
fn font_axes( &self, font_id: FontId, ) -> Result<FontQuery<Vec<VariationAxisInfo>>>
Queries axis ranges on a resolved face, distinguishing unsupported queries.
By default, reads fvar through font_table and parses it in core.
Sourcefn opentype_features(
&self,
font_id: FontId,
) -> Result<FontQuery<Vec<OpenTypeFeatureInfo>>>
fn opentype_features( &self, font_id: FontId, ) -> Result<FontQuery<Vec<OpenTypeFeatureInfo>>>
Queries feature metadata for a resolved face. Backends that cannot inspect
the face must return Unsupported, rather than a successful empty list.
The default reads GSUB/GPOS through font_table and parses them in core.
Invalid IDs, failed reads, and malformed metadata return errors.
Sourcefn prewarm_fonts(&self, _font_ids: &[FontId])
fn prewarm_fonts(&self, _font_ids: &[FontId])
Prewarm any system font caches needed to shape text.
Sourcefn shape_paragraph(
&self,
_request: ParagraphRequest<'_>,
) -> Result<Arc<dyn PlatformParagraphShape>>
fn shape_paragraph( &self, _request: ParagraphRequest<'_>, ) -> Result<Arc<dyn PlatformParagraphShape>>
Optional paragraph capability; native implementations need not opt in.
Sourcefn glyph_dilation_for_color(&self, _color: Hsla) -> u8
fn glyph_dilation_for_color(&self, _color: Hsla) -> u8
Returns the dilation level to use for a glyph painted in the given color.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".