带下标/上标字符的问题(TouchGFX)

问题描述 投票:0回答:1

我在TouchGFX上遇到另一个问题。

我需要下标/上标字符才能正确显示O 2,CO 2,m 2,m 3...。

上标字符正在工作(m³,..没问题),但是如果我想有一个下标2,则显示屏只显示“ O”而不是O 2或在O后面显示“ hylylyphic”字母。

我检查了通配符范围,它是0x02至0x2084。下标2的Unicode为0x2082。我还将²也添加到通配符中。

我的代码:

void Screen1View::button_down_clicked()  
{
    Unicode::UnicodeChar list[] = {0xB2, 0};
    counter--;
    Unicode::snprintf(test_textBuffer, TEST_TEXT_SIZE,  "%d m%s", counter, list);  
    test_text.invalidate();  
}

[请不要怀疑UnicodeChar列表。我计划向sprintf添加多个Unicode字符。

0xB2为²的Unicode。这很好。但是,如果我写0x2082或0x2083,它将失败。

如果有人有主意,请告诉我:)

unicode touch stm32 stm32f7
1个回答
0
投票
您可能想改用Unicode::strncpy(),因为它使您可以简单地将一个UnicodeChar缓冲区复制到另一个缓冲区。

我为排版指定了下标2(0x2082)作为通配符,这给了我以下生成的unicode(在generated/fonts/src/Font_verdana_20_4bpp.cpp中)

FONT_LOCATION_FLASH_PRAGMA KEEP extern const uint8_t unicodes_verdana_20_4bpp[] FONT_LOCATION_FLASH_ATTRIBUTE = { ... 0xDF, 0xDF, 0x00, 0xE8, 0xDF, 0x07, 0xDF, // Unicode: [0x2082, ] 0x00, 0x10, 0x00, 0x00, 0xE9, 0xFF, 0x9F, 0x00, 0x9E, 0x55, 0xFA, 0x09, 0x00, 0x00, 0xE0, 0x0D, 0x00, 0x00, 0xF0, 0x0B, 0x00, 0x00, 0xFB, 0x03, 0x00, 0xC2, 0x4E, 0x00, 0x60, 0xBF, 0x01, 0x00, 0xFC, 0x6C, 0x66, 0x26, 0xFF, 0xFF, 0xFF, 0x7F };

并且为屏幕1编写了以下代码:

void Screen1View::setupScreen() { Screen1ViewBase::setupScreen(); Unicode::UnicodeChar buf[2] = {0x2082, 0}; Unicode::strncpy(textArea1Buffer, buf, 5); textArea1.invalidate(); }

哪个在我的模拟器中给我以下输出:

enter image description here

如果我改为添加通配符“范围”,就像您所做的那样:

enter image description here

..我仍然获得生成的unicode点的代码:

... // Unicode: [0x2080, ] 0x00, 0xE8, 0xDF, 0x07, 0x00, 0x80, 0x7F, 0x83, 0x6F, 0x00, 0xE0, 0x09, 0x00, 0xCC, 0x00, 0xF1, 0x06, 0x00, 0xF9, 0x00, 0xF2, 0x05, 0x00, 0xF8, 0x00, 0xF2, 0x06, 0x00, 0xF9, 0x00, 0xF0, 0x09, 0x00, 0xCC, 0x00, 0x80, 0x6F, 0x83, 0x5F, 0x00, 0x00, 0xE8, 0xDF, 0x06, 0x00, // Unicode: [0x2081, ] 0x00, 0xD2, 0x0C, 0x00, 0xF2, 0xFF, 0x0C, 0x00, 0x20, 0xD2, 0x0C, 0x00, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, 0x0C, 0x00, 0x20, 0xD2, 0x2C, 0x02, 0xF1, 0xFF, 0xFF, 0x0E, // Unicode: [0x2082, ] 0x00, 0x10, 0x00, 0x00, 0xE9, 0xFF, 0x9F, 0x00, 0x9E, 0x55, 0xFA, 0x09, 0x00, 0x00, 0xE0, 0x0D, 0x00, 0x00, 0xF0, 0x0B, 0x00, 0x00, 0xFB, 0x03, 0x00, 0xC2, 0x4E, 0x00, 0x60, 0xBF, 0x01, 0x00, 0xFC, 0x6C, 0x66, 0x26, 0xFF, 0xFF, 0xFF, 0x7F, // Unicode: [0x2083, ] 0x00, 0x00, 0x00, 0x00, 0xD7, 0xFF, 0xBF, 0x02, 0xAC, 0x46, 0xF7, 0x0D, 0x01, 0x00, 0xA0, 0x0F, 0x00, 0x11, 0xE4, 0x09, 0x00, 0xFF, 0xAF, 0x01, 0x00, 0x44, 0xD6, 0x1E, 0x00, 0x00, 0x60, 0x4F, 0x9E, 0x67, 0xE8, 0x1E, 0xD9, 0xFF, 0xAE, 0x02, // Unicode: [0x2084, ] 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x0C, 0x00, 0x00, 0x10, 0xFE, 0x0C, 0x00, 0x00, 0xC0, 0xBC, 0x0C, 0x00, 0x00, 0xEA, 0xA1, 0x0C, 0x00, 0x70, 0x2F, 0xA0, 0x0C, 0x00, 0xF2, 0x05, 0xA0, 0x0C, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x05, 0x30, 0x33, 0xC3, 0x3C, 0x01, 0x00, 0x00, 0xB0, 0x0C, 0x00

© www.soinside.com 2019 - 2024. All rights reserved.