From WineHQ Wiki
Revision as of 14:47, 10 March 2016 by AricStewart (talk | contribs) (Moved from old wiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Uniscribe support in WINE

maintained by Aric Stewart

If you find incorrect information here please contact me.

About Fallback Fonts

Uniscribe will fallback to known good fonts for some scripts. Like the native Microsoft usp10 WINE's will by default fall back to given fonts. If you install these fonts on your system or setup font overrides you will get this immediate benefit. I have also added another way to setup an override. You can setup registry keys in [HKEY_CURRENT_USER\Software\Wine\Uniscribe\Fallback]. The key will be the scripts !OpenType tag in hex and the value is the font face you want to use as the fallback for that font.

for example to add a fallback for Arabic you would set "0x62617261"="<my arabic font>"

Fallback fonts will only be used in programs and areas where the ScriptString apis are used. Internally, in the near future, this will include the Edit Control and !RichEdit Control.

Supported Scripts

as of (2011-12-16T21:06:26Z)

Script Complex? Default Fallback Font Fallback registry key Known Issues / Bugs
Latin Microsoft Sans Serif 0x6e74616c
Numeric Microsoft Sans Serif
Punctuation Microsoft Sans Serif
Arabic YES Microsoft Sans Serif 0x62617261
Hebrew YES Microsoft Sans Serif 0x72626568
Syriac YES Estrangelo Edessa 0x63727973
Persian YES Estrangelo Edessa 0x63727973
Thaana YES MV Boli 0x61616874
Greek Microsoft Sans Serif 0x6b657267
Cyrillic Microsoft Sans Serif 0x6c727963
Armenian Sylfaen 0x6e6d7261
Georgian Sylfaen 0x726f6567
Sinhala YES Iskoola Pota 0x686e6973
Tibetan YES Microsoft Himalaya 0x74626974
Phags_pa YES Microsoft !PhagsPa 0x67616870
Thai YES Microsoft Sans Serif 0x69616874
Lao YES !DokChampa 0x206f616c
Devanagari YES Mangal 0x61766564 27637
Bengali YES Vrinda 0x676e6562 27637
Gurmukhi YES Raavi 0x75727567 27637
Gujarati YES Shruti 0x726a7567 27637
Oriya YES Kalinga 0x6179726f 27637
Tamil YES Latha 0x6c6d6174 27637
Telugu YES Gautami 0x756c6574 27637
Kannada YES Tunga 0x61646e6b 27637
Malayalam YES Kartika 0x6d796c6d 27637
Latin Punctuation Microsoft Sans Serif 0x6e74616c
Numeric 2
Myanmar YES 0x726d796d
Tai Le YES Microsoft Tai Le 0x656c6174
New Tai Lue YES Microsoft New Tai Lue 0x756c6174
Khmer YES !DaunPenh 0x726d686b
CJK Unified Ideographs 0x696e6168
Ideographic Description 0x696e6168
Bopomofo 0x6f706f62
Kana 0x616e616b
Hangul YES 0x676e6168
Yi Microsoft Yi Baiti 0x20206979
Ethiopic YES Nyala 0x69687465
Mongolian YES Mongolian Baiti 0x676e6f6d
Tifinagh YES Ebrima 0x676e6674
N’Ko YES Ebrima 0x206f6b6e
Vai YES Ebrima 0x20696176
Cherokee YES Plantagenet Cherokee 0x72656863
Canadian Aboriginal Syllabics YES Euphemia 0x736e6163
Ogham YES Segoe UI Symbol 0x6d61676f
Runic YES Segoe UI Symbol 0x726e7572
Braille YES Segoe UI Symbol 0x69617262
Surrogates Area
Deseret YES Segoe UI Symbol 0x74727364
Osmanya YES Ebrima 0x616d736f
Mathematical Alphanumeric Symbols YES Cambria Math 0x6874616d

General Issues and Further Development

as of (2011-11-10T15:59:44Z)

Uniscribe is used in the following areas within Wine:

* ExtTextOut:  This partial support should allow Complex scripts to be displayed correctly in most Static controls, Menus and the like.
* Edit Control:  as of version 1.3.32 the Wine edit controls is fully uniscribe based.  This allows for the correct display and editing of complex scripts as well as the use of fallback fonts.

Other than the Dozens of random bugs and unimplemented features here are specific issues that need to be kept in mind or worked on.

* Currently there is no specific support for GPOS tables. Relying completely on GDI/FreeType to process that.
* The RichEdit control should use the ScriptString functions
* WINE's fallback to uniscribe in ExtTextOut is a bit hacky and only happens for BiDi strings and Indic ranges. 
* most flags in the SCRIPT_PROPERTIES, SCRIPT_ANALYSIS and SCRIPT_STATE structures are ignored.