Question

I am working on some legacy code and system, and trying to get auto -resizing of text working. however, despite the code working really well. This also wraps actual single words into two words.

for example QUALITY

becomes

enter image description here

Has anybody any idea how to keep the word wrapping, but remove the letter wrapping.

thanks

the code:

truncated = 1
fontSize = 127
thewords = Request("words")   ' try QUALITY    

do while Cint(truncated) = 1

set theDoc = Server.CreateObject("ABCpdf7.Doc") 
fontSize = fontSize - 2

if fontSize <= 0 Then
   exit do
end if

theDoc.Rect.Width = 273
theDoc.Rect.Height = 202
theDoc.Color.Alpha = 0
theDoc.FillRect()
theDoc.Color.Alpha = 255 
theDoc.FrameRect()
theFont1 = "C:\inetpub\wwwroot\fonts\fonts\Helvetica.ttf"
theDoc.Font = theDoc.EmbedFont(theFont1, Latin, False, False, True)
theDoc.Fontsize = fontsize
theDoc.VPos = 0.5
theDoc.color = "75 68 67 90"
oText = theDoc.AddTEXT(thewords)
truncated = theDoc.GetInfo(oText, "Truncated")
'Response.Write(truncated & "<br>")

Loop      
Data = theDoc.Rendering.GetData("testing.png")
Response.ContentType = "image/png"
Response.BinaryWrite Data

I know this is old code, and even an old version but this is what the system runs. If anyone has a clue then it would be much appreciated.

thanks

Was it helpful?

Solution

abcPDF will only letter wrap if:

  1. wrapping is on
  2. There is not enough horizontal space to fit one of the words being set
  3. There is vertical room for another line in the active rect

These conditions therefore amount to there being plenty of vertical room but not enough horizontal room for some particularly long word. So a heuristic for finding the correct font size would be to test horizontally first, using only the longest word from your string, in a temporary rect that shrinks to one more than the font size as you reduce font size; then, once you have the right font size to avoid letter wrapping, go back to testing with the original rect and full string, continuing to decrease font size until truncation completely disappears.

This will get much hairier if what you're trying to set is actually HTML with variant fonts or sizes; but for plain text in a single font and style, it should be ok.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top