This crate only takes care of fonts now as graphics related things are
split into other crates. In addition, this exposes data structures at
the top of the crate, hiding the implementation details and making it
simpler to import them.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
- Use a trait to make all conversions standard
- Alphabetize all enums so they are in a consistent order
- Remove some comments about unhandled which no longer apply after the
winit upgrade.
- Use the winit `Location` property to get the `keyboard_types`
Location instead of relying on the physical key.
This accomplishes two things:
1. Makes it easier to iterate through all inline formatting context
items.
2. Will make it possible to easily move back and forth through the tree
of inline boxes, in order to enable reordering and splitting inline
boxes on lines -- necessary for BiDi.
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>
This restores the behaviour prior to #32540 where the case where no
merge commit being found (which happens on CI in forks because we do
a shallow clone) is handled as if no changes where found.
Fixes#32550.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Instead of allocating the inline padding and border space on the line,
allocate it on the segment -- which where the inline box start goes.
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>
This is the first part of cleaning up unused WebRender resources.
Currently this only cleans up web font resources, but a more
full-featured implementation in the future could also clean up unused
system fonts.
Fixes#32345.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Use the `cargo-install` action to cache the cargo-deny output.
`cargo-deny` is currently unconditionally installed during bootstrap,
and takes around 2 minutes to install, so caching should give a
significant speedup
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
PR #32465 broke the lint because it initializes FileList with a
file name (./Cargo.lock). This causes it to always return an empty
list when the `only_changed_files` parameter is `False` since `os.walk`
requires a directory and not a file.
Fixes#32530.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This uses a pretty simple heuristic to select a font likely to contain
color emoji. In the future Servo should actually check if the font also
contains a color representation of the character in question. For now
the code assumes that when a font supports color glyphs of some kind and
supports the character in question at all, it supports the color
version.
This fixes support for rendering keycap emoji clusters such as 1️⃣ .
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Postfix PATH with android toolchain:
We only need to edit path for the linker specified
in the `.cargo/config.toml` to be found. Adding the
NDK clang to the end of PATH is sufficient for that.
Adding the NDK clang to the front can cause problems
however, since it causes the NDK `clang` to be
preferred over the system clang. This can cause
problems on some systems, where compiling
e.g. buildscripts for HOST subsequently fails.
* Prefix target compiler and compiler flags variables
with `TARGET_` so as not to influence compilation
for HOST targets.
* SET `CLANG_PATH` to avoid [bindgen #2682]
[bindgen #2682]: https://github.com/rust-lang/rust-bindgen/issues/2682
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* device lost promise should be init at creation of device object
* device lost impl
* lock for device poll
workaround for wgpu deadlocks
* expect
* Less lost reason reasoning in script
* Add ohos to mach
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Add OpenHarmony build to CI
* Rename ohos sdk action
I decided to rename the upstream ohos sdk action to
setup-ohos-sdk, making it clearer that is a github
action repository.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* Remove commented line
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
---------
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
DirectWrite APIs expect the bytes of table tags to be reversed when
reading them. Servo was doing this when loading font tables, but not all
of them. This led to shaping being broken on Windows. This fixes that
issue in a more comprehensive way and adds a comment to avoid this
failing in the future.
This is part of the switch from `winapi` to `windows-sys`. `windows-sys` is
maintained by Microsoft, so is more "official." More and more crates are
switching to it.
Disable some code for Windows, which is causing build warnings. When it
cannot be easily disabled (mainly for the incomplete BHM and sandbox
feature), allow dead code.
* Update WebIDL.py
* Update WebIDL.py
* Add builtin-array.patch
* Fix CodegenRust.py and Configuration.py
* Fix missing downcasts
* mach fmt
* Update check and comment to explain why we need this check
* Update Global of DissimilarOriginWindow.webidl
`#[cfg(target_os = "xxx")]` when used in build scripts checks which
platform the **build script** is compiled for - i.e. the Host OS.
Since ware interested in the actual target os, we need to read
`CARGO_CFG_TARGET_OS`, a value that is set at **runtime of the build
script**.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* servoshell: Move desktop files
Move files related to winit into a desktop module.
This is a preparation to merge the android and ohos apps into
servoshell.
* servoshell: Format imports
* servoshell: Move panic hook into separate file
* servoshell: Move desktop main
* Consider ohos as not desktop
* servoshell: Adjust dependencies for shared code
* servoshell: Remove native-bluetooth from default features
There currently is no good way to have target specific default features.
* Rename desktop_main.rs to cli.rs
* Remove todo
Instead of linebreaking inside each single-font text segment, linebreak
the entire inline formatting context at once. This has several benefits:
1. It allows us to use `icu_segmenter` (already in use from style),
which is written against a newer version of the Unicode spec --
preventing breaking emoji clusters.
2. Opens up the possibility of changing the way that linebreaking and
shaping work -- eventually allowing shaping across inline box
boundaries and line breaking *after* shaping.
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>