1/*
2 * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/* @test
25 * @summary leading and trailing spaces must not affect visual bounds
26 * @bug 6904962
27 */
28
29
30import java.awt.*;
31import java.awt.font.*;
32import java.awt.geom.*;
33
34public class VisualBounds {
35
36    public static void main(String args[]) {
37
38        String s1 = "a";
39        String s2 = s1+" ";
40        String s3 = " "+s1;
41        Font f = new Font("Dialog", Font.PLAIN, 12);
42        FontRenderContext frc = new FontRenderContext(null, false, false);
43        GlyphVector gv1 = f.createGlyphVector(frc, s1);
44        GlyphVector gv2 = f.createGlyphVector(frc, s2);
45        GlyphVector gv3 = f.createGlyphVector(frc, s3);
46        Rectangle2D bds1 = gv1.getVisualBounds();
47        Rectangle2D bds2 = gv2.getVisualBounds();
48        Rectangle2D bds3 = gv3.getVisualBounds();
49        GlyphVector gv4 = f.createGlyphVector(frc, " ");
50        Rectangle2D bds4 = gv4.getVisualBounds();
51        System.out.println(bds1);
52        System.out.println(bds2);
53        System.out.println(bds3);
54        System.out.println(bds4);
55
56        if (!bds1.equals(bds2)) {
57          throw new RuntimeException("Trailing space: Visual bounds differ");
58        }
59        if (bds2.getWidth() != bds3.getWidth()) {
60          throw new RuntimeException("Leading space: Visual widths differ");
61       }
62        if (!bds4.isEmpty()) {
63          throw new RuntimeException("Non empty bounds for space");
64       }
65    }
66}
67