[ 
https://issues.apache.org/jira/browse/PDFBOX-3457?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15577980#comment-15577980
 ] 

Andreas Lehmkühler commented on PDFBOX-3457:
--------------------------------------------

I guess I've found the reason for the different needs of a stretching.

Stretching is need only if the text comes in chunks of more than one character. 
In those cases we are using the width from the font dictionary to calculate the 
position of a following character within a chunk. If the font has to be 
replaced or isn't embedded we may have to stretch the glyph to compensate a 
possible width difference (width from font dictionary vs. width from used font).
If every character is rendered separately the width of the font dictionary 
doesn't matter as every character comes with its own position, so that there is 
no need to compensate any width difference.

But I didn't found a way to distinguish those cases in PageDrawer without any 
additional information to be passed from PDFStreamEngine.


> Glyphs rendered in wrong width
> ------------------------------
>
>                 Key: PDFBOX-3457
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3457
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.2, 2.0.3, 2.1.0
>            Reporter: Tilman Hausherr
>         Attachments: PDFJS-5550.pdf, PDFJS-7523.pdf, gs-bugzilla693663-p9.pdf
>
>
> Fonts rendered in wrong size. The cause is related to wrong values in the 
> /WIDTHS table and this code in PageDrawer:
> {code}
>             // stretch non-embedded glyph if it does not match the width 
> contained in the PDF
>             if (!font.isEmbedded())
>             {
>                 float fontWidth = font.getWidthFromFont(code);
>                 if (fontWidth > 0 && // ignore spaces
>                         Math.abs(fontWidth - displacement.getX() * 1000) > 
> 0.0001)
>                 {
>                     float pdfWidth = displacement.getX() * 1000;
>                     at.scale(pdfWidth / fontWidth, 1);
>                 }
>             }
> {code}
> I suspect that there must be another condition to skip the stretching, but I 
> didn't find out which one.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to