Шрифт с отличимостью кириллицы от латиницы

Научно-технические вопросы применения русского языка в программировании. Проекты с сайта программирование-по-русски.рф, кроме ЯОС . Информация об организациях и людях, использующих или изучающих русский язык в программировании. Сравнение операционных систем.
Ответить
БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 25.05.24 11:40

Репозиторий проекта:

https://tvoygit.ru/budden/dr_cyr

В продолжение темы "кириллица с глазами".

Требования:
* критерием успеха является надёжное обнаружение чужеродных букв в любом месте текста после краткого (порядка недели) привыкания
* шрифт должен быть удобочитаемым
* решение затрагивает шрифты для программирования и консоли (один - два популярных свободных шрифта скопированы и видоизменены)
* решение должно быть устойчиво к стилизации полужирным и курсивом (обнаружение чужеродных букв должно сохраняться при изменении стиля, даже
если другим стилем набрано слово из одной буквы).
* если внутри слова стиль изменён в одной букве, то здесь требований никаких нет
* цвет, жирность, курсив, подчёркивание использовать нельзя

План:
* чтобы распознавание было надёжным, должна быть "формула отличия", которая позволяет интуитивно отличать буквы кириллицы от латиницы
* предлагаемая формула отличия: стилизация под старину путём видоизменения округлостей, штрихов и добавления узелков
* конкретно: те буквы кириллицы, которые можно перепутать, слегка видоизменяются в сторону шрифта Ижица, но так, чтобы общий стиль исходного шрифта сохранился как есть. Округлости меняются по форме, чтобы быть похожими на букву "О" из Ижицы.

Программа максимум:
О ней помним, но не тратим на неё силы.
Сделать то же самое для нескольких других шрифтов. Хотя есть сомнения. В советских книжках зачастую текст на иностранном языке верстался другим шрифтом и было сразу видно, что это не русский, да и так вообще почти любое слово отличается. В художественных текстах такая точность не нужна. Т.е. скорее всего область применения решения ограничивается программированием и заполнением анкет (где тоже перепутать кириллицу с латиницей может иметь тяжёлые последствия)
Последний раз редактировалось БудДен 30.05.24 10:59, всего редактировалось 2 раза.

Юрий
Сообщения: 50
Зарегистрирован: 11.12.18 17:08

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение Юрий » 25.05.24 13:01

Может, лучше зайти с другой стороны? Можно запретить смешение русских и латинских букв, как это сделано для домена ".рф". Правда, всё равно не ясно, какими буквами написаны слова "ОКО" и "ТЕМА". Можно так же проверять на наличие слова в словаре.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 25.05.24 20:02

Невозможно запретить смешение букв в текстовом редакторе, если есть две раскладки. И кроме того, такой запрет для всех применений не в моих силах. Более того, в практике программирования ЯОС встречаются случаи, когда нужно смешивать. Например: форматDbf, протоколHttp и т.д. А сделать шрифт - скорее всего, в моих силах (в смысле найти исполнителя, но пока есть доброволец - посмотрим, что у него выйдет).

Шпаргалка:

Код: Выделить всё

cp /y/dr_cyr/DrCyrGolos/dr-cyr-golos-text_regular.ttf ~/.fonts && fc-cache -f -v 
Как менять шрифт в п-п-р?
* default.vue - прописать @fontface
* chrome dev tools на уже открытом сайте - в стилях найти, где находится bootstrap*.css. Пересобрать его я не осилил, но прямо в дистрибутиве можно найти и поменять font-face, который используется.
Последний раз редактировалось БудДен 22.06.24 12:47, всего редактировалось 1 раз.

Юрий
Сообщения: 50
Зарегистрирован: 11.12.18 17:08

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение Юрий » 26.05.24 00:12

Если текст читает человек, то ему не важен код символа, если начертание одинаковое. А вот для компилятора важен код, и для этого случая можно подумать о запрете смешения. А можно выдать предупреждения при компиляции: идентификаторы ххх и xxx имеют одинаковое начертания, но содержит символы с разными кодами.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 26.05.24 15:05

Здесь речь не только о программировании. Любой идентификатор (url, электронная почта, имя пользователя) подвержен ошибкам. Не знаю, у кого как, а у меня руки коротки это урегулировать, даже если бы меня сделали властелином мира. И тут либо у нас есть различимость букв, либо будет путаница, часто или редко, но будет. Даже в программировании мы не можем запретить смешивать латиницу с кириллицей в строчке вида:

Код: Выделить всё

ОткройВебСтраницу("httр://вече.программирование-по-русски.рф")

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 26.05.24 17:50

DrCyr1.png
DrCyr1.png (33.87 КБ) 1616 просмотров
Сделал три буквы.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 27.05.24 15:13

---
Последний раз редактировалось БудДен 30.05.24 11:15, всего редактировалось 2 раза.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 29.05.24 18:50

MC_с_шрифтом.png
MC_с_шрифтом.png (176.38 КБ) 1579 просмотров
Скачать:
DrCyrMono-Regular.ttf.7z
(91.82 КБ) 55 скачиваний
Сделан на базе Ubuntu Mono. Теперь надо сделать полужирный и курсив.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 29.05.24 19:16

Дополнительные ссылки по теме:

https://habr.com/ru/companies/kolibrios ... es/269495/ - о сглаживании

https://www.winwd.narod.ru/wd.html - редактор "слово и дело" с хорошими шрифтами.

