LINUX.ORG.RU

fontforge -script, комбинировать Regular+Bold в один файл

 , ,


1

1

Собственно, $SUBJ.

Имеется два BDF-файла — Regular и Bold, их нужно сохранить в один OTB (OTF Bitmap) файл. Так как размеров шрифта несколько, то делается это циклом, но на данный момент оно генерирует по одному OTB-файлу на каждый размер, по два стиля на размер:

fontforge -quiet -lang=ff -script <<-__EOF__
	Open("${src}")
	Generate("${dst}", "otb", 8, -1)
__EOF__

Python для fontforge недоступен.

★★★★★
Ответ на: комментарий от Original_1

По ссылке Python и GUI. Мне нужно обойтись штатным скриптовым режимом fontforge.

Через интерфейс fontforge это легко делается, но я хочу автоматизировать процесс, потому что размеров много. Размеры объединить вроде как нельзя, потому что это Bitmap.

mord0d ★★★★★
() автор топика
31 января 2023 г.
Ответ на: комментарий от Radjah

Я курил документацию, и не раз. Подозреваю, я использую функции как-то неправильно — не работает оно у меня. То что в ОП работает. Нерабочего кода не осталось, так бы и его скинул, может кто бы и помог с логикой.

mord0d ★★★★★
() автор топика
Ответ на: комментарий от mord0d

Я не настоящий сварщик. Я исходил из того, что для двух файлов должно быть или два вызова Open, или один Open и что-то типа Append или Merge с указанием дополнительных файлов. По двух последним словам и искал по документации.

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Я не настоящий сварщик.

Да я тоже вроде не похож.

Я исходил из того, что для двух файлов должно быть или два вызова Open, или один Open и что-то типа Append или Merge с указанием дополнительных файлов.

Как бы логично, и я тоже так подумал, но у FontForge логика немножко… инопланетная.

По двух последним словам и искал по документации.

Так если бы ещё примеры использования в доках внятные были, а то неведома хе…функция с половиной неизвестных аргументов непонятно для чего, которую непонятно как использовать, и совокупляйся как хочешь. И это относится почти ко всей документации ff.

Оттого и родился сей тред, что читать-то я умею, а вот логику осилить не смог. И я не утверждаю что у них беда с логикой, может и у меня, просто мы с ними мыслим в разных плоскостях — они немножко дизайнеры, а я множко недизайнер. (%

mord0d ★★★★★
() автор топика
Ответ на: комментарий от mord0d

У меня руки зачесались. 😁

Я попробовал взять Arial Regular и Arial Italic из винды. И вот такое из superuser:

Open($1)
MergeFonts($2)
Generate($3)
В полученном файле в конце что-то курсивное появилось. Но это скорее всего не то. Тут, наверное, просто глифов в шрифт вкинули. Поиск по «style» вообще какую-то муть выдаёт. o_0

И в логе куча ошибок:

Copyright (c) 2000-2023. See AUTHORS for Contributors.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 with many parts BSD <http://fontforge.org/license.html>. Please read LICENSE.
 Version: 20230101
 Based on sources from 2023-01-01 05:31 UTC-ML-TtfDb-D-GDK3.
 Based on source from git with hash: a1dad3e81da03d5d5f3c4c1c1b9b5ca5ebcfcecf
FontrForge проигнорировал следующие таблицы в шрифтовом файле:
  Игнорируется 'DSIG' digital signature table
  Игнорируется 'LTSH' linear threshold table
  Игнорируется 'PCLT' PCL 5 data table
  Игнорируется 'VDMX' vertical device metrics table
  Игнорируется 'hdmx' horizontal device metrics table
  Игнорируется 'meta' metadata table
Это шрифт содержит как таблицу 'kern', так и таблицу 'GPOS'.
  Таблица 'kern' читается только если функции 'kern' нет в 'GPOS'.
Warning: Mac string is a subset of the Unicode string in the 'name' table
  for the Торговая марка string in the Американский английский language.
Warning: Mac string is a subset of the Windows string in the 'name' table
  for the Авторские права string in the Американский английский language.
Warning: Mac and Windows entries in the 'name' table differ for the
  Торговая марка string in the language Американский английский
  Mac String: Arial  is a trademark of The Monotype Corporation.
  Windows String: Arial is a trademark of The Monotype Corporation.
Warning: Mac string is a subset of the Windows string in the 'name' table
  for the Лицензия string in the Американский английский language.
FontrForge проигнорировал следующие таблицы в шрифтовом файле:
  Игнорируется 'DSIG' digital signature table
  Игнорируется 'LTSH' linear threshold table
  Игнорируется 'PCLT' PCL 5 data table
  Игнорируется 'VDMX' vertical device metrics table
  Игнорируется 'hdmx' horizontal device metrics table
  Игнорируется 'meta' metadata table
Это шрифт содержит как таблицу 'kern', так и таблицу 'GPOS'.
  Таблица 'kern' читается только если функции 'kern' нет в 'GPOS'.
Warning: Mac string is a subset of the Unicode string in the 'name' table
  for the Торговая марка string in the Американский английский language.
Warning: Mac string is a subset of the Windows string in the 'name' table
  for the Авторские права string in the Американский английский language.
Warning: Mac and Windows entries in the 'name' table differ for the
  Торговая марка string in the language Американский английский
  Mac String: Arial  is a trademark of The Monotype Corporation.
  Windows String: Arial is a trademark of The Monotype Corporation.
Warning: Mac string is a subset of the Windows string in the 'name' table
  for the Лицензия string in the Американский английский language.
Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Поиск по «style» вообще какую-то муть выдаёт. o_0

Оно как бы аппендит глифы в конец таблицы, а шрифт как оперделялся одним стилем, так им и оперделяется. То есть смерженный шрифт нельзя одновременно юзать как для Regular, так и для Italic, по крайней мере без диких манипуляций с fonts.conf (то есть переносимость будет нулевая).

mord0d ★★★★★
() автор топика
Ответ на: комментарий от mord0d

Оно как бы аппендит глифы в конец таблицы, а шрифт как оперделялся одним стилем, так им и оперделяется.

Я так и понял.

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

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

мануал кузницы усиленно курить

В мануале про скриптинг глухо.

Методом тыка понять такое сложно.

Там ещё совсем не очевидно в какой последовательности функции нужно вызывать, чтобы получить тот же результат, что в GUI.

И что самое смешное, с помощью Python (а ff далеко не везде можно собрать с) всё гораздо проще. Оно хоть трейс выплёвывает, а не эту абра-кадабру.

mord0d ★★★★★
() автор топика
19 июля 2023 г.

Задача решена землекопа полтора:

fontforge -quiet -lang=ff -script <<-__EOF__
	Open("${src%.bdf}_bold.bdf")
	Open("${src}")
	SelectAll()
	Generate("${dst}.otb", "otb", 8, -1)
__EOF__

Вначале Bold, а затем Regular. Иначе шрифт будет матчиться в первую очередь как Bold и везде будет жирным.

mord0d ★★★★★
() автор топика