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:
Rémi Bernon 2020-09-17 19:30:42 +02:00 committed by Alexandre Julliard
parent 7955b2e526
commit d3ba3ca2d0
9 changed files with 573 additions and 0 deletions

View File

@ -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 \

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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.