Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
6b60ca1
Integrate harfrust for OpenType text shaping in epaint
gcailly Mar 25, 2026
7020573
Add test_gpos_kerning to verify OpenType GPOS kerning
gcailly Mar 25, 2026
fc9ac39
Fix duplicated docstring and symmetrize BEGINNING_OF_TEXT flag
gcailly Mar 25, 2026
96b370e
Fix NOTDEF fallback using wrong font face and reset cluster tracking …
gcailly Mar 26, 2026
c5cb18f
Clean up docstrings: GlyphAllocation.id, shaper y_offset, segment_int…
gcailly Mar 26, 2026
8a88f7c
Apply cargo fmt formatting fixes
gcailly Mar 26, 2026
1251c6d
Update snapshot tests from CI artifacts
gcailly Mar 26, 2026
4ec3260
Merge main (v0.34.0) into feat/harfrust-text-shaping
gcailly Mar 26, 2026
7bec43f
Update snapshot tests after merge with v0.34.0
gcailly Mar 26, 2026
24154bf
Update image_kerning snapshots (GPOS kerning changes positioning)
gcailly Mar 26, 2026
8b5dafb
Update menu snapshots (text shaping affects menu layout)
gcailly Mar 26, 2026
f3d60d3
Update masking and tooltip snapshots
gcailly Mar 26, 2026
d712e63
Update text_edit_delay snapshots
gcailly Mar 26, 2026
37372f9
Update all remaining egui_tests snapshots
gcailly Mar 26, 2026
2e91a88
Update rotated_rect and rotated_ellipse snapshots
gcailly Mar 26, 2026
50d820c
Update sides and remaining egui_tests snapshots
gcailly Mar 26, 2026
61cd937
Fix text_edit_delay snapshots (lost during earlier reset)
gcailly Mar 26, 2026
04da440
Update test_atoms snapshots (lost during earlier reset)
gcailly Mar 26, 2026
9ce6fa0
Fix rotated_rect and rotated_ellipse snapshots
gcailly Mar 26, 2026
d9b4778
Update sides snapshots from CI artifacts
gcailly Mar 26, 2026
65e37c9
Update layout and visuals snapshots from CI
gcailly Mar 26, 2026
3f65ee8
Force-update all remaining snapshots (Windows-generated)
gcailly Mar 26, 2026
fecea18
Update Bézier Curve snapshot from CI
gcailly Mar 26, 2026
4a37a07
Update should_wait_for_images snapshot from CI
gcailly Mar 26, 2026
210b54a
Fix tab character advance width after harfrust shaping
gcailly Mar 27, 2026
b2d549c
Refactor allocate_glyph_by_id to use ShapedGlyph struct
gcailly Mar 27, 2026
c7ce4ee
Bump vello_cpu 0.0.6 → 0.0.7 and update snapshots
gcailly Mar 28, 2026
bde3294
Update Bézier Curve snapshot after harfrust integration
gcailly Mar 28, 2026
e080e0d
Remove the old pair_kerning path
emilk Mar 28, 2026
2b275d4
Sort dependencies
emilk Mar 28, 2026
c340d2f
Deduplicate code
emilk Mar 28, 2026
23ae8fd
Move layout-related code into text_layout.rs
emilk Mar 28, 2026
b03d81f
Simplify `layout_section`
emilk Mar 28, 2026
cb6e912
cleanup
emilk Mar 28, 2026
cc560ac
cleanup
emilk Mar 28, 2026
1e259d7
refactor
emilk Mar 28, 2026
83c0365
Simplify advance_width
emilk Mar 28, 2026
6c5b544
cleanup
emilk Mar 28, 2026
b14ed8b
Simplify
emilk Mar 28, 2026
73a1f01
Fix broken doc link to segment_into_runs
gcailly Mar 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 69 additions & 27 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -625,9 +625,9 @@ checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"

