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

Reply via email to