summarylogtreecommitdiffstats
path: root/enable-wide-glyphs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'enable-wide-glyphs.patch')
-rw-r--r--enable-wide-glyphs.patch274
1 files changed, 0 insertions, 274 deletions
diff --git a/enable-wide-glyphs.patch b/enable-wide-glyphs.patch
deleted file mode 100644
index 0160324009f..00000000000
--- a/enable-wide-glyphs.patch
+++ /dev/null
@@ -1,274 +0,0 @@
-diff --git a/config.h.in b/config.h.in
-index 9547145..d88d6cb 100644
---- a/config.h.in
-+++ b/config.h.in
-@@ -18,6 +18,9 @@
- /* Define if you want your background to use the parent window background */
- #undef ENABLE_TRANSPARENCY
-
-+/* Define if you want to display wide glyphs */
-+#undef ENABLE_WIDE_GLYPHS
-+
- /* Define if you want european extended codesets */
- #undef ENCODING_EU
-
-diff --git a/configure b/configure
-index c756724..fc4fedd 100755
---- a/configure
-+++ b/configure
-@@ -717,6 +717,7 @@ enable_unicode3
- enable_combining
- enable_xft
- enable_font_styles
-+enable_wide_glyphs
- enable_pixbuf
- enable_startup_notification
- enable_transparency
-@@ -1390,6 +1391,7 @@ Optional Features:
- --enable-combining enable composition of base and combining characters
- --enable-xft enable xft support on systems that have it
- --enable-font-styles enable bold and italic support
-+ --enable-wide-glyphs enable displaying of wide glyphs
- --enable-pixbuf enable integration with gdk-pixbuf for background images
- --enable-startup-notification enable freedesktop startup notification support
- --enable-transparency enable transparent backgrounds
-@@ -4723,6 +4725,7 @@ if test "${enable_everything+set}" = set; then :
- support_8bitctrls=no
- support_iso14755=no
- support_styles=no
-+ support_wide_glyphs=no
- support_perl=no
- codesets=
- fi
-@@ -4751,6 +4754,7 @@ if test "${enable_everything+set}" = set; then :
- #support_8bitctrls=yes
- support_iso14755=yes
- support_styles=yes
-+ support_wide_glyphs=yes
- support_perl=yes
- codesets=all
- fi
-@@ -4852,6 +4856,14 @@ if test "${enable_font_styles+set}" = set; then :
- fi
-
-
-+# Check whether --enable-wide-glyphs was given.
-+if test "${enable_wide_glyphs+set}" = set; then :
-+ enableval=$enable_wide_glyphs; if test x$enableval = xyes -o x$enableval = xno; then
-+ support_wide_glyphs=$enableval
-+ fi
-+fi
-+
-+
- # Check whether --enable-pixbuf was given.
- if test "${enable_pixbuf+set}" = set; then :
- enableval=$enable_pixbuf; if test x$enableval = xyes -o x$enableval = xno; then
-@@ -7684,6 +7696,11 @@ if test x$support_styles = xyes; then
- $as_echo "#define ENABLE_STYLES 1" >>confdefs.h
-
- fi
-+if test x$support_wide_glyphs = xyes; then
-+
-+$as_echo "#define ENABLE_WIDE_GLYPHS 1" >>confdefs.h
-+
-+fi
- if test x$support_iso14755 = xyes; then
-
- $as_echo "#define ISO_14755 1" >>confdefs.h
-diff --git a/configure.ac b/configure.ac
-index 813b16e..714b96f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -132,6 +132,7 @@ AC_ARG_ENABLE(everything,
- support_8bitctrls=no
- support_iso14755=no
- support_styles=no
-+ support_wide_glyphs=no
- support_perl=no
- codesets=
- fi
-@@ -160,6 +161,7 @@ AC_ARG_ENABLE(everything,
- #support_8bitctrls=yes
- support_iso14755=yes
- support_styles=yes
-+ support_wide_glyphs=yes
- support_perl=yes
- codesets=all
- fi
-@@ -225,6 +227,12 @@ AC_ARG_ENABLE(font-styles,
- support_styles=$enableval
- fi])
-
-+AC_ARG_ENABLE(wide-glyphs,
-+ [ --enable-wide-glyphs enable displaying of wide glyphs],
-+ [if test x$enableval = xyes -o x$enableval = xno; then
-+ support_wide_glyphs=$enableval
-+ fi])
-+
- AC_ARG_ENABLE(pixbuf,
- [ --enable-pixbuf enable integration with gdk-pixbuf for background images],
- [if test x$enableval = xyes -o x$enableval = xno; then
-@@ -660,6 +668,9 @@ fi
- if test x$support_styles = xyes; then
- AC_DEFINE(ENABLE_STYLES, 1, Define if you want bold and italic support)
- fi
-+if test x$support_wide_glyphs = xyes; then
-+ AC_DEFINE(ENABLE_WIDE_GLYPHS, 1, Define if you want to display wide glyphs)
-+fi
- if test x$support_iso14755 = xyes; then
- AC_DEFINE(ISO_14755, 1, Define if you want ISO 14755 extended support)
- fi
-diff --git a/src/rxvtfont.C b/src/rxvtfont.C
-index 5dcd125..b50b678 100644
---- a/src/rxvtfont.C
-+++ b/src/rxvtfont.C
-@@ -299,6 +299,9 @@ struct rxvt_font_default : rxvt_font {
- {
- careful = false;
-
-+ if (unicode == 0x0020)
-+ return true;
-+
- if (unicode <= 0x001f)
- return true;
-
-@@ -471,6 +474,7 @@ rxvt_font_default::draw (rxvt_drawable &d, int x, int y,
- else
- switch (t)
- {
-+ case ' ':
- case '\t':
- case ZERO_WIDTH_CHAR:
- case NOCHAR:
-@@ -1026,8 +1030,10 @@ rxvt_font_x11::has_char (unicode_t unicode, const rxvt_fontprop *prop, bool &car
-
- careful = xcs->lbearing < 0 || xcs->rbearing > prop->width * wcw;
-
-+#if !ENABLE_WIDE_GLYPHS
- if (careful && !OVERLAP_OK (w, wcw, prop))
- return false;
-+#endif
-
- return true;
- }
-@@ -1345,12 +1351,14 @@ rxvt_font_xft::has_char (unicode_t unicode, const rxvt_fontprop *prop, bool &car
-
- careful = g.x > 0 || w > prop->width * wcw;
-
-+#if !ENABLE_WIDE_GLYPHS
- if (careful && !OVERLAP_OK (w, wcw, prop))
- return false;
-
- // this weeds out _totally_ broken fonts, or glyphs
- if (!OVERLAP_OK (g.xOff, wcw, prop))
- return false;
-+#endif
-
- return true;
- }
-@@ -1395,6 +1403,10 @@ rxvt_font_xft::draw (rxvt_drawable &d, int x, int y,
-
- ep->glyph = glyph;
- ep->x = x_ + (cwidth - extents.xOff >> 1);
-+#if ENABLE_WIDE_GLYPHS
-+ /* Left-align to bounding box, do not overlap to the left. */
-+ max_it(ep->x, x_);
-+#endif
- ep->y = y_ + ascent;
-
- if (extents.xOff == 0)
-diff --git a/src/screen.C b/src/screen.C
-index 41f874b..b7a8fd9 100644
---- a/src/screen.C
-+++ b/src/screen.C
-@@ -935,7 +935,61 @@ rxvt_term::scr_add_lines (const wchar_t *str, int len, int minlines) NOTHROW
- # endif
- #endif
-
-- rend_t rend = SET_FONT (rstyle, FONTSET (rstyle)->find_font (c));
-+ rend_t rend;
-+#if ENABLE_WIDE_GLYPHS
-+ // Re-use previous font for space characters.
-+ // This allows for better display of wider chars with regard to
-+ // backtracking (which uses RS_SAME).
-+ if (c != ' ')
-+ {
-+#endif
-+ rend = SET_FONT (rstyle, FONTSET (rstyle)->find_font (c));
-+#if ENABLE_WIDE_GLYPHS
-+
-+ }
-+ else
-+ {
-+ // Code taken from ENABLE_COMBINING - might get refactored.
-+ line_t *linep;
-+ text_t *tp;
-+ rend_t *rp = NULL;
-+
-+ if (screen.cur.col > 0)
-+ {
-+ linep = line;
-+ tp = line->t + screen.cur.col - 1;
-+ rp = line->r + screen.cur.col - 1;
-+ }
-+ else if (screen.cur.row > 0
-+ && ROW(screen.cur.row - 1).is_longer ())
-+ {
-+ linep = &ROW(screen.cur.row - 1);
-+ tp = linep->t + ncol - 1;
-+ rp = linep->r + ncol - 1;
-+ }
-+
-+ if (rp)
-+ {
-+ // XXX: this font does not show up in iso-14755 mode for the space!?
-+ if (*tp == NOCHAR)
-+ {
-+ while (*tp == NOCHAR && tp > linep->t)
-+ tp--, rp--;
-+
-+ // first try to find a precomposed character
-+ unicode_t n = rxvt_compose (*tp, c);
-+ if (n == NOCHAR)
-+ n = rxvt_composite.compose (*tp, c);
-+
-+ *tp = n;
-+ *rp = SET_FONT (*rp, FONTSET (*rp)->find_font (*tp));
-+ }
-+ rend = SET_FONT (rstyle, GET_FONT(*rp));
-+ }
-+ else
-+ rend = SET_FONT (rstyle, FONTSET (rstyle)->find_font (c));
-+ }
-+#endif
-
- // if the character doesn't fit into the remaining columns...
- if (ecb_unlikely (screen.cur.col > ncol - width && ncol >= width))
-@@ -2399,7 +2453,12 @@ rxvt_term::scr_refresh () NOTHROW
- text--, count++, xpixel -= fwidth;
-
- // force redraw after "careful" characters to avoid pixel droppings
-- for (int i = 0; srp[col + i] & RS_Careful && col + i < ncol - 1; i++)
-+ for (int i = 0;
-+#if ENABLE_WIDE_GLYPHS
-+ // But not for spaces.
-+ stp[col + i + 1] != ' ' &&
-+#endif
-+ srp[col + i] & RS_Careful && col + i < ncol - 1; i++)
- drp[col + i + 1] = srp[col + i + 1] ^ RS_redraw;
-
- // force redraw before "careful" characters to avoid pixel droppings
-diff --git a/src/xdefaults.C b/src/xdefaults.C
-index 2308844..f7e034a 100644
---- a/src/xdefaults.C
-+++ b/src/xdefaults.C
-@@ -302,6 +302,9 @@ static const char optionsstring[] = "options: "
- #if ENABLE_STYLES
- "styles,"
- #endif
-+#if ENABLE_WIDE_GLYPHS
-+ "wide-glyphs,"
-+#endif
- #if ENABLE_COMBINING
- "combining,"
- #endif