как использовать шрифты unicode в Verifone VX675

У меня проблема с написанием арабского текста на платной модели VeriFone vx675. я пробую эту строку кодов:

int ret=set_font("Tahoma.ttf");
if (ret!=0)
{
    printf("con : %d, err: %s\n",ret,strerror(errno));
}
display_at(0,0,"سلام", NO_CLEAR);

но устройство показывает ошибку как

Недействительным аргумент

может ли кто-нибудь сказать мне, как я должен решить эту проблему. или как я могу написать арабский текст Unicode в модели Vx675.

Заранее спасибо


person Ali Ahmadvand    schedule 23.02.2016    source источник


Ответы (1)


Отказ от ответственности: я раньше не работал с Vx675 и не пытался использовать арабский шрифт, но думаю, что это сработает...

Вы не можете использовать шрифты .ttf на терминалах VeriFone. Вместо этого вам нужно использовать «Инструмент создания шрифтов» VeriFone, чтобы преобразовать файл .ttf в файл .vft или .fon.

  1. Запустите «Инструмент создания шрифтов». Если вы установили DTK, он должен быть в меню «Пуск» в разделе «VeriFone».
  2. Перейдите в пункт меню «Шрифт» и выберите «Преобразовать шрифт».
  3. Выберите «Шрифт Windows Unicode».
  4. Выберите «Арабский» в качестве варианта «Пользовательские шрифты Unicode». Установите любые другие стили, которые вы хотите.
  5. Щелкните остальную часть мастера и сохраните файл шрифта где-нибудь.
  6. Загрузите этот новый файл шрифта на свой терминал с остальной частью вашей программы (обычно это шаг, который я забываю сделать при первом запуске)
  7. Когда вы выполняете свою функцию «display_at», я отмечаю, что вы используете арабские символы напрямую. У меня нет опыта в том, будет ли это работать или нет, но если это не работает, вы можете попробовать использовать printf с числовыми смещениями. Я не думаю, что вы захотите делать это в долгосрочной перспективе, но это может помочь вам начать:

    printf("%c%c%c%c%c%c%c%c", 0, 1, 2, 3, 4, 5, 6, 7);
    
person David    schedule 23.02.2016
comment
Вы действительно уверены, что printf ("%c") с первым аргументом 0 отобразит всю строку? (Это возможно, но только в том случае, если символ будет немедленно записан в вывод. Думаю, я мог бы попробовать это на настольном компьютере, но тогда это все еще в значительной степени зависит от реализации.) - person Jongware; 24.02.2016
comment
Нет. В этом примере кода отобразятся первые 8 символов в файле шрифта (конечно, если они пустые, это все, что вы получите). Это только для устранения неполадок. - person David; 24.02.2016