Конференция "WinAPI" » Проблема со шрифтами
 
  • Тимохов Дима © (20.06.17 18:32) [0]
    Коллеги!

    1. Сегодня обратился пользователь. Основная проблема - печать (сам когда-то давно писал на метафайле, потом на принтер) неверно работает в части шрифтов: мой шрифт подменяется на какой-то другой.

    2. Более деталей не знаю. Завтра поеду разбираться на место.
    Из исходных данных могу добавить, что все печатаю шрифтом 'Times', т.е. пишу именно 'Times', а не 'Times new roman'. Всегда работало, а вот сейчас сбоит...

    3. Подскажите, куда копать?
      а. Может, 'Times' писать неверно в новых виндусах, может надо именно 'Times new roman' писать?
      б. Может, вообще c 'Times' есть проблемы?
      в. Я бегло посмотрел google по запросу "windows problem times font", есть что-то, но пока не понял, относится ли это ко мне или нет. Может, кто-нибудь слышал что-то про проблемы с 'Times'.

    Спасибо!
  • dmk © (20.06.17 20:17) [1]
    В настройках надо шрифт хранить и выбирать. У меня на машине вообще все шрифты удаляются. Так для работы надо. Поэтому надо проверять наличие шрифта в системе.
    На paratype.ru есть бесплатные шрифты с шириной как у Times New Roman. PT Astra Sans и Serif. Качай их. Можно вместе с программой использовать. Хотя насчет лицензирования я бы почитал у них соглашение. Мне лицензионный Times New Roman, начертание regular обошелся в 150$. 4 начертания - 600$ ;)
  • Тимохов Дима © (20.06.17 22:30) [2]

    > dmk ©   (20.06.17 20:17) [1]

    Елки, как все сложно)))
    Скажи, друг, а есть какой-то такой шрифт, который 100% есть везде?
    Вот Arial он абсолютно стандартен или нет?

    В принципе, я и на Arial согласен все переделать (благо заказчики его почему-то любят больше Times)...

    ЗЫ Насчет выбор шрифта. Нормативные формы (например, последняя счет-фактура) выверены, чтобы все влезало. А т.к. форма очень обширная, то запасы по ширине везде минимальные. Это я к тому, что просто так взять другой шрифт не выйдет - надо перепросматривать все формы на предмет внешнего вида.
  • Игорь Шевченко © (20.06.17 23:34) [3]

    > а есть какой-то такой шрифт, который 100% есть везде?


    https://habrahabr.ru/post/68189/
  • Тимохов Дима © (21.06.17 09:48) [4]

    > Игорь Шевченко ©   (20.06.17 23:34) [3]
    > > а есть какой-то такой шрифт, который 100% есть везде?
    > https://habrahabr.ru/post/68189/


    Игорь, благодарю!
    Пока подозрение, что я пишу times, а не times new roman.
    Сегодня поеду попробую с times new roman.
  • dmk © (21.06.17 17:34) [5]
    >Скажи, друг, а есть какой-то такой шрифт, который 100% есть везде?
    >Вот Arial он абсолютно стандартен или нет?

    Arial не стандартен. Стандарты меняются. Системные шрифты, которые стоят в Windows используются для софта Microsoft по соглашению. Читайте соглашения!!!! EULA и т.п.
    Если хочешь распространять с программой - купи свой. На паратайпе есть такой вид лицензии. Не так уж и дорого. Хочешь ариал - там есть ариал для софта. Можешь его в EXE встроить и грузить при запуске. Поверь опыту. Со шрифтами уже 20 лет работаю.
    То что в системе - это для системы и для сопутствующего системного софта. Остальное свое только.
  • dmk © (21.06.17 17:35) [6]
    Загрузка системного шрифта в PDF - по сути уже нарушение лицензионного соглашения.
  • Тимохов Дима © (21.06.17 18:42) [7]

    > dmk ©   (21.06.17 17:34) [5]

    Благодарю за информацию о лицензионности шрифтов. Никогда не задумывался об этом. Теперь буду знать и задумываться.

    Но, похоже, тут проблема не в шрифтах, а в моих не совсем прямых руках.

    -----
    Побывал сегодня там. Притом, модернизировал программу - добавил разные шрифты для теста.

    Итог такой: любой из попробованных шрифтов (делал Times New Roman и Arial) печатается так:
      а. Ширина слов не изменилась. Т.е. каждая буква левым краем начинается с того-же места.
      в. Высота слов не изменилась.
      б. Но каждая буква шире примерно на 20%.
    В итоге, каждая буква немного залезают на букву, расположенную справа.

    Еще раз - каждая буква при неизменной высоте стала шире, причем, левый край буквы не изменил положения! Я бы понял еще, чтобы все слово увеличилось на 20%. А тут... Никогда такого не видел!

    Вопрос, знатокам работы со шрифтами: можете сказать, как вывести текст по описанному сценарию: каждая буква шире на 20% и все! Не весь текст шире, не выше. А только каждая буква шире.

    Спасибо!

    ЗЫ 1. Сам вывожу текст помощью TCanvas.TextRect на метафайл. Потом его кидаю на предпросмотр и, если нужно, то на принтер.
    2. Неверно выводится как на метафайле, так и на принтере.
  • dmk © (21.06.17 19:44) [8]
    Это тебе привет от хакеров. Еще раз говорю - возьми лицензионный шрифт. Проблемы исчезнут. На машине клиента может стоять откровенная "хрень". Кто ему и с какого диска поставил - загадка. Ты себя подстраховывай.
    Вот тут бесплатные шрифты: https://www.paratype.ru/public/
    Вот тебе лицензия от паратайп: https://www.paratype.ru/public/pt_openlicense.asp

    Можешь их распространять со своим програмным продуктом.
  • Тимохов Дима © (21.06.17 21:37) [9]

    > dmk ©   (21.06.17 19:44) [8]
    > Это тебе привет от хакеров. Еще раз говорю - возьми лицензионный
    > шрифт. Проблемы исчезнут.


    Дорогой друг, еще раз благодарю за совет. Повторюсь, что тема лицензионности шрифтов для меня нова - только сегодня узнал о такой проблеме. Твои ссылки я обязательно изучу.

    Но! Повторю исходную диспозицию:
      1. Когда работаешь на машине - все ОК.
      2. Когда заходишь на нее через RDP - возникает описанная проблема.
    Шрифты же в обоих случаях берутся с host-машины, т.е. с той, на которую происходит заход через RDP. Поэтому, думаю, тут вопрос качества шрифтов (в т/ч их лицензионности не стоит). Тем более, что проблемы и в Times New Roman и в Arial. При этом все другие программы работают корректно (Word, Excel и т.д. - посмотрел десяток разных).

    Думаю, что тут очевиден мой косяк. Но, к сожалению, даже не пойму с какого конца к нему подобраться.

    Поэтому и спрашиваю: если будет поставлена задача реализовать описанную мною хрень (т.е. каждая буква и только буква, а не все слово, шире на 20%), то как ты бы ее выполнял?

    Если я пойму, как сделать специально такую штуку, то смогу найти и у себя - что я делаю для того, чтобы получить увеличение только ширины букв.

    Фух, вроде объяснил)))
  • dmk © (21.06.17 23:01) [10]
    >>Фух, вроде объяснил)))

    RDP — это система удаленного администрирования?
    Т.е. просто зашел на удаленный компьютер по сетке и глюки со шрифтами?
    Или что-то по сетке передается?
  • Тимохов Дима © (21.06.17 23:13) [11]

    > dmk ©   (21.06.17 23:01) [10]
    > >>Фух, вроде объяснил)))
    > RDP — это система удаленного администрирования?


    Елки, может, я не то сказал. Видимо, сказав RDP, я имел что-то иное.
    Сейчас поясню.

    Проблема появляется только, если человек заходит через Remote Desktop Connection (который лежит в Start \ Accessiries \ Remote Desktop Connection.

    Т.е., если человек заходит на свою машину без Remote Desktop Connection, то все ОК. Если через Remote Desktop Connection, то видится указанный эффект.
  • dmk © (21.06.17 23:34) [12]
    >Если через Remote Desktop Connection, то видится указанный эффект.
    Ну так может в  этом и проблема? А через Radmin или другой RDP то же самое?
    Есть возможность проверить?
  • Тимохов Дима © (22.06.17 12:05) [13]

    > dmk ©   (21.06.17 23:34) [12]
    > >Если через Remote Desktop Connection, то видится указанный
    > эффект.
    > Ну так может в  этом и проблема? А через Radmin или другой
    > RDP то же самое?
    > Есть возможность проверить?

    Ну я тоже понимаю, что в этом проблема)

    Пока моя стратегия поиска ошибки - А) попытаться осознанно сделать подобный эффект в тестовом проекте; Б) потом пытаться понять, как я сделал этот эффект неосознанно в рабочем проекте.

    Других вариантов не вижу.

    Вот с п. А у меня затык, ибо в шрифтах я не силен.
    Если тут не помогут, сяду Феня Юаня читать)))

    ЗЫ Я больше, чем уверен, что глобально причина в том, что у меня мешаются данные принтеров: локального на host-машине и MS Writer, который протаскивается с ноутбука на host-машину. Но вот конкретно, как это все происходит, пока не понял.
  • Eraser © (23.06.17 01:30) [14]

    > Тимохов Дима ©   (21.06.17 23:13) [11]


    > RDP

    зачастую он рисует уже на клиенте, теми шрифтами, которые есть в наличии.

    попробуй работать с мета-файлами через GDI+ или более современное API.
  • Styx © (23.06.17 21:13) [15]
    Если где-то всё же прописан шрифт Times - то могут быть проблемы. Потому что это типа "принтерный" шрифт. И не удивлюсь, если система его определяет разным в зависимости от принтера по умолчанию. А при заходе по RDP принтер может меняться на установленный у клиента... Короче, я бы проверил, не выбирается ли при подключении по умолчанию другой принтер.
  • Тимохов Дима © (26.06.17 18:24) [16]

    > Eraser ©   (23.06.17 01:30) [14]


    > Styx ©   (23.06.17 21:13) [15]


    Собственно, у меня и подозрение, что берется не тот принтер.
    Спасибо! Буду разбираться.
 
Конференция "WinAPI" » Проблема со шрифтами
Есть новые Нет новых   [118488   +59][b:0][p:0.001]