+2012-06-11 Vladimir Serbinenko <phcoder@gmail.com>
+
+ Remove dor on i and j when combining with above diacritics.
+
+ * include/grub/unicode.h (GRUB_UNICODE_DOTLESS_LOWERCASE_I): New enum
+ value.
+ (GRUB_UNICODE_DOTLESS_LOWERCASE_J): Likewise.
+ * grub-core/font/font.c (grub_font_construct_dry_run): Replace i and j
+ with dotless variants when any combining above is present.
+
2012-06-09 Vladimir Serbinenko <phcoder@gmail.com>
* tests/grub_script_expansion.in: Explicitly tell grep that we handle
struct grub_font_glyph *main_glyph = NULL;
struct grub_font_glyph **combining_glyphs;
grub_uint32_t desired_attributes = 0;
+ unsigned i;
+ grub_uint32_t base = glyph_id->base;
if (combining_glyphs_out)
*combining_glyphs_out = NULL;
if (glyph_id->attributes & GRUB_UNICODE_GLYPH_ATTRIBUTE_LEFT_JOINED)
desired_attributes |= GRUB_FONT_CODE_LEFT_JOINED;
- main_glyph = grub_font_get_glyph_with_fallback (hinted_font, glyph_id->base
+
+ if (base == 'i' || base == 'j')
+ {
+ for (i = 0; i < glyph_id->ncomb; i++)
+ if (glyph_id->combining[i].type == GRUB_UNICODE_STACK_ABOVE)
+ break;
+ if (i < glyph_id->ncomb && base == 'i')
+ base = GRUB_UNICODE_DOTLESS_LOWERCASE_I;
+ if (i < glyph_id->ncomb && base == 'j')
+ base = GRUB_UNICODE_DOTLESS_LOWERCASE_J;
+ }
+
+ main_glyph = grub_font_get_glyph_with_fallback (hinted_font, base
| desired_attributes);
if (!main_glyph)
main_glyph = grub_font_get_glyph_with_fallback (hinted_font,
- glyph_id->base);
+ base);
/* Glyph not available in any font. Use ASCII fallback. */
if (!main_glyph)
- main_glyph = ascii_glyph_lookup (glyph_id->base);
+ main_glyph = ascii_glyph_lookup (base);
/* Glyph not available in any font. Return unknown glyph. */
if (!main_glyph)
return main_glyph;
}
- {
- unsigned i;
- for (i = 0; i < glyph_id->ncomb; i++)
- combining_glyphs[i]
- = grub_font_get_glyph_with_fallback (main_glyph->font,
- glyph_id->combining[i].code);
- }
+ for (i = 0; i < glyph_id->ncomb; i++)
+ combining_glyphs[i]
+ = grub_font_get_glyph_with_fallback (main_glyph->font,
+ glyph_id->combining[i].code);
blit_comb (glyph_id, NULL, bounds, main_glyph, combining_glyphs,
device_width);
enum
{
+ GRUB_UNICODE_DOTLESS_LOWERCASE_I = 0x0131,
+ GRUB_UNICODE_DOTLESS_LOWERCASE_J = 0x0237,
GRUB_UNICODE_COMBINING_GRAPHEME_JOINER = 0x034f,
GRUB_UNICODE_HEBREW_WAW = 0x05d5,
GRUB_UNICODE_ARABIC_START = 0x0600,