示例#1
0
static gboolean
iter_for_file_foreach (GtkTreeModel *model,
                       GtkTreePath *path,
                       GtkTreeIter *iter,
                       gpointer user_data)
{
    IterForFileData *data = user_data;
    gchar *font_path, *font_name, *match_name;
    gboolean retval;

    gtk_tree_model_get (GTK_TREE_MODEL (model), iter,
                        COLUMN_NAME, &font_name,
                        COLUMN_PATH, &font_path,
                        -1);

    if (data->file) {
        retval = (g_strcmp0 (font_path, data->file) == 0);
    } else if (data->face) {
        match_name = font_utils_get_font_name (data->face);
        retval = (g_strcmp0 (font_name, match_name) == 0);
        g_free (match_name);
    }

    g_free (font_path);
    g_free (font_name);

    if (retval) {
        data->iter = *iter;
        data->found = TRUE;
    }

    return retval;
}
示例#2
0
gchar *
font_utils_get_font_name_for_file (FT_Library library,
                                   const gchar *path,
                                   gint face_index)
{
    GFile *file;
    gchar *uri, *contents = NULL, *name = NULL;
    GError *error = NULL;
    FT_Face face;

    file = g_file_new_for_path (path);
    uri = g_file_get_uri (file);

    face = sushi_new_ft_face_from_uri (library, uri, face_index, &contents,
                                       &error);
    if (face != NULL) {
        name = font_utils_get_font_name (face);
        FT_Done_Face (face);
    } else if (error != NULL) {
        g_warning ("Can't get font name: %s\n", error->message);
        g_error_free (error);
    }

    g_free (uri);
    g_object_unref (file);
    g_free (contents);

    return name;
}