[hhea/vhea] Add MVAR during instancing
This commit is contained in:
parent
f455000138
commit
ca19091549
|
@ -31,6 +31,7 @@
|
||||||
#include "hb-ot-maxp-table.hh"
|
#include "hb-ot-maxp-table.hh"
|
||||||
#include "hb-ot-hhea-table.hh"
|
#include "hb-ot-hhea-table.hh"
|
||||||
#include "hb-ot-var-hvar-table.hh"
|
#include "hb-ot-var-hvar-table.hh"
|
||||||
|
#include "hb-ot-var-mvar-table.hh"
|
||||||
#include "hb-ot-metrics.hh"
|
#include "hb-ot-metrics.hh"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -76,10 +77,10 @@ struct hmtxvmtx
|
||||||
const hb_hashmap_t<hb_codepoint_t, hb_pair_t<unsigned, int>>* get_mtx_map (const hb_subset_plan_t *plan) const
|
const hb_hashmap_t<hb_codepoint_t, hb_pair_t<unsigned, int>>* get_mtx_map (const hb_subset_plan_t *plan) const
|
||||||
{ return T::is_horizontal ? &plan->hmtx_map : &plan->vmtx_map; }
|
{ return T::is_horizontal ? &plan->hmtx_map : &plan->vmtx_map; }
|
||||||
|
|
||||||
bool subset_update_header (hb_subset_plan_t *plan,
|
bool subset_update_header (hb_subset_context_t *c,
|
||||||
unsigned int num_hmetrics) const
|
unsigned int num_hmetrics) const
|
||||||
{
|
{
|
||||||
hb_blob_t *src_blob = hb_sanitize_context_t ().reference_table<H> (plan->source, H::tableTag);
|
hb_blob_t *src_blob = hb_sanitize_context_t ().reference_table<H> (c->plan->source, H::tableTag);
|
||||||
hb_blob_t *dest_blob = hb_blob_copy_writable_or_fail (src_blob);
|
hb_blob_t *dest_blob = hb_blob_copy_writable_or_fail (src_blob);
|
||||||
hb_blob_destroy (src_blob);
|
hb_blob_destroy (src_blob);
|
||||||
|
|
||||||
|
@ -91,7 +92,26 @@ struct hmtxvmtx
|
||||||
H *table = (H *) hb_blob_get_data (dest_blob, &length);
|
H *table = (H *) hb_blob_get_data (dest_blob, &length);
|
||||||
table->numberOfLongMetrics = num_hmetrics;
|
table->numberOfLongMetrics = num_hmetrics;
|
||||||
|
|
||||||
bool result = plan->add_table (H::tableTag, dest_blob);
|
#ifndef HB_NO_VAR
|
||||||
|
if (c->plan->normalized_coords)
|
||||||
|
{
|
||||||
|
auto &MVAR = *c->plan->source->table.MVAR;
|
||||||
|
if (T::is_horizontal)
|
||||||
|
{
|
||||||
|
HB_ADD_MVAR_VAR (HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE, caretSlopeRise);
|
||||||
|
HB_ADD_MVAR_VAR (HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN, caretSlopeRun);
|
||||||
|
HB_ADD_MVAR_VAR (HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET, caretOffset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HB_ADD_MVAR_VAR (HB_OT_METRICS_TAG_VERTICAL_CARET_RISE, caretSlopeRise);
|
||||||
|
HB_ADD_MVAR_VAR (HB_OT_METRICS_TAG_VERTICAL_CARET_RUN, caretSlopeRun);
|
||||||
|
HB_ADD_MVAR_VAR (HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET, caretOffset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool result = c->plan->add_table (H::tableTag, dest_blob);
|
||||||
hb_blob_destroy (dest_blob);
|
hb_blob_destroy (dest_blob);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -169,7 +189,7 @@ struct hmtxvmtx
|
||||||
return_trace (false);
|
return_trace (false);
|
||||||
|
|
||||||
// Amend header num hmetrics
|
// Amend header num hmetrics
|
||||||
if (unlikely (!subset_update_header (c->plan, num_long_metrics)))
|
if (unlikely (!subset_update_header (c, num_long_metrics)))
|
||||||
return_trace (false);
|
return_trace (false);
|
||||||
|
|
||||||
return_trace (true);
|
return_trace (true);
|
||||||
|
|
Loading…
Reference in New Issue