GDI32: [4/5] freetype.c add more font selecting&linking mechanism support.

Byeong-Sik Jeon wjsqudtlr at gmail.com
Tue Mar 7 21:09:22 CST 2006


Hi. 

I found another registry key in my korean MS Windows XP.
-----------------------------------------------------
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc
\Associated Charset]
"ANSI(00)"="YES"
"OEM(FF)"="YES"
"SYMBOL(02)"="NO"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FontAssoc
\Associated DefaultFonts]
"AssocSystemFont"="gulim.ttc"
"FontPackage"="GulimChe"
"FontPackageDontCare"="굴림"
"FontPackageRoman"="바탕"
"FontPackageSwiss"="굴림"
"FontPackageModern"="바탕"
"FontPackageScript"="바탕"
"FontPackageDecorative"="굴림"
---------------------------------------------------------------
I think that create_child_font_list(), WineEngCreateFontInstance() have
to this key. and then I can remove "defSystem" in all my patch(4/5 and
5/5).

I working.
but, create_child_font_list(), WineEngCreateFontInstance() will not
create directly this key.


I want your advice.
Thanks.


2006-03-08 (수), 01:41 +0900, Byeong-Sik Jeon 쓰시길:
> 2006-03-07 (화), 14:34 +0000, Huw D M Davies 쓰시길:
> > On Tue, Mar 07, 2006 at 09:29:14PM +0900, Byeong-Sik Jeon wrote:
> > > ChangeLog:
> > > 	Improved create_child_font_list(), get_nearest_charset(), more using
> > > font-linking mechanism.
> > > 
> > > If lfCharSet == DEFAULT_CHARSET, then ALL font(LOGFONT) can see current
> > > locale letter, (have to exist least one font corresponding current
> > > locale ).
> > >  
> > > > - If lfCharSet == DEFAULT_CHARSET then use the current locale codepage.
> > > > and If selected font is not support current ansi codepage, then it fixup
> > > > the problem in "create_child_font_list()" function.
> > > >  
> > > 
> > 
> > I'm slightly confused about what you're trying to do here.  Could you
> > try to explain it again please?
> > 
> Sorry, my poor english...
> 
> assume "Arial.ttf" is exist in the system.
> ------------------------------------------
> string = "Hello. 안녕하세요. 安寕"; /* include non-western character */
> 
> logfont.lfCharSet = DEFAULT_CHARSET;
> logfont.lfFaceName = "Arial";
> hfont = CreateFontIndirect(&logfont);
> SelectObject(hdc, hfont);
> 
> TextOut(hdc, 10, 10, string, strlen(string)); 
> --------------------------------------------
> at this case, now Wine print out broken shape, because glyph missing on
> Arial.ttf.
> 
> font-linking mechanism help this situation. but need to 
> -------------------------------
> [HKLM\\...\SystemLink]
> "Arial"="......"
> --------------------------------
> New get_nearest_charset(), create_child_font_list() solve this situation
> without any additional config file change.
> 
> 
> 
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_8fp0.asp
> ----------------------------------
> Windows NT/2000/XP: DEFAULT_CHARSET is set to a value based on the
> current system locale. For example, when the system locale is English
> (United States), it is set as ANSI_CHARSET.
> ----------------------------------
> Korean locale => HANGEUL_CHARSET,
> Japanese locale => SHIFTJIS_CHARSET.
> ....
> but,  Arial.ttf is missing these charset, therefore incorrect operation
> in the get_nearest_charset().
> 
> Sorry again. Please see the code....
> 
> 
> > Moving this TRACE is clearly not correct.
> Yes. I mistake... 




More information about the wine-devel mailing list