Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
3d0f0448
Commit
3d0f0448
authored
Jun 20, 2013
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Add support for loading name strings in Macintosh format.
parent
b05b637c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
153 additions
and
5 deletions
+153
-5
freetype.c
dlls/gdi32/freetype.c
+153
-5
No files found.
dlls/gdi32/freetype.c
View file @
3d0f0448
...
...
@@ -1173,6 +1173,136 @@ static void LoadSubstList(void)
}
static
const
LANGID
mac_langid_table
[]
=
{
MAKELANGID
(
LANG_ENGLISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ENGLISH */
MAKELANGID
(
LANG_FRENCH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_FRENCH */
MAKELANGID
(
LANG_GERMAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_GERMAN */
MAKELANGID
(
LANG_ITALIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ITALIAN */
MAKELANGID
(
LANG_DUTCH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_DUTCH */
MAKELANGID
(
LANG_SWEDISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SWEDISH */
MAKELANGID
(
LANG_SPANISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SPANISH */
MAKELANGID
(
LANG_DANISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_DANISH */
MAKELANGID
(
LANG_PORTUGUESE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_PORTUGUESE */
MAKELANGID
(
LANG_NORWEGIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_NORWEGIAN */
MAKELANGID
(
LANG_HEBREW
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_HEBREW */
MAKELANGID
(
LANG_JAPANESE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_JAPANESE */
MAKELANGID
(
LANG_ARABIC
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ARABIC */
MAKELANGID
(
LANG_FINNISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_FINNISH */
MAKELANGID
(
LANG_GREEK
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_GREEK */
MAKELANGID
(
LANG_ICELANDIC
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ICELANDIC */
MAKELANGID
(
LANG_MALTESE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MALTESE */
MAKELANGID
(
LANG_TURKISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TURKISH */
MAKELANGID
(
LANG_CROATIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_CROATIAN */
MAKELANGID
(
LANG_CHINESE_TRADITIONAL
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_CHINESE_TRADITIONAL */
MAKELANGID
(
LANG_URDU
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_URDU */
MAKELANGID
(
LANG_HINDI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_HINDI */
MAKELANGID
(
LANG_THAI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_THAI */
MAKELANGID
(
LANG_KOREAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_KOREAN */
MAKELANGID
(
LANG_LITHUANIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_LITHUANIAN */
MAKELANGID
(
LANG_POLISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_POLISH */
MAKELANGID
(
LANG_HUNGARIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_HUNGARIAN */
MAKELANGID
(
LANG_ESTONIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ESTONIAN */
MAKELANGID
(
LANG_LATVIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_LETTISH */
MAKELANGID
(
LANG_SAMI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SAAMISK */
MAKELANGID
(
LANG_FAEROESE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_FAEROESE */
MAKELANGID
(
LANG_FARSI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_FARSI */
MAKELANGID
(
LANG_RUSSIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_RUSSIAN */
MAKELANGID
(
LANG_CHINESE_SIMPLIFIED
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_CHINESE_SIMPLIFIED */
MAKELANGID
(
LANG_DUTCH
,
SUBLANG_DUTCH_BELGIAN
),
/* TT_MAC_LANGID_FLEMISH */
MAKELANGID
(
LANG_IRISH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_IRISH */
MAKELANGID
(
LANG_ALBANIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ALBANIAN */
MAKELANGID
(
LANG_ROMANIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ROMANIAN */
MAKELANGID
(
LANG_CZECH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_CZECH */
MAKELANGID
(
LANG_SLOVAK
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SLOVAK */
MAKELANGID
(
LANG_SLOVENIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SLOVENIAN */
0
,
/* TT_MAC_LANGID_YIDDISH */
MAKELANGID
(
LANG_SERBIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SERBIAN */
MAKELANGID
(
LANG_MACEDONIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MACEDONIAN */
MAKELANGID
(
LANG_BULGARIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_BULGARIAN */
MAKELANGID
(
LANG_UKRAINIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_UKRAINIAN */
MAKELANGID
(
LANG_BELARUSIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_BYELORUSSIAN */
MAKELANGID
(
LANG_UZBEK
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_UZBEK */
MAKELANGID
(
LANG_KAZAK
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_KAZAKH */
MAKELANGID
(
LANG_AZERI
,
SUBLANG_AZERI_CYRILLIC
),
/* TT_MAC_LANGID_AZERBAIJANI */
0
,
/* TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT */
MAKELANGID
(
LANG_ARMENIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ARMENIAN */
MAKELANGID
(
LANG_GEORGIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_GEORGIAN */
0
,
/* TT_MAC_LANGID_MOLDAVIAN */
MAKELANGID
(
LANG_KYRGYZ
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_KIRGHIZ */
MAKELANGID
(
LANG_TAJIK
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TAJIKI */
MAKELANGID
(
LANG_TURKMEN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TURKMEN */
MAKELANGID
(
LANG_MONGOLIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MONGOLIAN */
MAKELANGID
(
LANG_MONGOLIAN
,
SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA
),
/* TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT */
MAKELANGID
(
LANG_PASHTO
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_PASHTO */
0
,
/* TT_MAC_LANGID_KURDISH */
MAKELANGID
(
LANG_KASHMIRI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_KASHMIRI */
MAKELANGID
(
LANG_SINDHI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SINDHI */
MAKELANGID
(
LANG_TIBETAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TIBETAN */
MAKELANGID
(
LANG_NEPALI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_NEPALI */
MAKELANGID
(
LANG_SANSKRIT
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SANSKRIT */
MAKELANGID
(
LANG_MARATHI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MARATHI */
MAKELANGID
(
LANG_BENGALI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_BENGALI */
MAKELANGID
(
LANG_ASSAMESE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ASSAMESE */
MAKELANGID
(
LANG_GUJARATI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_GUJARATI */
MAKELANGID
(
LANG_PUNJABI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_PUNJABI */
MAKELANGID
(
LANG_ORIYA
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ORIYA */
MAKELANGID
(
LANG_MALAYALAM
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MALAYALAM */
MAKELANGID
(
LANG_KANNADA
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_KANNADA */
MAKELANGID
(
LANG_TAMIL
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TAMIL */
MAKELANGID
(
LANG_TELUGU
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TELUGU */
MAKELANGID
(
LANG_SINHALESE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SINHALESE */
0
,
/* TT_MAC_LANGID_BURMESE */
MAKELANGID
(
LANG_KHMER
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_KHMER */
MAKELANGID
(
LANG_LAO
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_LAO */
MAKELANGID
(
LANG_VIETNAMESE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_VIETNAMESE */
MAKELANGID
(
LANG_INDONESIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_INDONESIAN */
0
,
/* TT_MAC_LANGID_TAGALOG */
MAKELANGID
(
LANG_MALAY
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MALAY_ROMAN_SCRIPT */
0
,
/* TT_MAC_LANGID_MALAY_ARABIC_SCRIPT */
MAKELANGID
(
LANG_AMHARIC
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_AMHARIC */
MAKELANGID
(
LANG_TIGRIGNA
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TIGRINYA */
0
,
/* TT_MAC_LANGID_GALLA */
0
,
/* TT_MAC_LANGID_SOMALI */
MAKELANGID
(
LANG_SWAHILI
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SWAHILI */
0
,
/* TT_MAC_LANGID_RUANDA */
0
,
/* TT_MAC_LANGID_RUNDI */
0
,
/* TT_MAC_LANGID_CHEWA */
MAKELANGID
(
LANG_MALAGASY
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MALAGASY */
MAKELANGID
(
LANG_ESPERANTO
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_ESPERANTO */
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
/* 95-111 */
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
/* 112-127 */
MAKELANGID
(
LANG_WELSH
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_WELSH */
MAKELANGID
(
LANG_BASQUE
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_BASQUE */
MAKELANGID
(
LANG_CATALAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_CATALAN */
0
,
/* TT_MAC_LANGID_LATIN */
MAKELANGID
(
LANG_QUECHUA
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_QUECHUA */
0
,
/* TT_MAC_LANGID_GUARANI */
0
,
/* TT_MAC_LANGID_AYMARA */
MAKELANGID
(
LANG_TATAR
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_TATAR */
MAKELANGID
(
LANG_UIGHUR
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_UIGHUR */
0
,
/* TT_MAC_LANGID_DZONGKHA */
0
,
/* TT_MAC_LANGID_JAVANESE */
0
,
/* TT_MAC_LANGID_SUNDANESE */
MAKELANGID
(
LANG_GALICIAN
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_GALICIAN */
MAKELANGID
(
LANG_AFRIKAANS
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_AFRIKAANS */
MAKELANGID
(
LANG_BRETON
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_BRETON */
MAKELANGID
(
LANG_INUKTITUT
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_INUKTITUT */
MAKELANGID
(
LANG_SCOTTISH_GAELIC
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_SCOTTISH_GAELIC */
MAKELANGID
(
LANG_MANX_GAELIC
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_MANX_GAELIC */
MAKELANGID
(
LANG_IRISH
,
SUBLANG_IRISH_IRELAND
),
/* TT_MAC_LANGID_IRISH_GAELIC */
0
,
/* TT_MAC_LANGID_TONGAN */
0
,
/* TT_MAC_LANGID_GREEK_POLYTONIC */
MAKELANGID
(
LANG_GREENLANDIC
,
SUBLANG_DEFAULT
),
/* TT_MAC_LANGID_GREELANDIC */
MAKELANGID
(
LANG_AZERI
,
SUBLANG_AZERI_LATIN
),
/* TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT */
};
static
inline
WORD
get_mac_code_page
(
const
FT_SfntName
*
name
)
{
if
(
name
->
encoding_id
==
TT_MAC_ID_SIMPLIFIED_CHINESE
)
return
10008
;
/* special case */
return
10000
+
name
->
encoding_id
;
}
static
int
match_name_table_language
(
const
FT_SfntName
*
name
,
LANGID
lang
)
{
LANGID
name_lang
;
...
...
@@ -1190,6 +1320,11 @@ static int match_name_table_language( const FT_SfntName *name, LANGID lang )
return
0
;
}
break
;
case
TT_PLATFORM_MACINTOSH
:
if
(
!
IsValidCodePage
(
get_mac_code_page
(
name
)))
return
0
;
if
(
name
->
language_id
>=
sizeof
(
mac_langid_table
)
/
sizeof
(
mac_langid_table
[
0
]))
return
0
;
name_lang
=
mac_langid_table
[
name
->
language_id
];
break
;
default:
return
0
;
}
...
...
@@ -1202,13 +1337,26 @@ static int match_name_table_language( const FT_SfntName *name, LANGID lang )
static
WCHAR
*
copy_name_table_string
(
const
FT_SfntName
*
name
)
{
WCHAR
*
ret
;
WORD
codepage
;
int
i
;
ret
=
HeapAlloc
(
GetProcessHeap
(),
0
,
name
->
string_len
+
sizeof
(
WCHAR
)
);
for
(
i
=
0
;
i
<
name
->
string_len
/
2
;
i
++
)
ret
[
i
]
=
(
name
->
string
[
i
*
2
]
<<
8
)
|
name
->
string
[
i
*
2
+
1
];
ret
[
i
]
=
0
;
return
ret
;
switch
(
name
->
platform_id
)
{
case
TT_PLATFORM_MICROSOFT
:
ret
=
HeapAlloc
(
GetProcessHeap
(),
0
,
name
->
string_len
+
sizeof
(
WCHAR
)
);
for
(
i
=
0
;
i
<
name
->
string_len
/
2
;
i
++
)
ret
[
i
]
=
(
name
->
string
[
i
*
2
]
<<
8
)
|
name
->
string
[
i
*
2
+
1
];
ret
[
i
]
=
0
;
return
ret
;
case
TT_PLATFORM_MACINTOSH
:
codepage
=
get_mac_code_page
(
name
);
i
=
MultiByteToWideChar
(
codepage
,
0
,
(
char
*
)
name
->
string
,
name
->
string_len
,
NULL
,
0
);
ret
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
i
+
1
)
*
sizeof
(
WCHAR
)
);
MultiByteToWideChar
(
codepage
,
0
,
(
char
*
)
name
->
string
,
name
->
string_len
,
ret
,
i
);
ret
[
i
]
=
0
;
return
ret
;
}
return
NULL
;
}
static
WCHAR
*
get_face_name
(
FT_Face
ft_face
,
FT_UShort
name_id
,
LANGID
language_id
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment