524 string query_desc(input_query_desc);
525 #if (PANGO_VERSION <= 12005) 527 query_desc.erase(std::remove(query_desc.begin(), query_desc.end(),
','),
529 const string kMediumStr =
" Medium";
530 std::size_t found = query_desc.find(kMediumStr);
531 if (found != std::string::npos) {
532 query_desc.erase(found, kMediumStr.length());
535 PangoFontDescription *desc = pango_font_description_from_string(
537 PangoFont* selected_font = NULL;
540 PangoFontMap* font_map = pango_cairo_font_map_get_default();
541 PangoContext* context = pango_context_new();
542 pango_context_set_font_map(context, font_map);
545 selected_font = pango_font_map_load_font(font_map, context, desc);
547 g_object_unref(context);
549 if (selected_font == NULL) {
550 pango_font_description_free(desc);
553 PangoFontDescription* selected_desc = pango_font_describe(selected_font);
555 bool equal = pango_font_description_equal(desc, selected_desc);
556 tlog(3,
"query weight = %d \t selected weight =%d\n",
557 pango_font_description_get_weight(desc),
558 pango_font_description_get_weight(selected_desc));
560 char* selected_desc_str = pango_font_description_to_string(selected_desc);
561 tlog(2,
"query_desc: '%s' Selected: '%s'\n", query_desc.c_str(),
563 if (!equal && best_match != NULL) {
564 *best_match = selected_desc_str;
567 int len = best_match->size();
568 if (len > 2 && best_match->at(len - 1) ==
'0' &&
569 best_match->at(len - 2) ==
' ') {
570 *best_match = best_match->substr(0, len - 2);
573 g_free(selected_desc_str);
574 pango_font_description_free(selected_desc);
575 g_object_unref(selected_font);
576 pango_font_description_free(desc);
static void SoftInitFontConfig()
#define DISABLE_HEAP_LEAK_CHECK