Remove special handling of Noto fonts (#3388)

This commit is contained in:
Peng Guanwen 2024-02-21 17:14:22 +08:00 committed by GitHub
parent f54d68daff
commit 23756f9e8b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 93 additions and 9 deletions

View File

@ -220,17 +220,9 @@ impl FontInfo {
// So, instead we use Name ID 1 "Family" and trim many common // So, instead we use Name ID 1 "Family" and trim many common
// suffixes for which know that they just describe styling (e.g. // suffixes for which know that they just describe styling (e.g.
// "ExtraBold"). // "ExtraBold").
//
// Also, for Noto fonts we use Name ID 4 "Full Name" instead,
// because Name ID 1 "Family" sometimes contains "Display" and
// sometimes doesn't for the Display variants and that mixes things
// up.
let family = let family =
exception.and_then(|c| c.family.map(str::to_string)).or_else(|| { exception.and_then(|c| c.family.map(str::to_string)).or_else(|| {
let mut family = find_name(ttf, name_id::FAMILY)?; let family = find_name(ttf, name_id::FAMILY)?;
if family.starts_with("Noto") {
family = find_name(ttf, name_id::FULL_NAME)?;
}
Some(typographic_family(&family).to_string()) Some(typographic_family(&family).to_string())
})?; })?;

View File

@ -48,6 +48,97 @@ static EXCEPTION_MAP: phf::Map<&'static str, Exception> = phf::phf_map! {
// See https://corefonts.sourceforge.net/. // See https://corefonts.sourceforge.net/.
"Arial-Black" => Exception::new() "Arial-Black" => Exception::new()
.weight(900), .weight(900),
// Noto fonts
"NotoNaskhArabicUISemi-Bold" => Exception::new()
.family("Noto Naskh Arabic UI")
.weight(600),
"NotoSansSoraSompengSemi-Bold" => Exception::new()
.family("Noto Sans Sora Sompeng")
.weight(600),
"NotoSans-DisplayBlackItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedBlackItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedBold" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedExtraBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedExtraLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedMediumItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedSemiBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayCondensedThinItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedBlackItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedBold" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedExtraBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedExtraLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedMediumItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedSemiBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraCondensedThinItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayExtraLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayMediumItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedBlackItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedBold" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedExtraBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedExtraLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedLightItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedMediumItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedSemiBoldItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplaySemiCondensedThinItalic" => Exception::new()
.family("Noto Sans Display"),
"NotoSans-DisplayThinItalic" => Exception::new()
.family("Noto Sans Display"),
// The following three postscript names are only used in the version 2.007
// of the Noto Sans font. Other versions, while have different postscript
// name, happen to have correct metadata.
"NotoSerif-DisplayCondensedBold" => Exception::new()
.family("Noto Serif Display"),
"NotoSerif-DisplayExtraCondensedBold" => Exception::new()
.family("Noto Serif Display"),
"NotoSerif-DisplaySemiCondensedBold" => Exception::new()
.family("Noto Serif Display"),
// New Computer Modern
"NewCM08-Book" => Exception::new() "NewCM08-Book" => Exception::new()
.family("New Computer Modern 08") .family("New Computer Modern 08")
.weight(450), .weight(450),
@ -131,6 +222,7 @@ static EXCEPTION_MAP: phf::Map<&'static str, Exception> = phf::phf_map! {
.weight(450), .weight(450),
"NewCMUncial10-Regular" => Exception::new() "NewCMUncial10-Regular" => Exception::new()
.family("New Computer Modern Uncial"), .family("New Computer Modern Uncial"),
// Latin Modern
"LMMono8-Regular" => Exception::new() "LMMono8-Regular" => Exception::new()
.family("Latin Modern Mono 8"), .family("Latin Modern Mono 8"),
"LMMono9-Regular" => Exception::new() "LMMono9-Regular" => Exception::new()