Hello community,

here is the log from the commit of package xterm for openSUSE:Factory checked 
in at 2014-06-25 06:57:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xterm (Old)
 and      /work/SRC/openSUSE:Factory/.xterm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xterm"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xterm/xterm.changes      2014-06-18 
07:47:50.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xterm.new/xterm.changes 2014-06-25 
06:57:52.000000000 +0200
@@ -1,0 +2,30 @@
+Mon Jun 23 08:25:46 UTC 2014 - pce...@suse.com
+
+- Patch #308 - 2014/06/19
+  * corrected font used for clipping double-width bitmap fonts
+    from patch #307 changes to work around mis-scaled fonts
+    (Debian #752947).
+  * improve wording of a warning message.
+
+-------------------------------------------------------------------
+Wed Jun 18 09:50:15 UTC 2014 - pce...@suse.com
+
+- Patch #307 - 2014/06/17
+  * fill background for top/bottom parts of
+    double-width/double-height characters, to cover occasional
+    gaps due to bitmap font-scaling (report by Egmont Koblinger).
+  * amend resets for keyboard-type, pointer-mode and title-modes
+    from xterm #305 changes to account for resource settings
+    (Debian #751351).
+  * modify printAttributes feature to include new SGR codes.
+  * modify cursor show/hide logic to work with italic fonts.
+  * do clipping and filling for a case with bitmap-fonts and
+    italics when the font server returns only a "close" match
+    (report/testcase by Egmont Koblinger).
+  * adjust loop comparison for underlining to display underlines
+    on 5x8 font as in patch #304 (Debian #750733).
+  * amend fix for Freedesktop #15979 (Debian #750733).
+  * amend xterm.appdata.xml, making it validate with current
+    schema.
+
+-------------------------------------------------------------------

Old:
----
  xterm-306.tgz
  xterm-306.tgz.asc

New:
----
  xterm-308.tgz
  xterm-308.tgz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xterm.spec ++++++
--- /var/tmp/diff_new_pack.oND5H3/_old  2014-06-25 06:57:53.000000000 +0200
+++ /var/tmp/diff_new_pack.oND5H3/_new  2014-06-25 06:57:53.000000000 +0200
@@ -52,7 +52,7 @@
 %if 0%{?suse_version} > 1210
 Requires:       luit
 %endif
-Version:        306
+Version:        308
 Release:        0
 Summary:        The basic X terminal program
 License:        MIT





++++++ xterm-306.tgz -> xterm-308.tgz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/MANIFEST new/xterm-308/MANIFEST
--- old/xterm-306/MANIFEST      2014-06-03 22:25:02.000000000 +0200
+++ new/xterm-308/MANIFEST      2014-06-19 21:58:13.000000000 +0200
@@ -1,4 +1,4 @@
-MANIFEST for xterm-306, version xterm-306
+MANIFEST for xterm-308, version xterm-308
 
--------------------------------------------------------------------------------
 MANIFEST                        this file
 256colres.h                     resource-definitions for 256-color mode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/cachedGCs.c new/xterm-308/cachedGCs.c
--- old/xterm-306/cachedGCs.c   2011-09-11 16:59:38.000000000 +0200
+++ new/xterm-308/cachedGCs.c   2014-06-13 01:04:07.000000000 +0200
@@ -1,7 +1,7 @@
-/* $XTermId: cachedGCs.c,v 1.61 2011/09/11 14:59:38 tom Exp $ */
+/* $XTermId: cachedGCs.c,v 1.62 2014/06/12 23:04:07 tom Exp $ */
 
 /*
- * Copyright 2007-2010,2011 by Thomas E. Dickey
+ * Copyright 2007-2011,2014 by Thomas E. Dickey
  *
  *                         All Rights Reserved
  *
@@ -120,7 +120,7 @@
 #undef CASE
 
 static const char *
-traceVTwin(XtermWidget xw, VTwin * value)
+traceVTwin(XtermWidget xw, VTwin *value)
 {
     const char *result = "?";
     if (value == 0)
@@ -273,7 +273,7 @@
  * Returns the appropriate cache pointer.
  */
 static CgsCache *
-myCache(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId)
+myCache(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId)
 {
     CgsCache *result = 0;
 
@@ -304,7 +304,7 @@
 }
 
 static Drawable
-myDrawable(XtermWidget xw, VTwin * cgsWin)
+myDrawable(XtermWidget xw, VTwin *cgsWin)
 {
     Drawable drawable = 0;
 
@@ -316,7 +316,7 @@
 }
 
 static GC
-newCache(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId, CgsCache * me)
+newCache(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, CgsCache * me)
 {
     XGCValues xgcv;
     XtGCMask mask;
@@ -448,11 +448,12 @@
     THIS(used) = 0;
     return THIS(gc);
 }
+
 /*
  * Use the "setCgsXXXX()" calls to initialize parameters for a new GC.
  */
 void
-setCgsFore(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId, Pixel fg)
+setCgsFore(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, Pixel fg)
 {
     CgsCache *me;
 
@@ -463,7 +464,7 @@
 }
 
 void
-setCgsBack(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId, Pixel bg)
+setCgsBack(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, Pixel bg)
 {
     CgsCache *me;
 
@@ -475,7 +476,7 @@
 
 #if OPT_DEC_CHRSET
 void
-setCgsCSet(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId, unsigned cset)
+setCgsCSet(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, unsigned cset)
 {
     CgsCache *me;
 
@@ -489,7 +490,7 @@
 #endif
 
 void
-setCgsFont(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId, XTermFonts * font)
+setCgsFont(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, XTermFonts * font)
 {
     CgsCache *me;
 
@@ -505,8 +506,9 @@
                font = &(TScreenOf(xw)->fnts[fNorm]);
        }
        if (HaveFont(font) && okFont(font->fs)) {
-           TRACE2(("...updated next font in %p for %s to %s\n",
-                   me, traceCgsEnum(cgsId), traceFont(font)));
+           TRACE2(("setCgsFont next: %s for %s slot %p, gc %#x\n",
+                   traceFont(font), traceCgsEnum(cgsId),
+                   me, (unsigned) THIS(gc)));
            TRACE2(("...next font was %s\n", traceFont(NEXT(font))));
            NEXT(font) = font;
            me->mask |= GCFont;
@@ -523,7 +525,7 @@
  * Keep the GC's so we can simply change them rather than creating new ones.
  */
 void
-clrCgsFonts(XtermWidget xw, VTwin * cgsWin, XTermFonts * font)
+clrCgsFonts(XtermWidget xw, VTwin *cgsWin, XTermFonts * font)
 {
     CgsCache *me;
     int j, k;
@@ -559,7 +561,7 @@
  * Return a GC associated with the given id, allocating if needed.
  */
 GC
-getCgsGC(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId)
+getCgsGC(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId)
 {
     CgsCache *me;
     GC result = 0;
@@ -648,7 +650,7 @@
  * Return the font for the given GC.
  */
 CgsEnum
-getCgsId(XtermWidget xw, VTwin * cgsWin, GC gc)
+getCgsId(XtermWidget xw, VTwin *cgsWin, GC gc)
 {
     int n;
     CgsEnum result = gcNorm;
@@ -670,7 +672,7 @@
  * Return the font for the given GC.
  */
 XTermFonts *
-getCgsFont(XtermWidget xw, VTwin * cgsWin, GC gc)
+getCgsFont(XtermWidget xw, VTwin *cgsWin, GC gc)
 {
     int n;
     XTermFonts *result = 0;
@@ -692,7 +694,7 @@
  * Return the foreground color for the given GC.
  */
 Pixel
-getCgsFore(XtermWidget xw, VTwin * cgsWin, GC gc)
+getCgsFore(XtermWidget xw, VTwin *cgsWin, GC gc)
 {
     int n;
     Pixel result = 0;
@@ -714,7 +716,7 @@
  * Return the background color for the given GC.
  */
 Pixel
-getCgsBack(XtermWidget xw, VTwin * cgsWin, GC gc)
+getCgsBack(XtermWidget xw, VTwin *cgsWin, GC gc)
 {
     int n;
     Pixel result = 0;
@@ -736,7 +738,7 @@
  * Copy the parameters (except GC of course) from one cache record to another.
  */
 void
-copyCgs(XtermWidget xw, VTwin * cgsWin, CgsEnum dstCgsId, CgsEnum srcCgsId)
+copyCgs(XtermWidget xw, VTwin *cgsWin, CgsEnum dstCgsId, CgsEnum srcCgsId)
 {
     if (dstCgsId != srcCgsId) {
        CgsCache *me;
@@ -801,7 +803,7 @@
  * Swap the cache records, e.g., when doing reverse-video.
  */
 void
-swapCgs(XtermWidget xw, VTwin * cgsWin, CgsEnum dstCgsId, CgsEnum srcCgsId)
+swapCgs(XtermWidget xw, VTwin *cgsWin, CgsEnum dstCgsId, CgsEnum srcCgsId)
 {
     if (dstCgsId != srcCgsId) {
        CgsCache *dst;
@@ -826,7 +828,7 @@
  * Free any GC associated with the given id.
  */
 GC
-freeCgs(XtermWidget xw, VTwin * cgsWin, CgsEnum cgsId)
+freeCgs(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId)
 {
     CgsCache *me;
     int j;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/charproc.c new/xterm-308/charproc.c
--- old/xterm-306/charproc.c    2014-06-04 01:38:02.000000000 +0200
+++ new/xterm-308/charproc.c    2014-06-13 02:53:14.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: charproc.c,v 1.1359 2014/06/03 23:38:02 tom Exp $ */
+/* $XTermId: charproc.c,v 1.1363 2014/06/13 00:53:14 tom Exp $ */
 
 /*
  * Copyright 1999-2013,2014 by Thomas E. Dickey
@@ -7734,7 +7734,10 @@
     init_Ires(screen.border);
     init_Bres(screen.jumpscroll);
     init_Bres(screen.fastscroll);
+
     init_Bres(screen.old_fkeys);
+    wnew->screen.old_fkeys0 = wnew->screen.old_fkeys;
+
     init_Bres(screen.delete_is_del);
     initializeKeyboardType(wnew);
 #ifdef ALLOWLOGGING
@@ -7784,6 +7787,8 @@
     TScreenOf(wnew)->vtXX_level = (TScreenOf(wnew)->terminal_id / 100);
 
     init_Ires(screen.title_modes);
+    wnew->screen.title_modes0 = wnew->screen.title_modes;
+
     init_Bres(screen.visualbell);
     init_Bres(screen.flash_line);
     init_Ires(screen.visualBellDelay);
@@ -7837,6 +7842,7 @@
 
     TScreenOf(wnew)->pointer_cursor = TScreenOf(request)->pointer_cursor;
     init_Ires(screen.pointer_mode);
+    wnew->screen.pointer_mode0 = wnew->screen.pointer_mode;
 
     init_Sres(screen.answer_back);
 
@@ -8545,7 +8551,9 @@
        XFreeCursor(screen->display, screen->hidden_cursor);
 
     xtermCloseFonts(xw, screen->fnts);
+#if OPT_WIDE_ATTRS
     xtermCloseFonts(xw, screen->ifnts);
+#endif
     noleaks_cachedCgs(xw);
 
     TRACE_FREE_LEAK(screen->selection_targets_8bit);
@@ -8615,6 +8623,7 @@
     TRACE_FREE_LEAK(xw->misc.default_font.f_wb);
 #endif
 
+#if OPT_LOAD_VTFONTS || OPT_WIDE_CHARS
     for (n = 0; n < NMENUFONTS; ++n) {
        for (k = 0; k < fMAX; ++k) {
            if (screen->menu_font_names[n][k] !=
@@ -8626,6 +8635,7 @@
            }
        }
     }
+#endif
 
 #if OPT_SELECT_REGEX
     for (n = 0; n < NSELECTUNITS; ++n) {
@@ -9929,6 +9939,28 @@
            XDrawLines(screen->display, VWindow(screen), outlineGC,
                       screen->box, NBOX, CoordModePrevious);
        } else {
+#if OPT_WIDE_ATTRS
+           int italics_on = ((ld->attribs[cursor_col] & ATR_ITALIC) != 0);
+           int italics_off = ((xw->flags & ATR_ITALIC) != 0);
+           int fix_italics = (italics_on != italics_off);
+           int which_font = (xw->flags & BOLD ? fBold : fNorm);
+
+           if_OPT_WIDE_CHARS(screen, {
+               if (isWide((int) base)) {
+                   which_font = (xw->flags & BOLD ? fWBold : fWide);
+               }
+           });
+
+           if (fix_italics) {
+               xtermLoadItalics(xw);
+               if (italics_on) {
+                   setCgsFont(xw, currentWin, currentCgs, 
&screen->ifnts[which_font]);
+               } else {
+                   setCgsFont(xw, currentWin, currentCgs, 
&screen->fnts[which_font]);
+               }
+           }
+           currentGC = getCgsGC(xw, currentWin, currentCgs);
+#endif /* OPT_WIDE_ATTRS */
 
            drawXtermText(xw,
                          flags & DRAWX_MASK,
@@ -9959,6 +9991,15 @@
                XDrawLines(screen->display, VDrawable(screen), outlineGC,
                           screen->box, NBOX, CoordModePrevious);
            }
+#if OPT_WIDE_ATTRS
+           if (fix_italics) {
+               if (italics_on) {
+                   setCgsFont(xw, currentWin, currentCgs, 
&screen->fnts[which_font]);
+               } else {
+                   setCgsFont(xw, currentWin, currentCgs, 
&screen->ifnts[which_font]);
+               }
+           }
+#endif
        }
     }
     screen->cursor_state = ON;
@@ -9986,6 +10027,10 @@
 #endif
     int cursor_col;
     LineData *ld = 0;
+#if OPT_WIDE_ATTRS
+    unsigned attr_flags;
+    int which_font = fNorm;
+#endif
 
     if (screen->cursor_state == OFF)
        return;
@@ -10060,6 +10105,24 @@
     else
        in_selection = True;
 
+#if OPT_WIDE_ATTRS
+    attr_flags = ld->attribs[cursor_col];
+    if ((attr_flags & ATR_ITALIC) ^ (xw->flags & ATR_ITALIC)) {
+       which_font = (attr_flags & BOLD ? fBold : fNorm);
+
+       if_OPT_WIDE_CHARS(screen, {
+           if (isWide((int) base)) {
+               which_font = (attr_flags & BOLD ? fWBold : fWide);
+           }
+       });
+       setCgsFont(xw, WhichVWin(screen),
+                  whichXtermCgs(xw, attr_flags, in_selection),
+                  ((attr_flags & ATR_ITALIC)
+                   ? &screen->ifnts[which_font]
+                   : &screen->fnts[which_font]));
+    }
+#endif
+
     currentGC = updatedXtermGC(xw, flags, fg_bg, in_selection);
 
     TRACE(("HideCursor calling drawXtermText cur(%d,%d)\n",
@@ -10091,6 +10154,16 @@
     });
 #endif
     screen->cursor_state = OFF;
+
+#if OPT_WIDE_ATTRS
+    if ((attr_flags & ATR_ITALIC) ^ (xw->flags & ATR_ITALIC)) {
+       setCgsFont(xw, WhichVWin(screen),
+                  whichXtermCgs(xw, xw->flags, in_selection),
+                  ((xw->flags & ATR_ITALIC)
+                   ? &screen->ifnts[which_font]
+                   : &screen->fnts[which_font]));
+    }
+#endif
     resetXtermGC(xw, flags, in_selection);
 
     refresh_displayed_graphics(screen,
@@ -10335,7 +10408,10 @@
 
        TabReset(xw->tabs);
        xw->keyboard.flags = MODE_SRM;
+
+       screen->old_fkeys = screen->old_fkeys0;
        initializeKeyboardType(xw);
+
 #if OPT_INITIAL_ERASE
        if (xw->keyboard.reset_DECBKM == 1)
            xw->keyboard.flags |= MODE_DECBKM;
@@ -10349,8 +10425,8 @@
 #if OPT_SCROLL_LOCK
        xtermClearLEDs(screen);
 #endif
-       screen->title_modes = DEF_TITLE_MODES;
-       screen->pointer_mode = DEF_POINTER_MODE;
+       screen->title_modes = screen->title_modes0;
+       screen->pointer_mode = screen->pointer_mode0;
 #if OPT_SIXEL_GRAPHICS
        if (TScreenOf(xw)->sixel_scrolling)
            xw->keyboard.flags |= MODE_DECSDM;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/fontutils.c new/xterm-308/fontutils.c
--- old/xterm-306/fontutils.c   2014-05-30 10:29:56.000000000 +0200
+++ new/xterm-308/fontutils.c   2014-06-17 22:38:27.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: fontutils.c,v 1.427 2014/05/30 08:29:56 tom Exp $ */
+/* $XTermId: fontutils.c,v 1.439 2014/06/17 20:38:27 tom Exp $ */
 
 /*
  * Copyright 1998-2013,2014 by Thomas E. Dickey
@@ -107,20 +107,20 @@
  */
 typedef struct {
     /* registry, foundry, family */
-    char *beginning;
+    const char *beginning;
     /* weight */
-    char *weight;
+    const char *weight;
     /* slant */
-    char *slant;
+    const char *slant;
     /* wideness */
-    char *wideness;
+    const char *wideness;
     /* add style */
-    char *add_style;
+    const char *add_style;
     int pixel_size;
-    char *point_size;
+    const char *point_size;
     int res_x;
     int res_y;
-    char *spacing;
+    const char *spacing;
     int average_width;
     /* charset registry, charset encoding */
     char *end;
@@ -215,7 +215,7 @@
 
 /*
  * Returns the fields from start to stop in a dash- separated string.  This
- * function will modify the source, putting '\0's in the appropiate place and
+ * function will modify the source, putting '\0's in the appropriate place and
  * moving the beginning forward to after the '\0'
  *
  * This will NOT work for the last field (but we won't need it).
@@ -469,7 +469,7 @@
 italic_font_name(FontNameProperties *props, int use_average_width)
 {
     FontNameProperties myprops = *props;
-    myprops.slant = (char *) "o";
+    myprops.slant = "o";
     return derive_font_name(&myprops, props->weight, use_average_width, 
props->end);
 }
 #endif
@@ -630,6 +630,36 @@
 }
 
 /*
+ * Check normal/bold (or wide/wide-bold) font pairs to see if we will be able
+ * to check for missing glyphs in a comparable manner.
+ */
+static int
+comparable_metrics(XFontStruct *normal, XFontStruct *bold)
+{
+#define DATA "comparable_metrics: "
+    int result = 0;
+
+    if (normal->all_chars_exist) {
+       if (bold->all_chars_exist) {
+           result = 1;
+       } else {
+           TRACE((DATA "all chars exist in normal font, but not in bold\n"));
+       }
+    } else if (normal->per_char != 0) {
+       if (bold->per_char != 0) {
+           result = 1;
+       } else {
+           TRACE((DATA "normal font has per-char metrics, but not bold\n"));
+       }
+    } else {
+       TRACE((DATA "normal font is not very good!\n"));
+       result = 1;             /* give in (we're not going in reverse) */
+    }
+    return result;
+#undef DATA
+}
+
+/*
  * If the font server tries to adjust another font, it may not adjust it
  * properly.  Check that the bounding boxes are compatible.  Otherwise we'll
  * leave trash on the display when we mix normal and bold fonts.
@@ -764,10 +794,10 @@
 cache_menu_font_name(TScreen *screen, int fontnum, int which, const char *name)
 {
     if (name != 0) {
-       char *last = (char *) screen->menu_font_names[fontnum][which];
+       String last = screen->menu_font_names[fontnum][which];
        if (last != 0) {
            if (strcmp(last, name)) {
-               free(last);
+               FREE_STRING(last);
                TRACE(("caching menu fontname %d.%d %s\n", fontnum, which, 
name));
                screen->menu_font_names[fontnum][which] = x_strdup(name);
            }
@@ -913,7 +943,6 @@
 {
     if (!IsEmpty(fnt->fn)) {
        XFontStruct *fs = fnt->fs;
-       unsigned missing = 0;
        unsigned first_char = 0;
        unsigned last_char = 0;
        unsigned ch;
@@ -926,12 +955,6 @@
            last_char = (fs->max_byte1 * 256) + fs->max_char_or_byte2;
        }
 
-       for (ch = first_char; ch <= last_char; ++ch) {
-           if (xtermMissingChar(ch, fnt)) {
-               ++missing;
-           }
-       }
-
        printf("\t%s: %s\n", tag, NonNull(fnt->fn));
        printf("\t\tall chars:     %s\n", fs->all_chars_exist ? "yes" : "no");
        printf("\t\tdefault char:  %d\n", fs->default_char);
@@ -941,8 +964,19 @@
        printf("\t\tfirst char:    %u\n", first_char);
        printf("\t\tlast char:     %u\n", last_char);
        printf("\t\tmaximum-chars: %u\n", countGlyphs(fs));
-       printf("\t\tmissing-chars: %u\n", missing);
-       printf("\t\tpresent-chars: %u\n", countGlyphs(fs) - missing);
+       if (FontLacksMetrics(fnt)) {
+           printf("\t\tmissing-chars: ?\n");
+           printf("\t\tpresent-chars: ?\n");
+       } else {
+           unsigned missing = 0;
+           for (ch = first_char; ch <= last_char; ++ch) {
+               if (xtermMissingChar(ch, fnt)) {
+                   ++missing;
+               }
+           }
+           printf("\t\tmissing-chars: %u\n", missing);
+           printf("\t\tpresent-chars: %u\n", countGlyphs(fs) - missing);
+       }
        printf("\t\tmin_byte1:     %d\n", fs->min_byte1);
        printf("\t\tmax_byte1:     %d\n", fs->max_byte1);
        printf("\t\tproperties:    %d\n", fs->n_properties);
@@ -1015,6 +1049,24 @@
     });
 }
 
+#if OPT_TRACE
+static void
+show_font_misses(const char *name, XTermFonts * fp)
+{
+    if (fp->fs != 0) {
+       if (FontLacksMetrics(fp)) {
+           TRACE(("%s font lacks metrics\n", name));
+       } else if (FontIsIncomplete(fp)) {
+           TRACE(("%s font is incomplete\n", name));
+       } else {
+           TRACE(("%s font is complete\n", name));
+       }
+    } else {
+       TRACE(("%s font is missing\n", name));
+    }
+}
+#endif
+
 int
 xtermLoadFont(XtermWidget xw,
              const VTFontNames * fonts,
@@ -1114,7 +1166,8 @@
        if (fp == 0 || fnts[fBold].fs == 0) {
            xtermCopyFontInfo(&fnts[fBold], &fnts[fNorm]);
            TRACE(("...cannot load a matching bold font\n"));
-       } else if (same_font_size(xw, fnts[fNorm].fs, fnts[fBold].fs)
+       } else if (comparable_metrics(fnts[fNorm].fs, fnts[fBold].fs)
+                  && same_font_size(xw, fnts[fNorm].fs, fnts[fBold].fs)
                   && got_bold_font(screen->display, fnts[fBold].fs, 
myfonts.f_b)) {
            TRACE(("...got a matching bold font\n"));
            cache_menu_font_name(screen, fontnum, fBold, myfonts.f_b);
@@ -1241,8 +1294,10 @@
     if_OPT_WIDE_CHARS(screen, {
        if (fnts[fWide].fs != 0
            && fnts[fWBold].fs != 0
-           && !same_font_size(xw, fnts[fWide].fs, fnts[fWBold].fs)
-           && (is_fixed_font(fnts[fWide].fs) && 
is_fixed_font(fnts[fWBold].fs))) {
+           && (!comparable_metrics(fnts[fWide].fs, fnts[fWBold].fs)
+               || (!same_font_size(xw, fnts[fWide].fs, fnts[fWBold].fs)
+                   && is_fixed_font(fnts[fWide].fs)
+                   && is_fixed_font(fnts[fWBold].fs)))) {
            TRACE(("...ignoring mismatched normal/bold wide fonts\n"));
            xtermCloseFont(xw, &fnts[fWBold]);
            xtermCopyFontInfo(&fnts[fWBold], &fnts[fWide]);
@@ -1329,10 +1384,15 @@
     {
        unsigned ch;
 
-       TRACE(("normal font is %scomplete\n",
-              FontIsIncomplete(&fnts[fNorm]) ? "in" : ""));
-       TRACE(("bold font is %scomplete\n",
-              FontIsIncomplete(&fnts[fBold]) ? "in" : ""));
+#if OPT_TRACE
+#define TRACE_MISS(index) show_font_misses(#index, &fnts[index])
+       TRACE_MISS(fNorm);
+       TRACE_MISS(fBold);
+#if OPT_WIDE_CHARS
+       TRACE_MISS(fWide);
+       TRACE_MISS(fWBold);
+#endif
+#endif
 
        for (ch = 1; ch < 32; ch++) {
            unsigned n = ch;
@@ -1474,11 +1534,26 @@
                                          screen->fnts[n].fs,
                                          0)) != 0) {
                if ((name = italic_font_name(fp, fp->average_width)) != 0) {
+                   TRACE(("xtermLoadItalics #%d %s\n", n, name));
                    (void) xtermOpenFont(xw,
                                         name,
                                         &(screen->ifnts[n]),
                                         fwResource,
                                         False);
+#if OPT_TRACE
+                   {
+                       XFontStruct *fs =
+                       screen->ifnts[n].fs;
+                       if (fs != 0) {
+                           TRACE(("...actual size %dx%d (ascent %d, descent 
%d)\n",
+                                  fs->ascent +
+                                  fs->descent,
+                                  fs->max_bounds.width,
+                                  fs->ascent,
+                                  fs->descent));
+                       }
+                   }
+#endif
                    free(name);
                }
            }
@@ -1527,7 +1602,18 @@
        }
 
 #define COPY_DEFAULT_FONTS(target, source) \
-       target.default_font = source.default_font
+       xtermCopyVTFontNames(&target.default_font, &source.default_font)
+
+static void
+xtermCopyVTFontNames(VTFontNames * target, VTFontNames * source)
+{
+    target->f_n = x_strdup(source->f_n);
+    target->f_b = x_strdup(source->f_b);
+#if OPT_WIDE_CHARS
+    target->f_w = x_strdup(source->f_w);
+    target->f_wb = x_strdup(source->f_wb);
+#endif
+}
 
 void
 xtermSaveVTFonts(XtermWidget xw)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/fontutils.h new/xterm-308/fontutils.h
--- old/xterm-306/fontutils.h   2014-05-26 18:48:15.000000000 +0200
+++ new/xterm-308/fontutils.h   2014-06-08 23:10:27.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: fontutils.h,v 1.93 2014/05/26 16:48:15 tom Exp $ */
+/* $XTermId: fontutils.h,v 1.94 2014/06/08 21:10:27 tom Exp $ */
 
 /*
  * Copyright 1998-2013,2014 by Thomas E. Dickey
@@ -64,8 +64,8 @@
 
 #define FontIsIncomplete(font) \
        ((font)->fs != 0 \
-        && ((font)->fs->per_char == 0 \
-            || !(font)->fs->all_chars_exist))
+        && (font)->fs->per_char != 0 \
+        && !(font)->fs->all_chars_exist)
 
 #if OPT_BOX_CHARS
 
@@ -90,8 +90,7 @@
 #define IsXtermMissingChar(screen, ch, font) \
         (CheckedKnownMissing(font, ch) \
          ? ((font)->known_missing[(Char)(ch)] > 1) \
-         : (FontLacksMetrics(font) \
-          || (FontIsIncomplete(font) && xtermMissingChar(ch, font)) \
+         : ((FontIsIncomplete(font) && xtermMissingChar(ch, font)) \
           || ForceBoxChars(screen, ch)))
 
 extern void xtermDrawBoxChar (XtermWidget /* xw */, unsigned /* ch */, 
unsigned /* attr_flags */, unsigned /* draw_flags */, GC /* gc */, int /* x */, 
int /* y */, int /* cols */);
@@ -99,7 +98,7 @@
 #define IsXtermMissingChar(screen, ch, font) False
 #endif
 
-#if OPT_BOX_CHARS || OPT_REPORT_FONTS 
+#if OPT_BOX_CHARS || OPT_REPORT_FONTS
 extern Bool xtermMissingChar (unsigned /* ch */, XTermFonts */* font */);
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/package/debian/changelog 
new/xterm-308/package/debian/changelog
--- old/xterm-306/package/debian/changelog      2014-06-04 02:17:14.000000000 
+0200
+++ new/xterm-308/package/debian/changelog      2014-06-19 21:58:13.000000000 
+0200
@@ -1,3 +1,15 @@
+xterm-dev (308) unstable; urgency=low
+
+  * maintenance updates
+
+ -- Thomas E. Dickey <dic...@invisible-island.net>  Thu, 19 Jun 2014 15:58:13 
-0400
+
+xterm-dev (307) unstable; urgency=low
+
+  * maintenance updates
+
+ -- Thomas E. Dickey <dic...@invisible-island.net>  Wed, 04 Jun 2014 18:58:36 
-0400
+
 xterm-dev (306) unstable; urgency=low
 
   * fix incomplete implementation of new SGRs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/package/freebsd/Makefile 
new/xterm-308/package/freebsd/Makefile
--- old/xterm-306/package/freebsd/Makefile      2014-06-03 22:25:05.000000000 
+0200
+++ new/xterm-308/package/freebsd/Makefile      2014-06-19 21:58:13.000000000 
+0200
@@ -5,7 +5,7 @@
 # and "make makesum".
 
 PORTNAME=      xterm
-PORTVERSION=   306
+PORTVERSION=   308
 CATEGORIES=    x11
 MASTER_SITES=  ftp://invisible-island.net/xterm/ \
                CRITICAL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/package/xterm.spec 
new/xterm-308/package/xterm.spec
--- old/xterm-306/package/xterm.spec    2014-06-03 22:25:02.000000000 +0200
+++ new/xterm-308/package/xterm.spec    2014-06-19 21:58:13.000000000 +0200
@@ -1,11 +1,11 @@
-# $XTermId: xterm.spec,v 1.70 2014/06/03 20:25:02 tom Exp $
+# $XTermId: xterm.spec,v 1.72 2014/06/19 19:58:13 tom Exp $
 Summary: X terminal emulator (development version)
 %global my_middle xterm
 %global my_suffix -dev
 %global fullname %{my_middle}%{my_suffix}
 %global my_class XTermDev
 Name: %{fullname}
-Version: 306
+Version: 308
 Release: 1
 License: X11
 Group: User Interface/X
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/print.c new/xterm-308/print.c
--- old/xterm-306/print.c       2014-05-11 12:55:11.000000000 +0200
+++ new/xterm-308/print.c       2014-06-13 02:36:51.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: print.c,v 1.151 2014/05/11 10:55:11 tom Exp $ */
+/* $XTermId: print.c,v 1.152 2014/06/13 00:36:51 tom Exp $ */
 
 /*
  * Copyright 1997-2013,2014 by Thomas E. Dickey
@@ -379,6 +379,12 @@
     strcpy(msg, "\033[0");
     if (attr & BOLD)
        strcat(msg, ";1");
+#if OPT_WIDE_ATTRS
+    if (attr & ATR_FAINT)
+       strcat(msg, ";2");
+    if (attr & ATR_ITALIC)
+       strcat(msg, ";3");
+#endif
     if (attr & UNDERLINE)
        strcat(msg, ";4");      /* typo? DEC documents this as '2' */
     if (attr & BLINK)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/ptyx.h new/xterm-308/ptyx.h
--- old/xterm-306/ptyx.h        2014-05-26 17:32:29.000000000 +0200
+++ new/xterm-308/ptyx.h        2014-06-13 02:53:35.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: ptyx.h,v 1.808 2014/05/26 15:32:29 tom Exp $ */
+/* $XTermId: ptyx.h,v 1.809 2014/06/13 00:53:35 tom Exp $ */
 
 /*
  * Copyright 1999-2013,2014 by Thomas E. Dickey
@@ -2027,6 +2027,7 @@
 #endif /* NO_ACTIVE_ICON */
 
        int             pointer_mode;   /* when to use hidden_cursor    */
+       int             pointer_mode0;  /* ...initial value             */
        Boolean         hide_pointer;   /* true to use "hidden_cursor"  */
        Cursor          pointer_cursor; /* pointer cursor in window     */
        Cursor          hidden_cursor;  /* hidden cursor in window      */
@@ -2173,6 +2174,7 @@
        IFlags          save_modes[DP_LAST]; /* save dec/xterm private modes */
 
        int             title_modes;    /* control set/get of titles    */
+       int             title_modes0;   /* ...initial value             */
        SaveTitle       *save_title;
 
        /* Improved VT100 emulation stuff.                              */
@@ -2193,6 +2195,7 @@
        Boolean         jumpscroll;     /* whether we should jumpscroll */
        Boolean         fastscroll;     /* whether we should fastscroll */
        Boolean         old_fkeys;      /* true for compatible fkeys    */
+       Boolean         old_fkeys0;     /* ...initial value             */
        Boolean         underline;      /* whether to underline text    */
 
 #if OPT_MAXIMIZE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/screen.c new/xterm-308/screen.c
--- old/xterm-306/screen.c      2014-05-26 19:54:45.000000000 +0200
+++ new/xterm-308/screen.c      2014-06-19 23:09:11.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: screen.c,v 1.496 2014/05/26 17:54:45 tom Exp $ */
+/* $XTermId: screen.c,v 1.500 2014/06/19 21:09:11 tom Exp $ */
 
 /*
  * Copyright 1999-2013,2014 by Thomas E. Dickey
@@ -62,7 +62,7 @@
 
 #include <X11/Xatom.h>
 
-#if OPT_WIDE_CHARS
+#if OPT_WIDE_ATTRS || OPT_WIDE_CHARS
 #include <fontutils.h>
 #endif
 
@@ -1423,7 +1423,7 @@
 #endif
     static int recurse = 0;
 #if OPT_WIDE_ATTRS
-    unsigned old_attrs = 0;
+    unsigned old_attrs = xw->flags;
 #endif
 
     TRACE(("ScrnRefresh top %d (%d,%d) - (%d,%d)%s {{\n",
@@ -1431,6 +1431,8 @@
           nrows, ncols,
           force ? " force" : ""));
 
+    ++recurse;
+
     if (screen->cursorp.col >= leftcol
        && screen->cursorp.col <= (leftcol + ncols - 1)
        && screen->cursorp.row >= ROW2INX(screen, toprow)
@@ -1510,7 +1512,7 @@
                    col = leftcol;
                }
            } else {
-               xtermWarning("This should not happen. Why is it so?\n");
+               xtermWarning("Unexpected recursion drawing hidden 
characters.\n");
            }
        });
 
@@ -1549,13 +1551,11 @@
        } else {
            /* row intersects selection; split into pieces of single type */
            if (row == screen->startH.row && col < screen->startH.col) {
-               recurse++;
                ScrnRefresh(xw, row, col, 1, screen->startH.col - col,
                            force);
                col = screen->startH.col;
            }
            if (row == screen->endH.row && maxcol >= screen->endH.col) {
-               recurse++;
                ScrnRefresh(xw, row, screen->endH.col, 1,
                            maxcol - screen->endH.col + 1, force);
                maxcol = screen->endH.col - 1;
@@ -1766,6 +1766,9 @@
      * screen foreground and background so that other functions (e.g.,
      * ClearRight) will get the correct colors.
      */
+#if OPT_WIDE_ATTRS
+    (void) refreshFontGCs(xw, xw->flags, old_attrs);
+#endif
     if_OPT_ISO_COLORS(screen, {
        if (gc_changes & FG_COLOR)
            SGR_Foreground(xw, xw->cur_foreground);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/util.c new/xterm-308/util.c
--- old/xterm-306/util.c        2014-06-04 01:39:08.000000000 +0200
+++ new/xterm-308/util.c        2014-06-20 00:15:20.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: util.c,v 1.648 2014/06/03 23:39:08 tom Exp $ */
+/* $XTermId: util.c,v 1.660 2014/06/19 22:15:20 tom Exp $ */
 
 /*
  * Copyright 1999-2013,2014 by Thomas E. Dickey
@@ -3222,13 +3222,14 @@
     if (screen->underline && !did_ul) {
        int repeat = 0;
        int descent = FontDescent(screen);
+       int length = x + (int) underline_len * font_width - 1;
 
 #if OPT_WIDE_ATTRS
        if ((attr_flags & ATR_STRIKEOUT)) {
            int where = y - ((3 * FontAscent(screen)) / 8);
            XDrawLine(screen->display, VDrawable(screen), gc,
                      x, where,
-                     x + (int) underline_len * font_width - 1,
+                     length,
                      where);
        }
        if ((attr_flags & ATR_DBL_UNDER)) {
@@ -3239,17 +3240,65 @@
            repeat = 1;
        }
        while (repeat-- > 0) {
-           if (descent-- > 0)
+           if (descent-- > 1)
                y++;
            XDrawLine(screen->display, VDrawable(screen), gc,
                      x, y,
-                     x + (int) underline_len * font_width - 1,
+                     length,
                      y);
        }
     }
     return y;
 }
 
+#if OPT_WIDE_ATTRS
+/*
+ * As a special case, we are currently allowing italic fonts to be inexact
+ * matches for the normal font's size.  That introduces a problem:  either the
+ * ascent or descent may be shorter, leaving a gap that has to be filled in. 
+ * Or they may be larger, requiring clipping.  Check for both cases.
+ */
+static int
+fixupItalics(XtermWidget xw,
+            unsigned draw_flags,
+            GC gc,
+            XTermFonts * curFont,
+            int y, int x,
+            int font_width,
+            Cardinal len)
+{
+    TScreen *screen = TScreenOf(xw);
+    VTwin *cgsWin = WhichVWin(screen);
+    XFontStruct *realFp = curFont->fs;
+    XFontStruct *thisFp = getCgsFont(xw, cgsWin, gc)->fs;
+    int need_clipping = 0;
+    int need_filling = 0;
+
+    if (thisFp->ascent > realFp->ascent)
+       need_clipping = 1;
+    else if (thisFp->ascent < realFp->ascent)
+       need_filling = 1;
+
+    if (thisFp->descent > realFp->descent)
+       need_clipping = 1;
+    else if (thisFp->descent < realFp->descent)
+       need_filling = 1;
+
+    if (need_clipping) {
+       beginClipping(screen, gc, font_width, (int) len);
+    }
+    if (need_filling) {
+       xtermFillCells(xw,
+                      draw_flags,
+                      gc,
+                      x,
+                      y - realFp->ascent,
+                      len);
+    }
+    return need_clipping;
+}
+#endif
+
 /*
  * Draws text with the specified combination of bold/underline.  The return
  * value is the updated x position.
@@ -3275,6 +3324,10 @@
     int font_width = ((draw_flags & DOUBLEWFONT) ? 2 : 1) * screen->fnt_wide;
     Bool did_ul = False;
     XTermFonts *curFont;
+#if OPT_WIDE_ATTRS || OPT_WIDE_CHARS
+    int need_clipping = 0;
+    int ascent_adjust = 0;
+#endif
 
 #if OPT_WIDE_CHARS
     if (text == 0)
@@ -3337,6 +3390,7 @@
                if (nr) {
                    xtermSetClipRectangles(screen->display, gc2,
                                           x, y, rp, nr, YXBanded);
+                   xtermFillCells(xw, draw_flags, gc, x, y + rect.y, len * 2);
                } else {
                    XSetClipMask(screen->display, gc2, None);
                }
@@ -3609,14 +3663,14 @@
        }
 #endif /* OPT_BOX_CHARS */
 
-       y = drawUnderline(xw,
-                         gc,
-                         attr_flags,
-                         underline_len,
-                         FontWidth(screen),
-                         x,
-                         y,
-                         did_ul);
+       (void) drawUnderline(xw,
+                            gc,
+                            attr_flags,
+                            underline_len,
+                            FontWidth(screen),
+                            x,
+                            y,
+                            did_ul);
 
        x += (int) len *FontWidth(screen);
 
@@ -3835,7 +3889,6 @@
     if (screen->wide_chars || screen->unicode_font) {
        XChar2b *buffer;
        Bool needWide = False;
-       int ascent_adjust = 0;
        int src, dst;
        Bool useBoldFont;
 
@@ -3969,6 +4022,14 @@
            setCgsBack(xw, currentWin, cgsId, bg);
            gc = getCgsGC(xw, currentWin, cgsId);
 
+#if OPT_WIDE_ATTRS
+#if OPT_DEC_CHRSET
+           if (!(CSET_DOUBLE(chrset) || (draw_flags & DOUBLEWFONT)))
+#endif
+               need_clipping = fixupItalics(xw, draw_flags, gc,
+                                            getCgsFont(xw, currentWin, gc),
+                                            y, x, font_width, len);
+#endif
            if (fntId != fNorm) {
                XFontStruct *thisFp = WhichVFont(screen, fnts[fntId].fs);
                ascent_adjust = (thisFp->ascent
@@ -3999,6 +4060,11 @@
                               x, y + ascent_adjust,
                               buffer, dst);
        }
+#if OPT_WIDE_ATTRS
+       if (need_clipping) {
+           endClipping(screen, gc);
+       }
+#endif
 
        if ((attr_flags & BOLDATTR(screen)) && (screen->enbolden || 
!useBoldFont)) {
            beginClipping(screen, gc, (Cardinal) font_width, len);
@@ -4026,6 +4092,14 @@
        char *buffer = (char *) text;
 #endif
 
+#if OPT_WIDE_ATTRS
+#if OPT_DEC_CHRSET
+       if (!(CSET_DOUBLE(chrset) || (draw_flags & DOUBLEWFONT)))
+#endif
+           need_clipping = fixupItalics(xw, draw_flags, gc, curFont,
+                                        y, x, font_width, len);
+#endif
+
        if (draw_flags & NOBACKGROUND) {
            XDrawString(screen->display, VDrawable(screen), gc,
                        x, y, buffer, length);
@@ -4033,6 +4107,12 @@
            XDrawImageString(screen->display, VDrawable(screen), gc,
                             x, y, buffer, length);
        }
+
+#if OPT_WIDE_ATTRS
+       if (need_clipping) {
+           endClipping(screen, gc);
+       }
+#endif
        underline_len = (Cardinal) length;
        if ((attr_flags & BOLDATTR(screen)) && screen->enbolden) {
            beginClipping(screen, gc, font_width, length);
@@ -4042,14 +4122,14 @@
        }
     }
 
-    y = drawUnderline(xw,
-                     gc,
-                     attr_flags,
-                     underline_len,
-                     font_width,
-                     x,
-                     y,
-                     did_ul);
+    (void) drawUnderline(xw,
+                        gc,
+                        attr_flags,
+                        underline_len,
+                        font_width,
+                        x,
+                        y,
+                        did_ul);
 
     x += ((int) real_length) * FontWidth(screen);
     return x;
@@ -4116,6 +4196,28 @@
     TRACE_HINTS(&(xw->hints));
 }
 
+CgsEnum
+whichXtermCgs(XtermWidget xw, unsigned attr_flags, Bool hilite)
+{
+    TScreen *screen = TScreenOf(xw);
+    CgsEnum cgsId = gcMAX;
+
+    if (ReverseOrHilite(screen, attr_flags, hilite)) {
+       if (attr_flags & BOLDATTR(screen)) {
+           cgsId = gcBoldReverse;
+       } else {
+           cgsId = gcNormReverse;
+       }
+    } else {
+       if (attr_flags & BOLDATTR(screen)) {
+           cgsId = gcBold;
+       } else {
+           cgsId = gcNorm;
+       }
+    }
+    return cgsId;
+}
+
 /*
  * Returns a GC, selected according to the font (reverse/bold/normal) that is
  * required for the current position (implied).  The GC is updated with the
@@ -4126,7 +4228,7 @@
 {
     TScreen *screen = TScreenOf(xw);
     VTwin *win = WhichVWin(screen);
-    CgsEnum cgsId = gcMAX;
+    CgsEnum cgsId = whichXtermCgs(xw, attr_flags, hilite);
     unsigned my_fg = extract_fg(xw, fg_bg, attr_flags);
     unsigned my_bg = extract_bg(xw, fg_bg, attr_flags);
     Pixel fg_pix = getXtermForeground(xw, attr_flags, (int) my_fg);
@@ -4152,12 +4254,6 @@
     checkVeryBoldColors(attr_flags, my_fg);
 
     if (ReverseOrHilite(screen, attr_flags, hilite)) {
-       if (attr_flags & BOLDATTR(screen)) {
-           cgsId = gcBoldReverse;
-       } else {
-           cgsId = gcNormReverse;
-       }
-
 #if OPT_HIGHLIGHT_COLOR
        if (!screen->hilite_color) {
            if (selbg_pix != T_COLOR(screen, TEXT_FG)
@@ -4186,12 +4282,6 @@
            }
        }
 #endif
-    } else {
-       if (attr_flags & BOLDATTR(screen)) {
-           cgsId = gcBold;
-       } else {
-           cgsId = gcNorm;
-       }
     }
 #if OPT_HIGHLIGHT_COLOR
     if (!screen->hilite_color || !screen->hilite_reverse) {
@@ -4227,29 +4317,16 @@
 {
     TScreen *screen = TScreenOf(xw);
     VTwin *win = WhichVWin(screen);
-    CgsEnum cgsId = gcMAX;
+    CgsEnum cgsId = whichXtermCgs(xw, attr_flags, hilite);
     Pixel fg_pix = getXtermForeground(xw, attr_flags, xw->cur_foreground);
     Pixel bg_pix = getXtermBackground(xw, attr_flags, xw->cur_background);
 
     checkVeryBoldColors(attr_flags, xw->cur_foreground);
 
     if (ReverseOrHilite(screen, attr_flags, hilite)) {
-       if (attr_flags & BOLDATTR(screen)) {
-           cgsId = gcBoldReverse;
-       } else {
-           cgsId = gcNormReverse;
-       }
-
        setCgsFore(xw, win, cgsId, bg_pix);
        setCgsBack(xw, win, cgsId, fg_pix);
-
     } else {
-       if (attr_flags & BOLDATTR(screen)) {
-           cgsId = gcBold;
-       } else {
-           cgsId = gcNorm;
-       }
-
        setCgsFore(xw, win, cgsId, fg_pix);
        setCgsBack(xw, win, cgsId, bg_pix);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/version.h new/xterm-308/version.h
--- old/xterm-306/version.h     2014-06-03 22:25:02.000000000 +0200
+++ new/xterm-308/version.h     2014-06-19 21:58:13.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: version.h,v 1.388 2014/06/03 20:25:02 tom Exp $ */
+/* $XTermId: version.h,v 1.391 2014/06/19 19:58:13 tom Exp $ */
 
 /*
  * Copyright 1998-2013,2014 by Thomas E. Dickey
@@ -38,8 +38,8 @@
  * version of X to which this version of xterm has been built.  The resulting
  * number in parentheses is my patch number (Thomas E. Dickey).
  */
-#define XTERM_PATCH   306
-#define XTERM_DATE    2014-06-03
+#define XTERM_PATCH   308
+#define XTERM_DATE    2014-06-19
 
 #ifndef __vendorversion__
 #define __vendorversion__ "XTerm"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/xterm.appdata.xml 
new/xterm-308/xterm.appdata.xml
--- old/xterm-306/xterm.appdata.xml     2014-06-03 00:54:29.000000000 +0200
+++ new/xterm-308/xterm.appdata.xml     2014-06-08 19:29:25.000000000 +0200
@@ -2,7 +2,8 @@
 <!-- Copyright 2014 Thomas Dickey <dic...@invisible-island.net> -->
 <application>
  <id type="desktop">xterm.desktop</id>
- <licence>X11</licence>
+ <metadata_license>CC-BY-3.0</metadata_license>
+ <project_license>X11</project_license>
  <name>XTerm</name>
  <summary>Terminal emulator for the X Window System</summary>
  <description>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/xterm.h new/xterm-308/xterm.h
--- old/xterm-306/xterm.h       2014-05-26 16:37:18.000000000 +0200
+++ new/xterm-308/xterm.h       2014-06-13 01:41:47.000000000 +0200
@@ -1,4 +1,4 @@
-/* $XTermId: xterm.h,v 1.741 2014/05/26 14:37:18 tom Exp $ */
+/* $XTermId: xterm.h,v 1.742 2014/06/12 23:41:47 tom Exp $ */
 
 /*
  * Copyright 1999-2013,2014 by Thomas E. Dickey
@@ -1329,6 +1329,7 @@
 /* util.c */
 extern Boolean isDefaultBackground(const char * /* name */);
 extern Boolean isDefaultForeground(const char * /* name */);
+extern CgsEnum whichXtermCgs(XtermWidget /* xw */, unsigned /* attr_flags */, 
Bool /* hilite */);
 extern GC updatedXtermGC (XtermWidget /* xw */, unsigned  /* flags */, 
unsigned /* fg_bg */, Bool  /* hilite */);
 extern Pixel getXtermBackground(XtermWidget /* xw */, unsigned /* flags */, 
int /* color */);
 extern Pixel getXtermForeground(XtermWidget /* xw */, unsigned /* flags */, 
int /* color */);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xterm-306/xterm.log.html new/xterm-308/xterm.log.html
--- old/xterm-306/xterm.log.html        2014-06-04 02:28:35.000000000 +0200
+++ new/xterm-308/xterm.log.html        2014-06-20 02:05:20.000000000 +0200
@@ -30,7 +30,7 @@
  * sale, use or other dealings in this Software without prior written        *
  * authorization.                                                            *
  *****************************************************************************
-  $XTermId: xterm.log.html,v 1.1481 2014/06/04 00:28:35 tom Exp $
+  $XTermId: xterm.log.html,v 1.1493 2014/06/20 00:05:20 tom Exp $
   -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 
@@ -72,6 +72,10 @@
   CHANGELOG</a>).</p>
 
   <ul>
+    <li><a href="#xterm_308">Patch #308 - 2014/06/19</a></li>
+
+    <li><a href="#xterm_307">Patch #307 - 2014/06/17</a></li>
+
     <li><a href="#xterm_306">Patch #306 - 2014/06/03</a></li>
 
     <li><a href="#xterm_305">Patch #305 - 2014/06/02</a></li>
@@ -897,6 +901,49 @@
     <li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li>
   </ul>
 
+  <h1><a name="xterm_308" id="xterm_308">Patch #308 -
+  2014/06/19</a></h1>
+
+  <ul>
+    <li>corrected font used for clipping double-width bitmap fonts
+    from <a href="#xterm_307">patch #307</a> changes to work around
+    mis-scaled fonts (Debian #752947).</li>
+
+    <li>improve wording of a warning message.</li>
+  </ul>
+
+  <h1><a name="xterm_307" id="xterm_307">Patch #307 -
+  2014/06/17</a></h1>
+
+  <ul>
+    <li>fill background for top/bottom parts of
+    double-width/double-height characters, to cover occasional gaps
+    due to bitmap font-scaling (report by Egmont Koblinger).</li>
+
+    <li>amend resets for keyboard-type, pointer-mode and
+    title-modes from <a href="#xterm_305">xterm #305</a> changes to
+    account for resource settings (Debian #751351).</li>
+
+    <li>modify <em>printAttributes</em> feature to include new SGR
+    codes.</li>
+
+    <li>modify cursor show/hide logic to work with italic
+    fonts.</li>
+
+    <li>do clipping and filling for a case with bitmap-fonts and
+    italics when the font server returns only a "close" match
+    (report/testcase by Egmont Koblinger).</li>
+
+    <li>adjust loop comparison for underlining to display
+    underlines on 5x8 font as in <a href="#xterm_304">patch
+    #304</a> (Debian #750733).</li>
+
+    <li>amend fix for Freedesktop #15979 (Debian #750733).</li>
+
+    <li>amend xterm.appdata.xml, making it validate with current
+    schema.</li>
+  </ul>
+
   <h1><a name="xterm_306" id="xterm_306">Patch #306 -
   2014/06/03</a></h1>
 

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to