diff options
author | Grigori Goronzy <greg@blackbox> | 2010-04-10 04:02:36 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@blackbox> | 2010-04-10 04:09:33 +0200 |
commit | 29167f37cf188f0b4dc6003ff6e733388112d183 (patch) | |
tree | 5bf8778e9c26a956127ac34a3433c649bebb5d5f | |
parent | a13a859aa78a2fb85d56de7afa25b4ab70c3a1d2 (diff) | |
download | libass-29167f37cf188f0b4dc6003ff6e733388112d183.tar.bz2 libass-29167f37cf188f0b4dc6003ff6e733388112d183.tar.xz |
Ignore global advance width unconditionally
Some (arguably) broken CJK fonts claim to have a fixed advance width,
but they actually use two different widths for half-width and full-width
characters. Even worse, some use proportional width.
This can cause problems under certain circumstances. A big project
(Cairo) uses a FreeType load flag to ignore the global advance width
for such fonts, so I assume it can be used safely. Let's do it just
like them.
-rw-r--r-- | libass/ass_font.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/libass/ass_font.c b/libass/ass_font.c index 7db1f07..bb2b96a 100644 --- a/libass/ass_font.c +++ b/libass/ass_font.c @@ -451,22 +451,22 @@ FT_Glyph ass_font_get_glyph(void *fontconfig_priv, ASS_Font *font, } #endif + flags = FT_LOAD_NO_BITMAP | FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH; switch (hinting) { case ASS_HINTING_NONE: - flags = FT_LOAD_NO_HINTING; + flags |= FT_LOAD_NO_HINTING; break; case ASS_HINTING_LIGHT: - flags = FT_LOAD_FORCE_AUTOHINT | FT_LOAD_TARGET_LIGHT; + flags |= FT_LOAD_FORCE_AUTOHINT | FT_LOAD_TARGET_LIGHT; break; case ASS_HINTING_NORMAL: - flags = FT_LOAD_FORCE_AUTOHINT; + flags |= FT_LOAD_FORCE_AUTOHINT; break; case ASS_HINTING_NATIVE: - flags = 0; break; } - error = FT_Load_Glyph(face, index, FT_LOAD_NO_BITMAP | flags); + error = FT_Load_Glyph(face, index, flags); if (error) { ass_msg(font->library, MSGL_WARN, "Error loading glyph, index %d", index); |