[HarfBuzz] How to increase harfbuzz numerical precision

Behdad Esfahbod behdad at behdad.org
Wed Jun 29 00:35:16 UTC 2016


Device tables affect glyph positions returned from HarfBuzz, which you
then pass to Cairo.

That said, Device tables are almost obsolete; you wouldn't lose much
if you don't set ppem on hb_font_t.

On Tue, Jun 28, 2016 at 8:32 PM,  <kelvinsthirteen at gmail.com> wrote:
> i still don’t get it how does cairo know about the device table in the harfbuzz font object if cairo uses a different font object to do its rendering?
>
>> On Jun 28, 2016, at 8:28 PM, Khaled Hosny <khaledhosny at eglug.org> wrote:
>>
>> Device tables affect glyph positioning which is done by HarfBuzz to
>> Cairo.
>>
>>> On Tue, Jun 28, 2016 at 07:50:51PM -0400, Kelvin Ma wrote:
>>> The rendering is separate from harfbuzz i thought, the glyphs get passed to
>>> cairo’s cr.show_glyphs() and it uses its own font structure that has to be
>>> loaded separately from harfbuzz’s fonts. So any value set on the harfbuzz
>>> font is not known by the renderer
>>>
>>>> On Tue, Jun 28, 2016 at 7:48 PM, Khaled Hosny <khaledhosny at eglug.org> wrote:
>>>>
>>>> For device tables (as I said in my first reply) and I think hinting
>>>> (though I don’t think hinting stuff affects HarfBuzz right now).
>>>>
>>>>> On Tue, Jun 28, 2016 at 07:25:27PM -0400, Kelvin Ma wrote:
>>>>> ok this might be a dumb question but what is ppem used for anyway? I
>>>>> thought it was a font value that harfbuzz just lets you read off of the
>>>>> font (like upem, advance width, or glyph index) so you can do your own
>>>> math
>>>>> on the font outside of harfbuzz.
>>>>>
>>>>> On Tue, Jun 28, 2016 at 7:18 PM, Khaled Hosny <khaledhosny at eglug.org>
>>>> wrote:
>>>>>
>>>>>> It is, but you have to set it separately, and then you can set the font
>>>>>> scale to whatever value you need without both being interdependent.
>>>>>>
>>>>>>> On Tue, Jun 28, 2016 at 07:15:23PM -0400, Kelvin Ma wrote:
>>>>>>> I thought ppem was dependent on UPEM and font scale, is it not?
>>>>>>>
>>>>>>> On Tue, Jun 28, 2016 at 7:12 PM, Khaled Hosny <khaledhosny at eglug.org
>>>>>
>>>>>> wrote:
>>>>>>>
>>>>>>>> Device tables depend on ppem, so despite the scale being set
>>>>>>>> on the font, you should still set the exact ppem.
>>>>>>>>
>>>>>>>> On Tue, Jun 28, 2016 at 06:43:58PM -0400, Kelvin Ma wrote:
>>>>>>>>> so that’s the only way huh…
>>>>>>>>> doesn’t that kind of defeat the purpose of hb.font_create() and
>>>>>> having
>>>>>>>> many
>>>>>>>>> scaled versions of the same font? You would only ever need one
>>>> font
>>>>>> of
>>>>>>>> each
>>>>>>>>> face, scaled to the UPEM, if the fontsize was to be applied
>>>>>> externally
>>>>>>>>> after shaping already occurred.
>>>>>>>>>
>>>>>>>>> On Tue, Jun 28, 2016 at 5:51 PM, Behdad Esfahbod <
>>>> behdad at behdad.org>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> HarfBuzz coordinates work in a int32 space.  You are free to
>>>> set
>>>>>>>> whatever
>>>>>>>>>> scales you want on the font.  For example, use 6 or 8 or 10 or
>>>> 16
>>>>>> bits
>>>>>>>> of
>>>>>>>>>> sub-pixel precision by multiplying your scale by a number.
>>>>>>>>>>
>>>>>>>>>> On Tue, Jun 28, 2016 at 4:57 PM, Kelvin Ma <
>>>>>> kelvinsthirteen at gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> It appears that harfbuzz rounds all decimals to integers when
>>>>>> giving
>>>>>>>>>>> glyph advances and offsets. This is causing some ugly
>>>> misalignment
>>>>>>>> problems
>>>>>>>>>>> in arabic shaping, as well as latin cursive fonts. (see
>>>> pictures)
>>>>>>>>>>>
>>>>>>>>>>> [image: Inline image 1]
>>>>>>>>>>>
>>>>>>>>>>> [image: Inline image 2]
>>>>>>>>>>>
>>>>>>>>>>> [image: Inline image 3]
>>>>>>>>>>> How do I get harfbuzz to preserve the floats?
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> HarfBuzz mailing list
>>>>>>>>>>> HarfBuzz at lists.freedesktop.org
>>>>>>>>>>> https://lists.freedesktop.org/mailman/listinfo/harfbuzz
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> behdad
>>>>>>>>>> http://behdad.org/
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> HarfBuzz mailing list
>>>>>>>>> HarfBuzz at lists.freedesktop.org
>>>>>>>>> https://lists.freedesktop.org/mailman/listinfo/harfbuzz
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>
> _______________________________________________
> HarfBuzz mailing list
> HarfBuzz at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/harfbuzz



-- 
behdad
http://behdad.org/


More information about the HarfBuzz mailing list