68. Avalonia UI Real World (Python Helpers)
00:00 Кроссплатформенность Avalonia • Avalonia поддерживает кроссплатформенность, ранее использовалась только в Windows. • Переход на Mac M3 Ultra для тестирования. • Программа скомпилирована и запускается, но шрифты выглядят неправильно. 00:58 Проблемы с путями • Различия в использовании косой черты в путях: прямая косая черта на Mac против обратной на Windows. • Необходимость исправления путей для корректной работы приложения. 01:13 Анализ сбоев • Обнаружение аварийного сбоя и попытки его устранения. • Переключение внешнего кода для временного решения проблемы. 01:47 Проблемы с кэшированием • Проблема с кэшированием в отладчике. • Повторные запуски приложения для выявления проблемы. 02:47 Решение проблем с путями • Использование комбинации точек пути для совместимости с разными системами. • Введение параметров, разделённых запятыми, для корректного указания путей. 04:06 Проблемы со шрифтами • Шрифты выглядят неправильно на Mac по сравнению с Windows. • Проверка шрифтов в Finder и обнаружение проблем с выравниванием. 06:08 Изменяемые шрифты • Объяснение концепции изменяемых шрифтов и их особенностей. • Подозрение, что Avalonia пока не поддерживает изменяемые шрифты. 08:18 Преобразование шрифтов • Необходимость преобразования изменяемого шрифта в отдельные шрифты. • Решение написать скрипт на Python для решения проблемы. 10:04 Установка Python и библиотек • Установка Python и необходимых библиотек, включая fonttools. • Использование pip для установки fonttools. 11:00 Импорт библиотек и определение метода • Импортируем ttfont из font tools в tt lib. • Из font tools.vlib.instancer импортируем переменный шрифт для создания экземпляра. • Определяем метод для извлечения экземпляров шрифтов. 12:02 Работа с путями и весами шрифтов • Используем переменный путь к шрифту. • Определяем веса шрифтов: тонкие, сверхлёгкие, лёгкие, обычные, средние. • Создаём массив для хранения весов шрифтов. 13:00 Проверка и создание экземпляров шрифтов • Настраиваем try-catch для обработки ошибок. • Устанавливаем переменную font равной шрифту tt. • Проверяем, является ли объект шрифтом, и создаём экземпляры шрифтов. 14:35 Создание кортежей и экспорт шрифтов • Создаём кортежи с ключами и значениями для экспорта шрифтов. • Экспортируем шрифты с именами и свойствами веса. 15:09 Создание статического шрифта • Создаём экземпляр переменного шрифта. • Вызываем метод для создания статического шрифта. • Сохраняем шрифт в выходной директории. 16:06 Настройка пути вывода • Задаём путь вывода для шрифтов. • Настраиваем название шрифта и каталог вывода. 18:11 Сохранение статического шрифта • Вызываем функцию сохранения статического шрифта. • Возвращаем значение true для успешного завершения метода. 19:09 Запуск сценария • Определяем переменную _main для запуска сценария. • Проверяем количество переменных и распечатываем информацию о сценарии. 21:17 Извлечение шрифтов из Python • Копирование и вставка примера для извлечения шрифтов из Python. • Создание нового варианта шрифта с префиксом веса. • Настройка переменных и вызов метода для работы со шрифтами. 22:07 Работа с параметрами в Python • Объяснение работы с переменными в Python, включая нулевой индекс. • Упоминание о возможных ошибках из-за долгого отсутствия практики работы с Python. 23:16 Запуск сценария • Открытие терминала и переход в папку со шрифтами. • Запуск программы для извлечения шрифтов с указанием параметров. • Проверка результатов извлечения шрифтов. 24:19 Анализ размеров шрифтов • Обсуждение размеров шрифтов и их влияния на размер библиотеки. • Размышления о причинах большого размера шрифтов. 25:55 Загрузка шрифтов в приложение • Проверка компиляции и запуска приложения с новыми шрифтами. • Проблемы с загрузкой шрифтов и необходимость указания их названий. 28:07 Настройка семейства шрифтов • Объяснение проблем с использованием веса шрифта и необходимость создания семейства шрифтов. • Использование динамического ресурса для настройки семейства шрифтов. 29:25 Замена веса шрифта на семейство • Поиск и замена веса шрифта на семейство шрифтов в коде приложения. • Применение поиска и замены для всех случаев использования веса шрифта. 30:25 Проблемы с пользовательскими свойствами и шрифтами • Не удаётся установить шрифт без семейства шрифтов. • Необходимо изменить семейство шрифтов и использовать конвертер логического значения в шрифт. • Возникают сложности с доступом к приложению. 31:24 Поиск ресурсов и жёсткое кодирование • Использование вопросительного знака для поиска ресурса. • Жёсткое кодирование строк, которые будут заменены в новой версии. • Проверка работы конвертера и оценка результатов. 32:24 Преобразование переменных шрифтов в статические • Преобразование переменных шрифтов в статические требует больше усилий. • В Avalonia невозможно чётко использовать изменяемые шрифты. • Обнаружение проблем с выравниванием текста и значком приложения. 33:17 Проверка значка приложения и макета 34:19 Переход по ссылкам и баги
00:00 Кроссплатформенность Avalonia • Avalonia поддерживает кроссплатформенность, ранее использовалась только в Windows. • Переход на Mac M3 Ultra для тестирования. • Программа скомпилирована и запускается, но шрифты выглядят неправильно. 00:58 Проблемы с путями • Различия в использовании косой черты в путях: прямая косая черта на Mac против обратной на Windows. • Необходимость исправления путей для корректной работы приложения. 01:13 Анализ сбоев • Обнаружение аварийного сбоя и попытки его устранения. • Переключение внешнего кода для временного решения проблемы. 01:47 Проблемы с кэшированием • Проблема с кэшированием в отладчике. • Повторные запуски приложения для выявления проблемы. 02:47 Решение проблем с путями • Использование комбинации точек пути для совместимости с разными системами. • Введение параметров, разделённых запятыми, для корректного указания путей. 04:06 Проблемы со шрифтами • Шрифты выглядят неправильно на Mac по сравнению с Windows. • Проверка шрифтов в Finder и обнаружение проблем с выравниванием. 06:08 Изменяемые шрифты • Объяснение концепции изменяемых шрифтов и их особенностей. • Подозрение, что Avalonia пока не поддерживает изменяемые шрифты. 08:18 Преобразование шрифтов • Необходимость преобразования изменяемого шрифта в отдельные шрифты. • Решение написать скрипт на Python для решения проблемы. 10:04 Установка Python и библиотек • Установка Python и необходимых библиотек, включая fonttools. • Использование pip для установки fonttools. 11:00 Импорт библиотек и определение метода • Импортируем ttfont из font tools в tt lib. • Из font tools.vlib.instancer импортируем переменный шрифт для создания экземпляра. • Определяем метод для извлечения экземпляров шрифтов. 12:02 Работа с путями и весами шрифтов • Используем переменный путь к шрифту. • Определяем веса шрифтов: тонкие, сверхлёгкие, лёгкие, обычные, средние. • Создаём массив для хранения весов шрифтов. 13:00 Проверка и создание экземпляров шрифтов • Настраиваем try-catch для обработки ошибок. • Устанавливаем переменную font равной шрифту tt. • Проверяем, является ли объект шрифтом, и создаём экземпляры шрифтов. 14:35 Создание кортежей и экспорт шрифтов • Создаём кортежи с ключами и значениями для экспорта шрифтов. • Экспортируем шрифты с именами и свойствами веса. 15:09 Создание статического шрифта • Создаём экземпляр переменного шрифта. • Вызываем метод для создания статического шрифта. • Сохраняем шрифт в выходной директории. 16:06 Настройка пути вывода • Задаём путь вывода для шрифтов. • Настраиваем название шрифта и каталог вывода. 18:11 Сохранение статического шрифта • Вызываем функцию сохранения статического шрифта. • Возвращаем значение true для успешного завершения метода. 19:09 Запуск сценария • Определяем переменную _main для запуска сценария. • Проверяем количество переменных и распечатываем информацию о сценарии. 21:17 Извлечение шрифтов из Python • Копирование и вставка примера для извлечения шрифтов из Python. • Создание нового варианта шрифта с префиксом веса. • Настройка переменных и вызов метода для работы со шрифтами. 22:07 Работа с параметрами в Python • Объяснение работы с переменными в Python, включая нулевой индекс. • Упоминание о возможных ошибках из-за долгого отсутствия практики работы с Python. 23:16 Запуск сценария • Открытие терминала и переход в папку со шрифтами. • Запуск программы для извлечения шрифтов с указанием параметров. • Проверка результатов извлечения шрифтов. 24:19 Анализ размеров шрифтов • Обсуждение размеров шрифтов и их влияния на размер библиотеки. • Размышления о причинах большого размера шрифтов. 25:55 Загрузка шрифтов в приложение • Проверка компиляции и запуска приложения с новыми шрифтами. • Проблемы с загрузкой шрифтов и необходимость указания их названий. 28:07 Настройка семейства шрифтов • Объяснение проблем с использованием веса шрифта и необходимость создания семейства шрифтов. • Использование динамического ресурса для настройки семейства шрифтов. 29:25 Замена веса шрифта на семейство • Поиск и замена веса шрифта на семейство шрифтов в коде приложения. • Применение поиска и замены для всех случаев использования веса шрифта. 30:25 Проблемы с пользовательскими свойствами и шрифтами • Не удаётся установить шрифт без семейства шрифтов. • Необходимо изменить семейство шрифтов и использовать конвертер логического значения в шрифт. • Возникают сложности с доступом к приложению. 31:24 Поиск ресурсов и жёсткое кодирование • Использование вопросительного знака для поиска ресурса. • Жёсткое кодирование строк, которые будут заменены в новой версии. • Проверка работы конвертера и оценка результатов. 32:24 Преобразование переменных шрифтов в статические • Преобразование переменных шрифтов в статические требует больше усилий. • В Avalonia невозможно чётко использовать изменяемые шрифты. • Обнаружение проблем с выравниванием текста и значком приложения. 33:17 Проверка значка приложения и макета 34:19 Переход по ссылкам и баги
