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

Tilman Hausherr commented on PDFBOX-5920:
-----------------------------------------

It turns out that using the fallback 250 improves many cases, but the fallback 
should only be used as last resort.

The most important is to pass your test so I'll insert my solution first 
without changing parts I didn't like in the existing code, before looking at 
files that may be improved. It turns out that your tests fails on the 
liberation sans font and with the same values so we won't have to use your font 
at all.

> PDType0Font return invalid space width
> --------------------------------------
>
>                 Key: PDFBOX-5920
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5920
>             Project: PDFBox
>          Issue Type: Bug
>          Components: FontBox
>    Affects Versions: 3.0.3 PDFBox
>            Reporter: Miroslav Holubec
>            Assignee: Tilman Hausherr
>            Priority: Major
>              Labels: fontwidth, truetype
>         Attachments: texgyreheros-regular.ttf
>
>
> WinAnsiEncoding supports not all available characters from the font. That is 
> the reason why we moved to the workaround proposed by FAQ, also to use 
> PDType0Font. Now we have realized, that returned space width from 
> font.getSpaceWidth() returns invalid value.
> {noformat}
>  class FontWidthTest {
>     @Test
>     void pdType0FontTest() throws IOException {
>         try (InputStream fontStream = 
> FontWidthTest.class.getResourceAsStream("/texgyreheros-regular.ttf");
>              PDDocument document = new PDDocument()) {
>             PDFont font = PDType0Font.load(document, fontStream, false);
>             assertEquals(20064.0, font.getStringWidth("The quick brown fox 
> jumps over the lazy dog."));
>             assertEquals(278.0, font.getSpaceWidth()); // FAIL: returns 584.0
>         }
>     }
>     @Test
>     void pdTrueTypeFontTest() throws IOException {
>         try (InputStream fontStream = 
> FontWidthTest.class.getResourceAsStream("/texgyreheros-regular.ttf");
>              PDDocument document = new PDDocument()) {
>             PDFont font = PDTrueTypeFont.load(document, fontStream, 
> WinAnsiEncoding.INSTANCE);
>             assertEquals(20064.0, font.getStringWidth("The quick brown fox 
> jumps over the lazy dog."));
>             assertEquals(278.0, font.getSpaceWidth());
>         }
>     }
> }
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to