Michal, It means we can't directly call function *SetFontCharSpace* with Tc ? We have to make a computation based on font size in our applicative code. In this case, could you please elaborate and provide us the right transformation from Tc to FontCharSpace ?
Thank you Christophe Le mar. 11 mai 2021 à 16:23, Michal Sudolsky <sudols...@gmail.com> a écrit : > Hi, > > On Tue, May 11, 2021 at 9:15 AM Christophe <xto...@gmail.com> wrote: > >> Hello Michal, >> >> My remark was relative to class PdfFontMetricsFreetype, not >> PdfFontMetricsObject. >> >> > Yes, I meant that implementation in PdfFontMetricsFreetype (and also > PdfFontMetricsBase14) is correct but the problem is > with PdfFontMetricsObject. > > But, in your patch, you also divide font char space by 100, twice: >> >> return (dWidth * m_matrix.front().GetReal() + this->GetFontCharSpace() / >> 100.0) * this->GetFontSize() * this->GetFontScale() / 100.0; >> >> > This is same as what is used in PdfFontMetricsFreetype > and PdfFontMetricsBase14 (I just simplified the formula): > > *return* dWidth * *static_cast*<*double*>(*this*->GetFontSize() * > *this*->GetFontScale() / 100.0) / 1000.0 + > > *static_cast*<*double*>( *this*->GetFontSize() * *this*-> > GetFontScale() / 100.0 * *this*->GetFontCharSpace() / 100.0); > > >> Are you sure of that ? >> >> In PDF format, the font char space (Tc) is given in PDF units, not in >> percent. Does it mean, we have to transform this Tc value into percent >> before affecting the m_fFontCharSpace variable ? If yes, how shall we do >> that ? >> >> > Both font scale and font char space are in percent in podofo. Font char > space is not directly passed as Tc. Font scale is in percent also in pdf. > > m_oss << m_pFont->GetFontCharSpace() * m_pFont->GetFontSize() / 100.0 > << " Tc" << std::endl; > > > Thank you for your help >> >> Christophe >> >> >> Le lun. 10 mai 2021 à 20:54, Michal Sudolsky <sudols...@gmail.com> a >> écrit : >> >>> >>> >>> On Mon, May 10, 2021 at 12:23 PM Christophe <xto...@gmail.com> wrote: >>> >>>> Hello all, >>>> >>>> I have a doubt relative to this method definition: >>>> >>>> double PdfFontMetricsFreetype::CharWidth( unsigned char c ) const >>>> { >>>> double dWidth = m_vecWidth[static_cast<unsigned int>(c)]; >>>> >>>> return dWidth * static_cast<double>(this->GetFontSize() * this >>>> ->GetFontScale() / 100.0) / 1000.0 + >>>> static_cast<double>( this->GetFontSize() * this >>>> ->GetFontScale() / 100.0 * this->GetFontCharSpace() / 100.0); >>>> } >>>> >>>> The Char Space is divided by 100.0 and I think it is an error as it is >>>> not the case for PdfFontMetricsObject::CharWidth, nor for >>>> PdfFontMetricsObject::CharWidth. >>>> >>>> >>> It is intended to be divided by 100. See comment above that function: >>> >>> /** Set the character spacing of this metrics object >>> >>> * *\param *fCharSpace character spacing in percent >>> >>> */ >>> >>> *inline* *void* SetFontCharSpace( *float* fCharSpace ); >>> >>> >>>> What do you think ? >>>> >>>> Thank you >>>> >>>> Christophe >>>> _______________________________________________ >>>> Podofo-users mailing list >>>> Podofo-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/podofo-users >>>> >>>
_______________________________________________ Podofo-users mailing list Podofo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/podofo-users