Как преобразовать растровый шрифт (.FON) в шрифт TrueType (.TTF)? - PullRequest
18 голосов
/ 20 сентября 2010

Моя программа (win32, Delphi) должна отображать специальные символы в некоторых столбцах таблицы.Для этого я использую специальный шрифт для этих столбцов.Я получил шрифт от моего клиента.Это шрифт .FON.Он хорошо работает на экране, но у меня часто возникают проблемы, как только я хочу использовать его для печати чего-либо.

Я хотел бы преобразовать этот шрифт .FON в шрифт истинного типа (.TTF), чтобы избежать проблем,Мне все равно, если шрифт не масштабируется хорошо.Я должен просто выглядеть точно так же, когда используется на экране того же размера, что и размер по умолчанию исходного шрифта.Кто-нибудь знает способ сделать это?

(не нужно решение с исходным кодом. Шрифт не изменится. Достаточно, если я найду инструмент для этого)

Редактировать: Идеально было бы получить шрифт TrueType, в котором каждый пиксель исходного шрифта конвертируется в векторный черный квадрат (я проверял, перерисовывая несколько символов вручную, он работал бы так, как я хочу).

Правка 2, использованное решение: Использование FontForge + Автотрейс , а затем внесение исправлений вручную, я смог получить векторный шрифт, который следует контурупикселей растрового шрифта.Этот векторный шрифт масштабируется несколько лучше исходного шрифта и решает мои проблемы с печатью.Подробнее см. В принятом сообщении.

Но мне все еще интересно, если кто-то знает полностью автоматизированное решение.

Ответы [ 11 ]

15 голосов
/ 21 сентября 2010

Используйте FontForge + Autotrace , затем внесите некоторые исправления вручную.

Сначала интегрируйте Autotrace в Fontforge, см. Автотрекинг растровых изображений в FontForge .Вот как я это сделал, поскольку я не смог использовать версию FontForge для win32:

  1. Скачать, распаковать и запустить Portable Ubuntu Tres .Это специальная версия linux, которая работает под Windows!
  2. Выберите Система-> Администрирование-> Добавить / Удалить приложения, найдите FontForge и установите его (пароль администратора 123456).У меня установлена ​​версия FontForge 20090622.
  3. Загрузите файл autotrace-0.31.1.tar.gz из http://autotrace.sourceforge.net/index.html#download и скопируйте его в свой домашний каталог в Portable Ubuntu.
  4. В Portable Ubuntu выберите Applications-> Accessories-> Terminal для компиляции и установки автотрассировки:

    sudo bash  (password is 123456)
    gunzip autotrace-0.31.1.tar.gz
    tar xf autotrace-0.31.1.tar
    cd autotrace-0.31.1
    ./configure
    make
    make install
    

Затем преобразуйте ваш шрифт:

  1. Запустите FontForge в PortableUbuntu и откройте шрифт .FON.
  2. Сохраните ваш шрифт как шрифт .BDF (загрузка файла .FON в качестве фона у меня не работала, поэтому мне пришлось сначала преобразовать шрифт): File-> GenerateШрифты и выберите BDF в качестве формата.
  3. Создайте новый шрифт и импортируйте шрифт BDF в качестве фонового шрифта: File-> Import и не забудьте выбрать «В качестве фона».
  4. Выберите все символы и запустите автоматическую трассировку, удерживая клавишу Shift, чтобы вы могли ввести параметры для автоматической трассировки.Я использовал следующие параметры, которые улучшили распознавание контуров пикселей, но я не нашел идеальных параметров:

    -corner-surround=1 -line-threshold=10
    
  5. Исправьте символы вручную, используя в основном функцию «Добавить точку кривой»».Активация View-> Show-> практически горизонтальные / вертикальные линии значительно упрощает работу.
  6. Создание шрифта TrueType: File-> Generate Fonts и выберите TrueType в качестве формата.
9 голосов
/ 02 декабря 2011

Я знаю, что этот вопрос старый, но за то, что он того стоил, я смог легко конвертировать старый .fon в .ttf, используя PixFont . Я запускал его как администратор (без установки - исполняемый файл старой школы на месте), и он генерировал хороший TTF, хотя в оригинальном .fon отсутствовали некоторые правильные глифы.

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

6 голосов
/ 08 мая 2012

Для тех, кто не хочет компилировать fontforge (для windows), загрузите его здесь: http://www.mpetroff.net/software/fontforge-windows/

Эта сборка использует potrace вместо autotrace. Лучшие параметры, которые я получил для шрифта, который я конвертировал (vgasys.fon), были:

--turdsize 0 --opttolerance 0 --unit 1 --longcurve --gamma 0 --blacklevel 0 --cleartext

Это были часы ручной работы, чтобы заставить шрифт выглядеть хорошо (путем добавления и удаления точек).

4 голосов
/ 20 сентября 2010

Использование FontForge Мне удалось сгенерировать соответствующий шрифт истинного типа, который дает точно такие же символы, что и исходный шрифт при использовании в хорошем размере. Может быть, мне все еще нужно настроить некоторые параметры, потому что я использовал свой оригинальный шрифт с размером = 11. Новый шрифт хорошо работает только при размере = 10,5, что невозможно использовать в Delphi. Шрифт выглядит ужасно при любом другом размере.

  1. Загрузить шрифт .FON в FontForge
  2. Выберите Файл-> Создать шрифты
  3. Выберите "(поддельный) MS bitmap only sfnt (ttf)" как тип, введите имя файла и нажмите "сохранить".

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