[[package]]
name = "bytemuck"
version = "1.24.0"
version = "1.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
dependencies = [
"bytemuck_derive",
]
Expand Down Expand Up @@ -1273,7 +1273,7 @@ dependencies = [
"epaint",
"log",
"profiling",
"thiserror 2.0.17",
"thiserror 2.0.18",
"type-map",
"web-time",
"wgpu",
Expand Down Expand Up @@ -1548,6 +1548,7 @@ dependencies = [
"emath",
"epaint_default_fonts",
"font-types",
"harfrust",
"log",
"mimalloc",
"nohash-hasher",
Expand All @@ -1559,6 +1560,8 @@ dependencies = [
"similar-asserts",
"skrifa",
"smallvec",
"unicode-general-category",
"unicode-segmentation",
"vello_cpu",
]

Expand Down Expand Up @@ -1590,9 +1593,9 @@ checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f"

[[package]]
name = "euclid"
version = "0.22.11"
version = "0.22.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48"
checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
dependencies = [
"num-traits",
]
Expand Down Expand Up @@ -1666,12 +1669,9 @@ dependencies = [

[[package]]
name = "fearless_simd"
version = "0.3.0"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903"
dependencies = [
"bytemuck",
]
checksum = "76258897e51fd156ee03b6246ea53f3e0eb395d0b327e9961c4fc4c8b2fa151a"

[[package]]
name = "file_dialog"
Expand Down Expand Up @@ -1724,9 +1724,9 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"

[[package]]
name = "font-types"
version = "0.11.0"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1e4d2d0cf79d38430cc9dc9aadec84774bff2e1ba30ae2bf6c16cfce9385a23"
checksum = "73829a7b5c91198af28a99159b7ae4afbb252fb906159ff7f189f3a2ceaa3df2"
dependencies = [
"bytemuck",
"serde",
Expand Down Expand Up @@ -2002,7 +2002,7 @@ dependencies = [
"hashbrown 0.16.1",
"log",
"presser",
"thiserror 2.0.17",
"thiserror 2.0.18",
"windows",
]

Expand All @@ -2026,6 +2026,15 @@ dependencies = [
"bitflags 2.9.4",
]

[[package]]
name = "guillotiere"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b17e70c989c36bad147b27a58d148c0741c51448aa5653436547323e524d0ab"
dependencies = [
"euclid",
]

[[package]]
name = "half"
version = "2.6.0"
Expand All @@ -2037,6 +2046,19 @@ dependencies = [
"num-traits",
]

[[package]]
name = "harfrust"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9"
dependencies = [
"bitflags 2.9.4",
"bytemuck",
"core_maths",
"read-fonts",
"smallvec",
]

[[package]]
name = "hashbrown"
version = "0.15.2"
Expand Down Expand Up @@ -2692,7 +2714,7 @@ dependencies = [
"once_cell",
"rustc-hash 1.1.0",
"spirv",
"thiserror 2.0.17",
"thiserror 2.0.18",
"unicode-ident",
]

Expand Down Expand Up @@ -3698,6 +3720,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5"
dependencies = [
"bytemuck",
"core_maths",
"font-types",
]

Expand Down Expand Up @@ -3727,7 +3750,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
dependencies = [
"getrandom 0.2.17",
"libredox",
"thiserror 2.0.17",
"thiserror 2.0.18",
]

[[package]]
Expand Down Expand Up @@ -4302,7 +4325,7 @@ dependencies = [
"serde",
"serde_derive",
"serde_json",
"thiserror 2.0.17",
"thiserror 2.0.18",
"walkdir",
"yaml-rust",
]
Expand Down Expand Up @@ -4389,11 +4412,11 @@ dependencies = [

[[package]]
name = "thiserror"
version = "2.0.17"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
dependencies = [
"thiserror-impl 2.0.17",
"thiserror-impl 2.0.18",
]

[[package]]
Expand All @@ -4409,9 +4432,9 @@ dependencies = [

[[package]]
name = "thiserror-impl"
version = "2.0.17"
version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
dependencies = [
"proc-macro2",
"quote",
Expand Down Expand Up @@ -4676,6 +4699,12 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e"

[[package]]
name = "unicode-general-category"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f"

[[package]]
name = "unicode-ident"
version = "1.0.24"
Expand Down Expand Up @@ -4842,29 +4871,42 @@ dependencies = [
"wasm-bindgen",
]

[[package]]
name = "vello_api"
version = "0.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5088cd0113bc5332c753f24503825e3bc93e26c7883c9dc3ad9637bb62c4634"
dependencies = [
"bytemuck",
"peniko",
]

[[package]]
name = "vello_common"
version = "0.0.6"
version = "0.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bd1a4c633ce09e7d713df1a6e036644a125e15e0c169cfb5180ddf5836ca04b"
checksum = "986dc49a501a683477614bf07b8e7b6c79ae4828efce3bf22e51850f4a0a8a4c"
dependencies = [
"bytemuck",
"fearless_simd",
"guillotiere",
"hashbrown 0.16.1",
"log",
"peniko",
"skrifa",
"smallvec",
"thiserror 2.0.18",
]

[[package]]
name = "vello_cpu"
version = "0.0.6"
version = "0.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0162bfe48aabf6a9fdcd401b628c7d9f260c2cbabb343c70a65feba6f7849edc"
checksum = "a678f91c7524a3a9ac9a19df9f83552866ec70b2ca26441b916a6b219b6aa2de"
dependencies = [
"bytemuck",
"hashbrown 0.16.1",
"vello_api",
"vello_common",
]

Expand Down Expand Up @@ -5172,7 +5214,7 @@ dependencies = [
"raw-window-handle",
"rustc-hash 1.1.0",
"smallvec",
"thiserror 2.0.17",
"thiserror 2.0.18",
"wgpu-core-deps-apple",
"wgpu-core-deps-emscripten",
"wgpu-core-deps-wasm",
Expand Down Expand Up @@ -5261,7 +5303,7 @@ dependencies = [
"raw-window-metal",
"renderdoc-sys",
"smallvec",
"thiserror 2.0.17",
"thiserror 2.0.18",
"wasm-bindgen",
"wayland-sys",
"web-sys",
Expand Down
4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ font-types = { version = "0.11.0", default-features = false, features = ["std"]
glow = "0.17.0"
glutin = { version = "0.32.3", default-features = false }
glutin-winit = { version = "0.5.0", default-features = false }
harfrust = "0.5.2"
home = "0.5.9"
image = { version = "0.25.6", default-features = false }
jiff = { version = "0.2.23", default-features = false }
Expand Down Expand Up @@ -136,8 +137,9 @@ tokio = "1.49"
toml = {version = "1.0.0", default-features = false }
type-map = "0.5.1"
unicode_names2 = { version = "2.0.0", default-features = false }
unicode-general-category = "1.1.0"
unicode-segmentation = "1.12.0"
vello_cpu = { version = "0.0.6", default-features = false, features = ["std", "u8_pipeline", "f32_pipeline"] }
vello_cpu = { version = "0.0.7", default-features = false, features = ["std", "u8_pipeline", "f32_pipeline"] }
wasm-bindgen = "0.2.108" # Keep wasm-bindgen version in sync in: setup_web.sh, Cargo.toml, Cargo.lock, rust.yml. Don't update this spuriously, because of https://github.com/rerun-io/rerun/issues/8766
wasm-bindgen-futures = "0.4.58"
wayland-cursor = { version = "0.31.11", default-features = false }
Expand Down
4 changes: 2 additions & 2 deletions crates/egui_demo_app/tests/snapshots/clock.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_app/tests/snapshots/custom3d.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_app/tests/snapshots/easymarkeditor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_app/tests/snapshots/imageviewer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Bézier Curve.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Clipboard Test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Code Editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Code Example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Cursor Test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Drag and Drop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Extra Viewport.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Font Book.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Frame.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Grid Test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Highlighting.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/ID Test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions crates/egui_demo_lib/tests/snapshots/demos/Input Test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading