Энциклопедия символов «Юникодия»
7 постов
7 постов
8 постов
11 постов
4 поста
Напоминаю: я пишу программу под Windows — энциклопедию символов и самую лучшую замену стандартной Таблице символов. Качать тут. Выглядит примерно так.
Что за это время изменилось…
Новых блоков много, и я лишь скажу, где закрыл тофу.
Гарай: экспериментальная для языков волофал и мандинка (Сенегал), 1961 — нашёл корявый шрифт, закодированный в латиницу, и перевёл в Юникод
Сунвар: новая для языка сунвар (Непал), 1941 — нашёл корявый юникодный шрифт
Кират: новая для языка бантава (Индия, Непал), 1920 — нашёл отличный юникодный шрифт
8 новых эмодзи
Всякая мелочь вроде латиницы, кириллицы и стрелок
Заодно начал использовать не XML-базу Юникода, а текстовую: Консорциум рассматривал даже отказ от XML, но нашлось кому поддерживать, и всё равно вышла только в мае. Текстовая сложнее в разборе, зато быстрее, компактнее, больше информации, лучше совместима с системой управления версиями.
Раньше было: куда ни ткни, попадёшь в китайский иероглиф — потому ККЯ сворачиваются. После того, как добавили 4000 египетских иероглифов, появилось то же чувство.
Простите, что сделано очень непоследовательно, но чтобы выяснить, делать ли, я отвечал на три вопроса.
Что по умолчанию: текст или эмодзи? В таком виде отображаются только VS16-эмодзи. Потому отпадают знаки зодиака, у которых первичен именно эмодзи.
Насколько важна текстовая версия? Отпадает компьютерная периферия: почти не бывает в текстовом виде. А пешка — часто встречается в шахматной нотации.
Насколько оно красиво на этой библиотеке эмодзи? Вы знаете, я много ругался на неконтрастную библиотеку Гугла, и именно из-за контраста отпадают череп и кости.
Ещё одно трудоёмкое и малозаметное, но важное изменение. Шрифты Гугла всеобъемлющие и потому у них габариты с запасом — а значит, раздвигали окошко «Образец». Теперь на очень многих письменностях не раздвигает.
Рядом с некоторыми заголовками видна маленькая синяя лупа.
При нажатии на эту лупу выводятся… как вы понимаете, все управляющие символы.
Поскольку синтезированные иконки вроде L и ä после этого изменения отображаются часто, навёл небольшой порядок в них.
Юникод выходит в сентябре: повелось с КОВИДа и оказалось удачным. Примерно к Новому году что-то я сам затыкаю, что-то рисуют профессионалы, тормоза перестают быть проблемой, и я забываю о них — в мирное время до сентября-октября (выпуск Юникода + первый крупный шрифт), в военное до апреля-мая (бета-версия Юникода).
Я знал, кто источник замедления (поиск по всем доступным системным шрифтам), но как это правильно запрограммировать? Наконец придумал.
Оказывается, если регулировать размер окна штатной автоматикой, предел по ширине и высоте ⅔ экрана. Но библиотека глючит и размер часто вылезает за этот предел — так что я просто спутал баг и фичу. Заглянул в документацию, увидел этот предел и начал писать, тестируя на барахольном ноуте FullHD 14″.
Решается, как и полагается Qt — залезаешь в исходники, копируешь кусок автоматики и переписываешь под свои нужды. Вот такая нехорошая архитектура.
Профессионалы нарисовали новый блок деванáгари.
В таблице и в заметках требования к шрифту чуть разные: шрифт из таблицы должен поддерживать максимум символов, заметке нужен базовый набор, какая-то функциональность и качественный хинтинг (подгонка под пиксели). Деванáгари — это же главная брахмийская письменность и используется в пяти заметках, но Noto Devanagari плохо отхинтован. Раньше я использовал для заметок какой попало системный шрифт, но неявно полагал, что «какой попало» — это Arial Unicode MS из Microsoft Office. Теперь явно прописана цепочка из трёх шрифтов, и какой-то точно найдётся в W7, 10 или 11. Не лучший вариант (рано или поздно выйдет W12), но пусть поживёт так.
Да, W7 всё ещё поддерживается и иногда ей помогаю, и старые гарантии — без тофу базовая плоскость и три важных письменности — всё ещё выполняются, но тестирование под неё эпизодическое и теперь обещаю только запуск.
Коптский перекочевал в UnicodiaFunky и приобрёл кучу новой функциональности. Для Юникодии не важно, для коптского языка — важно.
Начал писать про макасарский и выяснил, что вся функциональность шрифта написана на нестандартной системе Graphite и он в Юникодии совсем не работает. Сначала поступил как в коптском (перенёс глифы и написал функциональность), но потом и нарисовал более чистые глифы, оставив общий стиль тем же — стилем дневника тамошнего принца.
Поиск по эмодзи. Эта функция требует большого исследования, и не знаю, когда будет.
Нарисовать какую-то из новых письменностей. Пока склоняюсь к албанскому Тодри.
Спасибо за внимание!
В целом редизайн получился хороший, но вижу две проблемы.
Обычный ФуллХэДэ, масштаб 1,0. Область контента стала совсем узкой, а слева и справа — куча пустого пространства.
Сделайте шире: не сильно, треть уже много. Навигацию пристыкуйте к полю контента. Надеюсь, вы сможете сделать достаточно резиново, чтобы адекватно работало как на больших экранах, так и на не очень больших.
Эти два объекта говорят: «Мы кликабельны!» Но надо просто подвести мышь, не щёлкая — а щелчок уводит ХЗ куда.
Сделайте адекватную реакцию на подобные щелчки. Например, если в поле поиска пусто, ничего не делайте.
Спасибо!
Развернём тор в квадрат 2π×2π. Точки (x,y) и (x + 2πkx, y + 2πmy) считаются эквивалентными.
А теперь проведём через (0,0) прямую с угловым коэффициентом √2.
2π — это шесть с гаком. Но для простоты на картинке они изображены как 2 с гаком, да и √2 не очень в масштабе — шут с ним. Главное, что три числа 1, √2 и 2π несоразмерны (то есть их отношения иррациональны).
Наше множество — это жирные красные точки (n, √2n), n∈ℕ₀. И нам нужно доказать такое: если их все заэквивалентить в один квадрат 2π×2π, получим плотное множество. А для этого действуем так.
Ткнём где-то точку (x,y), выберем маленькое ε, и докажем две вещи.
АДЫН. Можно найти точку, достаточно близкую (по эквивалентности) к любому x (на y чхаем).
2πn+x заменим на (2π−6)n+x, ничего не изменится. Обозначим 2π−6≈0,28 за a.
Начнём с x=0 и сделаем несколько шажков этой формулой: на третьем не добираемся до единицы на 0,15, а на четвёртом уже имеем 1,13. Таким образом, мы шажками на a (что эквивалентно шажкам на 2π) можем приблизиться к целому числу не просто на a≈0,28, а на a/2≈0,14 — не только для x=0, а для любого x.
Обозначим эти четыре шага как «шаг второго порядка», и он короче, чем a/2. Шаг третьего порядка, состоящий из семи шагов второго порядка, будет ходить на 0,0088 уже в минус, и так далее — то есть мы можем соорудить шаг короче любого ε.
Что может пойти не так? Только то, что какой-то шаг станет нулём — но это возможно, если изначальный шаг 2π рациональный. То есть мы полагаемся на несоразмерность шагов по разным координатам.
Кроме того, отсюда видно: чтобы добиться точности ε, нужно быстро растущее при ε→0, но всё-таки зависящее только от а и ε (но не от начального x!) количество элементарных шагов s(a,ε). Функция, как уже сказано, определена только для рациональных a, но она симметрична по a, убывает для отрицательных a и возрастает для положительных, и ничего не стоит её доопределить. Чему равна — облом выписывать: скажем, для a≈0,4 и ε=0,05 она s(0,4; 0,1) = 3 + 6·3 + 11·6·3 (ходьба шажками 0,4, затем чуть меньшими 0,2, затем чуть меньшими 0,1).
Поскольку a лежит в пределах ±0,5, и чем оно больше по модулю, тем выше наше потребное количество элементарных шагов s, то у функции есть верхняя грань по a — s(ε) := maxₐ s(a,ε) = s(±0,5, ε).
ДЖВА. Можно найти точку, достаточно близкую к любому x и y.
По первому утверждению приближаемся к нашему x с точностью ε/2. При этом y выходит произвольный.
Опять-таки по первому утверждению добиваемся шажка по x не более ε/2s(ε). Приняв то, что получилось, за базовый шаг, приближаемся к нашему игреку с точностью ε, при этом по x уйдём максимум ещё на ε/2.
Напоминаю: я пишу программу под Windows — энциклопедию символов и самую лучшую замену стандартной Таблице символов. Качать тут. Выглядит примерно так.
И первое, что видно…
Какой-то фанат накидал мне целую панамку функциональности, и один его пункт я сделал, ибо нет технических препятствий и сумел просчитать все интерфейсные обоснования. (Скажем, масштабирование я не сделал потому, что функцию попробуй обнаружь в интерфейсе, а если случайно изменил масштаб, непонятно, как вернуть.)
Можно создать список каких хочешь символов — например, часто используемых типографских. Или просто закладки на полноценные блоки: нажатие на синюю стрелочку около «U+1FAF6» переходит на вкладку «Блоки».
Библиотека Noto к 15-му Юникоду привезла новые руки, вы уже их видели на заглавной странице — сделанные двумя цветами и как бы снятые широкоугольным объективом. Я их откладывал как из-за трудоёмкости, так и из-за сомнений: а достаточно контрастности? Оказалось, Юникодия приняла новые руки без вопросов, а BitBucket стал хуже — ну не смотрятся на размере пикселей в 15. А Slack вообще отказался принимать эти руки.
Все руки, кроме одной, автоматически перекрашиваются, и для тестирования этого механизма я сделал целую утилиту: а что в картинках изменилось? Обнаружил, кстати, много других глюков.
Видите, у вампирши яркие брови и тусклое лицо? Это значит, были какие-то ошибки в перекраске.
Изначально перекраска ставила целью экономить механическую работу, а не байты архива. Некоторые SVG-эмодзики глючили, я глюки исправлял — а чтобы исправить один раз, а не шесть, пять цветов кожи генерировались. Теперь, когда можно сравнивать «было/стало», можно и поэкономить, и десятка полтора человечков перекрашиваются — для пользователя не изменилось ни пикселя.
В 2009 году, когда кодировали иероглифы, их брали из трудов Алана Гардинера — историчные, но корявые. В 2016 их заменили на профессиональный шрифт, возможно, Hieroglyphica, слегка погрешив против истины. С 2021 истину стали восстанавливать.
Мы работали вдвоём с немецким египтологом — я рисовал, он проверял. Когда он без предупреждения пропал, я спрашивал: а что с ним? Оказалось, уехал «в поля». Так и не сказал мне, насколько опасно/безопасно было в Египте.
Примерно 60% изменений — это люди. А именно: у действующего фараона прямая борода, у бога и бывшего фараона — длинным крючком (за исключением Пта, у него фараонская), у египтянина — короткая, у сирийца — острая. Кроме того, коровы, обезьяны, лодки и многое другое — около 70 иероглифов.
Северотайская письменность, сейчас в опасности, одна из красивейших письменностей мира.
В 1930-е ланна была заменена тайским письмом, и используется больше меньшинствами (тай-кхынами, лы), до которых националисты не дотянулись. Так что многие надписи на северотайском пишут и тайским письмом, и ланной.
Меня просто давила жаба: такая красота — и шрифтом без засечек? После долгих поисков нашёл шрифт, который корректно рисует хотя бы простейшие надписи из Википедии.
Движок GlyphWiki не очень подходит для рисования таких символов, и я плевался, когда вычищал. Нашёлся человек, нарисовавший их вручную.
Предупреждение о других формах эмодзи. У некоторых эмодзи бывают другие формы — устаревшие, некорректные и просто другие. Современный флаг Афганистана, белый с шахáдой (девизом ислама), никто не принимает и рисует старый 2021 года. Пиньята (начинённая конфетами игрушка) бывает в форме звезды и в форме животного. Автобусную остановку рисует каждый свою местную. Микроб — рисуют бактерии, амёбы и даже КОВИД.
Вычищаю ложь. Я, конечно, стараюсь проверять, что пишу, но иногда не получается. Например: есть аж два «эльбасанских письма» для албанского: одно было известно с самого начала, ибо его изобретатель, «учитель Тодри», всю жизнь его пропагандировал, пока не убили (будет этой осенью под именем «Todhri»). Второе — единственный образец изъяли в 1945 у расстрелянного коллаборациониста, коллекционера и филолога (есть с 2014 под именем «Elbasan»).
Или не очень верно написал, что такое ночная азбука Барбье: она использует матрицу 2×6, но код там не двоичный, а сколько точек в левой колонке и сколько в правой — таким образом получается 6·6=36 букв.
Последнее — про азбуку Брайля отлично рассказала Юлия Большакова, так что закончим её рассказом.
Спасибо за внимание!
Разрешите подушнить на тему старого конца света.
БОР № 415713
xxx: Во всём мире ждут конца света 21.12.12. И лишь в России ждут ещё 03.01.13 старый конец света!
Есть старая задача из советских книг: почему старая Октябрьская революция (25 октября) раньше новой (7 ноября), а старый Новый год (14 января) позже обычного (1 января)?
Новый год — это дата, первое января. Старая дата — юлианская, новая — григорианская: 1 янв ю.к. = 14 янв г.к (старая) > 1 янв г.к. (новая). Григорианский календарь выкинул 13 високосных дней, и новый Новый год физически раньше старого.
Октябрьская революция — это событие, которое не бывает «старым» и «новым»: 25 окт ю.к. = 7 ноя г.к., один и тот же день по разным календарям! И г.к. не позже, у него просто цифра больше. А «старая революция» как кое-кто её празднует — это 25 окт г.к. Заметили передёргивание: дата 25 окт ю.к. названа новой революцией, 25 окт г.к. — старой?
И конец света — событие, так что «старый» конец света должен быть 8 декабря. По юлианскому календарю, естественно.
Примерно то же самое с часовыми поясами. В Москве UTC+4 (на момент написания), на Урале — UTC+6. Жители Урала увидят парад Победы (событие) позже по местному времени: 9:00 UTC+4 = 11:00 UTC+6. А если зафиксировать местное время — например, вечерние новости в 21:00 — получаем, что жители Урала увидят новости на два часа раньше по абсолютной шкале: 21:00 UTC+6 = 19:00 UTC+4 (по Уралу) < 21:00 UTC+4 (по Москве).
Хотя не стоит ругать шутку. Ведь это полная уверенность в том, что конца света не будет, а повод забухать всегда найдётся. (И опять мой двенадцатилетний текст сильно устарел, Часы судного дня неумолимо приближаются к полуночи.)
Для лиги Лени: час — это 3600 секунд, из-за чего единицу «скорости» приходится брать из СИ, а единицу «расстояния» — внесистемной. Ну или наоборот.
Древний Вавилон имел систему счисления с двойным основанием: 6 и 10.
𒐕=1, 𒐖=2, … 𒐝=9
𒌋=10, 𒌋𒐕=11 … 𒐐𒐝=59
𒐕=60, 𒐕 𒐕=61 … (Ноль 𒑊 писался крайне непоследовательно и не известно ни одной надписи, где он был в конце числа. Как тогда писали 60, чтобы отличить от единицы — не знаю, некоторые источники говорят о другом клине, также в Юникоде есть символ 𒐑.)
Именно от вавилонян к нам пришла единица времени 1 час = 60 минут = 3600 секунд. Не слишком удобная цифра.
Для физических расчётов секунда — самое то: это цифра, очень близкая к времени реакции человека. В лёгкой атлетике считается, что к каждому рекорду, зафиксированному ручным секундомером, нужно прибавить 0,2 секунды. На практике мы едем на машине или жжём энергию часами, и нужны единицы, завязанные на час, а не на секунду. И тут главный вопрос: делать внесистемной «скорость» или «расстояние»?
Для расстояния системная единица — метр, для скорости — метр в секунду.
Рассчитывать скорость машины по секундомеру — между столбами 50 м, машина проехала за 6 секунд, скорость 50/6 = 8,3 м/с, то есть 30 км/ч — приходится разве что милиционерам до появления радаров. А вот расстояния приходится считать разными методами: по карте, мерным тросом, тригонометрией… Потому логично взять системное расстояние и внесистемную скорость.
Для работы («расстояния») системная единица — джоуль, для мощности («скорости») — ватт = джоуль/с. Казалось бы, всё аналогично, но нет.
Энергия-то электрическая, и ватт=вольт·ампер. То есть и расчётами, и замерами приходится высчитывать мощность прибора — а уж через неё стоимость эксплуатации. Потому системной удобнее сделать «скорость», а внесистемным — «расстояние». А джоули сгоревшего топлива преобразуются в ватт-часы электрической энергии где-то далеко на электростанции.
Для продажи другой энергии, энергии нагретой воды — то есть в отоплении — используют калорию (=теплоёмкость грамма воды). И тоже понятно, почему: измеряют расход воды и разницу температур на входе и выходе. Помножив одно на другое, получаем калории.
Мем врёт: порядок операций не был определён в 1912, просто кодифицирован в одном из западных учебников.
Сначала попробую рассказать, откуда взялся порядок операций. Вот видео, перескажу его вкратце.
Порядок операций по умолчанию — не математическая истина, а договорённость.
Чтобы явно указать этот порядок, используют скобки. Экстремальный вариант — взять в скобки каждую операцию (т.н. полная скобочная запись), но тогда даже очень простое выражение быстро становится нечитаемым.
((2·(x²)) + (3·x)) − 5
Потому хотелось бы уменьшить количество скобок, отсюда порядок операций «если иное не указано».
Но давайте сначала сделаем две ремарки.
В математике плюс и умножение переместительны и сочетательны (коммутативны и ассоциативны, как говорят в вузе) — a+b=b+a, a+(b+c)=(a+b)+c. На компьютере формально нет сочетательности, но глюки значимы очень редко. То есть не важно, в каком порядке суммировать/множить.
Вычитание — это нечто близкое к сложению: a−b = a+(−b). А деление — нечто близкое к умножению: a/b = a·(b⁻¹). Потому то и другое будет иметь одинаковый приоритет.
Из этих ремарок автоматически отпадает одна скобка: (2·(x²)) + (3·x) − 5.
А почему остальные скобки выпали до 2·x² + 3·x − 5 — есть очень много аргументов.
Аргумент точности и гипероператоров
Степень обычно приводит к большим цифрам. Умножение — к меньшим. Сложение — к совсем маленьким. Если нужно очень приближённо вычислить что-то, сначала получают самые большие члены (например, степенны́е), а потом всё ближе и ближе подходят к ответу, умножая и прибавляя, пока точности не будет хватать. И математики это обобщили в гипероператоры.
Гипероператор нулевого порядка — это следующее число x′ = x+1.
Гипероператор первого порядка — это сложение a+b = a″…″ (много штрихов) = a+1+…+1.
Гипероператор второго порядка — это умножение a·b = a+a+…+a.
Гипероператор третьего порядка — это степень aᵇ = a·a·…·a.
А гипероператор четвёртого порядка называется тетрация и приводит к вообще астрономическим числам.
Аргумент анализа размерностей
Считать по формулам обычно нужно потому, что эти числа имеют какое-то отношение к реальности — то есть тащат за собой единицы измерения. И запрещается складывать самолёты с часами, можно только самолёты с самолётами и часы с часами. А множить самолёты на часы не возбраняется, и получаются самолёто-часы — часы авиационной работы.
Анализ размерностей заключается вот в чём: смотрим, в каких единицах каждый член, и всё это должно совпадать. Вот несложная формула из физики: s = vt + at²/2. Считаем: s — метры. vt — (м/с)·с — тоже метры. И так далее.
Мне, Mercury13, приходилось делать несложную мобильную гонку. Да, она несложная, но движок работал на единицах СИ, и подобным анализом я исправлял очень много ошибок.
Аргумент алгебры
Сложение и умножение обладают также распределительностью (дистрибутивностью) — a·(b+c) = a·b + a·c. Порядок «сначала умножение, потом сложение» позволяет легче видеть в выражениях подобные шаблоны.
Аргумент многочленов
Многочлены вроде ax²+bx+c играют большую роль во многих отраслях математики, и хотелось бы их держать без скобок.
…В общем, на Западе всё это объясняют аббревиатурой PEMDAS.
Parentheses — скобки
Exponent — возведение в степень
Multiplication/Division — умножение/деление
Addition/Subtraction — сложение/вычитание
А взялся он из одного разночтения и трёх дополнительных факторов. Напоминаю, порядок операций — не математическая истина, а договорённость, призванная уменьшить количество скобок.
Первое и главное. Имеет ли неявное умножение ab (то есть умножение без явно прописанного знака «умножить») приоритет перед делением?
В профессиональной математике — и даже в старших классах — крайне редко делят двоеточием a:b. Чаще используется дробная черта, явно показывающая, что на что делить. В некоторых договорённостях эти знаки неравноценны, но забьём.
На компьютерах математикам приходится вытягивать свои выражения в строчку. Не столько для программирования (там поставят столько скобок, сколько комп требует), сколько для передачи другим математикам через системы общего назначения вроде форумов или электронной почты.
Как видите, есть разночтения, и комп их усилил. Отбивка пробелами также призвана их закрыть: операции, отбитые пробелами, считаются менее приоритетными, чем записанные слитно.
О калькуляторах и зарубежных учебниках будет рассказ в этом видео. В общем, есть калькуляторы, у которых неявное умножение имеет более высокий приоритет, есть те, у которых наравне с остальным. На одни калькуляторы ругались учителя, на другие — профессионалы.
А я попробую рассказать про наши родные источники. В любом случае в наших учебниках разночтений типа a/b(c+d) не будет: вылезут из кожи, но сверстают настоящую дробь. В профессиональной литературе такие места единичны, и пролистав доступные книги, получаю такое.
Бейко ИВ и др. Методы и алгоритмы решения задач оптимизации. К: 1983. Набор металлический. С.149 первая формула (что-то там)/(γ+1)||g(yᵏ)|| — неявное умножение раньше дробной черты, с учётом ремарок VI на с.147 и (ii) на с.148. Также нашёл на с.324.
Каханер Д и др. Численные методы и программное обеспечение. М: 1998. Набор неизвестной издательской системой (Word?). Вытянутых в строчку формул очень мало, но с. 201 третья строка — 1/√π ∫ в интеграле ошибок явно говорит, что дробная черта раньше неявного умножения. В другом месте на с.328 написали (что-то там)/(2L).
А теперь различные докомпьютерные источники по этому правилу.
Репьёв ВВ. Методика преподавания алгебры в восьмилетней школе. М: 1967. — с.81.
Шустеф ФМ. Методика преподавания алгебры. Минск: 1967. — с.43.
Уже видно, что с этим разногласие даже у методистов.
А теперь разрешите процитировать одного комментатора из-за бугра: «В этом примере смешаны запись из начальной школы и институтская, причём бессмысленно. Те, кто помнит арифметику, ответят 9. Те, кто больше помнят алгебру, вероятнее, ответят 1».
Кто в курсе, почему я добавил эту картинку?