The case of the missing Pi
October 12, 2006 Leave a comment
As ADC natively require UTF-8, “all” text should be viewable. Swedish, Russian, Greek or Chinese, everything should look fine.
However, since a couple of versions back, I have not been able to see certain characters, which should be perfectly viewable in ADC and DC++. (Eg, pi (Π) or psi (Ψ).)
To start with my hunt, I looked at my Ubuntu box, where I have LinuxDC++ installed. As LinuxDC++ use DC++’s core, it could point in a correct direction as to why I didn’t see certain characters. I was able to see them perfectly fine in LinuxDC++, but I wasn’t completely confident that there was a problem in DC++ itself because of one major reason: LinuxDC++’s core is based of DC++ 0.691. Although it’s a fairly new version, it is still “old enough” to not have this particular bug.
Next, I fired up Elise, and it showed the same as LinuxDC++; all text completely visible. Although Elise is written in Java and is totally independent from DC++, it gave me a vital clue; ADCH++ wasn’t doing anything it shouldn’t.
I then proceeded and downloaded DC++ from the SVN, and compiled first in Debug and later in Release mode. The reason I did this: I needed to make sure I can at all see those characters in both modes, because there might have been some trouble with a debug version (provide more information and can break at specific places at will [crash and burn is good]) versus a release version.
Before I proceed, I should mention that I don’t have any “special encoding charset” or anything similar installed on my XP-machine, and it was possible that that was the problem. (My Ubuntu-box of course has a different setup, and Java isn’t “run in Windows” in the same sense.)
As I fired up the Debug version, in a folder which had no previous files from DC++, I experienced no trouble whatsoever with writing and reading above characters. “Ok. It’s viewable in DC++, at least. Let me see in Release.” To my surprise, here again were no difficulties.
At this point I knew the “special encoding charset” wasn’t necessary, as it worked for a freshly compiled version of DC++, both in debug and release mode. So, where could the problem be? Well, the only place where DC++ store anything about its settings is in dcplusplus.xml. I swapped the file with a clean one (untouched and without my own changes to it). “Yes! I got characters!”
While there are a bunch of settings in DC++, there are few that deal with how DC++ look and the characters that are being displayed. In Appearance there is an option to set Language file, and in Colors and Sounds, there are a four options that involve the appearance of DC++. I decided to rule certain features out; The Language file option doesn’t handle text coming from hubs, it only handles with text that is in actual DC++; Select Window Color, since it’s just color; The Uploads and Downloads options fall in the previous color category as well. So, what’s left? Well, Select Text Style. I remember having set the text style to MS Sans Serif. (This is not the same thing as Microsoft Sans Serif.) I changed the type to Microsoft Sans Serif (works with others as well, I suppose), and restarted DC++. Afterwards, I was perfectly able to see all those crazy characters in DC++!
So if you are in an ADC hub and see weird characters (that you can assume is not actual characters) (“Ctrl+Backspace” is the common characters one see if one doesn’t see the correct ones) it is not the fault of DC++ (well, perhaps, but still) but the text style you’ve chosen.
So, MS Sans Serif did it in the Colors and Sounds page with a text style.