Font/text rendering issue on online skia debugger

34 views
Skip to first unread message

Kiara Patani

unread,
Dec 17, 2025, 10:14:49 AM12/17/25
to skia-discuss
Hi team,

I am trying to load skp generated using  --enable-gpu-benchmarking --no-sandbox flags on chromium 142 version on online skia debugger. I found that no text/font is being rendered on the debugger. Later to debug this issue , I checked with previous versions of chromium and found that until chromium 134 we are able to see the fonts properly but when we check on chromium 136 , the fonts are missing. So maybe the issue is introduced from chromium 136 itself. Attaching the screenshot for reference. Is there any major change from skia chrome/m134 to chrome/m136 which related to fonts due to which we can't see the fonts on the debugger properly ?


skp generated with chromium 136/142- 
 
skp_chromium_136_or_142_font_issue.png 
  
skp generated with chromium 134-

skp_chromium_134_fonts_working.png

bungeman

unread,
Dec 17, 2025, 10:52:17 AM12/17/25
to skia-discuss
From the timeline, this is almost certainly due to Chromium moving from FreeType to Fontations. When deserializing an SkTypeface in SkTypeface::MakeDeserialize the matching typeface factory must be registered. However, it appears we don't have a Fontations (which is Rust) into wasm build? Looks like there is a similar issue opened at https://issues.skia.org/issues/397818456 .

Kiara Patani

unread,
Dec 22, 2025, 10:31:26 AM12/22/25
to skia-discuss
Hi,

Thanks for your response, since by default canvaskit is not being built with Fontations (which is rust) I tried to build it by setting `skia_use_fontations` flag to true in the skia.gni. But my build fails with below errors ->
Can you guide how can we try skia wasm build with fontations which will resolve this text rendering issue ?

wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.00.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.01.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.02.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.03.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.04.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.05.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.06.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.07.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.08.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.09.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.10.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.11.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.12.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.13.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.14.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.bridge_rust_side.dcc7a60f0a70cd24-cgu.15.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'bridge_rust_side.2so8d4qsuzt191z8wxhagwu8n.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'cxx.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'cxx-163731434.cxx.55ed92214923834d-cgu.0.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: libbridge_rust_side.a: archive member 'cxx-163731434.cxx.55ed92214923834d-cgu.1.rcgu.o' is neither Wasm object file nor LLVM bitcode
wasm-ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
em++: error: '/home/maint/emsdk/upstream/bin/wasm-ld -o ./canvaskit.wasm -lGL-webgl2-getprocaddr -lembind obj/modules/canvaskit/canvaskit.canvaskit_bindings.o obj/BUILD_DIR/modules/canvaskit/fonts/canvaskit.NotoMono-Regular.ttf.ninja.o obj/tools/sksltrace/canvaskit.SkSLTraceUtils.o libskia.a libbridge_rust_side.a -lc++-noexcept -L/home/maint/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten -L/home/maint/emsdk/upstream/emscripten/src/lib -lc_optz -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets --fatal-warnings -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmp2mgwa7e1libemscripten_js_symbols.so --import-undefined --strip-debug --export-if-defined=malloc --export-if-defined=free --export-if-defined=_emscripten_stack_alloc --export-if-defined=__getTypeName --export-if-defined=__wasm_call_ctors --export-if-defined=emscripten_stack_get_current --export-if-defined=_emscripten_stack_restore --export-if-defined=malloc --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-table -z stack-size=65536 --max-memory=2147483648 --initial-memory=8388608 --no-entry --table-base=1 --global-base=1024' failed (returned 1)

bungeman

unread,
Dec 22, 2025, 10:36:02 AM12/22/25
to skia-discuss
I started working on this with https://skia-review.git.corp.google.com/c/skia/+/1127896 but unfortunately the build system is not very cooperative. In particular main issue is the use of Bazel with rules-rust and the top level canvaskit / debugger builds (c++ side) being for emscripten, but the rust libraries appear to need to be compiled as wasm so they can be directly linked.
Reply all
Reply to author
Forward
0 new messages