Шрифт как ресурс не работает в МТ4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Sergey Likho
7382
Sergey Likho  

Загружаю шрифт 


#resource "img15\\Ubuntu-LI.ttf"
string font="::img15\\Ubuntu-LI.ttf";

...

ObjectSetString(0,"obj_name",OBJPROP_FONT,font); //на лэйбле меняю текст 

В итоге получаю текст написанный ариалом. Система просто игнорит указание на шрифт.  При этом никакие ошибки в процессе не формируются. 

Аналогичная ситуация, если использовать ресурсы


   CCanvas name1;
    m_name="name";
   name1.CreateBitmapLabel(0,0,m_name,x_cc,y_cc+20,400,300,COLOR_FORMAT_ARGB_NORMALIZE);
   name1.FontNameSet(font);
   name1.FontSizeSet(50);
   name1.TextOut(100,200,"text here",ColorToARGB(clrRed,200),TA_CENTER|TA_VCENTER);

На выходе получаю Arial шрифт

Здесь - https://docs.mql4.com/ru/objects/textsetfont   описана ситуация, когда шрифты могут браться из ресурсов

TextSetFont - Графические объекты - Справочник MQL4
TextSetFont - Графические объекты - Справочник MQL4
  • docs.mql4.com
Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt). [in]  Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров...
Alexey Viktorov
27863
Alexey Viktorov  
Sergey Likho:

Загружаю шрифт 



В итоге получаю текст написанный ариалом. Система просто игнорит указание на шрифт.  При этом никакие ошибки в процессе не формируются. 

Аналогичная ситуация, если использовать ресурсы


На выходе получаю Arial шрифт

Здесь - https://docs.mql4.com/ru/objects/textsetfont   описана ситуация, когда шрифты могут браться из ресурсов

А пробовали определить нет-ли ошибки при загрузке шрифта?

Sergey Likho
7382
Sergey Likho  
Alexey Viktorov:

А пробовали определить нет-ли ошибки при загрузке шрифта?

Ошибок при выполнение функций нет. 


Можете сами проверить

Скрипт 

#include <Canvas/Canvas.mqh>
#resource "Ubuntu.ttf" 
string font="::Ubuntu.ttf";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
ObjectsDeleteAll();

   CCanvas name;
   string m_name="name";
   name.CreateBitmapLabel(0,0,m_name,200,100,500,300,COLOR_FORMAT_ARGB_NORMALIZE);
   string font_n=font;// "Times New Roman";
   name.FontSet(font_n,100,0,0);
   name.TextOut(30,10,"My text here",ColorToARGB(clrBlue,255));//TA_CENTER|TA_VCENTER);
   name.Update();


   CCanvas name1;
   string m_name1="name1";
   name1.CreateBitmapLabel(0,0,m_name1,200,300,500,300,COLOR_FORMAT_ARGB_NORMALIZE);
   font_n="Arial";// "Times New Roman";
   name1.FontSet(font_n,100,0,0);
   name1.TextOut(30,10,"My text here",ColorToARGB(clrBlue,255));//TA_CENTER|TA_VCENTER);
   name1.Update();
  }


Результат



Файлы:
Ubuntu.ttf.zip 193 kb
Alexey Viktorov
27863
Alexey Viktorov  
Sergey Likho:

Ошибок при выполнение функций нет. 


Можете сами проверить

Скрипт 


Результат



Я не стал грузить ваш шрифт, не знаю как он должен выглядеть и с чем сверять неизвестно. Вот с другим шрифтом чётко видно, что это не Arial.Только размер получился маловат и полный текст не уместился.

#include <Canvas/Canvas.mqh>
#resource "\\files\\RAVIE.ttf"
string font="::files\\RAVIE.ttf";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
 //ObjectsDeleteAll();

   CCanvas name;
   string m_name="name";
   name.CreateBitmapLabel(0,0,m_name,200,100,500,300,COLOR_FORMAT_ARGB_NORMALIZE);
   string font_n=font;// "Times New Roman";
   name.FontSet(font_n,100,0,0);
   name.TextOut(30,10,"My text here",ColorToARGB(clrBlue,255));//TA_CENTER|TA_VCENTER);
   name.Update();


   CCanvas name1;
   string m_name1="name1";
   name1.CreateBitmapLabel(0,0,m_name1,200,300,500,300,COLOR_FORMAT_ARGB_NORMALIZE);
   font_n="Arial";// "Times New Roman";
   name1.FontSet(font_n,100,0,0);
   name1.TextOut(30,10,"My text here",ColorToARGB(clrBlue,255));//TA_CENTER|TA_VCENTER);
   name1.Update();
  }
//+------------------------------------------------------------------+


Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий