[ot] Move code around
This commit is contained in:
parent
5e718a751e
commit
6a0a298aab
|
@ -47,29 +47,11 @@
|
|||
#include "hb-map-private.hh"
|
||||
|
||||
|
||||
hb_ot_layout_t *
|
||||
_hb_ot_layout_create (hb_face_t *face)
|
||||
static bool
|
||||
_hb_ot_blacklist_gdef (unsigned int gdef_len,
|
||||
unsigned int gsub_len,
|
||||
unsigned int gpos_len)
|
||||
{
|
||||
hb_ot_layout_t *layout = (hb_ot_layout_t *) calloc (1, sizeof (hb_ot_layout_t));
|
||||
if (unlikely (!layout))
|
||||
return nullptr;
|
||||
|
||||
layout->gdef_blob = hb_sanitize_context_t ().reference_table<OT::GDEF> (face);
|
||||
layout->gdef = layout->gdef_blob->as<OT::GDEF> ();
|
||||
|
||||
layout->gsub_blob = hb_sanitize_context_t ().reference_table<OT::GSUB> (face);
|
||||
layout->gsub = layout->gsub_blob->as<OT::GSUB> ();
|
||||
|
||||
layout->gpos_blob = hb_sanitize_context_t ().reference_table<OT::GPOS> (face);
|
||||
layout->gpos = layout->gpos_blob->as<OT::GPOS> ();
|
||||
|
||||
layout->face = face;
|
||||
layout->math.init ();
|
||||
layout->fvar.init ();
|
||||
layout->avar.init ();
|
||||
layout->morx.init ();
|
||||
|
||||
{
|
||||
/* The ugly business of blacklisting individual fonts' tables happen here!
|
||||
* See this thread for why we finally had to bend in and do this:
|
||||
* https://lists.freedesktop.org/archives/harfbuzz/2016-February/005489.html
|
||||
|
@ -87,9 +69,6 @@ _hb_ot_layout_create (hb_face_t *face)
|
|||
* https://bugzilla.mozilla.org/show_bug.cgi?id=1279693
|
||||
* https://bugzilla.mozilla.org/show_bug.cgi?id=1279875
|
||||
*/
|
||||
unsigned int gdef_len = layout->gdef_blob->length;
|
||||
unsigned int gsub_len = layout->gsub_blob->length;
|
||||
unsigned int gpos_len = layout->gpos_blob->length;
|
||||
#define ENCODE(x,y,z) ((int64_t) (x) << 32 | (int64_t) (y) << 16 | (z))
|
||||
switch ENCODE(gdef_len, gsub_len, gpos_len)
|
||||
{
|
||||
|
@ -164,16 +143,38 @@ _hb_ot_layout_create (hb_face_t *face)
|
|||
/* sha1sum: c26e41d567ed821bed997e937bc0c41435689e85 Padauk.ttf
|
||||
* "Padauk Regular" "Version 2.5", see https://crbug.com/681813 */
|
||||
case ENCODE (1004, 59092, 14836):
|
||||
{
|
||||
layout->gdef = &Null(OT::GDEF);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
#undef ENCODE
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
hb_ot_layout_t *
|
||||
_hb_ot_layout_create (hb_face_t *face)
|
||||
{
|
||||
hb_ot_layout_t *layout = (hb_ot_layout_t *) calloc (1, sizeof (hb_ot_layout_t));
|
||||
if (unlikely (!layout))
|
||||
return nullptr;
|
||||
|
||||
layout->gdef_blob = hb_sanitize_context_t ().reference_table<OT::GDEF> (face);
|
||||
layout->gdef = layout->gdef_blob->as<OT::GDEF> ();
|
||||
|
||||
layout->gsub_blob = hb_sanitize_context_t ().reference_table<OT::GSUB> (face);
|
||||
layout->gsub = layout->gsub_blob->as<OT::GSUB> ();
|
||||
|
||||
layout->gpos_blob = hb_sanitize_context_t ().reference_table<OT::GPOS> (face);
|
||||
layout->gpos = layout->gpos_blob->as<OT::GPOS> ();
|
||||
|
||||
layout->face = face;
|
||||
layout->math.init ();
|
||||
layout->fvar.init ();
|
||||
layout->avar.init ();
|
||||
layout->morx.init ();
|
||||
|
||||
if (_hb_ot_blacklist_gdef (layout->gdef_blob->length,
|
||||
layout->gsub_blob->length,
|
||||
layout->gpos_blob->length))
|
||||
layout->gdef = &Null(OT::GDEF);
|
||||
|
||||
layout->gsub_lookup_count = layout->gsub->get_lookup_count ();
|
||||
layout->gpos_lookup_count = layout->gpos->get_lookup_count ();
|
||||
|
|
Loading…
Reference in New Issue