Как получить код Unicode в harfbuzz после вызова hb_shape?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как получить код Unicode в harfbuzz после вызова hb_shape?

Сообщение Anonymous »

glyph_info[0].codepoint дает код Юникода в начале. затем он дает индекс глифа после hb_shape.
разве он не должен давать код Unicode после того, как я установил тип содержимого буфера на HB_BUFFER_CONTENT_TYPE_UNICODE? но я все равно получаю индекс глифа!
это мой код:

Код: Выделить всё

#include 
#include 

int main()
{
hb_buffer_t *buf;
buf = hb_buffer_create();
hb_buffer_add_utf8(buf, "A", -1, 0, -1);

hb_buffer_set_direction(buf, HB_DIRECTION_LTR);
hb_buffer_set_script(buf, HB_SCRIPT_LATIN);
hb_buffer_set_language(buf, hb_language_from_string("en", -1));

hb_blob_t *blob = hb_blob_create_from_file("ARIALUNI.TTF");
hb_face_t *face = hb_face_create(blob, 0);
hb_font_t *font = hb_font_create(face);

hb_buffer_content_type_t t1 = hb_buffer_get_content_type(buf);

unsigned int glyph_count;
hb_glyph_info_t *glyph_info = hb_buffer_get_glyph_infos(buf, &glyph_count);
hb_glyph_position_t *glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count);

printf("Codepoint befor Shaping: %d\n", t1);
printf("%x\n", glyph_info[0].codepoint);

hb_shape(font, buf, NULL, 0);

hb_buffer_content_type_t t2 = hb_buffer_get_content_type(buf);

glyph_info = hb_buffer_get_glyph_infos(buf, &glyph_count);
glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count);

printf("Codepoint after Shaping: %d\n", t2);
printf("%x\n", glyph_info[0].codepoint);

hb_buffer_set_content_type(buf, HB_BUFFER_CONTENT_TYPE_UNICODE);
hb_buffer_content_type_t t3 = hb_buffer_get_content_type(buf);

glyph_info = hb_buffer_get_glyph_infos(buf, &glyph_count);
glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count);

printf("Codepoint after setting content type: %d\n", t3);
printf("%x\n", glyph_info[0].codepoint);

hb_buffer_destroy(buf);
hb_font_destroy(font);
hb_face_destroy(face);
hb_blob_destroy(blob);
}
но это мой результат:

Код: Выделить всё

Codepoint befor Shaping: 1
41
Codepoint after Shaping: 2
24
Codepoint after setting content type: 1
24
почему последняя кодовая точка по-прежнему является индексом глифа, а не кодовой точкой Юникода?
Я ожидал кодовую точку Юникода, но получаю индекс глифа

Подробнее здесь: https://stackoverflow.com/questions/755 ... g-hb-shape
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»