I've read your question three times, and I don't understand it.
Let me try to rephrase it: Given a certain available width, how do I define the font size for a snippet of text, so that it matches the available width.
First you need a BaseFont
object. For instance:
BaseFont bf = BaseFont.createFont(BaseFont.COURIER, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
Now you can ask the base font for the width of this String in 'normalized 1000 units' (these are units used in 'Glyph space'; see ISO-32000-1 for more info):
float glyphWidth = bf.getWidth("WHAT IS THE WIDTH OF THIS STRING?");
Now we can convert these 'normalized 1000 units' to an actual size in points (actually user units, but let's assume that 1 user unit = 1 pt for the sake of simplicity).
For instance: the width of the text "WHAT IS THE WIDTH OF THIS STRING?" when using Courier with size 16pt is:
float width = glyphWidth * 0.001f * 16f;
Your question is different: you want to know the font size for a given width
. That's done like this:
float fontSize = 1000 * width / glyphwidth;
I hope this answers your question. If not, please rephrase.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…