Font and language configuration support for Windows Phone 8

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Windows Phone 8 supports fonts for the majority of the writing systems of the world. Although the phone client UI is localized in 50 major languages, apps can display a much larger selection of languages. Both Windows Phone 8 and Windows Phone OS 7.1 support each language with at least one font family, often more.

This topic contains the following sections.

Windows Phone fonts

For Windows Phone 8, all fonts are present on all phone versions. However, for Windows Phone OS 7.1, although there is at least one font provided for each supported language, some additional language-specific fonts shipped only in markets using those languages.

Custom embedded fonts

Apps also may embed fonts to provide typefaces not included with the phone.

Text input

The selection of languages for which a phone has preinstalled keyboards and input method UIs is dependent on which market a phone is sold in. At any time the user can download and use a keyboard for any of the 50 supported phone client UI languages. The language of the keyboard, which determines the characters that are written to a TextBox control, is not programmatically available to an app.

Impact of xaml:lang on fonts

Windows Phone displays text in the FontFamily specified by your app. When characters aren’t supported by that FontFamily, or your app doesn't specify a FontFamily, Windows Phone chooses a font based on both the character and the xml:lang of the framework element that displays the text.

On Windows Phone, xml:lang drives fallback font selection, complex script shaping, and type conversion in data bindings. Additionally, third-party controls often base behavior on the xml:lang, for example, date pickers.

The xml:lang attribute of the framework element that displays text can be changed by app code. It’s typically set or retrieved using the Language attribute of a control. If an app doesn’t specify the Language of an element in XAML markup or in the code-behind, it inherits the value from its parent. If the Language of an app’s root element is not specified, it will be “‘en-US”. If you add supported languages to localize your app, note that New Project templates include code to pick up the app language from the loaded localized resource file and assign it to the RootFrame.Language by default.

Unicode code point and Language

Because of inherent Unicode features, in some cases simply specifying the correct Unicode value may not result in rendering the expected font. For East Asian languages and languages written with a complex script, specifying the correct Language value of the element displaying a font is particularly important. These include the locales described by the codes “zh-CN”, “zh-TW”, “ja-JP”, and “ko-KR”, and locales with languages written using Arabic, Cyrillic, and Devanagri scripts.

For the full list of supported display languages, see Culture and language support for Windows Phone.

Initializing runtime language configuration for your app

As mentioned in the overview, new project default behavior is that Language properties of the running app are initialized using parameters from the resource file the app loads when it launches (ResourceLanguage and ResourceFlowDirection). This behavior imposes the pattern that the font and text flow direction are aligned with the language of the resource being displayed at run time.

When you add additional languages (Supported Culture) to your app, Visual Studio generates a new .resx file for each language. It inserts the regional ID code (LCID) of the supported culture into the filename. Visual Studio also initializes the string table values of the language parameters to match the language of the resource file’s locale and the traditional flow direction of its script.

The InitializeLanguage() function in the App.xaml.cs file sets the app's RootFrame.Language based on the value of the AppResoures.ResourceLanguage resource, and its RootFrame.lowDirection based on the value of the AppResources.ResourceFlowDirection resource.

If the default pattern of the Language alignment described here doesn’t work for your app design, you can override the default language and flow direction for any locale in several ways. A few examples are listed below. If you decide to break the default behavior, remember the need to explicitly set the Language values in your controls when any of them display East Asian and complex script languages.

  • If you want to start from scratch, you can comment out the app's InitializeLanguage method call in App.xaml.cs.

  • If you want to globally impose a specific language regardless of which locale the user has chosen for their phone's display language, you can modify the RootLanguage string in each of the app’s .resx files.

  • If you want FlowDirection to globally flow in one direction regardless of traditional direction of the app’s runtime language, you can modify the ResourceFlowDirection string in the apps .resx files.

  • If you want a specific element (or set of elements) to use a specific language, leave the app's default InitializeLanguage pattern in place and override inheritance by explicitly declaring the language of any element at any point in the XAML hierarchy.

