rem: scrPtr->normalFont = WMSystemFontOfSize(scrPtr, WINGsConfiguration.defaultFontSize);  scrPtr->boldFont = WMBoldSystemFontOfSize(scrPtr, WINGsConfiguration.defaultFontSize);
add: scrPtr->normalFont = WMSystemFontOfSize(scrPtr, 0);  scrPtr->boldFont = WMBoldSystemFontOfSize(scrPtr, 0);
context: WMCreateScreenWithRContext(Display *display, int screen, RContext *context){    W_Screen *scrPtr;    XGCValues gcv;    Pixmap stipple;    static int initialized = 0;    static char *atomNames[] = {        "_GNUSTEP_WM_ATTR",        "WM_DELETE_WINDOW",        "WM_PROTOCOLS",        "CLIPBOARD",        "XdndAware",        "XdndSelection",        "XdndEnter",        "XdndLeave",        "XdndPosition",        "XdndDrop",        "XdndFinished",        "XdndTypeList",        "XdndActionList",        "XdndActionDescription",        "XdndStatus",        "XdndActionCopy",        "XdndActionMove",        "XdndActionLink",        "XdndActionAsk",        "XdndActionPrivate",        "_WINGS_DND_MOUSE_OFFSET",        "WM_STATE"    };    Atom atoms[sizeof(atomNames)/sizeof(char*)];    int i;    if (!initialized) {        initialized = 1;        W_ReadConfigurations();        assert(W_ApplicationInitialized());    }    scrPtr = malloc(sizeof(W_Screen));    if (!scrPtr)        return NULL;    memset(scrPtr, 0, sizeof(W_Screen));    scrPtr->aflags.hasAppIcon = 1;    scrPtr->display = display;    scrPtr->screen = screen;    scrPtr->rcontext = context;    scrPtr->depth = context->depth;    scrPtr->visual = context->visual;    scrPtr->lastEventTime = 0;    scrPtr->colormap = context->cmap;    scrPtr->rootWin = RootWindow(display, screen);    scrPtr->fontCache = WMCreateHashTable(WMStringPointerHashCallbacks);#ifdef XFT    scrPtr->xftdraw = XftDrawCreate(scrPtr->display, W_DRAWABLE(scrPtr),                                    scrPtr->visual, scrPtr->colormap);#endif    /* create input method stuff */    W_InitIMStuff(scrPtr);    /* Create missing CUT_BUFFERs */    {        Atom *rootWinProps;        int exists[8] = {0, 0, 0, 0, 0, 0, 0, 0};        int count;        rootWinProps = XListProperties(display, scrPtr->rootWin, &count);        for (i=0; i<count; i++) {            switch(rootWinProps[i]) {            case XA_CUT_BUFFER0:                exists[0] = 1; break;            case XA_CUT_BUFFER1:                exists[1] = 1; break;            case XA_CUT_BUFFER2:                exists[2] = 1; break;            case XA_CUT_BUFFER3:                exists[3] = 1; break;            case XA_CUT_BUFFER4:                exists[4] = 1; break;            case XA_CUT_BUFFER5:                exists[5] = 1; break;            case XA_CUT_BUFFER6:                exists[6] = 1; break;            case XA_CUT_BUFFER7:                exists[7] = 1; break;            default:                break;            }        }        if (rootWinProps) {            XFree(rootWinProps);        }        for (i=0; i<8; i++) {            if (!exists[i]) {                XStoreBuffer(display, "", 0, i);            }        }    }    scrPtr->ignoredModifierMask = 0;    {        int i;        XModifierKeymap *modmap;        KeyCode nlock, slock;        static int mask_table[8] = {            ShiftMask,LockMask,ControlMask,Mod1Mask,            Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask        };        unsigned int numLockMask=0, scrollLockMask=0;        nlock = XKeysymToKeycode(display, XK_Num_Lock);        slock = XKeysymToKeycode(display, XK_Scroll_Lock);        /*         * Find out the masks for the NumLock and ScrollLock modifiers,         * so that we can bind the grabs for when they are enabled too.         */        modmap = XGetModifierMapping(display);        if (modmap!=NULL && modmap->max_keypermod>0) {            for (i=0; i<8*modmap->max_keypermod; i++) {                if (modmap->modifiermap[i]==nlock && nlock!=0)                    numLockMask = mask_table[i/modmap->max_keypermod];                else if (modmap->modifiermap[i]==slock && slock!=0)                    scrollLockMask = mask_table[i/modmap->max_keypermod];            }        }        if (modmap)            XFreeModifiermap(modmap);        scrPtr->ignoredModifierMask = numLockMask|scrollLockMask|LockMask;    }    /* initially allocate some colors */    WMWhiteColor(scrPtr);    WMBlackColor(scrPtr);    WMGrayColor(scrPtr);    WMDarkGrayColor(scrPtr);    gcv.graphics_exposures = False;    gcv.function = GXxor;    gcv.foreground = W_PIXEL(scrPtr->white);    if (gcv.foreground == 0) gcv.foreground = 1;    scrPtr->xorGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction                              |GCGraphicsExposures|GCForeground, &gcv);    gcv.function = GXxor;    gcv.foreground = W_PIXEL(scrPtr->gray);    gcv.subwindow_mode = IncludeInferiors;    scrPtr->ixorGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction                               |GCGraphicsExposures|GCForeground                               |GCSubwindowMode, &gcv);    gcv.function = GXcopy;    scrPtr->copyGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction                               |GCGraphicsExposures, &gcv);    scrPtr->clipGC = XCreateGC(display, W_DRAWABLE(scrPtr), GCFunction                               |GCGraphicsExposures, &gcv);    stipple = XCreateBitmapFromData(display, W_DRAWABLE(scrPtr),                                    STIPPLE_BITS, STIPPLE_WIDTH, STIPPLE_HEIGHT);    gcv.foreground = W_PIXEL(scrPtr->darkGray);    gcv.background = W_PIXEL(scrPtr->gray);    gcv.fill_style = FillStippled;    gcv.stipple = stipple;    scrPtr->stippleGC = XCreateGC(display, W_DRAWABLE(scrPtr),                                  GCForeground|GCBackground|GCStipple                                  |GCFillStyle|GCGraphicsExposures, &gcv);    scrPtr->drawStringGC   = XCreateGC(display, W_DRAWABLE(scrPtr),                                       GCGraphicsExposures, &gcv);    scrPtr->drawImStringGC = XCreateGC(display, W_DRAWABLE(scrPtr),                                       GCGraphicsExposures, &gcv);    /* we need a 1bpp drawable for the monoGC, so borrow this one */    scrPtr->monoGC = XCreateGC(display, stipple, 0, NULL);    scrPtr->stipple = stipple;    scrPtr->useMultiByte = WINGsConfiguration.useMultiByte;    scrPtr->useWideChar = 1;    scrPtr->antialiasedText = WINGsConfiguration.antialiasedText;    scrPtr->normalFont = WMSystemFontOfSize(scrPtr,                                            WINGsConfiguration.defaultFontSize);    scrPtr->boldFont = WMBoldSystemFontOfSize(scrPtr,                                              WINGsConfiguration.defaultFontSize);    if (!scrPtr->boldFont)        scrPtr->boldFont = scrPtr->normalFont;    if (!scrPtr->normalFont) {        wwarning(_("could not load any fonts. Make sure your font installation"                   " and locale settings are correct."));        return NULL;    }    scrPtr->checkButtonImageOn = makePixmap(scrPtr, CHECK_BUTTON_ON,                                            CHECK_BUTTON_ON_WIDTH,                                            CHECK_BUTTON_ON_HEIGHT, False);    scrPtr->checkButtonImageOff = makePixmap(scrPtr, CHECK_BUTTON_OFF,                                             CHECK_BUTTON_OFF_WIDTH,                                             CHECK_BUTTON_OFF_HEIGHT, False);    scrPtr->radioButtonImageOn = makePixmap(scrPtr, RADIO_BUTTON_ON,                                            RADIO_BUTTON_ON_WIDTH,                                            RADIO_BUTTON_ON_HEIGHT, False);    scrPtr->radioButtonImageOff = makePixmap(scrPtr, RADIO_BUTTON_OFF,                                             RADIO_BUTTON_OFF_WIDTH,                                             RADIO_BUTTON_OFF_HEIGHT, False);    scrPtr->buttonArrow = makePixmap(scrPtr, BUTTON_ARROW,                                     BUTTON_ARROW_WIDTH, BUTTON_ARROW_HEIGHT,                                     False);    scrPtr->pushedButtonArrow = makePixmap(scrPtr, BUTTON_ARROW2,                                           BUTTON_ARROW2_WIDTH, BUTTON_ARROW2_HEIGHT,                                           False);    scrPtr->scrollerDimple = makePixmap(scrPtr, SCROLLER_DIMPLE,                                        SCROLLER_DIMPLE_WIDTH,                                        SCROLLER_DIMPLE_HEIGHT, False);    scrPtr->upArrow = makePixmap(scrPtr, SCROLLER_ARROW_UP,                                 SCROLLER_ARROW_UP_WIDTH,                                 SCROLLER_ARROW_UP_HEIGHT, True);    scrPtr->downArrow = makePixmap(scrPtr, SCROLLER_ARROW_DOWN,                                   SCROLLER_ARROW_DOWN_WIDTH,                                   SCROLLER_ARROW_DOWN_HEIGHT, True);    scrPtr->leftArrow = makePixmap(scrPtr, SCROLLER_ARROW_LEFT,                                   SCROLLER_ARROW_LEFT_WIDTH,                                   SCROLLER_ARROW_LEFT_HEIGHT, True);    scrPtr->rightArrow = makePixmap(scrPtr, SCROLLER_ARROW_RIGHT,                                    SCROLLER_ARROW_RIGHT_WIDTH,                                    SCROLLER_ARROW_RIGHT_HEIGHT, True);    scrPtr->hiUpArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_UP,                                   SCROLLER_ARROW_UP_WIDTH,                                   SCROLLER_ARROW_UP_HEIGHT, True);    scrPtr->hiDownArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_DOWN,                                     SCROLLER_ARROW_DOWN_WIDTH,                                     SCROLLER_ARROW_DOWN_HEIGHT, True);    scrPtr->hiLeftArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_LEFT,                                     SCROLLER_ARROW_LEFT_WIDTH,                                     SCROLLER_ARROW_LEFT_HEIGHT, True);    scrPtr->hiRightArrow = makePixmap(scrPtr, HI_SCROLLER_ARROW_RIGHT,                                      SCROLLER_ARROW_RIGHT_WIDTH,                                      SCROLLER_ARROW_RIGHT_HEIGHT, True);    scrPtr->popUpIndicator = makePixmap(scrPtr, POPUP_INDICATOR,                                        POPUP_INDICATOR_WIDTH,                                        POPUP_INDICATOR_HEIGHT, True);    scrPtr->pullDownIndicator = makePixmap(scrPtr, PULLDOWN_INDICATOR,                                           PULLDOWN_INDICATOR_WIDTH,                                           PULLDOWN_INDICATOR_HEIGHT, True);    scrPtr->checkMark = makePixmap(scrPtr, CHECK_MARK,                                   CHECK_MARK_WIDTH,                                   CHECK_MARK_HEIGHT, True);    loadPixmaps(scrPtr);    scrPtr->defaultCursor = XCreateFontCursor(display, XC_left_ptr);    scrPtr->textCursor = XCreateFontCursor(display, XC_xterm);    {        XColor bla;        Pixmap blank;        blank = XCreatePixmap(display, scrPtr->stipple, 1, 1, 1);        XSetForeground(display, scrPtr->monoGC, 0);        XFillRectangle(display, blank, scrPtr->monoGC, 0, 0, 1, 1);        scrPtr->invisibleCursor = XCreatePixmapCursor(display, blank, blank,                                                      &bla, &bla, 0, 0);        XFreePixmap(display, blank);    }#ifdef HAVE_XINTERNATOMS    XInternAtoms(display, atomNames, sizeof(atomNames)/sizeof(char*), False,                 atoms);#else    for (i = 0; i < sizeof(atomNames)/sizeof(char*); i++) {        atoms[i] = XInternAtom(display, atomNames[i], False);    }#endif    i = 0;    scrPtr->attribsAtom = atoms[i++];    scrPtr->deleteWindowAtom = atoms[i++];    scrPtr->protocolsAtom = atoms[i++];    scrPtr->clipboardAtom = atoms[i++];    scrPtr->xdndAwareAtom = atoms[i++];    scrPtr->xdndSelectionAtom = atoms[i++];    scrPtr->xdndEnterAtom = atoms[i++];    scrPtr->xdndLeaveAtom = atoms[i++];    scrPtr->xdndPositionAtom = atoms[i++];    scrPtr->xdndDropAtom = atoms[i++];    scrPtr->xdndFinishedAtom = atoms[i++];    scrPtr->xdndTypeListAtom = atoms[i++];    scrPtr->xdndActionListAtom = atoms[i++];    scrPtr->xdndActionDescriptionAtom = atoms[i++];    scrPtr->xdndStatusAtom = atoms[i++];    scrPtr->xdndActionCopy = atoms[i++];    scrPtr->xdndActionMove = atoms[i++];    scrPtr->xdndActionLink = atoms[i++];    scrPtr->xdndActionAsk = atoms[i++];    scrPtr->xdndActionPrivate = atoms[i++];    scrPtr->wmIconDragOffsetAtom = atoms[i++];    scrPtr->wmStateAtom = atoms[i++];    scrPtr->rootView = W_CreateRootView(scrPtr);    scrPtr->balloon = W_CreateBalloon(scrPtr);    W_InitApplication(scrPtr);    return scrPtr;}