Font-Darstellungproblem auf japanischem Windows



  • Hallo,

    ich habe hier eine MFC-Anwendung, die u.a. ein Steuerelement enthält, bei dem ich folgendermaßen die Schriftart setze:

    NONCLIENTMETRICS ncm = {0};
    ncm.cbSize = sizeof NONCLIENTMETRICS;
    SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof NONCLIENTMETRICS, &ncm, 0);
    long nHeight = ncm.lfMenuFont.lfHeight;
    nHeight +=(nHeight < 0) ? -1 : 1;
    m_font.CreateFont(nHeight, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_DONTCARE, NULL);
    

    m_font ist ein CFont-Member der Steuerlement-Klasse. In OnPaint verwende ich den Font mit SelectObject.

    Zweck des ganzen ist, eine Festbreitenschriftart in "normaler" Größe zu bekommen.

    Das klappt auch prima, nur habe ich erfahren, dass das ganze auf einem japanischen Windows 2000 ziemlich übel aussieht. Es wird offenbar ein Pixelfont verwendet, der dann vergrößert dargestellt wird, so dass die einzelnen Zeichen als 2 mal 4 Blöcke von je 2 mal 2 Pixeln dargestellt werden. Das ist kaum zu lesen.

    Ich würde das gern abstellen, kann aber nicht viel rumprobieren, weil ich kein japanisches Windows 2000 zur Verfügung habe. Auf einem englischen Windows XP mit installiertem japanischem UI ist alles so, wie es sein soll.

    Meine Ansätze wären:
    - ANSI_CHARSET statt DEFAULT_CHARSET (ich brauche nur ANSI-Zeichen)
    - OUT_OUTLINE_PRECIS statt OUT_DEFAULT_PRECIS (damit kein Pixelfont benutzt wird)
    - FF_MODERN statt FF_DONTCARE
    - "Courier New" als FaceName (ist das auf japanischen Systemen vorhanden?)

    Hat jemand einen Tipp für mich, wo ich am besten ansetzen könnte, oder hat vielleicht sogar jemand die Möglichkeit, den Code auf einem japanischen Windows 2000 zu testen?



  • Ich habe inzwischen ein kleines Testprogramm nach Japan geschickt, mit der Bitte, einen Screenshot zurückzuschicken. Ergebnis: Sowohl ANSI_CHARSET statt DEFAULT_CHARSET als auch "Courier New" als FaceName bringen das gewünschte Ergbenis.

    Hat sich also erledigt. 🙂


Anmelden zum Antworten