mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Use ASCII HYPHEN-MINUS when there's no HYPHEN in the font.
Previously, we just assumed the font in use had a U+2010 HYPHEN character, resulting in a tofu (or an empty space) being shown when U+2010 was not supported in the font used to render the hyphenated word. Now we try to fallback to U+002D HYPHEN-MINUS, which has a very good chance of being available in at least any Latin font. We still show a tofu when neither character is supported, to intentionally alert that something is missing. Bug: 20497913 Bug: 21088552 Bug: 21570828 Change-Id: Iff69bbc38836c03495e9124502b5207c39270da2
This commit is contained in:
parent
73fa6dfd63
commit
f997dd2196
@ -729,7 +729,17 @@ void Layout::doLayoutRun(const uint16_t* buf, size_t start, size_t count, size_t
|
||||
// TODO: check whether this is really the desired semantics. It could have the
|
||||
// effect of assigning the hyphen width to a nonspacing mark
|
||||
unsigned int lastCluster = srunend - 1;
|
||||
hb_buffer_add(buffer, 0x2010, lastCluster);
|
||||
|
||||
hb_codepoint_t hyphenChar = 0x2010; // HYPHEN
|
||||
hb_codepoint_t glyph;
|
||||
// Fallback to ASCII HYPHEN-MINUS if the font didn't have a glyph for HYPHEN. Note
|
||||
// that we intentionally don't do anything special if the font doesn't have a
|
||||
// HYPHEN-MINUS either, so a tofu could be shown, hinting towards something
|
||||
// missing.
|
||||
if (!hb_font_get_glyph(hbFont, hyphenChar, 0, &glyph)) {
|
||||
hyphenChar = 0x002D; // HYPHEN-MINUS
|
||||
}
|
||||
hb_buffer_add(buffer, hyphenChar, lastCluster);
|
||||
}
|
||||
hb_shape(hbFont, buffer, features.empty() ? NULL : &features[0], features.size());
|
||||
unsigned int numGlyphs;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user