diff --git a/src/os_unix.c b/src/os_unix.c
index 0aa6f3c..c69798d 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -4348,6 +4348,68 @@
     return OK;
 }
 
+#if defined(FEAT_EVAL) || defined(PROTO)
+    void
+f_getcellpixels(typval_T *argvars UNUSED, typval_T *rettv)
+{
+    struct cellsize cs;
+    mch_calc_cell_size(&cs);
+
+    if (rettv_list_alloc(rettv) == FAIL)
+        return;
+
+    list_append_number(rettv->vval.v_list, (varnumber_T)cs.cs_xpixel);
+    list_append_number(rettv->vval.v_list, (varnumber_T)cs.cs_ypixel);
+}
+#endif
+
+/*
+ * Try to get the current terminal cell size.
+ * If faile get cell size, fallback 5x10 pixel.
+ */
+    void
+mch_calc_cell_size(struct cellsize *cs_out)
+{
+#if defined(FEAT_GUI)
+    if (!gui.in_use)
+    {
+#endif
+        // get current tty size.
+        struct winsize ws;
+        int fd = 1;
+        int retval = -1;
+        retval = ioctl(fd, TIOCGWINSZ, &ws);
+#  ifdef FEAT_EVAL
+        ch_log(NULL, "ioctl(TIOCGWINSZ) %s", retval == 0 ? "success" : "failed");
+#  endif
+        if (retval == -1)
+        {
+            cs_out->cs_xpixel = -1;
+            cs_out->cs_ypixel = -1;
+            return;
+        }
+
+        // calculate parent tty's pixel per cell.
+        int x_cell_size = ws.ws_xpixel / ws.ws_col;
+        int y_cell_size = ws.ws_ypixel / ws.ws_row;
+
+        // calculate current tty's pixel
+        cs_out->cs_xpixel = x_cell_size;
+        cs_out->cs_ypixel = y_cell_size;
+
+#  ifdef FEAT_EVAL
+        ch_log(NULL, "Got cell pixel size with TIOCGWINSZ: %d x %d", x_cell_size, y_cell_size);
+#  endif
+#if defined(FEAT_GUI)
+    }
+    else
+    {
+        cs_out->cs_xpixel = -1;
+        cs_out->cs_ypixel = -1;
+    }
+#endif
+}
+
 #if defined(FEAT_TERMINAL) || defined(PROTO)
 /*
  * Report the windows size "rows" and "cols" to tty "fd".
@@ -4367,8 +4429,13 @@
 
     ws.ws_col = cols;
     ws.ws_row = rows;
-    ws.ws_xpixel = cols * 5;
-    ws.ws_ypixel = rows * 10;
+
+    // calcurate and set tty pixel size
+    struct cellsize cs;
+    mch_calc_cell_size(&cs);
+    ws.ws_xpixel = cols * cs.cs_xpixel;
+    ws.ws_ypixel = rows * cs.cs_ypixel;
+
     retval = ioctl(tty_fd, TIOCSWINSZ, &ws);
     ch_log(NULL, "ioctl(TIOCSWINSZ) %s", retval == 0 ? "success" : "failed");
 # elif defined(TIOCSSIZE)
