gdi32/tests: Add test fonts with names in several languages.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
7955b2e526
commit
d3ba3ca2d0
|
@ -20,6 +20,9 @@ C_SRCS = \
|
|||
|
||||
FONT_SRCS = \
|
||||
vertical.sfd \
|
||||
wine_langnames.sfd \
|
||||
wine_langnames2.sfd \
|
||||
wine_langnames3.sfd \
|
||||
wine_longname.sfd \
|
||||
wine_test.sfd \
|
||||
wine_ttfnames.sfd \
|
||||
|
|
|
@ -2757,6 +2757,12 @@ struct enum_fullname_data
|
|||
ENUMLOGFONTA *elf;
|
||||
};
|
||||
|
||||
struct enum_fullname_data_w
|
||||
{
|
||||
int total, size;
|
||||
ENUMLOGFONTW *elf;
|
||||
};
|
||||
|
||||
struct enum_font_dataW
|
||||
{
|
||||
int total, size;
|
||||
|
@ -3110,6 +3116,23 @@ static INT CALLBACK enum_fullname_data_proc(const LOGFONTA *lf, const TEXTMETRIC
|
|||
return 1;
|
||||
}
|
||||
|
||||
static INT CALLBACK enum_fullname_data_proc_w( const LOGFONTW *lf, const TEXTMETRICW *ntm, DWORD type, LPARAM lParam )
|
||||
{
|
||||
struct enum_fullname_data_w *efnd = (struct enum_fullname_data_w *)lParam;
|
||||
|
||||
if (type != TRUETYPE_FONTTYPE) return 1;
|
||||
|
||||
if (efnd->total >= efnd->size)
|
||||
{
|
||||
efnd->size = max( (efnd->total + 1) * 2, 256 );
|
||||
efnd->elf = heap_realloc( efnd->elf, efnd->size * sizeof(*efnd->elf) );
|
||||
if (!efnd->elf) return 0;
|
||||
}
|
||||
efnd->elf[efnd->total++] = *(ENUMLOGFONTW *)lf;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void test_EnumFontFamiliesEx_default_charset(void)
|
||||
{
|
||||
struct enum_font_data efd;
|
||||
|
@ -7007,6 +7030,247 @@ static void test_ttf_names(void)
|
|||
ReleaseDC(NULL, dc);
|
||||
}
|
||||
|
||||
static void test_lang_names(void)
|
||||
{
|
||||
static const WCHAR name_cond_ja_w[] = {0x30d5,0x30a9,0x30f3,0x30c8,0x540d,' ','C','o','n','d',' ','(','j','a',')',0};
|
||||
static const WCHAR name_cond_ja_reg_w[] = {0x30d5,0x30a9,0x30f3,0x30c8,0x540d,' ','C','o','n','d',' ','(','j','a',')',' ','R','e','g',0};
|
||||
static const WCHAR name_cond_ja_reg_ja_w[] = {0x30d5,0x30a9,0x30f3,0x30c8,0x540d,' ','C','o','n','d',' ','(','j','a',')',' ','R','e','g',' ','(','j','a',')',0};
|
||||
static const WCHAR name_wws_ja_w[] = {0x30d5,0x30a9,0x30f3,0x30c8,0x540d,' ','W','W','S',' ','(','j','a',')',0};
|
||||
|
||||
struct enum_fullname_data efnd;
|
||||
struct enum_fullname_data_w efnd_w;
|
||||
char ttf_name[MAX_PATH], ttf_name2[MAX_PATH], ttf_name3[MAX_PATH];
|
||||
LOGFONTA font = {0};
|
||||
LOGFONTW font_w = {0};
|
||||
int ret, i;
|
||||
HDC dc;
|
||||
const WCHAR *primary_family, *primary_fullname;
|
||||
|
||||
if (PRIMARYLANGID(GetSystemDefaultLangID()) != LANG_ENGLISH && PRIMARYLANGID(GetSystemDefaultLangID()) != LANG_JAPANESE)
|
||||
{
|
||||
skip( "Primary language is neither English nor Japanese, skipping test\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
if (!write_ttf_file( "wine_langnames.ttf", ttf_name ))
|
||||
{
|
||||
skip( "Failed to create ttf file for testing\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
if (!write_ttf_file( "wine_langnames2.ttf", ttf_name2 ))
|
||||
{
|
||||
skip( "Failed to create ttf file for testing\n" );
|
||||
DeleteFileA( ttf_name );
|
||||
return;
|
||||
}
|
||||
|
||||
if (!write_ttf_file( "wine_langnames3.ttf", ttf_name3 ))
|
||||
{
|
||||
skip( "Failed to create ttf file for testing\n" );
|
||||
DeleteFileA( ttf_name2 );
|
||||
DeleteFileA( ttf_name );
|
||||
return;
|
||||
}
|
||||
|
||||
ret = AddFontResourceExA( ttf_name, FR_PRIVATE, 0 );
|
||||
ok( ret, "AddFontResourceEx() failed\n" );
|
||||
|
||||
dc = GetDC( NULL );
|
||||
|
||||
if (PRIMARYLANGID(GetSystemDefaultLangID()) == LANG_ENGLISH)
|
||||
{
|
||||
primary_family = L"Wine Lang Cond (en)";
|
||||
primary_fullname = L"Wine Lang Cond Reg (en)";
|
||||
}
|
||||
else
|
||||
{
|
||||
primary_family = name_cond_ja_w;
|
||||
primary_fullname = name_cond_ja_reg_w;
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; ++i)
|
||||
{
|
||||
/* check that lookup by preferred or WWS family / full names or postscript FontName doesn't work */
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang (en)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang Condensed Bold (ko)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
wcscpy( font_w.lfFaceName, name_wws_ja_w );
|
||||
memset( &efnd_w, 0, sizeof(efnd_w) );
|
||||
EnumFontFamiliesExW( dc, &font_w, enum_fullname_data_proc_w, (LPARAM)&efnd_w, 0 );
|
||||
ok( efnd_w.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd_w.total );
|
||||
|
||||
strcpy( font.lfFaceName, "Reg WWS (zh-tw)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang (en) Reg WWS (en)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
strcpy( font.lfFaceName, "WineLangNamesRegular" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
/* then, the primary ttf family name always works */
|
||||
|
||||
wcscpy( font_w.lfFaceName, primary_family );
|
||||
memset( &efnd_w, 0, sizeof(efnd_w) );
|
||||
EnumFontFamiliesExW( dc, &font_w, enum_fullname_data_proc_w, (LPARAM)&efnd_w, 0 );
|
||||
ok( efnd_w.total == min( 2, i + 1 ), "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd_w.total );
|
||||
|
||||
if (PRIMARYLANGID(GetSystemDefaultLangID()) == LANG_ENGLISH)
|
||||
{
|
||||
wcscpy( font_w.lfFaceName, name_cond_ja_w );
|
||||
memset( &efnd_w, 0, sizeof(efnd_w) );
|
||||
EnumFontFamiliesExW( dc, &font_w, enum_fullname_data_proc_w, (LPARAM)&efnd_w, 0 );
|
||||
ok( efnd_w.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd_w.total );
|
||||
}
|
||||
|
||||
/* if there is no primary ttf family name, the english ttf name, or postscript FamilyName are used instead */
|
||||
|
||||
strcpy( font.lfFaceName, "Wine_Lang_Names" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
if (i == 2)
|
||||
ok( efnd.total == 1, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
else
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
/* same goes for ttf full names */
|
||||
|
||||
wcscpy( font_w.lfFaceName, primary_fullname );
|
||||
memset( &efnd_w, 0, sizeof(efnd_w) );
|
||||
EnumFontFamiliesExW( dc, &font_w, enum_fullname_data_proc_w, (LPARAM)&efnd_w, 0 );
|
||||
ok( efnd_w.total == 1, "%d: EnumFontFamiliesExW unexpected count %u.\n", i, efnd_w.total );
|
||||
|
||||
if (efnd_w.total >= 1)
|
||||
{
|
||||
ok( !wcscmp( (WCHAR *)efnd_w.elf[0].elfLogFont.lfFaceName, primary_family ),
|
||||
"%d: (%d) unexpected lfFaceName %s\n", i, efnd_w.total, debugstr_w((WCHAR *)efnd_w.elf[0].elfLogFont.lfFaceName) );
|
||||
ok( !wcscmp( (WCHAR *)efnd_w.elf[0].elfFullName, primary_fullname ),
|
||||
"%d: (%d) unexpected elfFullName %s\n", i, efnd_w.total, debugstr_w((WCHAR *)efnd_w.elf[0].elfFullName) );
|
||||
ok( !wcscmp( (WCHAR *)efnd_w.elf[0].elfStyle, PRIMARYLANGID(GetSystemDefaultLangID()) == LANG_ENGLISH ? L"Reg (en)" : L"Reg (ja)" ),
|
||||
"%d: (%d) unexpected elfStyle %s\n", i, efnd_w.total, debugstr_w((WCHAR *)efnd_w.elf[0].elfStyle) );
|
||||
}
|
||||
|
||||
if (PRIMARYLANGID(GetSystemDefaultLangID()) == LANG_ENGLISH)
|
||||
{
|
||||
wcscpy( font_w.lfFaceName, name_cond_ja_reg_w );
|
||||
memset( &efnd_w, 0, sizeof(efnd_w) );
|
||||
EnumFontFamiliesExW( dc, &font_w, enum_fullname_data_proc_w, (LPARAM)&efnd_w, 0 );
|
||||
ok( efnd_w.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd_w.total );
|
||||
}
|
||||
|
||||
wcscpy( font_w.lfFaceName, L"Wine_Lang_Names_Regular" );
|
||||
memset( &efnd_w, 0, sizeof(efnd_w) );
|
||||
EnumFontFamiliesExW( dc, &font_w, enum_fullname_data_proc_w, (LPARAM)&efnd_w, 0 );
|
||||
ok( efnd_w.total == i, "%d: EnumFontFamiliesExW unexpected count %u.\n", i, efnd_w.total );
|
||||
|
||||
while (efnd_w.total--)
|
||||
{
|
||||
ok( !wcscmp( (WCHAR *)efnd_w.elf[efnd_w.total].elfLogFont.lfFaceName, efnd_w.total == 1 ? L"Wine_Lang_Names" : primary_family ),
|
||||
"%d: (%d) unexpected lfFaceName %s\n", i, efnd_w.total, debugstr_w((WCHAR *)efnd_w.elf[efnd_w.total].elfLogFont.lfFaceName) );
|
||||
ok( !wcscmp( (WCHAR *)efnd_w.elf[efnd_w.total].elfFullName, L"Wine_Lang_Names_Regular" ),
|
||||
"%d: (%d) unexpected elfFullName %s\n", i, efnd_w.total, debugstr_w((WCHAR *)efnd_w.elf[efnd_w.total].elfFullName) );
|
||||
if (PRIMARYLANGID(GetSystemDefaultLangID()) == LANG_ENGLISH)
|
||||
ok( !wcscmp( (WCHAR *)efnd_w.elf[efnd_w.total].elfStyle, efnd_w.total == 1 ? L"Regular" : L"Reg (en)" ),
|
||||
"%d: (%d) unexpected elfStyle %s\n", i, efnd_w.total, debugstr_w((WCHAR *)efnd_w.elf[efnd_w.total].elfStyle) );
|
||||
else
|
||||
ok( !wcscmp( (WCHAR *)efnd_w.elf[0].elfStyle, L"Reg (ja)" ),
|
||||
"%d: (%d) unexpected elfStyle %s\n", i, efnd_w.total, debugstr_w((WCHAR *)efnd_w.elf[0].elfStyle) );
|
||||
}
|
||||
|
||||
if (PRIMARYLANGID(GetSystemDefaultLangID()) == LANG_ENGLISH)
|
||||
{
|
||||
wcscpy( font_w.lfFaceName, name_cond_ja_reg_ja_w );
|
||||
memset( &efnd_w, 0, sizeof(efnd_w) );
|
||||
EnumFontFamiliesExW( dc, &font_w, enum_fullname_data_proc_w, (LPARAM)&efnd_w, 0 );
|
||||
ok( efnd_w.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd_w.total );
|
||||
}
|
||||
|
||||
/* another language can also be used for lookup, if the primary langid isn't english, then
|
||||
english seems to have priority, otherwise or if english is already the primary langid,
|
||||
the family name with the smallest langid is used as secondary lookup language. */
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang Cond (zh-tw)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
if (PRIMARYLANGID(GetSystemDefaultLangID()) == LANG_ENGLISH)
|
||||
todo_wine ok( efnd.total == min( 2, i + 1 ), "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
else /* (zh-tw) doesn't match here probably because there's an (en) name too */
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang Cond (en)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
/* either because it's the primary language, or because it's a secondary */
|
||||
ok( efnd.total == min( 2, i + 1 ), "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang Cond (fr)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
/* as wine_langnames3.sfd does not specify (en) name, (fr) is preferred */
|
||||
if (i == 2) todo_wine ok( efnd.total == 1, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
else ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang Cond (ko)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
/* that doesn't apply to full names */
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang Cond Reg (zh-tw)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
strcpy( font.lfFaceName, "Wine Lang Cond Reg (fr)" );
|
||||
memset( &efnd, 0, sizeof(efnd) );
|
||||
EnumFontFamiliesExA( dc, &font, enum_fullname_data_proc, (LPARAM)&efnd, 0 );
|
||||
ok( efnd.total == 0, "%d: EnumFontFamiliesExA unexpected count %u.\n", i, efnd.total );
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
ret = AddFontResourceExA( ttf_name2, FR_PRIVATE, 0 );
|
||||
ok( ret, "AddFontResourceEx() failed\n" );
|
||||
}
|
||||
else if (i == 1)
|
||||
{
|
||||
ret = AddFontResourceExA( ttf_name3, FR_PRIVATE, 0 );
|
||||
ok( ret, "AddFontResourceEx() failed\n" );
|
||||
}
|
||||
}
|
||||
|
||||
ret = RemoveFontResourceExA( ttf_name3, FR_PRIVATE, 0 );
|
||||
ok( ret, "RemoveFontResourceEx() failed\n" );
|
||||
|
||||
DeleteFileA( ttf_name3 );
|
||||
|
||||
ret = RemoveFontResourceExA( ttf_name2, FR_PRIVATE, 0 );
|
||||
ok( ret, "RemoveFontResourceEx() failed\n" );
|
||||
|
||||
DeleteFileA( ttf_name2 );
|
||||
|
||||
ret = RemoveFontResourceExA( ttf_name, FR_PRIVATE, 0 );
|
||||
ok( ret, "RemoveFontResourceEx() failed\n" );
|
||||
|
||||
DeleteFileA( ttf_name );
|
||||
ReleaseDC( NULL, dc );
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
USHORT majorVersion;
|
||||
|
@ -7419,6 +7683,7 @@ START_TEST(font)
|
|||
test_GetCharWidthI();
|
||||
test_long_names();
|
||||
test_ttf_names();
|
||||
test_lang_names();
|
||||
test_char_width();
|
||||
|
||||
/* These tests should be last test until RemoveFontResource
|
||||
|
|
|
@ -37,3 +37,12 @@ wine_ttfnames.ttf RCDATA wine_ttfnames.ttf
|
|||
|
||||
/* @makedep: wine_ttfnames_bold.ttf */
|
||||
wine_ttfnames_bold.ttf RCDATA wine_ttfnames_bold.ttf
|
||||
|
||||
/* @makedep: wine_langnames.ttf */
|
||||
wine_langnames.ttf RCDATA wine_langnames.ttf
|
||||
|
||||
/* @makedep: wine_langnames2.ttf */
|
||||
wine_langnames2.ttf RCDATA wine_langnames2.ttf
|
||||
|
||||
/* @makedep: wine_langnames3.ttf */
|
||||
wine_langnames3.ttf RCDATA wine_langnames3.ttf
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
SplineFontDB: 3.2
|
||||
FontName: WineLangNamesRegular
|
||||
FullName: Wine_Lang_Names_Regular
|
||||
FamilyName: Wine_Lang_Names
|
||||
Weight: Regular
|
||||
Copyright: Copyright (c) 2020, Remi Bernon for CodeWeavers
|
||||
UComments: "2017-11-17: Created with FontForge (http://fontforge.org)"
|
||||
Version: 001.000
|
||||
ItalicAngle: 0
|
||||
UnderlinePosition: -102
|
||||
UnderlineWidth: 51
|
||||
Ascent: 819
|
||||
Descent: 205
|
||||
InvalidEm: 0
|
||||
LayerCount: 2
|
||||
Layer: 0 0 "Back" 1
|
||||
Layer: 1 0 "Fore" 0
|
||||
XUID: [1021 48 28337276 3092883]
|
||||
OS2Version: 0
|
||||
OS2_WeightWidthSlopeOnly: 0
|
||||
OS2_UseTypoMetrics: 1
|
||||
CreationTime: 1510948643
|
||||
ModificationTime: 1599738445
|
||||
OS2TypoAscent: 0
|
||||
OS2TypoAOffset: 1
|
||||
OS2TypoDescent: 0
|
||||
OS2TypoDOffset: 1
|
||||
OS2TypoLinegap: 0
|
||||
OS2WinAscent: 0
|
||||
OS2WinAOffset: 1
|
||||
OS2WinDescent: 0
|
||||
OS2WinDOffset: 1
|
||||
HheadAscent: 0
|
||||
HheadAOffset: 1
|
||||
HheadDescent: 0
|
||||
HheadDOffset: 1
|
||||
OS2Vendor: 'PfEd'
|
||||
MarkAttachClasses: 1
|
||||
DEI: 91125
|
||||
LangName: 1033 \
|
||||
"" \
|
||||
"Wine Lang Cond (en)" \
|
||||
"Reg (en)" \
|
||||
"" \
|
||||
"Wine Lang Cond Reg (en)" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"Wine Lang (en)" \
|
||||
"Wine Lang Condensed Reg (en)" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"Wine Lang WWS (en)" \
|
||||
"Reg WWS (en)"
|
||||
LangName: 1041 \
|
||||
"" \
|
||||
"+MNUwqTDzMMhUDQAA Cond (ja)" \
|
||||
"Reg (ja)" \
|
||||
"" \
|
||||
"+MNUwqTDzMMhUDQAA Cond (ja) Reg" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"+MNUwqTDzMMhUDQAA (ja)" \
|
||||
"+MNUwqTDzMMhUDQAA Condensed Reg (ja)" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"+MNUwqTDzMMhUDQAA WWS (ja)" \
|
||||
"Reg WWS (ja)"
|
||||
LangName: 1028 \
|
||||
"" \
|
||||
"Wine Lang Cond (zh-tw)" \
|
||||
"Reg (zh-tw)" \
|
||||
"" \
|
||||
"Wine Lang Cond Reg (zh-tw)" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"Wine Lang (zh-tw)" \
|
||||
"Wine Lang Condensed Reg (zh-tw)" \
|
||||
"" \
|
||||
"" \
|
||||
"" \
|
||||
"Wine Lang WWS (zh-tw)" \
|
||||
"Reg WWS (zh-tw)"
|
||||
Encoding: ISO8859-1
|
||||
UnicodeInterp: none
|
||||
NameList: AGL For New Fonts
|
||||
DisplaySize: -48
|
||||
AntiAlias: 1
|
||||
FitToEm: 0
|
||||
WinInfo: 64 16 4
|
||||
BeginPrivate: 0
|
||||
EndPrivate
|
||||
BeginChars: 256 1
|
||||
|
||||
StartChar: at
|
||||
Encoding: 64 64 0
|
||||
Width: 1024
|
||||
VWidth: 0
|
||||
Flags: HW
|
||||
LayerCount: 2
|
||||
Fore
|
||||
SplineSet
|
||||
259 332 m 29
|
||||
468 664 l 29
|
||||
514 332 l 29
|
||||
259 332 l 29
|
||||
EndSplineSet
|
||||
EndChar
|
||||
EndChars
|
||||
EndSplineFont
|
Binary file not shown.
|
@ -0,0 +1,80 @@
|
|||
SplineFontDB: 3.2
|
||||
FontName: WineLangNamesRegular
|
||||
FullName: Wine_Lang_Names_Regular
|
||||
FamilyName: Wine_Lang_Names
|
||||
Weight: Regular
|
||||
Copyright: Copyright (c) 2020, Remi Bernon for CodeWeavers
|
||||
UComments: "2017-11-17: Created with FontForge (http://fontforge.org)"
|
||||
Version: 001.000
|
||||
ItalicAngle: 0
|
||||
UnderlinePosition: -102
|
||||
UnderlineWidth: 51
|
||||
Ascent: 819
|
||||
Descent: 205
|
||||
InvalidEm: 0
|
||||
LayerCount: 2
|
||||
Layer: 0 0 "Back" 1
|
||||
Layer: 1 0 "Fore" 0
|
||||
XUID: [1021 48 28337276 3092883]
|
||||
OS2Version: 0
|
||||
OS2_WeightWidthSlopeOnly: 0
|
||||
OS2_UseTypoMetrics: 1
|
||||
CreationTime: 1510948643
|
||||
ModificationTime: 1599738445
|
||||
OS2TypoAscent: 0
|
||||
OS2TypoAOffset: 1
|
||||
OS2TypoDescent: 0
|
||||
OS2TypoDOffset: 1
|
||||
OS2TypoLinegap: 0
|
||||
OS2WinAscent: 0
|
||||
OS2WinAOffset: 1
|
||||
OS2WinDescent: 0
|
||||
OS2WinDOffset: 1
|
||||
HheadAscent: 0
|
||||
HheadAOffset: 1
|
||||
HheadDescent: 0
|
||||
HheadDOffset: 1
|
||||
OS2Vendor: 'PfEd'
|
||||
MarkAttachClasses: 1
|
||||
DEI: 91125
|
||||
LangName: 1028 \
|
||||
"" \
|
||||
"Wine Lang Cond (zh-tw)" \
|
||||
"Reg (zh-tw)" \
|
||||
"" \
|
||||
"Wine Lang Cond Reg (zh-tw)"
|
||||
LangName: 1041 \
|
||||
"" \
|
||||
"+MNUwqTDzMMhUDQAA Cond (ja)" \
|
||||
"Reg (ja)"
|
||||
LangName: 1033 \
|
||||
"" \
|
||||
"Wine Lang Cond (en)" \
|
||||
"Reg (en)"
|
||||
Encoding: ISO8859-1
|
||||
UnicodeInterp: none
|
||||
NameList: AGL For New Fonts
|
||||
DisplaySize: -48
|
||||
AntiAlias: 1
|
||||
FitToEm: 0
|
||||
WinInfo: 64 16 4
|
||||
BeginPrivate: 0
|
||||
EndPrivate
|
||||
BeginChars: 256 1
|
||||
|
||||
StartChar: at
|
||||
Encoding: 64 64 0
|
||||
Width: 1024
|
||||
VWidth: 0
|
||||
Flags: HW
|
||||
LayerCount: 2
|
||||
Fore
|
||||
SplineSet
|
||||
259 332 m 29
|
||||
468 664 l 29
|
||||
514 332 l 29
|
||||
259 332 l 29
|
||||
EndSplineSet
|
||||
EndChar
|
||||
EndChars
|
||||
EndSplineFont
|
Binary file not shown.
|
@ -0,0 +1,78 @@
|
|||
SplineFontDB: 3.2
|
||||
FontName: WineLangNamesRegular
|
||||
FullName: Wine_Lang_Names_Regular
|
||||
FamilyName: Wine_Lang_Names
|
||||
Weight: Regular
|
||||
Copyright: Copyright (c) 2020, Remi Bernon for CodeWeavers
|
||||
UComments: "2017-11-17: Created with FontForge (http://fontforge.org)"
|
||||
Version: 001.000
|
||||
ItalicAngle: 0
|
||||
UnderlinePosition: -102
|
||||
UnderlineWidth: 51
|
||||
Ascent: 819
|
||||
Descent: 205
|
||||
InvalidEm: 0
|
||||
LayerCount: 2
|
||||
Layer: 0 0 "Back" 1
|
||||
Layer: 1 0 "Fore" 0
|
||||
XUID: [1021 48 28337276 3092883]
|
||||
OS2Version: 0
|
||||
OS2_WeightWidthSlopeOnly: 0
|
||||
OS2_UseTypoMetrics: 1
|
||||
CreationTime: 1510948643
|
||||
ModificationTime: 1599738445
|
||||
OS2TypoAscent: 0
|
||||
OS2TypoAOffset: 1
|
||||
OS2TypoDescent: 0
|
||||
OS2TypoDOffset: 1
|
||||
OS2TypoLinegap: 0
|
||||
OS2WinAscent: 0
|
||||
OS2WinAOffset: 1
|
||||
OS2WinDescent: 0
|
||||
OS2WinDOffset: 1
|
||||
HheadAscent: 0
|
||||
HheadAOffset: 1
|
||||
HheadDescent: 0
|
||||
HheadDOffset: 1
|
||||
OS2Vendor: 'PfEd'
|
||||
MarkAttachClasses: 1
|
||||
DEI: 91125
|
||||
LangName: 1036 \
|
||||
"" \
|
||||
"Wine Lang Cond (fr)" \
|
||||
"Reg (fr)" \
|
||||
"" \
|
||||
"Wine Lang Cond Reg (fr)"
|
||||
LangName: 1042 \
|
||||
"" \
|
||||
"Wine Lang Cond (ko)" \
|
||||
"Reg (ko)" \
|
||||
"" \
|
||||
"Wine Lang Cond Reg (ko)"
|
||||
Encoding: ISO8859-1
|
||||
UnicodeInterp: none
|
||||
NameList: AGL For New Fonts
|
||||
DisplaySize: -48
|
||||
AntiAlias: 1
|
||||
FitToEm: 0
|
||||
WinInfo: 64 16 4
|
||||
BeginPrivate: 0
|
||||
EndPrivate
|
||||
BeginChars: 256 1
|
||||
|
||||
StartChar: at
|
||||
Encoding: 64 64 0
|
||||
Width: 1024
|
||||
VWidth: 0
|
||||
Flags: HW
|
||||
LayerCount: 2
|
||||
Fore
|
||||
SplineSet
|
||||
259 332 m 29
|
||||
468 664 l 29
|
||||
514 332 l 29
|
||||
259 332 l 29
|
||||
EndSplineSet
|
||||
EndChar
|
||||
EndChars
|
||||
EndSplineFont
|
Binary file not shown.
Loading…
Reference in New Issue