我有一个名为MyriadHebrew-Regular.otf的系统字体
我使用的是“斜杠”字符(代码47),但是我注意到Adobe After Effects使用的字体有点不同,我在FontCreator程序中检查了字体,发现可以使用默认的字符(47),或者它的本地化版本(显示为斜杠1),它位于字体字形的末尾,maps.Its字形索引为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 (标准值)。
任何帮助都将不胜感激。
https://stackoverflow.com/questions/38139081
复制相似问题