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

Jason Harrop commented on FOP-3356:
-----------------------------------

The configuration and FO from the description as files: attached 
FOP-3356-simulate-style.fo and carlito-simulate-style.xconf (adjust the Carlito 
paths).
{noformat}
fop -c carlito-simulate-style.xconf -fo FOP-3356-simulate-style.fo -pdf out.pdf
mutool clean -d out.pdf dec.pdf
{noformat}
and read the page content stream in dec.pdf. On main at 5be8c69b6 all three 
blocks are drawn the same way:
{noformat}
2 Tr 0.31543 w  1 0 0.3333 -1 0 20.4 Tm /Carlito-Italic 24 Tf
2 Tr 0.31543 w  1 0 0.3333 -1 0 49.2 Tm /Carlito-Regular 24 Tf
2 Tr 0.31543 w  1 0 0.3333 -1 0 78 Tm /Carlito-Bold 24 Tf
{noformat}
With the pull request's change:
{noformat}
2 Tr 0.68571 w  1 0 0 -1 0 20.4 Tm /Carlito-Italic 24 Tf
2 Tr 0.68571 w  1 0 0.3333 -1 0 49.2 Tm /Carlito-Regular 24 Tf
                1 0 0.3333 -1 0 78 Tm /Carlito-Bold 24 Tf
{noformat}
The italic face is stroked and not sheared again, the regular face stroked and 
sheared, the bold face sheared and not stroked again, and the stroke is 24/35 = 
0.68571pt.

> simulate-style slants an italic face again and strokes a bold face again, and 
> its stroke width does not scale with the font size
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FOP-3356
>                 URL: https://issues.apache.org/jira/browse/FOP-3356
>             Project: FOP
>          Issue Type: Bug
>          Components: renderer/pdf
>    Affects Versions: 2.11, main
>            Reporter: Jason Harrop
>            Priority: Minor
>         Attachments: FOP-3356-simulate-style.fo, carlito-simulate-style.xconf
>
>
> A font entry with simulate-style="true" makes FOP synthesise the style a 
> triplet asks for from the face the entry registers: 
> PDFPainter.startSimulateStyle strokes a triplet of weight 700 (2 Tr) with a 
> 0.31543pt line, and shears a triplet of style italic by 0.3333 in the text 
> matrix. It decides from the entry's flag and the triplet alone, never from 
> the face, although FOP has the face's italic angle (post table) and weight 
> class (OS/2) in CustomFont. So:
> * an italic face registered for a bold italic triplet, as a family with an 
> italic face and no bold one needs, is slanted a second time on top of its own 
> slant;
> * a bold face registered for a bold italic triplet, as a family with a bold 
> face and no bold italic one needs, is stroked a second time;
> * the stroke is a fixed 0.31543pt whatever the size, which is about right at 
> 11pt only: at 22pt it is half the weight it should be, at 8pt about 40% too 
> heavy.
> Configuration and FO (Carlito, 24pt):
> {noformat}
> <font simulate-style="true" 
> embed-url="file:///usr/share/fonts/carlito/Carlito-Italic.ttf"><font-triplet 
> name="ItalFace" style="italic" weight="bold"/></font>
> <font simulate-style="true" 
> embed-url="file:///usr/share/fonts/carlito/Carlito-Regular.ttf"><font-triplet 
> name="RegFace" style="italic" weight="bold"/></font>
> <font simulate-style="true" 
> embed-url="file:///usr/share/fonts/carlito/Carlito-Bold.ttf"><font-triplet 
> name="BoldFace" style="italic" weight="bold"/></font>
> <fo:flow flow-name="xsl-region-body" font-size="24pt" font-style="italic" 
> font-weight="bold">
>   <fo:block font-family="ItalFace">Italic face</fo:block>
>   <fo:block font-family="RegFace">Regular face</fo:block>
>   <fo:block font-family="BoldFace">Bold face</fo:block>
> </fo:flow>
> {noformat}
> On main, the content stream draws all three the same way: 2 Tr 0.31543 w, and 
> 1 0 0.3333 -1 ... Tm. The italic face is slanted twice and the bold face 
> stroked twice.
> *Fix (pull request to follow)*
> In PDFPainter.startSimulateStyle and endSimulateStyle: shear an italic 
> triplet only where the face's italic angle is 0; stroke a bold triplet only 
> where the face's weight class is below 700 (an unknown weight, 0, counts as 
> not bold, as now); and stroke at the font size / 35. A stroke of 1/35 em is 
> what Microsoft Word draws for a synthetic bold, measured at 7.92 to 48pt in 
> Word's own PDFs, and at 11.04pt it is the present 0.31543. Word also never 
> shears a face that is already italic, and its synthetic italic is the same 
> 0.3333 shear FOP uses.
> Measured on main with the change, the FO above: the italic face 2 Tr 0.68571 
> w and 1 0 0 -1 ... Tm (stroked, not slanted again); the regular face stroked 
> and sheared; the bold face sheared, not stroked. Only the painted glyphs 
> change, never layout. PDFPainterTestCase gains three cases (the italic face, 
> the bold face, the stroke at 22.08pt), each failing before. The fop-core 
> suite passes (3679 tests) and checkstyle is clean.



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

Reply via email to