WebRender.
This happens asynchronously, just as it does in non-WebRender mode.
This functionality is a prerequisite for doing proper display-list-based
hit testing in WebRender, since it moves the scroll offsets into Servo
(and, specifically, into the script thread, enabling iframe event
forwarding) instead of keeping them private to WebRender.
Requires servo/webrender_traits#55 and servo/webrender#277.
Partially addresses #11108.
Always include the last-resort font
This is used as a fallback for any characters that don't have glyphs in the specified font. Without this, per-glyph font fallback doesn't work because the FontGroup always contains only one font. Fixes missing glyphs on many pages on my Linux box.
As a follow-up, we should probably have a smarter strategy for finding fallback fonts, possibly varying by script. (Currently we just have a few hard-coded family names.)
r? @glennw
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11303)
<!-- Reviewable:end -->
Changes include:
- Introduce an IpcSend trait to abstract over a collection of IpcSenders
- Implement ResourceThreads collection to abstract the resource-related
sub threads across the component
- Rename original ResourceThread and ControlMsg into an unifed CoreResource__
to accommodate above changes and avoid confusions
It's a pointless abstraction that propagates the obsolete chan terminology,
swaps the order in which the sender and receiver are returned, and hides a
source of panics.
One of these two unwraps is the one that is causing most occurrences
of #8815.
I'd go with removing the second unwrap entirely, but let's get some
debug info first, since it might probably be a race.
gfx: Map CSS `normal` font weight to Regular font weight on the Mac.
This series of commits fixes#9487, and improves the look of nytimes.com among others.
r? @metajack
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11103)
<!-- Reviewable:end -->
to 400, not 500.
CSS `normal` font-weight is specified as 400, while Mac "Regular" font
weight is reported as 0.0. On the Mac, we need to center the two ranges
on the same value to avoid choosing "Light" fonts where "Regular" would
have been more appropriate.
Closes#9487.
fix for mac
gfx: Map `sans-serif` to Helvetica on Mac and DejaVu Sans on Linux.
This matches what I believe the OS native defaults to be.
Partially addresses #9487.
r? @metajack
cc @paulrouget
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10937)
<!-- Reviewable:end -->
Use xi-unicode for line breaking
This uses the xi-unicode crate by @raphlinus to detect line-break opportunities, replacing Servo's custom code that only detects ASCII whitespace. xi-unicode is licensed under the Apache-2.0 license.
See mbrubeck/servo#2 for some discussion on an earlier draft of this code. This PR implements the "search backward to find trailing whitespace" solution discussed there.
r? @pcwalton
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10913)
<!-- Reviewable:end -->
Replace character indices with UTF-8 byte offsets throughout the code dealing
with text shaping and breaking. This eliminates a lot of complexity when
converting from one to the other, and interoperates better with the rest of
the Rust ecosystem.
This is a no-op, since a "non-glyph" is simply `GlyphEntry(0)`. This is the
same as `GlyphEntry::initial()`, which all the entries are already initialized
to.