/* gcc bug.c -lX11 -lXft -I /usr/include/freetype2 -lfontconfig */ #include #include #include int main(void) { Display *dpy = XOpenDisplay(NULL); if(dpy == NULL) return 1; int screen = DefaultScreen(dpy); char *fontname = "monospace:size=10"; XftFont *xfont = XftFontOpenName(dpy, screen, fontname); if(xfont == NULL) { printf("Can't load font pattern"); return 1; } FcPattern *pattern = FcNameParse((FcChar8 *) fontname); if (pattern == NULL) { printf("Can't parse name to pattern"); return 1; } long utf8codepoint = 0x1F4D3; // notebook emoji FcCharSet *fccharset = FcCharSetCreate (); FcCharSetAddChar(fccharset, utf8codepoint); FcPatternAddCharSet(pattern, FC_CHARSET, fccharset); FcPatternAddBool(pattern, FC_SCALABLE, FcTrue); FcConfigSubstitute(NULL, pattern, FcMatchPattern); FcDefaultSubstitute(pattern); FcResult result; // drw.c uses XftFontMatch here FcFontMatch (NULL, pattern, &result); XCloseDisplay(dpy); }