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.
This commit is contained in:
parent
5561c22d59
commit
4e5a96b02e
3 changed files with 33 additions and 10 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
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>
|
2012-06-09 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* tests/grub_script_expansion.in: Explicitly tell grep that we handle
|
* tests/grub_script_expansion.in: Explicitly tell grep that we handle
|
||||||
|
|
|
@ -1401,6 +1401,8 @@ grub_font_construct_dry_run (grub_font_t hinted_font,
|
||||||
struct grub_font_glyph *main_glyph = NULL;
|
struct grub_font_glyph *main_glyph = NULL;
|
||||||
struct grub_font_glyph **combining_glyphs;
|
struct grub_font_glyph **combining_glyphs;
|
||||||
grub_uint32_t desired_attributes = 0;
|
grub_uint32_t desired_attributes = 0;
|
||||||
|
unsigned i;
|
||||||
|
grub_uint32_t base = glyph_id->base;
|
||||||
|
|
||||||
if (combining_glyphs_out)
|
if (combining_glyphs_out)
|
||||||
*combining_glyphs_out = NULL;
|
*combining_glyphs_out = NULL;
|
||||||
|
@ -1411,16 +1413,28 @@ grub_font_construct_dry_run (grub_font_t hinted_font,
|
||||||
if (glyph_id->attributes & GRUB_UNICODE_GLYPH_ATTRIBUTE_LEFT_JOINED)
|
if (glyph_id->attributes & GRUB_UNICODE_GLYPH_ATTRIBUTE_LEFT_JOINED)
|
||||||
desired_attributes |= GRUB_FONT_CODE_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);
|
| desired_attributes);
|
||||||
|
|
||||||
if (!main_glyph)
|
if (!main_glyph)
|
||||||
main_glyph = grub_font_get_glyph_with_fallback (hinted_font,
|
main_glyph = grub_font_get_glyph_with_fallback (hinted_font,
|
||||||
glyph_id->base);
|
base);
|
||||||
|
|
||||||
/* Glyph not available in any font. Use ASCII fallback. */
|
/* Glyph not available in any font. Use ASCII fallback. */
|
||||||
if (!main_glyph)
|
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. */
|
/* Glyph not available in any font. Return unknown glyph. */
|
||||||
if (!main_glyph)
|
if (!main_glyph)
|
||||||
|
@ -1440,13 +1454,10 @@ grub_font_construct_dry_run (grub_font_t hinted_font,
|
||||||
return main_glyph;
|
return main_glyph;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
for (i = 0; i < glyph_id->ncomb; i++)
|
for (i = 0; i < glyph_id->ncomb; i++)
|
||||||
combining_glyphs[i]
|
combining_glyphs[i]
|
||||||
= grub_font_get_glyph_with_fallback (main_glyph->font,
|
= grub_font_get_glyph_with_fallback (main_glyph->font,
|
||||||
glyph_id->combining[i].code);
|
glyph_id->combining[i].code);
|
||||||
}
|
|
||||||
|
|
||||||
blit_comb (glyph_id, NULL, bounds, main_glyph, combining_glyphs,
|
blit_comb (glyph_id, NULL, bounds, main_glyph, combining_glyphs,
|
||||||
device_width);
|
device_width);
|
||||||
|
|
|
@ -167,6 +167,8 @@ struct grub_unicode_glyph
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
GRUB_UNICODE_DOTLESS_LOWERCASE_I = 0x0131,
|
||||||
|
GRUB_UNICODE_DOTLESS_LOWERCASE_J = 0x0237,
|
||||||
GRUB_UNICODE_COMBINING_GRAPHEME_JOINER = 0x034f,
|
GRUB_UNICODE_COMBINING_GRAPHEME_JOINER = 0x034f,
|
||||||
GRUB_UNICODE_HEBREW_WAW = 0x05d5,
|
GRUB_UNICODE_HEBREW_WAW = 0x05d5,
|
||||||
GRUB_UNICODE_ARABIC_START = 0x0600,
|
GRUB_UNICODE_ARABIC_START = 0x0600,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue