void test_font (void) { PopplerFontInfo *font_info; PopplerFontsIter *iter; gint n_pages; document = load_document ("slide.pdf"); n_pages = poppler_document_get_n_pages (document); font_info = poppler_font_info_new (document); while (poppler_font_info_scan (font_info, n_pages, &iter)) { if (iter) { do { actual_font_names = g_list_append (actual_font_names, g_strdup (poppler_fonts_iter_get_name (iter))); } while (poppler_fonts_iter_next (iter)); poppler_fonts_iter_free (iter); } } g_object_unref (font_info); expected_font_names = gcut_list_string_new ("IPAPMincho", "LiberationSans-Regular", NULL); gcut_assert_equal_list_string (expected_font_names, actual_font_names); }
static VALUE rg_next(VALUE self) { if (poppler_fonts_iter_next(RVAL2POPPLERFONTSITER(self))) { return Qtrue; } else { rb_ivar_set(self, id_valid, Qfalse); return Qfalse; } }
static VALUE rg_each(VALUE self) { PopplerFontsIter *iter; CHECK_FITER_IS_VALID(self); iter = RVAL2POPPLERFONTSITER(self); do { rb_yield(self); } while (poppler_fonts_iter_next(iter)); rb_ivar_set(self, id_valid, Qfalse); return self; }
static gboolean pgd_fonts_fill_model (PgdFontsDemo *demo) { GtkTreeModel *model; PopplerFontInfo *font_info; PopplerFontsIter *fonts_iter; gint n_pages, scanned = 0; n_pages = poppler_document_get_n_pages (demo->doc); model = gtk_tree_view_get_model (GTK_TREE_VIEW (demo->treeview)); g_object_ref (model); gtk_list_store_clear (GTK_LIST_STORE (model)); font_info = poppler_font_info_new (demo->doc); while (poppler_font_info_scan (font_info, 20, &fonts_iter)) { pgd_fonts_update_progress (demo, n_pages, scanned); while (gtk_events_pending ()) gtk_main_iteration (); scanned += 20; if (!fonts_iter) continue; do { GtkTreeIter iter; const gchar *name; const gchar *type; const gchar *embedded; const gchar *filename; gchar *details; name = poppler_fonts_iter_get_name (fonts_iter); if (!name) name = "No name"; type = font_type_to_string (poppler_fonts_iter_get_font_type (fonts_iter)); if (poppler_fonts_iter_is_embedded (fonts_iter)) { if (poppler_fonts_iter_is_subset (fonts_iter)) embedded = "Embedded subset"; else embedded = "Embedded"; } else { embedded = "Not embedded"; } filename = poppler_fonts_iter_get_file_name (fonts_iter); if (filename) details = g_markup_printf_escaped ("%s\n%s (%s)", type, embedded, filename); else details = g_markup_printf_escaped ("%s\n%s", type, embedded); gtk_list_store_append (GTK_LIST_STORE (model), &iter); gtk_list_store_set (GTK_LIST_STORE (model), &iter, FONTS_NAME_COLUMN, name, FONTS_DETAILS_COLUMN, details, -1); g_free (details); } while (poppler_fonts_iter_next (fonts_iter)); poppler_fonts_iter_free (fonts_iter); } pgd_fonts_update_progress (demo, n_pages, scanned); g_object_unref (font_info); g_object_unref (model); return FALSE; }