Why does some text display with square boxes in some apps on Windows 10?
When running certain apps on Windows 10 desktop or Windows 10 Mobile, some characters display as a square or rectangular box, or as a box with a dot, question mark or “x” inside, while the same app running on earlier Windows or Windows Phone versions did not have this problem.
This issue typically involves text in Middle East or Asian languages (Arabic, Chinese, Hindi, etc.). On Windows 10 Mobile, this issue is most likely to involve East Asian languages (Chinese, Japanese, Korean). On Windows 10 desktop, this issue typically involves text in languages other than the languages for which that system is configured, and within certain types of apps that support scenarios in which international languages may be encountered (e.g., browsing the Web, and user notifications in social networking apps).
Some key improvements have been made in Windows 10 that affect fonts; more details on this are provided below. A side effect of these changes is that a small subset of existing apps created for earlier versions of Windows or Windows Phone may be affected.
- Some fonts that were included in Windows Phone 8.1 are not included in Windows 10 Mobile.
- Some fonts that previously were included in every Windows desktop system have been moved into optional font packages, and so may not be present on all Windows 10 desktop systems.
More details on these changes are provided below. In certain apps, these changes can lead to the “square box” symptoms when displaying certain international text.
All Windows 10 editions include fonts that provide broad language support, and the Windows platform includes font fallback mechanisms designed to ensure that text in any language always displays with legible glyphs rather than boxes. But some apps may take direct dependencies on particular fonts for displaying certain Unicode characters and do not utilize the font fallback mechanisms provided by Windows. In some cases, these apps have taken direct dependencies on fonts that are not present by default on all Windows 10 systems. Because the font that the app is trying to use is not present on the system, some other font gets used to display the text instead, and that font may not support all of the characters being displayed. When a character is displayed using a font that doesn’t support that character, a default “not defined” glyph from that font is used. The “not defined” glyph in most fonts has the appearance of a rectangular box, or some variation of that.
Overview of key font improvements in Windows 10A key, high-level goal for Windows 10 was for Windows to be a family of operating systems for different device categories that are all built around a common OS core and a shared app platform — the Universal Windows Platform (UWP). UWP enables apps that are written and built once and that can run on a wide range of devices, from Hololens to Xbox and Surface Hub. One requirement for this converged app platform is to have a set of fonts that are common across all of these device categories. In past releases, there were different sets of fonts that shipped in Windows Phone, Xbox One and Windows desktop client. In Windows 10, there is now a common set of fonts guaranteed to be present on all Windows 10 devices, across all Windows 10 editions and across all device categories and form factors. In addition, this set of common fonts provides comprehensive Unicode support, accommodating thousands of languages from around the world using a small set of fonts that require only limited disk space.
The set of common, UWP fonts is given in this article:
The Windows desktop client is typically used on devices with less stringent storage constraints, and so it can accommodate a larger selection of fonts. However, whereas Windows desktop was traditionally used on devices with very large storage capacities, in recent years we have seen new form factors such as low-cost tablets that have more limited storage. Another key, high-level goal for Windows 10 has been to make the Windows desktop client work better than ever on such lower-cost devices.
As the international language coverage of Windows continued to grow, this meant that more and more international fonts were present on every system, whether or not the user on a given system had actual need for fonts for other languages. However, this added a large number of choices in font-picker controls and dialogs that would have low relevance for a given user. For instance, a Spanish user would be able to choose from dozens of Thai fonts, even though they might never use Thai. Moreover, this also added hundreds of megabytes to the size of every Windows desktop system. In order to reduce the amount of disk space that Windows requires and to improve the relevance of font choices provided to a given user, many Windows fonts have been moved into optional font features.
These optional font features are organized by different scripts and have language associations, and will get installed automatically based on those language associations. For example, the “Simplified Chinese Supplemental Fonts” feature has fonts used specifically for Simplified Chinese. If the Simplified Chinese version of Windows 10 is installed, then it will already have this optional font feature pre-installed. If a different language version of Windows 10 is installed but a user enables a Simplified Chinese input method, or if they have a profile associated with their Microsoft account that already includes Simplified Chinese and that profile roams onto the device, then the Simplified Chinese Supplemental Fonts feature will automatically be installed via Windows Update.
By installing optional font packages to match the set of languages actively used on a system, we are able to achieve the best balance between the number of font choices provided and the disk footprint used. But even without any of these optional font features installed, every Windows 10 desktop system still includes the common UWP fonts, ensuring that Windows still has great support for Unicode and for international text, and ensuring that universal Windows apps can have great text display on desktop devices and every other form factor.
Details on font changes in Windows 10 MobileIn order to define the converged, UWP font set using a limited number of fonts, some fonts that were present in Windows Phone 8.1 have been excluded from Windows 10 Mobile:
- Dengxian, Dengxian Bold
- Estrangelo Edessa
- Khmer UI, Khmer UI Bold
- Lao UI, Lao UI Bold
- Leelawadee, Leelawadee Bold
- Lucida Sans Unicode
- Microsoft MHei, Microsoft MHei Bold
- Microsoft NeoGothic, Microsoft NeoGothic Bold
- Microsoft Uighur
- Segoe WP, Segoe WP Light, Segoe WP SemiLight, Segoe WP Semibold, Segoe WP Bold, Segoe WP Black
- Segoe WP Emoji
- Tahoma, Tahoma Bold
- Urdu Typesetting, Urdu Typesetting Bold
- Yu Gothic Bold
If a Windows Phone app directly depends on one of the fonts listed above for displaying certain Unicode characters and does not make use of font fallback mechanisms provided by Windows, the result would be characters displayed as “square box” glyphs.
Details on font changes in Windows 10 DesktopAs mentioned above, a number of fonts that previously would have been included in every Windows desktop client system have in Windows 10 been moved into optional font features.
The following table gives the complete list of the optional font features and representative language associations. Select fonts that have been moved into these packages are listed; these are fonts that were used as shell user interface fonts in previous Windows versions but have since been superseded by newer Windows fonts.
If an app depends on one of these fonts for displaying certain Unicode characters and does not make use of font fallback mechanisms provided by Windows, and if the optional font package containing that font is not installed on the system (typically because the system and user profiles are not configured to have the associated language enabled), then the result would be characters displayed as “square box” glyphs.
|Optional font package||Language association||Key fonts moved into the optional package|
|Arabic Script Supplemental Fonts||Languages using Arabic script; e.g., Arabic, Persian, Urdu.|
|Bangla Script Supplemental Fonts||Languages using Bangla script; e.g., Assamese, Bangla.||Vrinda|
|Canadian Aboriginal Syllabics Supplemental Fonts||Languages using Canadian Syllabics script; e.g., Inuktitut.||Euphemia|
|Cherokee Supplemental Fonts||Cherokee.||Plantagenet Cherokee|
|Devanagari Supplemental Fonts||Language using Devanagari script; e.g., Hindi, Konkani, Marathi.||Mangal|
|Ethiopic Supplemental Fonts||Languages using Ethiopic script; e.g., Amharic, Tigrinya.||Nyala|
|Gujarati Supplemental Fonts||Gujarati; any other language using Gujurati script.||Shruti|
|Gurmukhi Supplemental Fonts||Panjabi; any other language using Gurmukhi script||Raavi|
|Chinese (Simplified) Supplemental Fonts||Simplified Chinese|
|Chinese (Traditional) Supplemental Fonts||Traditional Chinese||MingLiU, MingLiU_HKSCS|
|Hebrew Supplemental Fonts||Hebrew|
|Japanese Supplemental Fonts||Japanese||Meiryo, Meiryo UI, MS Gothic, MS Mincho|
|Khmer Supplemental Fonts||Cambodian; any other language using Khmer script.||DaunPenh, Khmer UI|
|Kannada Supplemental Fonts||Kannada; any other language using Kannada script.||Tunga|
|Korean Supplemental Fonts||Korean||Batang, Dotum, Gulim|
|Lao Supplemental Fonts||Lao; any other language using Lao script.||DokChampa, Lao UI|
|Malayalam Supplemental Fonts||Malayalam; any other language using Malayalam script.||Karthika|
|Odia Supplemental Fonts||Odia; any other language using Odia script.||Kalinga|
|Pan-European Supplemental Fonts||No automatic language associations.||None (all fonts are new to Windows 10).|
|Sinhala Supplemental Fonts||Sinhala; any other language using Sinhala script.||Iskoola Pota|
|Syriac Supplemental Fonts||Languages using Syriac script.||Estrangelo Edessa|
|Tamil Supplemental Fonts||Tamil; any other language using Tamil script.||Latha|
|Telugu Supplemental Fonts||Telugu; any other language using Telugu script.||Gautami|
|Thai Supplemental Fonts||Thai; any other language using Thai script.||Leelawadee|
Recommendations for Windows 10 usersIf you experience these symptoms in some apps on Windows 10 desktop, then you can provide feedback to the app developer suggesting that they update their app for Windows 10. In the meantime, you can also install one or more optional font features that the apps may require to function correctly. The steps to do this are as follows:
If you know the language of the text that is displaying incorrectly and often use that language:
If you know the language involved, then you can add that language into your user profile, and any associated optional font feature will be automatically installed. (Note: other language-related optional features, such as text prediction or spell checking, may also be installed.)
- From the Start menu, open Settings.
- Select Time & language.
- Select Region & language.
- Select Add a language.
- Select the particular language.
If you don’t know the specific language, or if know the language of the text that is displaying incorrectly but don’t want to add that language into your user profile, you can install any optional font feature without enabling any additional languages.
- From the Start menu, open Settings.
- Select System.
- Select Apps & features.
- Select Manage optional features.
- Select Add a feature.
- Select any optional font feature from the list.
If you experience the symptoms described in some Windows Phone apps, then you may want to contact the app developer suggesting that they update their app using the guidance provided here. Note: Windows 10 Mobile does not support any optional font features.
Recommendations for OEMs and System AdministratorsIf you are configuring language packs or international settings in Windows 10 deployment images, then you should use the Deployment Image Servicing and Management tool (DISM) to include optional font packages (and other optional, language-related capabilities) associated with the language packs that you add into your images. The following article provides details regarding the optional font capabilities and the associated Windows 10 language pack languages:
See also this article for an overview on Windows 10 language packs and all optional, language-related capabilities:
If you are a system administrator and know that your scenarios will require fonts from one or more of these optional font capabilities, even if you are not including associated language packs into your deployment images, you can still add any of the font capabilities into your deployment images using DISM.
Recommendations for developersYour app may be impacted by changes to fonts in Windows 10 if you have a Windows Phone app that has a dependency on one of the fonts that has been excluded from Windows 10 Mobile, or if you have a Windows desktop app that has a dependency on one of the fonts that has been migrated into optional font packages, and if your app does not make use of font fallback mechanisms provided by Windows. Types of apps and app scenarios most likely to be impacted include:
- Browsers or other apps that do complex layout using lower-level graphics APIs that do not provide font fallback (e.g., DrawGlyphRun, ExtTextOut using ETO_GLYPH_INDEX, ScriptTextOut).
- Games or other apps that use third-party graphics libraries.
- App scenarios in which text may be displayed involving languages beyond the app’s or Windows’ display language, or other languages used by the user; e.g., Web browsing, receiving text messages or notifications from other users.
The fonts listed in that article are guaranteed to be present on all Windows 10 devices.
If your app uses DirectWrite, then you may want to consider utilizing font fallback mechanisms provided by DirectWrite. Even if you are using lower-level APIs and wish to implement your own font fallback implementation, DirectWrite has APIs that provide default mappings that you can supplement with your own custom mappings. See the following MSDN articles for key APIs:
· IDWriteFontFallback: https://msdn.microsoft.com/en-us/library/windows/desktop/dn280450(v=vs.85).aspx
· IDWriteFactory2::GetSystemFontFallback: https://msdn.microsoft.com/en-us/library/windows/desktop/dn280450(v=vs.85).aspx
· IDWriteFontFallbackBuilder: https://msdn.microsoft.com/en-us/library/windows/desktop/dn280476(v=vs.85).aspx
Article ID: 3083806 - Last Review: 07/29/2015 03:57:00 - Revision: 1.0
- kbsurveynew KB3083806