HELP ! Can't display Chinese String Text in Win8


#1

for example ,"中文Chinese" string, the "中文" in the string can be shown, but "Chinese" in the string can't be shown, I set the default font in cpp file, and #undef JUCE_USE_DIRECTWRITE in appconfig.h,          but ,,,,,,,,      it stillll not work,,,,,, can't display Chinese String Text  ? any one have the same problem ?


#2

Before assuming this has anything to do with fonts, make sure it's not this: 

http://www.juce.com/forum/topic/embedding-unicode-string-literals-your-cpp-files


#3

I already used UTF-8 String Literal Converter to convert Chinese String to UTF-8 pointer, like this:

    addAndMakeVisible (rateSetOkBtn = new TextButton ("new button"));
    rateSetOkBtn->setButtonText (CharPointer_UTF8 ("\xe7\xa1\xae\xe5\xae\x9a"));
    rateSetOkBtn->setConnectedEdges (Button::ConnectedOnLeft | Button::ConnectedOnRight);
    rateSetOkBtn->addListener (this);

 

by the way, other people's JUCE application can show Chinese Text in Win8 normally, it seems they use the lower version JUCE.     if  the string contain both English and Chinese, the english can display normally, the Chinese string in it can't. It's strange.     


#4

 

是不是在“modules\juce_graphics\native\juce_win32_Fonts.cpp”文件里进行如下修改?Win7我没有试过,XP下面可以的...


struct DefaultFontNames
{
    DefaultFontNames()
    {
        if (juce_isRunningInWine())
        {
            // If we're running in Wine, then use fonts that might be available on Linux..
            defaultSans     = "Bitstream Vera Sans";
            defaultSerif    = "Bitstream Vera Serif";
            defaultFixed    = "Bitstream Vera Sans Mono";
        }
        else
        {
//             defaultSans     = "Verdana";
//             defaultSerif    = "Times New Roman";
//             defaultFixed    = "Lucida Console";
//             defaultFallback = "Tahoma";  // (contains plenty of unicode characters)
            defaultSans     = L"黑体";
            defaultSerif    = L"黑体";
            defaultFixed    = L"黑体";
            defaultFallback = L"黑体";;  // (contains plenty of unicode characters)
        }
    }
    String defaultSans, defaultSerif, defaultFixed, defaultFallback;
};

#5

resolved,  should (must) #define JUCE_USE_DIRECTWRITE 0       not    #undef JUCE_USE_DIRECTWRITE,  now it works in win8 normally....

 

thanks jules for your patient  help!!!