pub struct FontContext {
    system_font_service_proxy: Arc<SystemFontServiceProxy>,
    resource_threads: Mutex<CoreResourceThread>,
    compositor_api: Mutex<CrossProcessCompositorApi>,
    fonts: RwLock<HashMap<FontCacheKey, Option<FontRef>>>,
    resolved_font_groups: RwLock<HashMap<FontGroupCacheKey, FontGroupRef>>,
    web_fonts: CrossThreadFontStore,
    webrender_font_keys: RwLock<HashMap<FontIdentifier, FontKey>>,
    webrender_font_instance_keys: RwLock<HashMap<FontParameters, FontInstanceKey>>,
    font_data: RwLock<HashMap<FontIdentifier, FontData>>,
    have_removed_web_fonts: AtomicBool,
}Expand description
The FontContext represents the per-thread/thread state necessary for working with fonts. It is the public API used by the layout and paint code. It talks directly to the system font service where required.
Fields§
§system_font_service_proxy: Arc<SystemFontServiceProxy>§resource_threads: Mutex<CoreResourceThread>§compositor_api: Mutex<CrossProcessCompositorApi>A sender that can send messages and receive replies from the compositor.
fonts: RwLock<HashMap<FontCacheKey, Option<FontRef>>>The actual instances of fonts ie a FontTemplate combined with a size and
other font properties, along with the font data and a platform font instance.
resolved_font_groups: RwLock<HashMap<FontGroupCacheKey, FontGroupRef>>A caching map between the specification of a font in CSS style and
resolved FontGroup which contains information about all fonts that
can be selected with that style.
web_fonts: CrossThreadFontStore§webrender_font_keys: RwLock<HashMap<FontIdentifier, FontKey>>A collection of WebRender FontKeys generated for the web fonts that this
FontContext controls.
webrender_font_instance_keys: RwLock<HashMap<FontParameters, FontInstanceKey>>A collection of WebRender FontInstanceKeys generated for the web fonts that
this FontContext controls.
font_data: RwLock<HashMap<FontIdentifier, FontData>>The data for each web font FontIdentifier. This data might be used by more than one
FontTemplate as each identifier refers to a URL.
have_removed_web_fonts: AtomicBoolImplementations§
Source§impl FontContext
 
impl FontContext
pub fn new( system_font_service_proxy: Arc<SystemFontServiceProxy>, compositor_api: CrossProcessCompositorApi, resource_threads: ResourceThreads, ) -> Self
pub fn web_fonts_still_loading(&self) -> usize
fn get_font_data(&self, identifier: &FontIdentifier) -> Option<FontData>
Sourcepub fn font_group(
    &self,
    style: ServoArc<FontStyleStruct>,
) -> Arc<RwLock<FontGroup>> ⓘ
 
pub fn font_group( &self, style: ServoArc<FontStyleStruct>, ) -> Arc<RwLock<FontGroup>> ⓘ
Returns a FontGroup representing fonts which can be used for layout, given the style.
Font groups are cached, so subsequent calls with the same style will return a reference
to an existing FontGroup.
Sourcepub fn font_group_with_size(
    &self,
    style: ServoArc<FontStyleStruct>,
    size: Au,
) -> Arc<RwLock<FontGroup>> ⓘ
 
pub fn font_group_with_size( &self, style: ServoArc<FontStyleStruct>, size: Au, ) -> Arc<RwLock<FontGroup>> ⓘ
Like Self::font_group, but overriding the size found in the FontStyleStruct with the given size
in pixels.
Sourcepub fn font(
    &self,
    font_template: FontTemplateRef,
    font_descriptor: &FontDescriptor,
) -> Option<FontRef>
 
pub fn font( &self, font_template: FontTemplateRef, font_descriptor: &FontDescriptor, ) -> Option<FontRef>
Returns a font matching the parameters. Fonts are cached, so repeated calls will return a
reference to the same underlying Font.
fn get_font_maybe_synthesizing_small_caps( &self, font_template: FontTemplateRef, font_descriptor: &FontDescriptor, synthesize_small_caps: bool, ) -> Option<FontRef>
fn matching_web_font_templates( &self, descriptor_to_match: &FontDescriptor, family_descriptor: &FontFamilyDescriptor, ) -> Option<Vec<FontTemplateRef>>
Sourcepub fn matching_templates(
    &self,
    descriptor_to_match: &FontDescriptor,
    family_descriptor: &FontFamilyDescriptor,
) -> Vec<FontTemplateRef>
 
pub fn matching_templates( &self, descriptor_to_match: &FontDescriptor, family_descriptor: &FontFamilyDescriptor, ) -> Vec<FontTemplateRef>
Try to find matching templates in this FontContext, first looking in the list of web fonts and
falling back to asking the super::SystemFontService for a matching system font.
Sourcefn create_font(
    &self,
    font_template: FontTemplateRef,
    font_descriptor: FontDescriptor,
    synthesized_small_caps: Option<FontRef>,
) -> Result<FontRef, &'static str>
 
fn create_font( &self, font_template: FontTemplateRef, font_descriptor: FontDescriptor, synthesized_small_caps: Option<FontRef>, ) -> Result<FontRef, &'static str>
Create a Font for use in layout calculations, from a FontTemplateData returned by the
cache thread and a FontDescriptor which contains the styling parameters.
pub(crate) fn create_font_instance_key( &self, font: &Font, rendering_group_id: RenderingGroupId, ) -> FontInstanceKey
fn create_web_font_instance( &self, font_template: FontTemplateRef, pt_size: Au, flags: FontInstanceFlags, variations: Vec<FontVariation>, rendering_group_id: RenderingGroupId, ) -> FontInstanceKey
fn invalidate_font_groups_after_web_font_load(&self)
pub fn is_supported_web_font_source(source: &&Source) -> bool
Source§impl FontContext
 
impl FontContext
fn start_loading_one_web_font( self: &Arc<FontContext>, webview_id: Option<WebViewId>, source_list: &SourceList, css_font_face_descriptors: CSSFontFaceDescriptors, completion_handler: WebFontLoadInitiator, )
fn process_next_web_font_source( self: &Arc<FontContext>, state: WebFontDownloadState, )
Trait Implementations§
Source§impl MallocSizeOf for FontContext
 
impl MallocSizeOf for FontContext
Source§fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
 
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Auto Trait Implementations§
impl !Freeze for FontContext
impl !RefUnwindSafe for FontContext
impl Send for FontContext
impl Sync for FontContext
impl Unpin for FontContext
impl !UnwindSafe for FontContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
 
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
 
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more