Юрий
Сообщения: 50
Зарегистрирован: 11.12.18 17:08

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение Юрий » 29.05.24 21:46

В компиляторе PL/1 Д.Ю.Караваева одинаковые по начертанию буквы латиницы и кириллицы не различимы. То есть "а" русское и "a" латинское полностью взаимозаменяемы. Но это, конечно, прокатит только для текстов программ. Для остального этот фокус не пройдёт. Ну а шрифты здорово получились, разница очевидна. Хотя невнимательный человек может пропустить.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 30.05.24 10:04

Да, может, уже замеряли. Другое дело, что и в обычном тексте можно пропустить, я однажды купил зубную щётку blenb a meb и не заметил. Когда увидел, посмеялся. Взаимозаменяемость (а-ля КОИ-7) может пригодиться где-нибудь на этапе начальной загрузки, а также при вводе паролей. Для программ, работающих с файлами или интернетом она не сработает - нельзя будет выразить всё многообразие имён и адекватно их обработать без потери информации. Поэтому для строковых литералов всё равно важна различимость.

АлексеМиК
Сообщения: 8
Зарегистрирован: 15.12.23 18:19

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение АлексеМиК » 01.06.24 12:33

Мой респект. Большое и важное дело делаете...

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 18.06.24 14:30

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

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 19.06.24 14:07

Интересные узелки, лучше прежних:
ИванГрозныйИнтересныеУзелки.jpg
ИванГрозныйИнтересныеУзелки.jpg (137.9 КБ) 1426 просмотров

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 22.06.24 13:30

Начал делать шрифт переменной ширины на базе шрифта "голос". Можно посмотреть текущий результат на сайте (не на форуме) программирование-по-русски.рф

Сделано только две буквы - „о“ и „c“. Общая идея в том, чтобы он был менее агрессивен в плане стилизации (более удобочитаем) и при этом всё же можно было, если внимательно смотреть, отличить буквы кириллицы от латиницы.

Наверное, надо бы и на форум этот шрифт поставить, но это уж как-нибудь потом.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 23.06.24 19:16

ДрКирГолос2024-06-23.png
ДрКирГолос2024-06-23.png (26.29 КБ) 1403 просмотра
Формула отличия поползла дрейфовать, как видно по рисунку: спрямляем правую верхнюю или левую нижнюю округлость.
Что будет, когда нет ни той, ни другой - пока не попалось такой буквы. Буквы „х“ и „M“ уже по накатанной.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 24.06.24 00:45

Экс-граф! Плюш изъят, бьём чуждый цен хвощ.
ЭКС-ГРАФ! ПЛЮШ ИЗЪЯТ, БЬЁМ ЧУЖДЫЙ ЦЕН ХВОЩ.

Экс-граф! Плюш изъят, бьём чуждый цен хвощ.
ЭКС-ГРАФ! ПЛЮШ ИЗЪЯТ, БЬЁМ ЧУЖДЫЙ ЦЕН ХВОЩ.

Код: Выделить всё

Экс-граф! Плюш изъят, бьём чуждый цен хвощ.
ЭКС-ГРАФ! ПЛЮШ ИЗЪЯТ, БЬЁМ ЧУЖДЫЙ ЦЕН ХВОЩ.
ВB уy рp ОO0 ЕE HН СC ХX З3 АA - новые буквы

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 26.06.24 19:07

Доделал весь алфавит в шрифте Dr Cyr Golos Text и поставил на форум. Буква К мало отличима от K, но всё же отличима. Буква T латинская особенно поменялась. Смысл изменения в том, чтобы были похожи строчная и прописная T и t.
Последний раз редактировалось БудДен 26.06.24 19:10, всего редактировалось 1 раз.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 26.06.24 19:09

Вскрылась ещё одна засада: Ы vs ЬI (мягкий знак I) - актуальна именно для немоноширинных. Залепил как смог.

Юрий
Сообщения: 50
Зарегистрирован: 11.12.18 17:08

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение Юрий » 27.06.24 01:59

А латинская строчная "b" насколько отличима от заглавного мягкого знака "Ь"? Не увидел примеров, чтобы сравнить. Это я к тому, чтобы в будущем не обнаружились другие внезапные засады.

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 27.06.24 10:54

Шрифт Dr Cyr Golos Text установлен на данном форуме для сообщений, а код верстается шрифтом DrCyr Mono, поэтому Вы можете сделать любой нужный Вам пример прямо здесь. Все известные мне засады я вроде увидел. Кстати, думаю, раз тронул T, то можно тронуть и латинское K, сделав его более похожим на строчное k - укоротить правый штрих (или как там это у них называется), идущий вверх. Тогда идея искажения латинских прописных в направлении строчных будет более чётко выражена и больше нагружена содержанием. Третьим в этом пункте может быть искажение буквы y в строну Y. Как я и говорил, рожать шрифт - это дело достаточно долгое и требующее обратной связи. Одна девушка (тут где-то с ней валяется интервью) рожала шрифт аж 7 лет (могла бы троих людей за это время родить).

БудДен
Сообщения: 2915
Зарегистрирован: 07.10.18 14:01

Re: Шрифт с отличимостью кириллицы от латиницы

Сообщение БудДен » 28.06.24 15:44

Поменял буквы KyЫы

K латинское прописное теперь похоже на k строчное, теперь её сложно перепутать: KК.
y латинское прописное похоже на Y строчное, теперь сложно перепутать: yу
Ы и ы сделаны так, что контeры слеплены, чтобы дальше отойти от подобия с ЬI

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

Ответить