[
https://issues.apache.org/jira/browse/PDFBOX-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18104618#comment-18104618
]
Maruan Sahyoun commented on PDFBOX-4951:
----------------------------------------
Thank you very much for the patch, which outlines your thoughts very well. The
advantage of this approach is that existing callers of PDFont.getStringWidth()
automatically benefit from glyph-layout-aware widths. However, it does so by
solving the caller problem by changing the semantics of the low-level font API.
More importantly, getStringWidth(String) only receives an isolated string, so
the processor cannot perform bidi/layout analysis using the complete PlainText
content. I would prefer to keep PDFont.getStringWidth() as the basic font
metric and wire the GlyphLayoutProcessor at the PlainText level.
The existing six calls in PlainText (and the one in PlainTextFormatter) could
then be replaced by processor-based width/layout operations. Since this would
be an internal implementation detail, it wouldn't affect the public API.
This would also allow us to pass the complete PlainText content to the
processor, or substrings together with the relevant bidi information. That
seems important for proper bidi handling and would allow us to fully benefit
from the capabilities of the GlyphLayoutProcessor implementations you provided
(AWT and FOP based), rather than limiting them to the individual strings passed
to getStringWidth().
> Sequences of DIN SPEC 91379 with combining letters are rendered incorrectly
> ---------------------------------------------------------------------------
>
> Key: PDFBOX-4951
> URL: https://issues.apache.org/jira/browse/PDFBOX-4951
> Project: PDFBox
> Issue Type: Bug
> Affects Versions: 2.0.21
> Reporter: Volker Kunert
> Assignee: Tilman Hausherr
> Priority: Major
> Fix For: 3.0.9 PDFBox, 4.0.0
>
> Attachments: Bildschirmfoto_2026-07-07_08-38-04.png,
> DIN_SPEC_91379_Sequences-aa.pdf, DIN_SPEC_91379_Sequences-ab.pdf,
> DIN_SPEC_91379_Sequences-ac.pdf, DIN_SPEC_91379_Sequences.txt,
> DefaultScriptProcessor.java, DejaVuSans.ttf, DoGlyphLayoutBidi.pdf,
> DoGlyphLayoutDinSpec91379.pdf, DoGlyphLayoutDinSpec91379Form.pdf,
> DoGlyphPositionBengali.pdf, ExamplePdfboxFopPos-By-Tilman.pdf,
> ExamplePdfboxFopPos.java, ExamplePdfboxFopPos.pdf,
> ExamplePdfboxFopPosForm.java, ExamplePdfboxFopPosForm.pdf,
> FiraCode-Regular.ttf, FontForge-Lohit-Bengali.png, TestPdfbox.java,
> TestPdfboxFop2.java, TestPdfboxFop2.pdf, TestPdfboxJava2D.java,
> TestPdfboxJava2D.pdf, bengali.fo, bengali.pdf, bidi-1.png, bidi-2.png,
> bidi.fo, bidi.pdf, bidi.png, config.xml, dejavu-sequences.png,
> example-PDFBOX-3147-NotoSansThaiLooped-Regular.png,
> image-2026-05-23-16-16-53-442.png, image-2026-05-23-16-17-28-172.png,
> image-2026-05-26-16-49-45-529.png, image-2026-07-04-21-37-03-606.png,
> image-2026-07-04-21-37-35-370.png, kerning.fo, kerning.pdf,
> ligatures-kerning.png, patch-2020-10-02.txt, pdfbox.patch, pdfbox.pdf,
> screenshot-1.png, screenshot-2.png, screenshot-3.png
>
>
> Accented Letters composed of Unicode base letter and combining accent are
> rendered wrong. E.g. with 0041 030B LATIN CAPITAL LETTER A WITH COMBINING
> DOUBLE ACUTE ACCENT the accent appears at the right hand side of the letter
> A, not above the letter A.
> The position is wrong for most of the sequences defined in the following spec:
> DIN SPEC 91379: Characters in Unicode for the electronic processing of names
> and data
> exchange in Europe; with digital attachment
> [https://www.xoev.de/downloads-2316#StringLatin]
> [https://www.din.de/de/wdc-beuth:din21:301228458]
>
> The correct rendering should look like the output of hb-view 2.6.8, see files
> DIN_SPEC_91379_Sequences*.pdf.
> The output of PDFBox is appended in pdfbox.pdf, which is created by running
> TestPdfbox.java. The sequences are read from file
> DIN_SPEC_91379_Sequences.txt.
>
> Font used for testing: NotoSansMono-Regular.ttf, see
> [https://www.google.com/get/noto/]
> download:
> [https://noto-website-2.storage.googleapis.com/pkgs/NotoSansMono-hinted.zip]
> See also FOP-2969
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]