<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:2023121173;
        mso-list-type:hybrid;
        mso-list-template-ids:958461270 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:black'>Hi all,<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>Josh and I continue to work on improving the PDF to HTML conversion in poppler, but I am running into one persistent bug that I am having trouble solving and would like to solicit the list&#8217;s help on.<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>The quick background is that text in the HTML is often slightly vertically offset from where it appears in the PDF. The degree to which it is offset and whether it is offset upwards or downwards varies depending on the font applied to the text and some fonts are not offset at all. My analysis indicates that the problem has to do with the ascent/descent metrics of the font being used. In PDF, text is vertically positioned by specifying the position of the text&#8217;s baseline. However, absolutely positioned spans in HTML must have a top or bottom y-coordinate, baseline is not an available positioning option. So, to convert the y-coordinate from the PDF into something usable in HTML, poppler is currently subtracting from it the ascent of the current font multiplied by the height in pixels of the current font, which produces the behavior described above.<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>My attempts to improve this positioning adjustment have been stymied by the inconsistent and sometimes conflicting information I have found about font metrics. So, if anyone with a good understanding of fonts can help answer the following questions, I would appreciate it:<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='color:black'><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span style='color:black'>What is the relationship between the ascent/descent of a font and the units per em (UPM) of a font? Most sources I have read indicate the the sum of the ascent and descent (or the difference between them if the descent is expressed as a negative number) should equal the UPM and that, depending on the underlying font file type, the UPM should be either 1000 or a multiple of 2 like 1024 or 2048. However, of the many fonts I have examined, the ascent and descent of a particular font have very rarely summed to the UPM. <o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='color:black'><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]><span style='color:black'>Which of the several ascent/descent values describing a font is the correct one to pay attention to? In examining various font file types, I have often found that the different of tables in a font have different, conflicting ascent/descent values. For example, in a TrueType font, there is one set of ascender/descender values in the &#8220;hhea&#8221; table while in the &#8220;os/2&#8221; there are two more sets of values, one known as the typoasecender/typodescender and the other as the winascent/windescent. When a browser is positioning a font, does it just look at one of these or is there a more complicated relationship between them that I don&#8217;t understand? Furthermore, it is often the case that beyond the ascent/descent information included in the embedded font file itself, yet another and often different set of values will be included in that font&#8217;s font descriptor in the PDF. Which should I pay attention to then?<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>Thanks in advance for your advice!<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>&nbsp;<o:p></o:p></span></p><p class=MsoNormal><span style='color:black'>-Stephen Reichling<o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>