Примечание о FontForge : Мне не удалось установить версию FontForge для Windows (на основе cygwin). Вместо этого я установил Portable Ubuntu Tres , который является версией для Linux и работает в Windows. Его легко установить: разархивируйте файл и запустите исполняемый файл. Затем выберите Система-> Администрирование-> Добавить / Удалить приложения, найдите FontForge и установите его (пароль администратора 123456). У меня установлена ​​версия FontForge 20090622.

2 голосов
/ 13 мая 2015

Я обнаружил, что самый простой способ получить хорошую TTF-версию FON - это воспользоваться одним из бесплатных онлайн-редакторов растровых шрифтов.Вы должны вручную ввести каждый глиф, но процесс намного проще, чем вступить в борьбу с FontForge.Мне известно о двух редакторах, и они оба создают TTF, которые отлично работают в Windows и Linux.

BitFontMaker - более простой из двух.Мне нравится его чистый интерфейс, но в итоге я не использовал его, потому что моноширинные шрифты могут иметь ширину ячейки от 10 до 14 пикселей.

FontStruct требует регистрации и использует интерфейс Flash.Я смог быстро создавать новые шрифты, когда привык к интерфейсу.(Это может быть совпадением, но я заметил рост спама в учетной записи электронной почты, которую я использовал для регистрации.)

Оба редактора автоматически устанавливают межстрочный интервал.Хитрость в том, чтобы получить нужный интервал, это добавить верхний пиксель на один символ, а затем использовать векторный редактор шрифтов, чтобы удалить его из TTF.( Тип light работает хорошо и намного проще в использовании, чем FontForge.)

2 голосов
/ 20 сентября 2010

Возможно использование инструмента командной строки SBIT32 для Microsoft .Преобразовать файл .FON в файл .BDF легко, используя FontForge .Но тогда вам нужно написать файл метрик (.MET).Я не пробовал, потому что я полагаю, что я получу TrueType-шрифт со встроенным шрифтом bitmaps, и можно генерировать такие шрифты непосредственно с FontForge (type "(faked) MS bitmap only sfnt(ttf) "в File-> Generate Fonts).

1 голос
/ 06 ноября 2016

Я обнаружил, что ищу эти шрифты для проекта, над которым я работаю. Вдохновившись мыслью о ручном редактировании всех глифов, упомянутых в других ответах, я продолжил поиск. В конце концов я наткнулся на сайт, который имеет оригинальный шрифт, а также несколько более новых .ttf вариантов. Если вас не волнует, что некоторые из глифов были переназначены (они все еще присутствуют), это хорошая альтернатива: Oldschool PC Fonts . В качестве дополнительного бонуса для меня эта поддержка расширила латиницу, греческий, кириллицу и иврит, а также несколько дополнительных символов и символов Юникода.

1 голос
/ 20 сентября 2010

Маловероятно, что вы можете сделать это с помощью простого бесплатного инструмента.http://www.fontlab.com есть инструменты для этого, но они очень дорогие.

1 голос
/ 20 сентября 2010

Согласно описанию продукта BitFonter 3.0 , кажется, может сделать это:

" Мощное преобразование растровых изображений и растровых шрифтов из шрифтов Type 1, TrueType и OpenType и их интеграция с FontLab Studio и TypeTool. "

Но 999 долларов США немного дороже, чтобы конвертировать только один шрифт.

0 голосов
/ 06 марта 2019

Мне пришлось пройти через много хлопот, чтобы найти решение, которое сработало для меня.

Похоже, что Autotrace дает идеальный выходной сигнал, если вход масштабируется, из моего опыта масштабирование по крайней мере в 8 раз работаетотлично.

Масштабирование ввода чрезмерно усложняется благодаря закрытому программному обеспечению.

Bitfonter может открывать шрифты bdf (которые поддерживают Unicode) и может масштабироваться.Проблема с демо-версией заключается в том, что при экспорте половина глифов «повреждена» (пиксели удалены случайным образом), и это заставляет Autotrace снова выдавать нежелательный вывод.Но я заметил, что существует шаблон, в котором символы «испорчены»: первый и второй глифы повреждены, третий и четвертый нет, пятый и шестой повреждены и так далее.Итак, я сделал дополнительный bdf-файл, снова масштабируя его, но затем удаляя первые два глифа.Затем можно объединить эти два параметра в FontForge: открыть оба этих выходных файла: «Перекодировать» в «Кодировка» в «Порядок глифов», выбрать все в output2 и скопировать, в output1 щелкнуть третий глиф и нажать Ctrl + Shift +V.Это объединит оба выходных файла и сделает все символы полностью масштабированными, за исключением первых двух глифов, которые можно сделать вручную.Сохраните результат.

Выполните «Autotrace» для этого масштабированного вывода.Затем на всех глифах Element \ Transformations \ Transform, затем используйте следующие настройки: Origin: Glyph Origin, Scale Uniformly ... значение, обратное тому, что вы ранее масштабировали в формате bdf (в случае 8-кратного масштабирования это 12,5%).

Есть больше точек, чем необходимо, это можно решить с помощью Element \ Simplify \ Simplify, это упростит контуры.В этом конкретном случае, когда контуры сделаны только из горизонтальных и вертикальных линий, эта операция должна выполняться без потерь.

Затем, после всего этого, я заметил, что глифы, по-видимому, не имеют информации Unicode.Откройте любой шрифт, состоящий в точности из символов результирующего шрифта, используйте Encoding \ Reencode \ ISO 10646-1 (Unicode, BMP) для этого шрифта, затем используйте Compact.Затем скопируйте все символы из шрифта, который имеет все правильные контуры, в шрифт со всеми правильными кодировками Unicode.

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

...