Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I calculate the width of a string in pixels?

How to calculate width of a String in pixels in Java? For e.g., I have a string say "Hello World!". What is its length in pixels, also considering its font family and size?

like image 996
user2550754 Avatar asked Aug 20 '13 05:08

user2550754


3 Answers

In short: the question depends on the framework you are using. For example, if you are using AWT, and have a Graphics object graphics, and a Font object font you can do the following:

FontMetrics metrics = graphics.getFontMetrics(font);
int width = metrics.stringWidth("Hello world!");

Check out this for more information.

like image 100
nickolayratchev Avatar answered Nov 17 '22 04:11

nickolayratchev


You can try something like this

Graphics2D g2d = ...
Font font = ...
Rectangle2D r = font.getStringBounds("hello world!", g2d.getFontRenderContext());
System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");

Refer this doc, may help you.

like image 38
Ruchira Gayan Ranaweera Avatar answered Nov 17 '22 04:11

Ruchira Gayan Ranaweera


There are a number of ways to achieve what you want, based on what it is you want to achieve, for example...

BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
FontMetrics fm = g2d.getFontMetrics();
System.out.println(fm.stringWidth("This is a simple test"));
g2d.dispose();

But this only has relevence for the BufferedImage and it's Graphics context, it will not translate back to say, something like a screen or printer.

However, so long as you have a Graphics context, you can achieve the same result.

This example, obviously, uses the default font installed for the Graphics context, which you can change if you need to...

like image 1
MadProgrammer Avatar answered Nov 17 '22 05:11

MadProgrammer