Keep language alignment in mind if you plan to display localized data from a server in your app. You can run into an issue with the languages described here if the language of the content displayed is different from the language specified in CurrentUICulture in the running app. By knowing the language of the data to be displayed—via app logic or server metadata—and explicitly setting the language attributes of the display element(s) to match, you can keep language alignment for your app.

Language alignment also is a concern for user input. Although it is ideal to set the Language attribute of an element to the language of the content it will display, remember that the language of the keyboard in current use is not available in the app model.

Providing your own fonts

If Windows Phone doesn’t support a font that you want to use in your app, you can embed the font in your app.

Warning

The East Asian language fonts listed in the UI Fonts Supported in Windows Phone table are not redistributable for apps.

Font encoding

Windows Phone uses Unicode to represent characters. We recommend developing your app with Unicode encoding to ensure that your app can run in a global context. You can use the Encoding class to convert encodings from one Unicode type to another, for example, from UTF-8 to UTF-16.

Characters without encoding

Non-Unicode characters without encoding information are displayed according to the system locale setting on the phone. The system locale setting is set by the user, and represents the default character set and font on the phone.

Yen and Won characters - ¥ and ₩

The 'Reverse Solidus' Unicode character (U+005C) displays a Yen character in the Japanese display language, and a Won character in the Korean display language. However, because this character will render as a backslash in any other display language, instead use the 'Yen Sign' Unicode character (U+00A5) and the 'Won Sign' Unicode character (U+20A9) to ensure that they always render correctly.

WebBrowser control

If you use the WebBrowser control to display content or design a website to be displayed on a Windows Phone, ensure that you include the correct encoding metadata information in your HTML.

In the following code example, many characters will not accurately render in the WebBrowser instance named BrowserControl, because the string is not correctly encoded.

string testString = "<html><body>日本列島の占領の最初の兆候が縄文時代で約14,000のBC。</body></html>";BrowserControl.NavigateToString(testString);

Instead, include encoding information in the HTML content, as described in the following code example.

string testString = "<html><head><meta content=”text/html; charset=utf-16”/></head><body>日本列島の占領の最初の兆候が縄文時代で約14,000のBC。</body></html>";BrowserControl.NavigateToString(testString);

UI fonts supported on Windows Phone

The following table lists all UI fonts that are supported on a Windows Phone device. Availability of each font for a specific device depends on which display languages are included on the device.

Latin, Cyrillic, and Greek–based languages

All Latin, Cyrillic, Greek, Arabic, and Hebrew–based display languages use the UI font Segoe WP. This font is included on all phones, so even if a different display language, such as Japanese, is set, any Latin, Cyrillic, Greek, Arabic, or Hebrew–based text will render using the Segoe WP UI font.

Windows Phone 8 UI fonts

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Segoe WP

Latin, Cyrillic, Greek, Arabic, and Hebrew–based languages

DengXian

Chinese (Simplified)

Microsoft Mhei

Chinese (Traditional)

Yu Gothic

Japanese

Microsoft NeoGothic

Korean

Segoe UI

Latin, Cyrillic, Greek, Arabic, and Hebrew–based languages

Nirmala UI

India languages

Leelawadee

Thai

Segoe UI Symbol

Supports various Unicode symbols, including emoji symbols added in Unicode 6.0.

Windows Phone OS 7.1 UI fonts

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Segoe WP

Latin, Cyrillic, Greek, Arabic, and Hebrew–based languages

Segoe WP SemiLight

Latin, Cyrillic, Greek, Arabic, and Hebrew–based languages

Segoe WP SemiBold

Latin, Cyrillic, Greek, Arabic, and Hebrew–based languages

DengXian

Chinese (Simplified)

Microsoft Mhei

Chinese (Traditional)

Yu Gothic

Japanese

