[PATCH 0/2] MR10630: gdi32/uniscribe: Update fallback fonts to use Noto fonts.
This aligns uniscribe with dwrite behaviour and ensures better out of the box experience for systems where Microsoft fonts are typically unavailable. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27641 Regarding the "Update the script tag for Tamil" commit, the proper solution would be to mimic dwrite and use an array for the script tags and adjust the functions accordingly. I did not do this in the hope that in the future both uniscribe and dwrite will utilise Harfbuzz. This would fix a lot more issues including this. The current solution is a band-aid, so that atleast the tests pass and the font is visible when typed. The updated tests will be in a separate MR. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10630
From: समीर सिंह Sameer Singh <lumarzeli30@gmail.com> This aligns uniscribe with dwrite behaviour and ensures better out of the box experience for systems where Microsoft fonts are typically unavailable. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27641 --- dlls/gdi32/uniscribe/usp10.c | 120 +++++++++++++++++------------------ 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/dlls/gdi32/uniscribe/usp10.c b/dlls/gdi32/uniscribe/usp10.c index 43afbaac125..d8d107ec597 100644 --- a/dlls/gdi32/uniscribe/usp10.c +++ b/dlls/gdi32/uniscribe/usp10.c @@ -329,13 +329,13 @@ const scriptData scriptInformation[] = { MS_MAKE_TAG('h','e','b','r'), L"Microsoft Sans Serif"}, {{Script_Syriac, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_SYRIAC, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 1, 0}, - MS_MAKE_TAG('s','y','r','c'), L"Estrangelo Edessa"}, + MS_MAKE_TAG('s','y','r','c'), L"Noto Sans Syriac"}, {{Script_Persian, 0, 1, 0, 0, 0, 0, { 2,0,0,0,0,0,0,0,0,0,0}}, {LANG_PERSIAN, 1, 1, 0, 0, ARABIC_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, MS_MAKE_TAG('a','r','a','b'), L"Microsoft Sans Serif"}, {{Script_Thaana, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {LANG_DIVEHI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','h','a','a'), L"MV Boli"}, + MS_MAKE_TAG('t','h','a','a'), L"Noto Sans Thaana"}, {{Script_Greek, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GREEK, 0, 0, 0, 0, GREEK_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, MS_MAKE_TAG('g','r','e','k'), L"Microsoft Sans Serif"}, @@ -344,22 +344,22 @@ const scriptData scriptInformation[] = { MS_MAKE_TAG('c','y','r','l'), L"Microsoft Sans Serif"}, {{Script_Armenian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ARMENIAN, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('a','r','m','n'), L"Sylfaen"}, + MS_MAKE_TAG('a','r','m','n'), L"Noto Sans Armenian"}, {{Script_Georgian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GEORGIAN, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('g','e','o','r'), L"Sylfaen"}, + MS_MAKE_TAG('g','e','o','r'), L"Noto Sans Georgian"}, {{Script_Sinhala, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_SINHALESE, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('s','i','n','h'), L"Iskoola Pota"}, + MS_MAKE_TAG('s','i','n','h'), L"Noto Sans Sinhala"}, {{Script_Tibetan, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TIBETAN, 0, 1, 1, 1, DEFAULT_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('t','i','b','t'), L"Microsoft Himalaya"}, + MS_MAKE_TAG('t','i','b','t'), L"Noto Serif Tibetan"}, {{Script_Tibetan_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TIBETAN, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','i','b','t'), L"Microsoft Himalaya"}, + MS_MAKE_TAG('t','i','b','t'), L"Noto Serif Tibetan"}, {{Script_Phags_pa, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MONGOLIAN, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('p','h','a','g'), L"Microsoft PhagsPa"}, + MS_MAKE_TAG('p','h','a','g'), L"Noto Sans PhagsPa"}, {{Script_Thai, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_THAI, 0, 1, 1, 1, THAI_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 1}, MS_MAKE_TAG('t','h','a','i'), L"Microsoft Sans Serif"}, @@ -368,70 +368,70 @@ const scriptData scriptInformation[] = { MS_MAKE_TAG('t','h','a','i'), L"Microsoft Sans Serif"}, {{Script_Lao, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_LAO, 0, 1, 1, 1, DEFAULT_CHARSET, 0, 0, 1, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('l','a','o',' '), L"DokChampa"}, + MS_MAKE_TAG('l','a','o',' '), L"Noto Sans Lao"}, {{Script_Lao_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_LAO, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('l','a','o',' '), L"DokChampa"}, + MS_MAKE_TAG('l','a','o',' '), L"Noto Sans Lao"}, {{Script_Devanagari, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_HINDI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('d','e','v','a'), L"Mangal"}, + MS_MAKE_TAG('d','e','v','a'), L"Noto Sans Devanagari"}, {{Script_Devanagari_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_HINDI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('d','e','v','a'), L"Mangal"}, + MS_MAKE_TAG('d','e','v','a'), L"Noto Sans Devanagari"}, {{Script_Bengali, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_BENGALI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('b','e','n','g'), L"Vrinda"}, + MS_MAKE_TAG('b','e','n','g'), L"Noto Sans Bengali"}, {{Script_Bengali_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_BENGALI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('b','e','n','g'), L"Vrinda"}, + MS_MAKE_TAG('b','e','n','g'), L"Noto Sans Bengali"}, {{Script_Bengali_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_BENGALI, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('b','e','n','g'), L"Vrinda"}, + MS_MAKE_TAG('b','e','n','g'), L"Noto Sans Bengali"}, {{Script_Gurmukhi, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_PUNJABI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','r','u'), L"Raavi"}, + MS_MAKE_TAG('g','u','r','u'), L"Noto Sans Gurmukhi"}, {{Script_Gurmukhi_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_PUNJABI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','r','u'), L"Raavi"}, + MS_MAKE_TAG('g','u','r','u'), L"Noto Sans Gurmukhi"}, {{Script_Gujarati, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GUJARATI, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','j','r'), L"Shruti"}, + MS_MAKE_TAG('g','u','j','r'), L"Noto Sans Gujarati"}, {{Script_Gujarati_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GUJARATI, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','j','r'), L"Shruti"}, + MS_MAKE_TAG('g','u','j','r'), L"Noto Sans Gujarati"}, {{Script_Gujarati_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_GUJARATI, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('g','u','j','r'), L"Shruti"}, + MS_MAKE_TAG('g','u','j','r'), L"Noto Sans Gujarati"}, {{Script_Oriya, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ORIYA, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('o','r','y','a'), L"Kalinga"}, + MS_MAKE_TAG('o','r','y','a'), L"Noto Sans Oriya"}, {{Script_Oriya_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ORIYA, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('o','r','y','a'), L"Kalinga"}, + MS_MAKE_TAG('o','r','y','a'), L"Noto Sans Oriya"}, {{Script_Tamil, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TAMIL, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','m','l'), L"Latha"}, + MS_MAKE_TAG('t','a','m','l'), L"Noto Sans Tamil"}, {{Script_Tamil_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TAMIL, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','m','l'), L"Latha"}, + MS_MAKE_TAG('t','a','m','l'), L"Noto Sans Tamil"}, {{Script_Telugu, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TELUGU, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('t','e','l','u'), L"Gautami"}, + MS_MAKE_TAG('t','e','l','u'), L"Noto Sans Telugu"}, {{Script_Telugu_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TELUGU, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','e','l','u'), L"Gautami"}, + MS_MAKE_TAG('t','e','l','u'), L"Noto Sans Telugu"}, {{Script_Kannada, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_KANNADA, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('k','n','d','a'), L"Tunga"}, + MS_MAKE_TAG('k','n','d','a'), L"Noto Sans Kannada"}, {{Script_Kannada_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_KANNADA, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('k','n','d','a'), L"Tunga"}, + MS_MAKE_TAG('k','n','d','a'), L"Noto Sans Kannada"}, {{Script_Malayalam, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MALAYALAM, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('m','l','y','m'), L"Kartika"}, + MS_MAKE_TAG('m','l','y','m'), L"Noto Sans Malayalam"}, {{Script_Malayalam_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MALAYALAM, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('m','l','y','m'), L"Kartika"}, + MS_MAKE_TAG('m','l','y','m'), L"Noto Sans Malayalam"}, {{Script_Diacritical, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 1, 0, 1, ANSI_CHARSET, 0, 0, 0, 0, 0, 1, 1, 0, 0}, 0x00000000, L""}, @@ -443,82 +443,82 @@ const scriptData scriptInformation[] = { 0x00000000, L""}, {{Script_Myanmar, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x55, 0, 1, 1, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('m','y','m','r'), L"Myanmar Text"}, + MS_MAKE_TAG('m','y','m','r'), L"Noto Sans Myanmar"}, {{Script_Myanmar_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x55, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('m','y','m','r'), L""}, + MS_MAKE_TAG('m','y','m','r'), L"Noto Sans Myanmar"}, {{Script_Tai_Le, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','l','e'), L"Microsoft Tai Le"}, + MS_MAKE_TAG('t','a','l','e'), L"Noto Sans Tai Le"}, {{Script_New_Tai_Lue, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','l','u'), L"Microsoft New Tai Lue"}, + MS_MAKE_TAG('t','a','l','u'), L"Noto Sans New Tai Lue"}, {{Script_New_Tai_Lue_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','l','u'), L"Microsoft New Tai Lue"}, + MS_MAKE_TAG('t','a','l','u'), L"Noto Sans New Tai Lue"}, {{Script_Khmer, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x53, 0, 1, 1, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('k','h','m','r'), L"DaunPenh"}, + MS_MAKE_TAG('k','h','m','r'), L"Noto Sans Khmer"}, {{Script_Khmer_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x53, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('k','h','m','r'), L"DaunPenh"}, + MS_MAKE_TAG('k','h','m','r'), L"Noto Sans Khmer"}, {{Script_CJK_Han, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('h','a','n','i'), L"SimSun"}, + MS_MAKE_TAG('h','a','n','i'), L"Noto Sans CJK SC"}, {{Script_Ideograph, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('h','a','n','i'), L""}, + MS_MAKE_TAG('h','a','n','i'), L"Noto Sans CJK SC"}, {{Script_Bopomofo, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('b','o','p','o'), L""}, + MS_MAKE_TAG('b','o','p','o'), L"Noto Sans CJK SC"}, {{Script_Kana, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('k','a','n','a'), L"SimSun"}, + MS_MAKE_TAG('k','a','n','a'), L"Noto Sans CJK JP"}, {{Script_Hangul, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_KOREAN, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('h','a','n','g'), L""}, + MS_MAKE_TAG('h','a','n','g'), L"Noto Sans CJK KR"}, {{Script_Yi, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, - MS_MAKE_TAG('y','i',' ',' '), L"Microsoft Yi Baiti"}, + MS_MAKE_TAG('y','i',' ',' '), L"Noto Sans Yi"}, {{Script_Ethiopic, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x5e, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('e','t','h','i'), L"Nyala"}, + MS_MAKE_TAG('e','t','h','i'), L"Noto Sans Ethiopic"}, {{Script_Ethiopic_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x5e, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('e','t','h','i'), L"Nyala"}, + MS_MAKE_TAG('e','t','h','i'), L"Noto Sans Ethiopic"}, {{Script_Mongolian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MONGOLIAN, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('m','o','n','g'), L"Mongolian Baiti"}, + MS_MAKE_TAG('m','o','n','g'), L"Noto Sans Mongolian"}, {{Script_Mongolian_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_MONGOLIAN, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('m','o','n','g'), L"Mongolian Baiti"}, + MS_MAKE_TAG('m','o','n','g'), L"Noto Sans Mongolian"}, {{Script_Tifinagh, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','f','n','g'), L"Ebrima"}, + MS_MAKE_TAG('t','f','n','g'), L"Noto Sans Tifinagh"}, {{Script_NKo, 1, 1, 0, 0, 0, 0, { 1,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('n','k','o',' '), L"Ebrima"}, + MS_MAKE_TAG('n','k','o',' '), L"Noto Sans NKo"}, {{Script_Vai, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('v','a','i',' '), L"Ebrima"}, + MS_MAKE_TAG('v','a','i',' '), L"Noto Sans Vai"}, {{Script_Vai_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('v','a','i',' '), L"Ebrima"}, + MS_MAKE_TAG('v','a','i',' '), L"Noto Sans Vai"}, {{Script_Cherokee, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x5c, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('c','h','e','r'), L"Plantagenet Cherokee"}, + MS_MAKE_TAG('c','h','e','r'), L"Noto Sans Cherokee"}, {{Script_Canadian, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0x5d, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('c','a','n','s'), L"Euphemia"}, + MS_MAKE_TAG('c','a','n','s'), L"Noto Sans Canadian Aboriginal"}, {{Script_Ogham, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('o','g','a','m'), L"Segoe UI Symbol"}, + MS_MAKE_TAG('o','g','a','m'), L"Noto Sans Ogham"}, {{Script_Runic, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('r','u','n','r'), L"Segoe UI Symbol"}, + MS_MAKE_TAG('r','u','n','r'), L"Noto Sans Runic"}, {{Script_Braille, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('b','r','a','i'), L"Segoe UI Symbol"}, + MS_MAKE_TAG('b','r','a','i'), L"Noto Sans Symbols 2"}, {{Script_Surrogates, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_ENGLISH, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 1, 0, 0}, 0x00000000, L""}, @@ -527,16 +527,16 @@ const scriptData scriptInformation[] = { 0x00000000, L""}, {{Script_Deseret, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('d','s','r','t'), L"Segoe UI Symbol"}, + MS_MAKE_TAG('d','s','r','t'), L"Noto Sans Deseret"}, {{Script_Osmanya, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('o','s','m','a'), L"Ebrima"}, + MS_MAKE_TAG('o','s','m','a'), L"Noto Sans Osmanya"}, {{Script_Osmanya_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('o','s','m','a'), L"Ebrima"}, + MS_MAKE_TAG('o','s','m','a'), L"Noto Sans Osmanya"}, {{Script_MathAlpha, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {0, 0, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('m','a','t','h'), L"Cambria Math"}, + MS_MAKE_TAG('m','a','t','h'), L"Noto Sans Math"}, {{Script_Hebrew_Currency, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_HEBREW, 0, 1, 0, 0, HEBREW_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, MS_MAKE_TAG('h','e','b','r'), L"Microsoft Sans Serif"}, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10630
From: समीर सिंह Sameer Singh <lumarzeli30@gmail.com> This will allow the fallback font for Tamil to be correctly displayed. --- dlls/gdi32/uniscribe/usp10.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/gdi32/uniscribe/usp10.c b/dlls/gdi32/uniscribe/usp10.c index d8d107ec597..57ddc2797ef 100644 --- a/dlls/gdi32/uniscribe/usp10.c +++ b/dlls/gdi32/uniscribe/usp10.c @@ -410,10 +410,10 @@ const scriptData scriptInformation[] = { MS_MAKE_TAG('o','r','y','a'), L"Noto Sans Oriya"}, {{Script_Tamil, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TAMIL, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','m','l'), L"Noto Sans Tamil"}, + MS_MAKE_TAG('t','m','l','2'), L"Noto Sans Tamil"}, {{Script_Tamil_Numeric, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TAMIL, 1, 1, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - MS_MAKE_TAG('t','a','m','l'), L"Noto Sans Tamil"}, + MS_MAKE_TAG('t','m','l','2'), L"Noto Sans Tamil"}, {{Script_Telugu, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}}, {LANG_TELUGU, 0, 1, 0, 1, DEFAULT_CHARSET, 0, 0, 0, 0, 1, 0, 0, 0, 0}, MS_MAKE_TAG('t','e','l','u'), L"Noto Sans Telugu"}, -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10630
Just asking, wouldn't it be better to have default font fallbacks instead of changing the font Uniscribe is looking for? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10630#note_135958
I had written about using the font fallback mechanism on the [mailing list](https://list.winehq.org/hyperkitty/list/wine-devel@list.winehq.org/thread/FF...): ``` Now, in ./dlls/gdi32/uniscribe/usp10.c I can see a function named: "find_fallback_font" which looks for a fallback font under Software\Wine\Uniscribe\Fallback in HKEY_CURRENT_USER. But I did not find this entry populated at all. My solution is: Define a table which has a representative char for each script, now when a new wine environment is being created, query the system using FontConfig to find fonts which contains the representative chars and then populate the registry entry. ``` Is this what you are talking about? I decided against it because the current approach felt simpler to me and also dwrite was already hardcoded to look for the Noto fonts. What do you say, should I go for my previous approach? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10630#note_135959
participants (3)
-
Aric Stewart (@aricstewart) -
समीर सिंह Sameer Singh -
समीरसिंह Sameer Singh (@ss141309)