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

Nicholas Moser commented on FOP-3023:
-------------------------------------

Thanks for merging this Simon!

> [PATCH] Simulated Bold Errors in Adobe Acrobat
> ----------------------------------------------
>
>                 Key: FOP-3023
>                 URL: https://issues.apache.org/jira/browse/FOP-3023
>             Project: FOP
>          Issue Type: Bug
>            Reporter: Nicholas Moser
>            Assignee: Simon Steiner
>            Priority: Minor
>             Fix For: trunk
>
>         Attachments: NotoSans-after.pdf, NotoSans-before.pdf, 
> OpenSans-after.pdf, OpenSans-before.pdf, SourceCodePro-after.pdf, 
> SourceCodePro-before.pdf, fix.patch, image-2021-08-12-10-10-13-731.png
>
>
> In some cases, simulated bold text seems to throw an error in Adobe Acrobat. 
> It's been erroring in every Adobe Acrobat version released in what seems like 
> the last year, possibly more.
> h2. The Problem
> For example (version 2021.005.20060; Windows 10.0.19042 Build 19042):
> !image-2021-08-12-10-10-13-731.png!
> It's hard to tell exactly why this issue occurs, but it appears to be related 
> to the fact that simulated bold pushes (q) and pops (Q) the graphics state. 
> Furthermore, it appears that this may cause issues only when on the last row 
> of a table.
> You can reproduce the issue by using the following fonts:
>  * [https://fonts.google.com/specimen/Open+Sans]
>  * [https://fonts.google.com/specimen/Noto+Sans]
>  * [https://fonts.google.com/specimen/Source+Code+Pro]
> Along with the following FOP configuration file:
>  
> {code:java}
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <fop version="1.0">
>       <renderers>
>               <renderer mime="application/pdf">
>                       <fonts>
>                               <font 
> embed-url="file:/C:/Open_Sans/OpenSans-Regular.ttf" kerning="yes" 
> simulate-style="true">
>                                       <font-triplet name="sans-serif" 
> style="normal" weight="normal"/>
>                                       <font-triplet name="sans-serif" 
> style="normal" weight="bold"/>
>                                       <font-triplet name="sans-serif" 
> style="italic" weight="normal"/>
>                                       <font-triplet name="sans-serif" 
> style="italic" weight="bold"/>
>                               </font>
>                               <font 
> embed-url="file:/C:/Noto_Sans/NotoSans-Regular.ttf" kerning="yes" 
> simulate-style="true">
>                                       <font-triplet name="sans-serif2" 
> style="normal" weight="normal"/>
>                                       <font-triplet name="sans-serif2" 
> style="normal" weight="bold"/>
>                                       <font-triplet name="sans-serif2" 
> style="italic" weight="normal"/>
>                                       <font-triplet name="sans-serif2" 
> style="italic" weight="bold"/>
>                               </font>
>                               <font 
> embed-url="file:/C:/Source_Code_Pro/SourceCodePro-Regular.ttf" kerning="yes" 
> simulate-style="true">
>                                       <font-triplet name="sans-serif3" 
> style="normal" weight="normal"/>
>                                       <font-triplet name="sans-serif3" 
> style="normal" weight="bold"/>
>                                       <font-triplet name="sans-serif3" 
> style="italic" weight="normal"/>
>                                       <font-triplet name="sans-serif3" 
> style="italic" weight="bold"/>
>                               </font>
>                       </fonts>
>               </renderer>
>       </renderers>
> </fop>
> {code}
>  
> And using this FO file:
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?>
> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>
>   <fo:layout-master-set>
>     <fo:simple-page-master master-name="main-page" margin="0.5in" 
> page-height="11.0in" page-width="8.5in">
>       <fo:region-body margin-bottom="0.25in + 1mm" margin-top="0.70in + 1mm"/>
>       <fo:region-before extent="0.70in"/>
>       <fo:region-after extent="0.25in"/>
>     </fo:simple-page-master>
>   </fo:layout-master-set>
>   <fo:page-sequence master-reference="main-page">
>     <fo:flow flow-name="xsl-region-body">
>       <fo:table table-layout="fixed" width="100%" font-size="10pt" 
> font-family="sans-serif">
>         <fo:table-column column-width="proportional-column-width(1)"/>
>         <fo:table-column column-width="proportional-column-width(1)"/>
>         <fo:table-header>
>           <fo:table-row>
>             <fo:table-cell border="0.3mm solid #dddddd" padding="0.5mm" 
> background-color="#eeeeee">
>               <fo:block>
>                 <fo:inline font-weight="bold">Patient Name:</fo:inline> 
> Moser, Nicholas</fo:block>
>             </fo:table-cell>
>             <fo:table-cell border="0.3mm solid #dddddd" padding="0.5mm" 
> background-color="#eeeeee">
>               <fo:block>
>                 <fo:inline font-weight="bold">Request Date/Time:</fo:inline> 
> 8/11/2021 18:02 CDT</fo:block>
>             </fo:table-cell>
>           </fo:table-row>
>         </fo:table-header>
>         <fo:table-body>
>           <fo:table-row>
>             <fo:table-cell border="0.3mm solid #dddddd" padding="0.5mm" 
> number-columns-spanned="2">
>               <fo:block>
>                 <fo:inline font-weight="bold">Requesting Person:</fo:inline> 
> Moser, Nicholas</fo:block>
>             </fo:table-cell>
>           </fo:table-row>
>           <fo:table-row>
>             <fo:table-cell border="0.3mm solid #dddddd" padding="0.5mm" 
> number-columns-spanned="2" font-style="italic">
>               <fo:block>Release Details</fo:block>
>             </fo:table-cell>
>           </fo:table-row>
>           <fo:table-row>
>             <fo:table-cell border="0.3mm solid #dddddd" padding="0.5mm" 
> number-columns-spanned="2">
>               <fo:block>
>                 <fo:inline font-weight="bold">Comments:</fo:inline>
>               </fo:block>
>             </fo:table-cell>
>           </fo:table-row>
>         </fo:table-body>
>       </fo:table>
>     </fo:flow>
>   </fo:page-sequence>
> </fo:root>
> {code}
> Replace *font-family="sans-serif"* with *font-family="sans-serif2"* or 
> *font-family="sans-serif3"* to test the two other fonts.
> h2. Proposed Solution
> The actual solution here should be reaching out to Adobe to figure out why 
> only their PDF reader seems to throw this error. I don't see the error when 
> using Firefox, Chrome, or Foxit to view the PDF.
> With that being said, I've found a code change that seems to remove the error 
> while maintaining the simulated styling.
> [^fix.patch]
> Basically, instead of pushing and popping the graphics state before 
> simulating bold, just reset the text rendering mode to 0 when done simulating 
> bold text. I've done quite a bit of testing, and this seems to work fine. 
> Curious to hear from others if there are any issues with this change.
> Here are some examples of before the change and after the change:
> [^OpenSans-before.pdf]
> [^OpenSans-after.pdf]
> [^NotoSans-before.pdf]
> [^NotoSans-after.pdf]
> [^SourceCodePro-before.pdf]
> [^SourceCodePro-after.pdf]
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to