Closed ConEmu closed 9 years ago
From ConEmu.M...@gmail.com on March 19, 2012 04:34:58
Продолжение будет? Сходу:
From thecybershadow on March 19, 2012 12:49:54
ОК, сделаем.
From thecybershadow on March 19, 2012 20:20:24
при выборе bdf ломается шрифт при курсиве
У меня не воспроизводится, но патч может поможет. Если нет, прошу шаги для воспроизведения.
Остается вопрос с рамочным шрифтом. Там в CreateFontIndirectMy довольно запутанная логика, и я даже не знаю как правильно к этому подобраться. "Правильно" тут означало бы позволить пользователю указать BDF-шрифт и как рамочный шрифт, но я не представляю как это можно обобщить, и боюсь логику кода трогать. Может вы посмотрите?
Attachment: 0005-BDF-fixes.patch
From ConEmu.M...@gmail.com on March 20, 2012 06:07:27
Не, пока не ОК
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)"? Обрезать наверное в этом случае нужно?
From ConEmu.M...@gmail.com on March 20, 2012 06:12:33
Более того. Распаковал комплект gohufont. Получил 8 одинаковых "GohuFont [BDF]". Как-то не айс. Таки склоняюсь к имени файла вместо опционального FAMILY_NAME
From ConEmu.M...@gmail.com on March 20, 2012 08:24:16
Хотя не... если есть семейство - наверное лучше показывать одно имя, чтобы разные шрифты можно было создавать (GohuFont - italic/bold/...)
From thecybershadow on March 20, 2012 18:12:32
Обрезать наверное в этом случае нужно?
Да, обрезать думаю было бы лучше. Проблема с обрезанием - если есть несколько шрифтов, с названием отличающимся только после 31й буквы. "Bitstream Vera Sans Mono" - уже 24 буквы (LF_FACESIZE=32).
Используем имя файла?
Да. Сделаем.
если есть семейство - наверное лучше показывать одно имя
Поддержка семейств изначально не входило в план "rudimentary", но ладно, я сделаю.
From thecybershadow on March 20, 2012 22:29:43
UniFont только частично monospace, между прочим. Не знаю, если стоит поддерживать растерные не-monospace шрифты.
Attachment: 0006-BDF-name-and-sorting-fixes.patch 0007-Add-support-for-custom-font-families.patch
From ConEmu.M...@gmail.com on March 21, 2012 14:30:34
Выкинул тормознутый std, скорость загрузки bdf-шрифтов увеличилась вдвое. Исходники на svn.
На очереди. Есть подозрение, что нужно выкинуть SetPixel. Нет смысла грузить (инициализировать) шрифт, если он не используется в настройках. Т.е. при регистрации - смотрим только параметры шрифта, а уж если он используется - тогда уж полный цикл. А потом будет виртуальный underline/bold/italic.
From thecybershadow on March 21, 2012 16:20:39
Вот без setpixel, на базе svn еще не пробовал.
Часть параметров шрифта - если он рамочный, а это без просмотра всего файла не узнать.
Attachment: no-setpixel.patch
From thecybershadow on March 21, 2012 16:25:22
Т.е. не весь, но хотя бы до первого рамочного символа. Что может означать весь. Можно кэш сделать, если до этого дойдет.
Для скорости в теории можно добавить поддержку формата PCF, он двоичный.
From ConEmu.M...@gmail.com on March 21, 2012 22:50:44
На счет просмотра всего файла. Мысль была такая. Даже если его весь просматривать, ну или до первого BITMAP, или (как вариант) до тех пор, пока не будут найдены (по количеству) все искомые параметры, НО если НЕ звать при этом CreateBitmap() и пропускать обработку блока BITMAP - должно быть а) быстрее; б) экономнее по памяти. Это может стать особо актуально, если шрифтов в папке много.
From thecybershadow on March 21, 2012 22:54:46
Надо посмотреть где время выполнение проводит.
При запуске с холодным дисковым кешем, большинство времени пройдет именно на чтение файла, а не на анализе содержимого. Думаю следует либо кеш шрифтов делать, либо в документации указывать, что не следует оставлять неиспользуемые шрифты в папке ConEmu .
From ConEmu.M...@gmail.com on March 21, 2012 23:00:47
Если шрифт большой - тот же unifont 10M - то основное время было в getline, впрочем и осталось в цикле обработки. Ну, допустим, на холодной машине - секунда на чтение, остальные 5 - на сканирование строк.
На счет кеша - это хорошая мысль. Сделаю, и не только для bdf, но и остальных шрифтов (они тоже ведь сканируются).
From ConEmu.M...@gmail.com on March 22, 2012 05:23:00
После убиения SetPixel время запуска еще в 2 раза сократилось.
From ConEmu.M...@gmail.com on April 17, 2012 14:05:13
теперь можно и в "рамках" использовать
From ConEmu.M...@gmail.com on October 23, 2013 16:18:20
Status: Done
From thecybershadow on March 19, 2012 01:11:09
Advantages: 1) Unicode+Bitmap (Windows supports either, not both) 2) Faster rendering
Attachment: 0001-Increase-assert-width-height-limits.patch 0002-Add-rudimentary-BDF-support.patch 0003-Optimize-text-drawing-for-FixFarBorders-false.patch 0004-Optimize-BDF-rendering-by-using-memory-bitmap.patch
Original issue: http://code.google.com/p/conemu-maximus5/issues/detail?id=511