Microsoft NeoGothic

Korean

Segoe UI

Latin, Cyrillic, Greek, Arabic, and Hebrew–based languages

SimSun

Chinese (Simplified)

Caution:
This font is included only on Windows Phone OS 7.1 devices that have the Chinese (Simplified) display language.

Segoe UI Symbol

Supports various Unicode symbols, including emoji symbols added in Unicode 6.0.

Note

Use the Yu Gothic UI font when localizing your Windows Phone app for Japanese.

Text display fonts supported on Windows Phone

The following table lists all text display fonts that are supported on a Windows Phone.

Windows Phone 8 text display fonts

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Ebrima

Nko, Ethiopic, Tifinagh, Vai, and Osmanya

Estrangelo Edessa

Syriac

Gadugi

Cherokee, and Unified Canadian Aboriginal Syllabics

Khmer UI

Khmer

Lao UI

Lao

Microsoft Himalaya

Tibetan

Microsoft New Tai Lue

New Tai Lue

Microsoft Tai Le

Tai Le

Microsoft Uighur

Uighur

Microsoft Yi Baiti

Yi

Mongolian Baiti

Mongolian

MV Boli

Thaana

PhagsPa

Phags-pa

SimSun

Chinese (Simplified)

Urdu Typesetting

Arabic

Windows Phone OS 7.1 text display fonts

Note

The following Windows Phone OS 7.1 text display fonts aren’t available in Windows Phone 8.

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Microsoft YaHei

Chinese (Traditional), Chinese (Simplified)

Meiryo UI

Japanese

Malgun Gothic

Korean

Additional fonts supported on Windows Phone

The following table lists all additional fonts that are supported on a Windows Phone.

Windows Phone 8 additional fonts

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Arial

Latin, Cyrillic, and Greek–based languages

Calibri

Latin, Cyrillic, and Greek–based languages

Comic Sans MS

Latin, Cyrillic, and Greek–based languages

Courier New

Latin, Cyrillic, and Greek–based languages

Georgia

Latin, Cyrillic, and Greek–based languages

Lucida Sans Unicode

Latin, Cyrillic, and Greek–based languages

Tahoma

Latin, Cyrillic, and Greek–based languages

Times New Roman

Latin, Cyrillic, and Greek–based languages

Trebuchet MS

Latin, Cyrillic, and Greek–based languages

Verdana

Latin, Cyrillic, and Greek–based languages

Windows Phone OS 7.1 additional fonts

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Arial

Latin, Cyrillic, and Greek–based languages

Calibri

Latin, Cyrillic, and Greek–based languages

Comic Sans MS

Latin, Cyrillic, and Greek–based languages

Courier New

Latin, Cyrillic, and Greek–based languages

Georgia

Latin, Cyrillic, and Greek–based languages

Lucida Sans Unicode

Latin, Cyrillic, and Greek–based languages

Tahoma

Latin, Cyrillic, and Greek–based languages

Times New Roman

Latin, Cyrillic, and Greek–based languages

Trebuchet MS

Latin, Cyrillic, and Greek–based languages

Verdana

Latin, Cyrillic, and Greek–based languages

Mathematical and symbol fonts supported on Windows Phone

The following table lists all mathematical and symbol fonts that are supported on a Windows Phone.

Windows Phone 8 mathematical and symbol fonts

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Cambria / Cambria Math

Latin, Cyrillic, and Greek–based languages

Wingdings

Symbols

Webdings

Symbols

Windows Phone OS 7.1 symbol fonts

Font name

Languages

Regular

Bold

Italic

Italic Bold

Light

Black

Wingdings

Symbols

Webdings

Symbols

Font table key

The symbols used in the above tables are explained as follows:

Symbol

Description

Supported

Achieved by algorithmic bolding or italicization

Not supported

See Also

Other Resources

Culture and language support for Windows Phone

Globalization and localization for Windows Phone 8