servo/components/layout
Jon Leighton f22e5ef3bd Lazy load fonts in a FontGroup
This is a step towards fixing #17267. To fix that, we need to be able to
try various different fallback fonts in turn, which would become
unweildy with the prior eager-loading strategy.

Prior to this change, FontGroup loaded up all Font instances, including
the fallback font, before any of them were checked for the presence of
the glyphs we're trying to render.

So for the following CSS:

    font-family: Helvetica, Arial;

The FontGroup would contain a Font instance for Helvetica, and a Font
instance for Arial, and a Font instance for the fallback font.

It may be that Helvetica contains glyphs for every character in the
document, and therefore Arial and the fallback font are not needed at
all.

This change makes the strategy lazy, so that we'll only create a Font
for Arial if we cannot find a glyph within Helvetica. I've also
substantially refactored the existing code in the process and added
some documentation along the way.
2018-02-22 16:36:05 +01:00
..
display_list Use Rect::inner_rect from euclid 2018-02-08 16:45:27 +01:00
tests Merge layout and layout_tests 2018-01-20 15:33:39 +01:00
animation.rs style: Make the TElement type arrive to the cascade function. 2018-01-23 00:57:54 +01:00
block.rs Change debug assertions to specific ones 2018-02-07 09:21:24 +01:00
Cargo.toml Use Rect::inner_rect from euclid 2018-02-08 16:45:27 +01:00
construct.rs style: Move content property out of mako. 2018-02-07 00:11:57 +02:00
context.rs Replace all uses of the heapsize crate with malloc_size_of. 2017-10-18 22:20:37 +11:00
data.rs Bump bitflags to 1.0 in every servo crate 2017-10-30 23:36:06 +01:00
flex.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
floats.rs Use specific negative assertion for layout floats 2018-01-26 01:55:24 +08:00
flow.rs Simplify counter CSS properties 2018-02-04 14:52:38 +01:00
flow_list.rs Remove usage of unstable feature conservative_impl_trait in layout 2017-10-13 11:11:06 +02:00
flow_ref.rs order derivable traits lists 2017-08-23 21:38:44 +02:00
fragment.rs Replace IntegerOrAuto with ZIndex 2018-02-20 15:18:22 +01:00
generated_content.rs style: Move content property out of mako. 2018-02-07 00:11:57 +02:00
incremental.rs Turn flow::base and friends into methods 2017-12-14 12:16:45 -06:00
inline.rs Auto merge of #20096 - maekawatoshiki:master, r=emilio 2018-02-21 04:22:43 -05:00
layout_debug.rs Use specific assertion for layout layout_debug 2018-01-26 01:01:01 +08:00
lib.rs Share line breaking state across text runs 2018-01-24 12:51:33 +05:30
linked_list.rs Move util::linked_list to layout 2016-06-29 17:23:04 +02:00
list_item.rs Allow floats to impact list item marker position 2018-01-24 12:26:32 +01:00
model.rs Fix some "unnecessary parentheses" warnings 2018-01-22 17:41:25 +01:00
multicol.rs Use specific assertion for layout multicol 2018-01-26 01:01:01 +08:00
opaque_node.rs Introduce LayoutJS<Node>::opaque() to replace OpaqueNodeMethods::from_jsmanaged(). 2016-06-20 19:08:02 +02:00
parallel.rs Turn flow::base and friends into methods 2017-12-14 12:16:45 -06:00
persistent_list.rs Use try syntax for Option where appropriate 2017-10-20 08:25:35 -07:00
query.rs Auto merge of #20082 - emilio:ignore-existing-styles, r=bholley 2018-02-21 06:09:15 -05:00
sequential.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
table.rs Change debug assertions to specific ones 2018-02-07 09:21:24 +01:00
table_caption.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
table_cell.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
table_colgroup.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
table_row.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
table_rowgroup.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
table_wrapper.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
text.rs Lazy load fonts in a FontGroup 2018-02-22 16:36:05 +01:00
traversal.rs Create own file for background calculations in layout 2018-01-06 20:19:32 +01:00
wrapper.rs style: Move content property out of mako. 2018-02-07 00:11:57 +02:00