Struct fonts::FontContext
source · 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, Arc<RwLock<FontGroup>>, BuildHasherDefault<FnvHasher>>>,
web_fonts: Arc<RwLock<FontStore>>,
webrender_font_keys: RwLock<HashMap<FontIdentifier, FontKey>>,
webrender_font_instance_keys: RwLock<HashMap<(FontKey, Au), 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, Arc<RwLock<FontGroup>>, BuildHasherDefault<FnvHasher>>>
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: Arc<RwLock<FontStore>>
§webrender_font_keys: RwLock<HashMap<FontIdentifier, FontKey>>
A collection of WebRender FontKey
s generated for the web fonts that this
FontContext
controls.
webrender_font_instance_keys: RwLock<HashMap<(FontKey, Au), FontInstanceKey>>
A collection of WebRender FontInstanceKey
s 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: AtomicBool
Implementations§
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>
sourcefn handle_web_font_load_finished(
&self,
finished_callback: &WebFontLoadFinishedCallback,
succeeded: bool,
)
fn handle_web_font_load_finished( &self, finished_callback: &WebFontLoadFinishedCallback, succeeded: bool, )
Handle the situation where a web font finishes loading, specifying if the load suceeded or failed.
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) -> FontInstanceKey
fn create_web_font_instance( &self, font_template: FontTemplateRef, pt_size: Au, flags: FontInstanceFlags, ) -> FontInstanceKey
fn invalidate_font_groups_after_web_font_load(&self)
source§impl FontContext
impl FontContext
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