svg_img: Use system fonts to support CJK characters (#750)

| Before | After |
| - | - |
| <img width="528" alt="SCR-20250327-mpcz"
src="https://github.com/user-attachments/assets/22dc30ea-582a-4133-996a-90bcf8cb54be"
/> | <img width="535" alt="SCR-20250327-mnbv"
src="https://github.com/user-attachments/assets/5f360d17-8285-44d8-963b-17784c4c0eb5"
/> |
This commit is contained in:
Floyd Wang 2025-03-27 14:44:04 +08:00 committed by GitHub
parent aadcf4e1df
commit 9f103bac6f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 9 additions and 26 deletions

1
Cargo.lock generated
View file

@ -2661,7 +2661,6 @@ dependencies = [
"paste",
"regex",
"resvg",
"rust-embed",
"rust-i18n",
"serde",
"serde_json",

View file

@ -5,13 +5,12 @@ default-members = ["crates/story"]
resolver = "2"
[workspace.dependencies]
gpui = { git = "https://github.com/huacnlee/zed.git", branch = "webview" }
gpui-component = { path = "crates/ui" }
story = { path = "crates/story" }
gpui = { git = "https://github.com/huacnlee/zed.git", branch = "webview" }
anyhow = "1"
log = "0.4"
rust-embed = "8.5.0"
serde = "1.0.203"
serde_json = "1"
smallvec = "1"

View file

@ -11,14 +11,14 @@ chrono = "0.4"
fake = { version = "2.10.0", features = ["dummy"] }
gpui.workspace = true
gpui-component = { workspace = true, features = ["webview"] }
reqwest_client = { git = "https://github.com/huacnlee/zed.git", branch = "webview" }
rand = "0.8"
raw-window-handle = { version = "0.6", features = ["std"] }
regex = "1"
rust-embed.workspace = true
reqwest_client = { git = "https://github.com/huacnlee/zed.git", branch = "webview" }
rust-embed = "8.5.0"
serde = "1"
serde_json = "1"
unindent = "0.2.3"
raw-window-handle = { version = "0.6", features = ["std"] }
[lints]
workspace = true

View file

@ -5,7 +5,6 @@ use rust_embed::RustEmbed;
#[derive(RustEmbed)]
#[folder = "../../assets"]
#[include = "fonts/**/*"]
#[include = "icons/**/*"]
#[exclude = "*.DS_Store"]
pub struct Assets;

View file

@ -1,6 +1,6 @@
{
"border_radius": 8,
"font_family": "Noto Sans",
"font_family": "PingFang SC",
"height": 400,
"inner_radius": 30,
"legend_margin": {
@ -17,7 +17,7 @@
]
},
{
"name": "rose 2",
"name": "",
"data": [
38
]
@ -35,7 +35,7 @@
]
},
{
"name": "rose 5",
"name": "",
"data": [
28
]
@ -59,7 +59,7 @@
]
}
],
"sub_title_text": "Sub Title",
"sub_title_text": "副標題",
"theme": "light",
"title_text": "Nightingale Chart",
"type": "pie",

View file

@ -23,7 +23,6 @@ once_cell = "1.19.0"
paste = "1"
regex = "1"
resvg = { version = "0.45.0", default-features = false, features = ["text"] }
rust-embed.workspace = true
rust-i18n = "3"
serde = "1.0.203"
serde_json = "1"

View file

@ -78,16 +78,8 @@ pub use theme::*;
use std::ops::Deref;
use rust_embed::RustEmbed;
rust_i18n::i18n!("locales", fallback = "en");
#[derive(RustEmbed)]
#[folder = "./assets"]
#[include = "fonts/**/*"]
#[exclude = "*.DS_Store"]
pub struct Assets;
/// Initialize the UI module.
///
/// This must be called before using any of the UI components.

View file

@ -14,15 +14,10 @@ use smallvec::SmallVec;
use image::ImageBuffer;
use crate::Assets;
const SCALE: f32 = 2.;
const FONT_PATH: &str = "fonts/NotoSans-Regular.ttf";
static OPTIONS: LazyLock<usvg::Options> = LazyLock::new(|| {
let mut options = usvg::Options::default();
if let Some(font_data) = Assets::get(FONT_PATH).map(|f| f.data) {
options.fontdb_mut().load_font_data(font_data.into());
}
options.fontdb_mut().load_system_fonts();
options
});