1
我有一個名爲MyriadHebrew-Regular.otf系統字體的HarfBuzz選擇本地斜線字符
我所用「斜線」字符(代碼47),但後來我發現它使用 由Adobe後,一個效果有點不同。然後我檢查了FontCreator程序中的字體 ,發現它可以使用默認字符(47), 或其本地化版本(顯示爲斜槓.1),它位於它的字形索引是587. 所以我一直試圖用Harfbuzz訪問本地化字形:
.......
hb_buffer_t *m_hb_buffer = NULL;
hb_font_t *m_hb_font = NULL;
std::wstring str = L"שתץףך /";
const wchar_t* text = str.data();
hb_buffer_t *m_hb_buffer = hb_buffer_create();
hb_buffer_set_direction(m_hb_buffer, HB_DIRECTION_RTL);
hb_buffer_set_script(m_hb_buffer, HB_SCRIPT_HEBREW);
hb_buffer_set_language(m_hb_buffer, hb_language_from_string("he", 2));
hb_buffer_add_utf16(m_hb_buffer, (uint16_t*)text, -1, 0, -1);
hb_feature_t ft;
hb_feature_from_string("locl",-1, &ft); // ft.tag = 1819239276; ft.value = 1
hb_shape(m_hb_font, m_hb_buffer,&ft, 1);
hb_glyph_info_t *m_info = hb_buffer_get_glyph_infos(m_hb_buffer, NULL);
FT_UInt glyph_index = m_info[0].codepoint; // glyph_index = 400 instead of localized glyph_index=587
.......
在這段代碼中,我預計glyph_index = 587(本地類似於Adobe的aftereffect),但它仍然是400(標準的)。
任何幫助將不勝感激。
由於這是一個AALT字形,它是否仍然需要設置本地化語言「他」?還是獨立於使用的語言? – usr2564301