User forums > General (but related to Code::Blocks)
font rendering issue when using C::B under windows remote desktop
ollydbg:
When I use C::B in a remote desktop PC, I see that the font is not showing correctly.
The remote C::B is using the GDI render(since the Direct2D mode has some crash issue).
I just compared the C::B with another program Notepad2, which is also scintilla based.
In the setting menu of the Notepad2, there is an option, I choose the "legecy GDI", and in another font quality setting, I choose "default". you see in the screen shot, both C::B and Notepad2 show blur font. (See the first attachment image named 2022-10-22 14 51 21.png)
But when I select the "Font quality" menu to "ClearType", the font rendering shows good in Notepad2. (See the second attachment image named 2022-10-22 14 53 32.png)
I see we have an option also in our C::B editor setting(Font quality), but that option is gray out. (I see the C::B's font quality is only enabled when I choose the DirectWrite mode. )
My question is: how can I enable the "ClearType" in our C::B when we use the default legacy GDI rending mode.
I have tried to modify the "FONT_QUALITY" in C::B's config file(default.conf)
--- Code: --- <TECHNOLOGY int="0" />
<FONT_QUALITY int="3" />
--- End code ---
But setting the value to "3" (I guess it is the ClearType option) has no effect.
AndrewCot:
Long shot. The following thread may be of some use:
https://forums.codeblocks.org/index.php?topic=23207.0
Update2:Another thread that could be relevant:
https://forums.codeblocks.org/index.php?topic=21788.0
ollydbg:
--- Quote from: AndrewCot on October 22, 2022, 10:06:10 am ---Long shot. The following thread may be of some use:
https://forums.codeblocks.org/index.php?topic=23207.0
--- End quote ---
Thanks for the reply. This link is about DirectWrite feature. I think it is not related. I just see that either in Notepad++ or Notepad2, I disable the DirectWrite feature and only enable the legacy GDI, and both the two application render the font correctly.
--- Quote ---Update2:Another thread that could be relevant:
https://forums.codeblocks.org/index.php?topic=21788.0
--- End quote ---
Oh, this is my question in year 2017, but I see this is about DPI aware issue in the manifest. I think C::B already have the DPI aware enabled, which means C::B need to handle the DPI itself. If DPI aware is not set, the Windows will scale the application for you, and which leads to the blur text.
So, I think both the above links are not related to my original issue.
ollydbg:
I did some search, and it looks like:
AntiAliased
This function of wxFontInfo::AntiAliased
--- Quote ---
Set anti-aliasing flag.
Force the use of anti-aliasing on or off.
Currently this is not implemented, i.e. using this method doesn't do anything.
--- End quote ---
But there are some solutions to enable at least under Windows:
Font color problem - wxWidgets Discussion Forum and Re: wxWidgets & ClearType
--- Code: ---Call wxFont::GetNativeFontInfoDesc()
You will get a string that looks like this:
"0;-16;0;0;0;400;0;0;0;1;0;0;0;32;WebDings"
You need to change the "quality" property, with has index=12 (starting from 0).
Values are:
DEFAULT=0
NONANTIALIASED=3
ANTIALIASED=4
CLEARTYPE=5
Use wxFont::SetNativeFontInfo() to write the new string back.
This works only under Windows. The last time i used it was under XP, i'm not sure if it works under W7 or higher.
--- End code ---
So, I think we can hack on this?
ollydbg:
I create a code snippet to enable this option in the font wxWidgets sample program.
--- Code: --- wxFont fontWithClearType = font;
wxString nativeDesc = fontWithClearType.GetNativeFontInfoDesc();
int index = 0;
for (size_t pos = 0, start = 0; pos <= nativeDesc.length(); )
{
pos = nativeDesc.find(";", start);
index++;
if (index == 13)
{
// enable the cleartype option of the font
nativeDesc.replace(start, pos - start, "5");
bool result = fontWithClearType.SetNativeFontInfo(nativeDesc);
break;
}
start = pos+1;
}
m_textctrl->SetFont(fontWithClearType);
--- End code ---
This does change the description string, but has no effect. :(
EDIT:
problem solved, it should be:
--- Code: --- if (index == 14)
--- End code ---
Navigation
[0] Message Index
[#] Next page
Go to full version