applied Nick's 96dpi patch, thanks
authorAnselm R Garbe <anselm@garbe.us>
Sat, 20 Jul 2013 06:52:10 +0000 (08:52 +0200)
committerAnselm R Garbe <anselm@garbe.us>
Sat, 20 Jul 2013 06:52:10 +0000 (08:52 +0200)
config.def.h
surf.c

index 08ff707..49ffa49 100644 (file)
@@ -10,6 +10,7 @@ static char *cafile         = "/etc/ssl/certs/ca-certificates.crt";
 static char *strictssl      = FALSE; /* Refuse untrusted SSL connections */
 static Bool kioskmode      = FALSE; /* Ignore shortcuts */
 static Bool showindicators  = TRUE;  /* Show indicators in window title */
+static Bool zoomto96dpi     = TRUE;  /* Zoom pages to always emulate 96dpi */
 
 static guint defaultfontsize = 12;
 
diff --git a/surf.c b/surf.c
index 939a06f..1a9b17a 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -658,6 +658,8 @@ newclient(void) {
        WebKitWebSettings *settings;
        WebKitWebFrame *frame;
        GdkGeometry hints = { 1, 1 };
+       GdkScreen *screen;
+       gdouble dpi;
        char *uri, *ua;
 
        if(!(c = calloc(1, sizeof(Client))))
@@ -802,6 +804,19 @@ newclient(void) {
        g_object_set(G_OBJECT(settings), "default-font-size",
                        defaultfontsize, NULL);
 
+       /* While stupid, CSS specifies that a pixel represents 1/96 of an inch.
+        * This ensures websites are not unusably small with a high DPI screen.
+        * It is equivalent to firefox's "layout.css.devPixelsPerPx" setting. */
+       if(zoomto96dpi) {
+               screen = gdk_window_get_screen(GTK_WIDGET(c->win)->window);
+               dpi = gdk_screen_get_resolution(screen);
+               if(dpi != -1) {
+                       g_object_set(G_OBJECT(settings), "enforce-96-dpi", true,
+                                       NULL);
+                       webkit_web_view_set_zoom_level(c->view, dpi/96);
+               }
+       }
+
        if(enableinspector) {
                c->inspector = WEBKIT_WEB_INSPECTOR(
                                webkit_web_view_get_inspector(c->view));