Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Шрифт-заглушка

Автор Тайльнемер, августа 26, 2014, 20:43

0 Пользователи и 1 гость просматривают эту тему.

Тайльнемер

Мне для http://teilnehmer.somee.com/WpfTextImage нужен шрифт-заглушка, который бы имел во всех код-пойнтах один и тот же глиф — квадратик.

Сейчас я использую для этих целей пару шрифтов UnicodeBMPFallback для главной плоскости и LastResort для остальных плоскостей. Но проблема в том, что в этих шрифтах задействованы только заняьые в уникоде код-поинты.
Вот например, вышла новая версия Универсалии с поддержкой уникода 7.0. Я набираю в WpfTextImage в списке шрифтов символ рубля, и он мне показывает, как будто этот символ есть во всех шрифтах. Дело в том, что в UnicodeBMPFallback и в LastResort его нету, и WPF выполняет автоподстановку из имеющегося шрифта.

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

Bhudh

Есть системный шрифт System, в котором почти все код-поинты ссылаются на глиф Ђ.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: Bhudh от августа 26, 2014, 20:54
Есть системный шрифт System, в котором почти все код-поинты ссылаются на глиф Ђ.
Думаю, это не работает. Ђ в System функционально является тем же, чем квадратик в других шрифтах — символом, отображаемым при отсутствии символа в шрифте. Однако, умные программы сами находят то, чего нет в текущем шрифте, проверяя другие установленные шрифты.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Wolliger Mensch

Цитата: Тайльнемер от августа 26, 2014, 20:43
Я пытался сделать такой шрифт сам, но у меня ничего не вышло, т. к. не разбираюсть в шрифтовых программах.

А какая возникла проблема?
«Вот интересно, каких лингвистических жемчуг можно найти в море отодвинутых книг», Ян Гавлиш.
«Впредь прошу помнить, что придумал игру не для любых ассоциаций, а для семантически оправданных. Например, чтó это такое: ,,рулетке" — ,,выпечке"?? Тем более, что сей ляпсус я сам совершил...», Марбол
«Ветхий Завет написан на иврите и частично на армейском», Vesle Anne
«МЛ(ять)КО ... ПЛ(ять)NЪ», Тася
«Вот откроет этот спойлер, например, Марго, ничего не подозревая, а потом будут по всему форуму блюющие смайлики...», Авал
«Томан приличный мужчина. Правда по патриархальным меркам слегка голодранец», Vesle Anne
«Возможен ли фонетический переход "ж" в "п с придыханием"», forest

Тайльнемер

Цитата: Wolliger Mensch от августа 27, 2014, 00:00
А какая возникла проблема?
Я пробовал  FontForge и FontLab Studio 5.

В FontForge я создал новый шрифт, нарисовал глиф-прямоугольник. Как я понял, этому глифу можно назначить ещё несколько код-пойнтов (Same glyph as), или можно в других глифах сослаться на этот (Copy reference, Paste). Но последний способ плох тем, что не позволяет покрыть больше 216 символов (одну плоскость уникода). Первый способ — позволяет, что видно из шрифта LastResort.
Опции «назначить глифу код-пойнты с X по Y» я не нашёл. Тыкать миддион раз мышкой — тоже не очень хорошо. К счастью, формат исходных файлов у FontForg'а текстовый. Дополнительные код-пойнты в нём вводятся с помощью строки «AltUni2: ‹код›.ffffffff.0  ‹код›.ffffffff.0  ‹код›.ffffffff.0...».
Я стал эксперементировать с генерацией исходных файлов. Оказалось, что при количевтве кодов в AltUni2 больше ≈30000 (это меньше половины базовой плоскости) FontForge при генерации ttf или otf выдаёт ошибку:
"Attempt to output ‹столько-то› into a 16-bit field. It will be truncated and the file may not be useful."
Причём это ограничение не на altUni для одного глифа, а на общее количество altUni на весь шрифт, как ни странно. И кстати, шрифт LastResort FontForge открывает, но при попытке собрать вылетает с той же ошибкой.

В FontLab Studio я тоже нарисовал глиф-прямоугольник. Функции «назначить глифу код-пойнты с X по Y» я здесь тоже не нашёл. В окне Glyph Properties в поле Unicode можно вписать через пробел несколько код-пойнтов для одного глифа. Но при попытке вписать туда несколько десятков кодов программа вылетает с ошибкой.
Формат исходных файлов у FontLab'а бинарный, и копаться в нём нехочется.

Как быть?

Тайльнемер

Ура!
А вот в FontCreator'е есть возможность задавать глифу диапазон код-пойнтов.
Шрифт работает!

Bhudh

Цитата: FontCreatorYou are on day 984 of your 30 day evaluation period.
:E:
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Тайльнемер

Прошу помощи.

Вот сделал я шрифт в FontCreator'е. Там один глиф — прямоугольник. Но он получился неотхинченный — стороны прямоугольника выглядят разной толщины, а при некоторых размерах некоторые стороны вообще исчезают. Чтобы не сильно исчезали, мне пришлось горизонтальные линии сделать намного толще, но всё равно мало помогло:
Конечно, можно сделать ещё толще, не проблема. Но хотелось бы знать, как это делается по-хорошему, как отхинтить глиф так, чтобы стороны прямоугольника были одинаковой толщины и не терялись.

Как я понял, FontCreator не позволяет делать хинтинг. (Там есть в опциях экспорта «автохинтинг», но он не помог.)
Я открыл шрифт в FontLabStudio и сталкнулся с двумя проблемами:
1) Я не знаю, как хинтить.
2) Я не могу экспортировать шрифт в otf/ttf без потери привязки глифа к код-пойнтам.

Тайльнемер


amdf

Ну нарисуйте два квадратика. Один диапазон будет ссылаться на один квадратик, следующий диапазон на другой.
Ведовьство, потвори, чяродеание, волхъвование, зеленничьство, церковнаа татба, мертвеци сволочать, крест посекут, или на стенах трескы емлють из креста.

Тайльнемер

Цитата: amdf от сентября  8, 2014, 17:21
Ну нарисуйте два квадратика. Один диапазон будет ссылаться на один квадратик, следующий диапазон на другой.
Это уже не актуально. Всё получилось с одним квадратиком и 17 ссылками на него (на каждый глиф-ссылку повешено по плоскости уникода).

Теперь вопрос с хинтингом (уже не жизненно важный, а так, по мелочи).

Bhudh

Цитата: Тайльнемер от сентября  8, 2014, 17:32и 17 ссылками на него (на каждый глиф-ссылку повешено по плоскости уникода)
То есть квадратиком помечены даже все неиспользуемые и зарезервированные код-пойнты?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Тайльнемер

Цитата: Bhudh от сентября  8, 2014, 18:22
То есть квадратиком помечены даже все неиспользуемые и зарезервированные код-пойнты?
Именно так.
Такой шрифт не придётся обновлять под каждую версию уникода, как этого требует LastResort.
Можно, конечно, сделать облегчённую версию только для плоскостей 0—2, 14—16. Он бы весил меньше. Не знаю, имеет ли это значение.

Bhudh

Можно попробовать и посмотреть, несколько меньше.
Назвать, скажем, MiniNone или CurrentNone.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Тайльнемер


Тайльнемер

Мне кажется, скорость доступа к шрифту не зависит от размера файла, и смысла в маленьком файле нет. Но может я ошибаюсь...

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Bhudh

Открыл файл в Notepad++ и немного прифигел от числа повторений ANSI блока в нём.
12 297 раз.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Bhudh

При этом символы \u000F и \u000E повторяются по 137 226 раз...
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр