Font char space as defined in podofo is scaled by font size: m_oss << m_pFont->GetFontCharSpace() * m_pFont->GetFontSize() / 100.0 << " Tc" << std::endl;
Do you have an example where current implementation in PdfFontMetricsFreetype or implementation from my patch fails? On Tue, May 11, 2021 at 10:37 AM Christopher Creutzig < ccreu...@mathworks.com> wrote: > What is more: Tc is in unscaled text units, only subject to scaling by Th, > not Tfs. I think this needs to be: > > > > return (dWidth * m_matrix.front().GetReal() * this->GetFontSize() + > this->GetFontCharSpace()) > > * (this->GetFontScale() / 100.0); > > > > > > Cheers, > > Christopher > > > > The MathWorks GmbH | Friedlandstr.18 | 52064 Aachen | District Court > Aachen | HRB 8082 | Managing Directors: Bertrand Dissler, Steven D. Barbo, > Jeanne O’Keefe > > > > > > > > *From:* Christophe <xto...@gmail.com> > *Sent:* Tuesday, May 11, 2021 9:15 > *To:* Michal Sudolsky <sudols...@gmail.com> > *Cc:* podofo-us...@lists.sf.net > *Subject:* Re: [Podofo-users] PdfFontMetricsFreetype::CharWidth > > > > Hello Michal, > > > > My remark was relative to class PdfFontMetricsFreetype, not > 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; > > > > 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 ? > > > > 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