fix: don't preview font style for system fonts on Linux, closes #1015 (#1023)

This commit is contained in:
Huang Xin 2025-05-04 18:23:01 +08:00 committed by GitHub
parent 6b290f09f5
commit 4f6f45fe8a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 47 additions and 14 deletions

View file

@ -296,7 +296,11 @@ class NativeBridgePlugin(private val activity: Activity): Plugin(activity) {
.trim()
fontList.add(fontName)
}
ret.put("fonts", JSONArray(fontList))
var fontDict = JSObject()
for (fontName in fontList) {
fontDict.put(fontName, fontName)
}
ret.put("fonts", fontDict)
} catch (e: Exception) {
ret.put("error", e.message)
}

View file

@ -299,22 +299,24 @@ class NativeBridgePlugin: Plugin {
}
@objc public func get_sys_fonts_list(_ invoke: Invoke) throws {
var fontList: [String] = []
var fontDict: [String: String] = [:]
for family in UIFont.familyNames.sorted() {
if let localized = getLocalizedDisplayName(familyName: family) {
fontList.append(localized)
fontDict[family] = localized
} else {
let fontNames = UIFont.fontNames(forFamilyName: family)
if fontNames.isEmpty {
fontList.append(family)
fontDict[family] = family
} else {
fontList.append(contentsOf: fontNames)
for fontName in fontNames {
fontDict[fontName] = family
}
}
}
}
invoke.resolve(["fonts": fontList])
invoke.resolve(["fonts": fontDict])
}
@objc public func intercept_keys(_ invoke: Invoke) {

View file

@ -1,4 +1,5 @@
use serde::de::DeserializeOwned;
use std::collections::HashMap;
use tauri::{plugin::PluginApi, AppHandle, Runtime};
use crate::models::*;
@ -50,9 +51,9 @@ impl<R: Runtime> NativeBridge<R> {
pub fn get_sys_fonts_list(&self) -> crate::Result<GetSysFontsListResponse> {
let font_collection = font_enumeration::Collection::new().unwrap();
let mut fonts = Vec::new();
let mut fonts = HashMap::new();
for font in font_collection.all() {
fonts.push(font.font_name.clone());
fonts.insert(font.font_name.clone(), font.family_name.clone());
}
Ok(GetSysFontsListResponse { fonts, error: None })
}

View file

@ -1,4 +1,5 @@
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
@ -69,7 +70,7 @@ pub struct GetStatusBarHeightResponse {
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetSysFontsListResponse {
pub fonts: Vec<String>,
pub fonts: HashMap<String, String>,
pub error: Option<String>,
}