mirror of
https://github.com/EdgeTX/edgetx.git
synced 2025-07-24 16:55:15 +03:00
Fix wrong Chinese characters being displayed (#1257)
* Fixed wrong index calculation. * Fixed font generation, indexing will goes wrong when no extra chars bitmap is present. * Image width exceeded 16384 will cause trouble in CJK. * Include libopenui update Co-authored-by: Peter Feerick <peter.feerick@gmail.com>
This commit is contained in:
parent
85bd9d16ea
commit
843d1be868
4 changed files with 22 additions and 13 deletions
|
@ -32,7 +32,11 @@ add_truetype_font_target(17 17 ${subset} none "${FONT_ARGS}")
|
|||
add_truetype_font_target(17en 17 en none "${FONT_ARGS}")
|
||||
add_truetype_font_target(bold17 17 ${subset} bold "${FONT_ARGS}")
|
||||
add_truetype_font_target(24 24 ${subset} none "${FONT_ARGS}")
|
||||
add_truetype_font_target(32 32 ${subset} bold "${FONT_ARGS}")
|
||||
if( (${subset} STREQUAL "cn") OR (${subset} STREQUAL "tw"))
|
||||
add_truetype_font_target(32 30 ${subset} bold "${FONT_ARGS}")
|
||||
else()
|
||||
add_truetype_font_target(32 32 ${subset} bold "${FONT_ARGS}")
|
||||
endif()
|
||||
add_truetype_font_target(64 64 en bold "${FONT_ARGS}")
|
||||
|
||||
add_custom_target(truetype_fonts DEPENDS ${truetype_fonts_targets})
|
||||
|
|
|
@ -62,7 +62,7 @@ int getTextWidth(const char * s, int len, LcdFlags flags)
|
|||
else if (c >= 0xFE) { // CJK marker
|
||||
s++;
|
||||
c = uint8_t(*s) + ((c & 0x01) << 8) - 1;
|
||||
if (c >= 0x101)
|
||||
if (c >= 0x100)
|
||||
c -= 1;
|
||||
c += CJK_FIRST_LETTER_INDEX;
|
||||
result += getFontPatternWidth(specs, c) + 1;
|
||||
|
|
2
radio/src/thirdparty/libopenui
vendored
2
radio/src/thirdparty/libopenui
vendored
|
@ -1 +1 @@
|
|||
Subproject commit ad4234ad5d24864d59920747b26374c040031678
|
||||
Subproject commit ea70d9fcd0dad57390dda4a5845ef65db20e7021
|
|
@ -18,6 +18,7 @@ class FontBitmap:
|
|||
self.background = background
|
||||
self.font = self.load_font(font_name)
|
||||
self.extra_bitmap = self.load_extra_bitmap()
|
||||
self.extra_bitmap_added = False
|
||||
self.extra_bitmap_width = EXTRA_BITMAP_MAX_WIDTH
|
||||
if self.extra_bitmap is not None:
|
||||
self.extra_bitmap_width = self.extra_bitmap.width
|
||||
|
@ -80,12 +81,13 @@ class FontBitmap:
|
|||
width = 0
|
||||
for c in self.chars:
|
||||
if c in extra_chars:
|
||||
if self.extra_bitmap:
|
||||
|
||||
if not self.extra_bitmap_added:
|
||||
# append same width for non-existing characters
|
||||
for i in range(128 - 32 - len(standard_chars)):
|
||||
coords.append(width)
|
||||
|
||||
if self.extra_bitmap:
|
||||
|
||||
# copy extra_bitmap at once
|
||||
image.paste(self.extra_bitmap, (width, offset_y))
|
||||
|
||||
|
@ -93,9 +95,12 @@ class FontBitmap:
|
|||
for coord in [14, 14, 12, 12, 13, 13, 13, 13, 13] + [15] * 12:
|
||||
coords.append(width)
|
||||
width += coord
|
||||
else:
|
||||
for coord in range(21):
|
||||
coords.append(width)
|
||||
|
||||
# once inserted, now remove it
|
||||
self.extra_bitmap = None
|
||||
# once inserted, disable insert again
|
||||
self.extra_bitmap_added = True
|
||||
|
||||
# skip
|
||||
continue
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue