From 4b989704364a52448e039bf1ac9a81b9e5894820 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Oct 2022 10:39:08 -0600 Subject: [PATCH] Update default macOS fonts --- examples/text/src/font/fallback/macos.rs | 45 ++++++++++++++++++++++-- examples/text/src/font/fallback/unix.rs | 10 +++--- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/examples/text/src/font/fallback/macos.rs b/examples/text/src/font/fallback/macos.rs index 9f9822fd..5685c2d5 100644 --- a/examples/text/src/font/fallback/macos.rs +++ b/examples/text/src/font/fallback/macos.rs @@ -5,40 +5,81 @@ pub fn common_fallback() -> &'static [&'static str] { &[ ".SF NS", "Apple Color Emoji", + "Geneva", + "Arial Unicode MS", ] } // Fallbacks to never use pub fn forbidden_fallback() -> &'static [&'static str] { - &[] + &[ + ".LastResort", + ] +} + +fn han_unification(locale: &str) -> &'static [&'static str] { + match locale { + // Japan + "ja" => &["Hiragino Sans"], + // Korea + "ko" => &["Apple SD Gothic Neo"], + // Hong Kong + "zh-HK" => &["PingFang HK"], + // Taiwan + "zh-TW" => &["PingFang TC"], + // Simplified Chinese is the default (also catches "zh-CN" for China) + _ => &["PingFang SC"], + } } // Fallbacks to use per script pub fn script_fallback(script: &Script, locale: &str) -> &'static [&'static str] { //TODO: abstract style (sans/serif/monospaced) + //TODO: pull more data from about:config font.name-list.sans-serif in Firefox match script { Script::Adlam => &["Noto Sans Adlam"], + Script::Arabic => &["Geeza Pro"], Script::Armenian => &["Noto Sans Armenian"], + Script::Bengali => &["Bangla Sangam MN"], Script::Buhid => &["Noto Sans Buhid"], + Script::Canadian_Aboriginal => &["Euphemia UCAS"], Script::Chakma => &["Noto Sans Chakma"], + Script::Devanagari => &["Devanagari Sangam MN"], + Script::Ethiopic => &["Kefa"], Script::Gothic => &["Noto Sans Gothic"], + Script::Grantha => &["Grantha Sangam MN"], + Script::Gujarati => &["Gujarati Sangam MN"], + Script::Gurmukhi => &["Gurmukhi Sangam MN"], + Script::Han => han_unification(locale), + Script::Hangul => han_unification("ko"), Script::Hanunoo => &["Noto Sans Hanunoo"], + Script::Hebrew => &["Arial"], + Script::Hiragana => han_unification("ja"), Script::Javanese => &["Noto Sans Javanese"], Script::Kannada => &["Noto Sans Kannada"], + Script::Katakana => han_unification("ja"), + Script::Khmer => &["Khmer Sangam MN"], + Script::Lao => &["Lao Sangam MN"], + Script::Malayalam => &["Malayalam Sangam MN"], Script::Mongolian => &["Noto Sans Mongolian"], Script::Myanmar => &["Noto Sans Myanmar"], Script::Oriya => &["Noto Sans Oriya"], + Script::Sinhala => &["Sinhala Sangam MN"], Script::Syriac => &["Noto Sans Syriac"], Script::Tagalog => &["Noto Sans Tagalog"], Script::Tagbanwa => &["Noto Sans Tagbanwa"], Script::Tai_Le => &["Noto Sans Tai Le"], Script::Tai_Tham => &["Noto Sans Tai Tham"], Script::Tai_Viet => &["Noto Sans Tai Viet"], + Script::Tamil => &["InaiMathi"], + Script::Telugu => &["Telugu Sangam MN"], Script::Thaana => &["Noto Sans Thaana"], + Script::Thai => &["Ayuthaya"], + Script::Tibetan => &["Kailasa"], Script::Tifinagh => &["Noto Sans Tifinagh"], Script::Vai => &["Noto Sans Vai"], //TODO: Use han_unification? - Script::Yi => &["Noto Sans Yi"], + Script::Yi => &["Noto Sans Yi", "PingFang SC"], _ => &[], } } diff --git a/examples/text/src/font/fallback/unix.rs b/examples/text/src/font/fallback/unix.rs index a68b8fc8..106af23b 100644 --- a/examples/text/src/font/fallback/unix.rs +++ b/examples/text/src/font/fallback/unix.rs @@ -24,13 +24,11 @@ fn han_unification(locale: &str) -> &'static [&'static str] { "ja" => &["Noto Sans CJK JA"], // Korea "ko" => &["Noto Sans CJK KR"], - // China - "zh-CN" => &["Noto Sans CJK SC"], // Hong Kong "zh-HK" => &["Noto Sans CJK HK"], // Taiwan "zh-TW" => &["Noto Sans CJK TC"], - // Simplified Chinese is the default + // Simplified Chinese is the default (also catches "zh-CN" for China) _ => &["Noto Sans CJK SC"], } } @@ -50,19 +48,19 @@ pub fn script_fallback(script: &Script, locale: &str) -> &'static [&'static str] Script::Deseret => &["Noto Sans Deseret"], Script::Devanagari => &["Noto Sans Devanagari"], Script::Ethiopic => &["Noto Sans Ethiopic"], - Script::Hangul => &["Noto Sans CJK KR"], Script::Georgian => &["Noto Sans Georgian"], Script::Gothic => &["Noto Sans Gothic"], Script::Grantha => &["Noto Sans Grantha"], Script::Gujarati => &["Noto Sans Gujarati"], Script::Gurmukhi => &["Noto Sans Gurmukhi"], Script::Han => han_unification(locale), + Script::Hangul => han_unification("ko"), Script::Hanunoo => &["Noto Sans Hanunoo"], Script::Hebrew => &["Noto Sans Hebrew"], - Script::Hiragana => &["Noto Sans CJK JP"], + Script::Hiragana => han_unification("ja"), Script::Javanese => &["Noto Sans Javanese"], Script::Kannada => &["Noto Sans Kannada"], - Script::Katakana => &["Noto Sans CJK JP"], + Script::Katakana => han_unification("ja"), Script::Khmer => &["Noto Sans Khmer"], Script::Lao => &["Noto Sans Lao"], Script::Malayalam => &["Noto Sans Malayalam"],