From owner-freebsd-ports-bugs@FreeBSD.ORG Sat Jan 11 08:50:00 2014 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B263DEC5 for ; Sat, 11 Jan 2014 08:50:00 +0000 (UTC) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8CB441E9C for ; Sat, 11 Jan 2014 08:50:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id s0B8o00I067297 for ; Sat, 11 Jan 2014 08:50:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id s0B8o0HC067296; Sat, 11 Jan 2014 08:50:00 GMT (envelope-from gnats) Resent-Date: Sat, 11 Jan 2014 08:50:00 GMT Resent-Message-Id: <201401110850.s0B8o0HC067296@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, clutton Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 021DBDC1 for ; Sat, 11 Jan 2014 08:47:28 +0000 (UTC) Received: from oldred.freebsd.org (oldred.freebsd.org [IPv6:2001:1900:2254:206a::50:4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C795C1E8F for ; Sat, 11 Jan 2014 08:47:27 +0000 (UTC) Received: from oldred.freebsd.org ([127.0.1.6]) by oldred.freebsd.org (8.14.5/8.14.7) with ESMTP id s0B8lQeV094306 for ; Sat, 11 Jan 2014 08:47:26 GMT (envelope-from nobody@oldred.freebsd.org) Received: (from nobody@localhost) by oldred.freebsd.org (8.14.5/8.14.5/Submit) id s0B8lQNS094293; Sat, 11 Jan 2014 08:47:26 GMT (envelope-from nobody) Message-Id: <201401110847.s0B8lQNS094293@oldred.freebsd.org> Date: Sat, 11 Jan 2014 08:47:26 GMT From: clutton To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: ports/185656: A x11/rxvt-unicode [PATCH] for the font width bug. X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 08:50:00 -0000 >Number: 185656 >Category: ports >Synopsis: A x11/rxvt-unicode [PATCH] for the font width bug. >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Sat Jan 11 08:50:00 UTC 2014 >Closed-Date: >Last-Modified: >Originator: clutton >Release: >Organization: >Environment: >Description: A lot of fancy fonts like «monaco», «PragmataPro» wouldn't display correctly without this patch. And you'll see enormously large «approche». http://i1.someimage.com/I5wLFQb.png >How-To-Repeat: >Fix: Patch attached with submission follows: diff --git a/x11/rxvt-unicode/files/patch-src_rxvtfont.C b/x11/rxvt-unicode/files/patch-src_rxvtfont.C new file mode 100644 index 0000000..83cbbfc --- /dev/null +++ b/x11/rxvt-unicode/files/patch-src_rxvtfont.C @@ -0,0 +1,47 @@ +--- src/rxvtfont.C 2013-03-27 18:59:20.000000000 +0200 ++++ /tmp/rxvtfont.C 2014-01-11 10:11:32.000000000 +0200 +@@ -1237,11 +1237,22 @@ + + FT_Face face = XftLockFace (f); + ++/* ++ * use ascent, descent and height from XftFont *f instead of FT_Face face. ++ * this somehow reproduces the behaviour of the line height as seen on xterm. ++ + ascent = (face->size->metrics.ascender + 63) >> 6; + descent = (-face->size->metrics.descender + 63) >> 6; + height = max (ascent + descent, (face->size->metrics.height + 63) >> 6); + width = 0; + ++ */ ++ ++ ascent = f->ascent; ++ descent = f->descent; ++ height = max (ascent + descent, f->height); ++ width = 0; ++ + bool scalable = face->face_flags & FT_FACE_FLAG_SCALABLE; + + XftUnlockFace (f); +@@ -1265,12 +1276,21 @@ + XGlyphInfo g; + XftTextExtents16 (disp, f, &ch, 1, &g); + ++/* ++ * bukind: don't use g.width as a width of a character! ++ * instead use g.xOff, see e.g.: http://keithp.com/~keithp/render/Xft.tutorial ++ + g.width -= g.x; + + int wcw = WCWIDTH (ch); + if (wcw > 0) g.width = (g.width + wcw - 1) / wcw; + + if (width < g.width ) width = g.width; ++ */ ++ int wcw = WCWIDTH (ch); ++ if (wcw > 1) g.xOff = g.xOff / wcw; ++ if (width < g.xOff) width = g.xOff; ++ + if (height < g.height ) height = g.height; + if (glheight < g.height - g.y) glheight = g.height - g.y; + } >Release-Note: >Audit-Trail: >Unformatted: