CSS letter-spacing property is not used by GtkTextView
Letter spacing is not working in GTK (or Gtkmm, see gtkmm#102 (closed)) via CSS Provider within a Text view.
Although letter-spacing
is an official supported CSS property, according to your own docs.
I created a demo application that makes this issue easy to verify and therefor fully reproducible.
Code:
#include <gtk/gtk.h>
static void
activate(GtkApplication *app,
gpointer user_data)
{
GtkWidget *window;
GtkWidget *view;
GtkWidget *vbox;
GtkTextBuffer *buffer;
GtkTextIter begin;
window = gtk_application_window_new(app);
gtk_window_set_title(GTK_WINDOW(window), "Window");
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
view = gtk_text_view_new();
GtkStyleContext *context = gtk_widget_get_style_context(view);
GtkCssProvider *provider = gtk_css_provider_new();
gtk_css_provider_load_from_data(provider, "textview { font-size: 15pt; letter-spacing: 3.0em; } ", -1, NULL);
gtk_style_context_add_provider(context, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_box_pack_start(GTK_BOX(vbox), view, TRUE, TRUE, 0);
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
gtk_text_buffer_get_start_iter(buffer, &begin);
gtk_text_buffer_insert(buffer, &begin, "blabla", -1);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show_all(window);
}
int main(int argc,
char **argv)
{
GtkApplication *app;
int status;
app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}
Compile with:
gcc `pkg-config --cflags gtk+-3.0` -o main main.c `pkg-config --libs gtk+-3.0`
As you can see, NO letter-spacing is applied.
Funny enough, letter spacing via Pango markup (insert_markup) in a text view is working. So it should be possible with the fonts.
Hopefully you can solve the letter-spacing CSS issue in Gtk! Thank you!
Regards, Melroy van den Berg
Edited by Emmanuele Bassi