[buffer-diff] Fix check for glyph flag equality
I'm not sure if the old behavior was intentional, but it was checking that the glyph flags were a subset of the reference buffer's glyph flags. I don't see why that is useful. Fix that. Then make the buffer-verify code ignore flag differences when verifying buffers, since our unsafe-to-concat flag at least, is conservative and not guaranteed to be produced the same in fragments. See: https://github.com/harfbuzz/harfbuzz/issues/3888
This commit is contained in:
parent
2c0afde737
commit
404cb99d86
|
@ -186,7 +186,7 @@ buffer_verify_unsafe_to_break (hb_buffer_t *buffer,
|
|||
|
||||
bool ret = true;
|
||||
hb_buffer_diff_flags_t diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
|
||||
if (diff)
|
||||
if (diff & ~HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH)
|
||||
{
|
||||
buffer_verify_error (buffer, font, BUFFER_VERIFY_ERROR "unsafe-to-break test failed.");
|
||||
ret = false;
|
||||
|
@ -313,7 +313,6 @@ buffer_verify_unsafe_to_concat (hb_buffer_t *buffer,
|
|||
|
||||
bool ret = true;
|
||||
hb_buffer_diff_flags_t diff;
|
||||
|
||||
/*
|
||||
* Shape the two fragment streams.
|
||||
*/
|
||||
|
@ -382,7 +381,7 @@ buffer_verify_unsafe_to_concat (hb_buffer_t *buffer,
|
|||
* Diff results.
|
||||
*/
|
||||
diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
|
||||
if (diff)
|
||||
if (diff & ~HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH)
|
||||
{
|
||||
buffer_verify_error (buffer, font, BUFFER_VERIFY_ERROR "unsafe-to-concat test failed.");
|
||||
ret = false;
|
||||
|
|
|
@ -2095,7 +2095,7 @@ hb_buffer_diff (hb_buffer_t *buffer,
|
|||
result |= HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH;
|
||||
if (buf_info->cluster != ref_info->cluster)
|
||||
result |= HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH;
|
||||
if ((buf_info->mask & ~ref_info->mask & HB_GLYPH_FLAG_DEFINED))
|
||||
if ((buf_info->mask ^ ref_info->mask) & HB_GLYPH_FLAG_DEFINED)
|
||||
result |= HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH;
|
||||
if (contains && ref_info->codepoint == dottedcircle_glyph)
|
||||
result |= HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT;
|
||||
|
|
Loading…
Reference in New Issue