test/jdk/java/awt/FontClass/MassiveMetricsTest.java
author prr
Mon, 04 Nov 2019 10:01:55 -0800
changeset 59176 f5adbf111424
permissions -rw-r--r--
8233097: Fontmetrics for large Fonts has zero width Reviewed-by: jdv, serb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
59176
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     1
/*
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     4
 *
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     7
 * published by the Free Software Foundation.
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     8
 *
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    13
 * accompanied this code).
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    14
 *
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    18
 *
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    21
 * questions.
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    22
 */
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    23
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    24
/*
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    25
 * @test
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    26
 * @bug 8233097
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    27
 * @summary Test we get non-zero metrics with large sizes.
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    28
 * @run main MassiveMetricsTest
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    29
 */
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    30
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    31
import java.awt.Font;
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    32
import java.awt.FontMetrics;
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    33
import java.awt.Graphics2D;
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    34
import java.awt.GraphicsEnvironment;
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    35
import java.awt.image.BufferedImage;
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    36
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    37
public class MassiveMetricsTest {
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    38
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    39
    public static void main(String [] args) {
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    40
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    41
        GraphicsEnvironment ge =
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    42
            GraphicsEnvironment.getLocalGraphicsEnvironment();
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    43
        Font[] fonts = ge.getAllFonts();
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    44
        BufferedImage bi = new BufferedImage(1,1,1);
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    45
        Graphics2D g2d = bi.createGraphics();
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    46
        int[] sizes = { 80, 100, 120, 600, 1600, 2400, 3600, 7200, 12000 };
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    47
        String s = "m";
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    48
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    49
        for (Font f : fonts) {
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    50
            Font sz12Font = f.deriveFont(Font.PLAIN, 12);
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    51
            FontMetrics sz12 = g2d.getFontMetrics(sz12Font);
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    52
            if (sz12.stringWidth(s) == 0) {
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    53
                continue; // code point not supported or similar.
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    54
            }
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    55
            boolean fail = false;
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    56
            for (int sz : sizes) {
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    57
                Font font = f.deriveFont(Font.PLAIN, sz);
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    58
                FontMetrics fm = g2d.getFontMetrics(font);
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    59
                if (fm.stringWidth(s) == 0) {
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    60
                  fail = true;
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    61
                  System.err.println("zero for " + font);
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    62
                }
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    63
            }
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    64
            if (fail) {
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    65
                throw new RuntimeException("Zero stringwidth");
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    66
            }
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    67
        }
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    68
    }
f5adbf111424 8233097: Fontmetrics for large Fonts has zero width
prr
parents:
diff changeset
    69
}