TobiasChe / conemu-maximus5

Automatically exported from code.google.com/p/conemu-maximus5
0 stars 0 forks source link

[patch] Rudimentary BDF support #511

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Advantages:
1) Unicode+Bitmap (Windows supports either, not both)
2) Faster rendering

Original issue reported on code.google.com by thecybershadow on 19 Mar 2012 at 8:11

Attachments:

GoogleCodeExporter commented 9 years ago
Продолжение будет?
Сходу:
* при выборе bdf ломается шрифт при курсиве (в 
панелях для группы файлов настроен курсив, 
отрисовка похоже идет системным шрифтом)
* слетают цвета в редакторе при Colorer-TrueMod-Far3. 
(если не bdf - все ок)
* шрифты не различимы в списке (окно 
настроек). рядом может и ttf лежать. наверное 
логично было бы для bdf добавить суффикс, 
типа "Small [bdf]"

Original comment by ConEmu.Maximus5 on 19 Mar 2012 at 11:34

GoogleCodeExporter commented 9 years ago
ОК, сделаем.

Original comment by thecybershadow on 19 Mar 2012 at 7:49

GoogleCodeExporter commented 9 years ago
> при выборе bdf ломается шрифт при курсиве

У меня не воспроизводится, но патч может 
поможет. Если нет, прошу шаги для 
воспроизведения.

Остается вопрос с рамочным шрифтом. Там в 
CreateFontIndirectMy довольно запутанная логика, и я 
даже не знаю как правильно к этому 
подобраться. "Правильно" тут означало бы 
позволить пользователю указать BDF-шрифт и 
как рамочный шрифт, но я не представляю как 
это можно обобщить, и боюсь логику кода 
трогать. Может вы посмотрите?

Original comment by thecybershadow on 20 Mar 2012 at 3:20

Attachments:

GoogleCodeExporter commented 9 years ago
All OK

Рамки посмотрю.

Original comment by ConEmu.Maximus5 on 20 Mar 2012 at 6:23

GoogleCodeExporter commented 9 years ago
Не, пока не ОК

Can't retrieve font family from file:
C:\Far3\ConEmu\unifont-5.1.20080820.bdf
Continue?

Family может быть и не указан. Используем имя 
файла?
Шрифт качал как unifont-5.1.20080820.bdf.gz

Кроме того, зачем проверка "if (familyName.size() >= 
LF_FACESIZE)"?
Обрезать наверное в этом случае нужно?

Original comment by ConEmu.Maximus5 on 20 Mar 2012 at 1:07

GoogleCodeExporter commented 9 years ago
Более того. Распаковал комплект gohufont.
Получил 8 одинаковых "GohuFont [BDF]". Как-то не 
айс. Таки склоняюсь к имени файла вместо 
опционального FAMILY_NAME

Original comment by ConEmu.Maximus5 on 20 Mar 2012 at 1:12

GoogleCodeExporter commented 9 years ago
Хотя не... если есть семейство - наверное 
лучше показывать одно имя, чтобы разные 
шрифты можно было создавать (GohuFont - italic/bold/...)

Original comment by ConEmu.Maximus5 on 20 Mar 2012 at 3:24

GoogleCodeExporter commented 9 years ago
> Обрезать наверное в этом случае нужно?

Да, обрезать думаю было бы лучше. Проблема с 
обрезанием - если есть несколько шрифтов, с 
названием отличающимся только после 31й 
буквы. "Bitstream Vera Sans Mono" - уже 24 буквы (LF_FACESIZE=32).

> Используем имя файла?

Да. Сделаем.

> если есть семейство - наверное лучше 
показывать одно имя

Поддержка семейств изначально не входило в 
план "rudimentary", но ладно, я сделаю.

Original comment by thecybershadow on 21 Mar 2012 at 1:12

GoogleCodeExporter commented 9 years ago
UniFont только частично monospace, между прочим. Не 
знаю, если стоит поддерживать растерные 
не-monospace шрифты.

Original comment by thecybershadow on 21 Mar 2012 at 5:29

Attachments:

GoogleCodeExporter commented 9 years ago
Выкинул тормознутый std, скорость загрузки 
bdf-шрифтов увеличилась вдвое. Исходники на 
svn.

На очереди.
Есть подозрение, что нужно выкинуть SetPixel.
Нет смысла грузить (инициализировать) 
шрифт, если он не используется в 
настройках. Т.е. при регистрации - смотрим 
только параметры шрифта, а уж если он 
используется - тогда уж полный цикл.
А потом будет виртуальный underline/bold/italic.

Original comment by ConEmu.Maximus5 on 21 Mar 2012 at 9:30

GoogleCodeExporter commented 9 years ago
Вот без setpixel, на базе svn еще не пробовал.

Часть параметров шрифта - если он рамочный, 
а это без просмотра всего файла не узнать.

Original comment by thecybershadow on 21 Mar 2012 at 11:20

Attachments:

GoogleCodeExporter commented 9 years ago
Т.е. не весь, но хотя бы до первого рамочного 
символа. Что может означать весь.
Можно кэш сделать, если до этого дойдет.

Для скорости в теории можно добавить 
поддержку формата PCF, он двоичный.

Original comment by thecybershadow on 21 Mar 2012 at 11:25

GoogleCodeExporter commented 9 years ago
На счет просмотра всего файла.
Мысль была такая. Даже если его весь 
просматривать, ну или до первого BITMAP, или 
(как вариант) до тех пор, пока не будут 
найдены (по количеству) все искомые 
параметры,
НО если НЕ звать при этом CreateBitmap() и 
пропускать обработку блока BITMAP - должно 
быть а) быстрее; б) экономнее по памяти. Это 
может стать особо актуально, если шрифтов в 
папке много.

Original comment by ConEmu.Maximus5 on 22 Mar 2012 at 5:50

GoogleCodeExporter commented 9 years ago
Надо посмотреть где время выполнение 
проводит.

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

Original comment by thecybershadow on 22 Mar 2012 at 5:54

GoogleCodeExporter commented 9 years ago
Если шрифт большой - тот же unifont 10M - то 
основное время было в getline, впрочем и 
осталось в цикле обработки. Ну, допустим, на 
холодной машине - секунда на чтение, 
остальные 5 - на сканирование строк.

На счет кеша - это хорошая мысль. Сделаю, и 
не только для bdf, но и остальных шрифтов (они 
тоже ведь сканируются).

Original comment by ConEmu.Maximus5 on 22 Mar 2012 at 6:00

GoogleCodeExporter commented 9 years ago
После убиения SetPixel время запуска еще в 2 
раза сократилось.

Original comment by ConEmu.Maximus5 on 22 Mar 2012 at 12:23

GoogleCodeExporter commented 9 years ago
теперь можно и в "рамках" использовать

Original comment by ConEmu.Maximus5 on 17 Apr 2012 at 9:05

GoogleCodeExporter commented 9 years ago

Original comment by ConEmu.Maximus5 on 23 Oct 2013 at 11:18