Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Добавление TTF, не установленного в системе  [new]
гомодиализ
Member

Откуда: отовсюду
Сообщений: 53
Понадобилось закатать шрифт в программу, чтобы она отображала его без необходимости установить.
Первая мысль пришла: добавить файловый ресурс и подгрузить его.
Пробую:
PrivateFontCollection pfc = new PrivateFontCollection();

           var fontBytes = Resources.MyFont;
            var handle = GCHandle.Alloc(fontBytes, GCHandleType.Pinned);
            var pointer = handle.AddrOfPinnedObject();
            try
            {
                pfc.AddMemoryFont(pointer, fontBytes.Length);
            }
            finally
            {
                handle.Free();
            }


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

           pfc.AddFontFile(@"Assets\MyFont.ttf");


то фонт меняется на загруженный. Разницы между значениями фонта в коллекции при том и другом методах загруски на глаз установить не удалось. Кто-нибудь знает, как загрузить из ресурса? Не хотелось бы плодить файлы, а то приложение состоит всего из 1го EXE, что удобно.
29 апр 21, 01:02    [22316059]     Ответить | Цитировать Сообщить модератору
 Re: Добавление TTF, не установленного в системе  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6192
https://docs.microsoft.com/en-us/dotnet/api/system.drawing.text.privatefontcollection.addmemoryfont
Remarks
To use the memory font, text on a control must be rendered with GDI+. Use the SetCompatibleTextRenderingDefault method, passing true, to set GDI+ rendering on the application, or on individual controls by setting the control's UseCompatibleTextRendering property to true.
30 апр 21, 07:36    [22316647]     Ответить | Цитировать Сообщить модератору
 Re: Добавление TTF, не установленного в системе  [new]
гомодиализ
Member

Откуда: отовсюду
Сообщений: 53
Сон Веры Павловны,

Уже было сделано. В Main() false на этом вызове заменён был на true.
2 май 21, 03:24    [22317365]     Ответить | Цитировать Сообщить модератору
 Re: Добавление TTF, не установленного в системе  [new]
гомодиализ
Member

Откуда: отовсюду
Сообщений: 53
кажется понял. текст боксы не поддерживают. облом?
2 май 21, 19:54    [22317591]     Ответить | Цитировать Сообщить модератору
 Re: Добавление TTF, не установленного в системе  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6192
гомодиализ
кажется понял. текст боксы не поддерживают. облом?

Не всё ещё потеряно.
https://stackoverflow.com/questions/1955629/c-sharp-using-an-embedded-font-on-a-textbox
3 май 21, 10:38    [22317719]     Ответить | Цитировать Сообщить модератору
 Re: Добавление TTF, не установленного в системе  [new]
гомодиализ
Member

Откуда: отовсюду
Сообщений: 53
Сон Веры Павловны,

Спасибо большое! Эвон чем люди вынуждены заниматься.
Но пользоваться этим я не буду. Ну его нахрен. У них всегда мрамора на одну ягодицу не хватает. Проще файлик рядом положить и обойтись 1й строчкой, чем городить этот почёс левого уха правой ногой. Дебилами были, дебилами и остались.
4 май 21, 01:30    [22318084]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить