From 79279ff1ca39daa66f69addece5c01fbfaae1d01 Mon Sep 17 00:00:00 2001 From: patthoyts Date: Wed, 13 May 2009 21:33:32 +0000 Subject: [Bug 2791352] handle parsing of type 5 font descriptions with hyphenated family name. --- ChangeLog | 5 +++++ generic/tkFont.c | 16 +++++++++++++++- tests/font.test | 8 +++++++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ab378c0..70d16ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-05-13 Pat Thoyts + + * generic/tkFont.c: [Bug 2791352] handle parsing of type 5 font + * tests/font.test: descriptions with hyphenated family name. + 2009-05-06 Pat Thoyts * library/images/lamp.svg: Added an SVG version of the Tk lamp and diff --git a/generic/tkFont.c b/generic/tkFont.c index 21ff311..70240c6 100644 --- a/generic/tkFont.c +++ b/generic/tkFont.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkFont.c,v 1.53 2009/02/03 23:55:47 nijtmans Exp $ + * RCS: @(#) $Id: tkFont.c,v 1.54 2009/05/13 21:33:32 patthoyts Exp $ */ #include "tkInt.h" @@ -3608,6 +3608,20 @@ ParseFontNameObj( if (result == TCL_OK) { return TCL_OK; } + + /* + * If the string failed to parse but was considered to be a XLFD + * then it may be a "-option value" string with a hyphenated family + * name as per bug 2791352 + */ + + if (Tcl_ListObjGetElements(interp, objPtr, &objc, &objv) != TCL_OK) { + return TCL_ERROR; + } + + if (ConfigAttributesObj(interp, tkwin, objc, objv, faPtr) == TCL_OK) { + return TCL_OK; + } } /* diff --git a/tests/font.test b/tests/font.test index 6cf820e..2d7a7f9 100644 --- a/tests/font.test +++ b/tests/font.test @@ -6,7 +6,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: font.test,v 1.19 2008/08/15 01:10:03 aniap Exp $ +# RCS: @(#) $Id: font.test,v 1.20 2009/05/13 21:33:32 patthoyts Exp $ package require tcltest 2.2 namespace import ::tcltest::* @@ -2221,6 +2221,12 @@ test font-38.11 {ParseFontNameObj procedure: stylelist loop} -constraints { test font-38.12 {ParseFontNameObj procedure: stylelist error} -body { font actual {times 12 bold xyz} } -returnCodes error -result {unknown font style "xyz"} +test font-38.13 "ParseFontNameObj: options with hyphenated family: bug #2791352" -body { + font actual {-family sans-serif -size 12 -weight bold -slant roman -underline 0 -overstrike 0} +} -returnCodes ok -result [font actual {sans-serif 12 bold}] +test font-38.14 "ParseFontNameObj: bug #2791352" -body { + font actual {-invalidfont 8 bold} +} -returnCodes error -match glob -result {bad option "-invalidfont": *} test font-39.1 {NewChunk procedure: test realloc} -setup { -- cgit v0.12