▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Caxton
Caxton

Caxton

Мод Caxton для Майнкрафт добавляет поддержку TrueType и OpenType шрифтов. Чёткий текст, настоящие жирные и курсивные начертания, сложное отображение текста без использования AWT.

Оцените первым
618.9K
162

Caxton

Caxton (назван в честь [William Caxton]) - это мод для Майнкрафт, который добавляет полноценную поддержку TrueType и OpenType шрифтов. Если вы когда-нибудь хотели, чтобы текст в игре выглядел так же круто, как на вашем рабочем столе - этот мод для вас.

Доступен на Modrinth и CurseForge.

Что даёт Caxton

В ванильном Майнкрафт шрифты - это по сути растровые картинки. Они выглядят нормально только при определённом размере, а при масштабировании начинают размываться или пикселиться. Caxton решает эту проблему кардинально.

  • Чёткий текст любого размера благодаря технологии [MSDF] - буквы остаются crisp даже при сильном зуме
  • Настоящие жирные и курсивные шрифты - не имитация наклоном, а реальные глифы из файла шрифта
  • Сложное отображение текста - лигатуры, кернинг, всё как в нормальных редакторах
  • Не использует AWT - меньше лагов, больше производительности

Текущие ограничения

Правда, есть пара моментов, которые стоит знать:

  • Арабское письмо в старых шрифтах пока не поддерживается. Если вам нужен арабский текст - придётся использовать шрифт с поддержкой арабского под Caxton.
  • Генерация MTSDF из шрифтов - процесс затратный. Но Caxton кэширует результат после первого запуска, так что дальше всё летает.
  • Многие UI-элементы в Майнкрафт и модах делают неправильные предположения о рендеринге текста. GUI элементы пропатчены, но текст выравнивается по левому краю независимо от направления.
  • Хинтинг шрифтов скорее всего никогда не будет поддерживаться.

Совместимость с модами и ресурспаками

Совместимо с оговорками

МодВерсияПримечания
[Sodium]Любая, кроме Caxton <0.6.0 + Sodium 0.5.5Контурный текст неправильно рендерился с Sodium 0.5.5 и старыми версиями Caxton
[ImmediatelyFast]≥1.2.0Отключи опцию sortTextRenderLayers у Caxton (делается автоматически). Убедись, что experimental_sign_text_buffering у ImmediatelyFast выключен
[Exordium]ЛюбаяОтключи буферизацию табличек у Exordium

Несовместимо

МодВерсияПримечания
[Iris Shaders]ЛюбаяКастомные core шейдеры не поддерживаются Iris; текст в мире с MSDF шрифтами не рендерится
[Emojiful]ЛюбаяПолностью заменяет стандартный рендерер текста Майнкрафт
[MemoryLeakFix]≤1.1.1Конфликт на старте
[VanillaIcecreamFix]≤1.2.1-beta+1.20.4Конфликт с Fabric ASM зависимостью Caxton - исправлено в 1.2.2-beta+1.21
[Porting Lib]<1.2.1451-beta+1.18.2/2.1.1453+1.19.2Конфликт с API регистрации core шейдеров Fabric API
[Advent of Ascension]1.20.4-3.7.7Не крашится, но контурный текст от AoA не использует MSDF шрифты, и скролл-панель AoA не обрезает текст в MSDF шрифтах (планируется аддон совместимости)

Неправильно обрабатывает разметку

Эти моды не должны крашить игру, но GUI элементы могут вести себя неожиданно, а в логе появятся предупреждения:

МодВерсияПримечания
[IBE Editor]ЛюбаяИспользует кастомный виджет текстового поля, который копирует большую часть ванильного кода рендеринга Майнкрафт
[Roughly Enough Items]ЛюбаяИспользует неподдерживаемые методы в некоторых виджетах

Ресурспаки с кастомными core шейдерами для текста

Ресурспаки, которые изменяют core шейдеры для текста (например, "Dark UI" и "Transparent UI" от [Vanilla Tweaks]), потребуют модификации для работы со шрифтами Caxton.

Поддержка ОС

Caxton использует нативную библиотеку для шейпинга текста и генерации MSDF. В предсобранной версии есть библиотеки для x86_64 Windows и Linux. Если у вас другая платформа - придётся собрать мод самостоятельно.

Если мод не распознаёт вашу платформу - измени rustTarget в config/caxton.json на соответствующее имя платформы Rust и сообщи об этом.

Важно: так как у автора нет ни одного Mac, собрать бинарники для macOS из-за лицензионных ограничений невозможно.

Как использовать Caxton

В комплекте с модом идут два встроенных ресурспака со шрифтами: [Inter] и [Open Sans]. Если они не подходят - можно использовать свой шрифт через ресурспак.

Перед распространением ресурспака с файлом шрифта обязательно проверь лицензию!

Добавление шрифтов через ресурспаки

Caxton добавляет провайдер шрифтов типа caxton, который поддерживает ключи regular, bold, italic и bold_italic. Каждый можно задать идентификатором <namespace>:<path>, который указывает на файл assets/<namespace>/textures/font/<path>. Для дополнительных опций используй объект с ключом file:

{
  // Единственный обязательный элемент.
  "file": "<namespace>:<path>",
  // Коэффициент масштабирования шрифта от стандартного размера.
  // Если 1.0, то шрифт масштабируется так, чтобы ascent был равен 7 пикселям стандартного bitmap-шрифта.
  // Добавлено в Caxton 0.3.0.
  "scale_factor": 1.0,
  // Смещение тени как множитель размера пикселя memefont.
  "shadow_offset": 1.0,
  // Смещение текста по осям X и Y в пикселях memefont.
  // Добавлено в Caxton 0.4.4.
  "shift": [
    0.0,
    0.0
  ],
  // 32-битное целое число, биты которого интерпретируются как 32-битное число с плавающей точкой,
  // описывающее наклон символов.
  // Можно использовать для имитации курсива в шрифтах без курсивного варианта,
  // но всегда предпочтительнее использовать выделенный курсивный вариант.
  // Добавлено в Caxton 0.5.6.
  // Не поддерживается в Caxton 0.7.0.
  "the_font_designer_couldnt_be_assed_to_make_an_italic_variant_so_slant_the_text": 0,
  // Список тегов функций OpenType.
  "features": [],
  // Влияет только на растровую технологию. Для MSDF шрифтов интерполяция всегда включена.
  // Если true, тексели в битмапе глифа будут интерполироваться.
  // Добавлено в Caxton 0.4.0. Заменено настройкой метаданных шрифта в Caxton 0.7.0.
  "blur": false
}

Если в JSON-файле шрифта есть объект caxton_providers, он будет использован вместо providers при установленном Caxton. Это позволяет загрузить шрифт Caxton с запасным вариантом, если Caxton не установлен.

Также можно добавить файл assets/<namespace>/textures/font/<path>.json с настройками растеризации:

{
  // Указывает фактический путь к файлу шрифта.
  "path": "<path of font file>",
  // Все опции необязательны.
  "shrinkage": 32.0,
  "margin": 4,
  "range": 4,
  "invert": null,
  "variations": [],
  "face_index": 0,
  "tech": "msdf",
  "max_mipmap": 0,
  "blur": false
}

Не забудь указать расширение файла шрифта. Если шрифт лежит в assets/example/textures/font/example.otf, то JSON должен быть в assets/example/textures/font/example.otf.json (не example.json).

Глобальная конфигурация

Настройки в config/caxton.json:

{
  "rustTarget": null,
  "tweakExpText": true,
  "sortTextRenderLayers": false,
  "fatalOnBrokenMethodCall": false,
  "debugRefcountChanges": false,
  "disableEasterEggs": false
}

Сборка из исходников

Если хочешь собрать Caxton сам - понадобятся [Rust toolchain] и [Clang] в дополнение к Gradle.

По умолчанию нативная библиотека собирается только для вашей платформы. Чтобы собрать для других платформ, укажи дополнительные цели через запятую в свойстве xyz.flirora.caxton.additionalTargets. Например:

gradle build -Dxyz.flirora.caxton.additionalTargets=x86_64-pc-windows-gnu

Если получаешь ошибку о неизвестных целях - измени переменную cargoCrossBuildTasks в caxton-impl/build.gradle.

Сравнение с другими модами

BetterFonts / TrueType Font Replacement

Старый мод, который использует Java AWT для разметки текста и растеризует глифы в битмапы с ограниченным разрешением. Но он правильно реализует жирные и курсивные стили и сложные скрипты.

Smooth Font

Мод для версий 1.7-1.12, улучшающий рендеринг текста при разных масштабах. Но код закрытый (ARR).

ThaiFixes

Реализует собственные процедуры шейпинга для тайского языка - бесполезно для других языков со сложным рендерингом.

Modern UI

Поддерживает сложный рендеринг текста и настоящие жирные/курсивные стили, исправляет многие проблемы ванильной разметки (например, MC-117311). Но текст не такой чёткий по краям и использует AWT для разметки.

Minecraft 1.13+

С версии 1.13 Майнкрафт поддерживает TrueType и OpenType шрифты, но реализация та же, что и для bitmap-шрифтов - конвертирует глифы в битмапы и наивно размечает текст. К тому же неправильно обрабатывает метрики глифов.

Благодарности (техническая часть)

Caxton стал возможен благодаря: Fabric, Architectury Loom, Rust, Gradle Cargo Wrapper, HarfRust/RustyBuzz, Skrifa/ttf-parser, fdsm/msdfgen, ab-glyph-rasterizer, JNI bindings for Rust, flate2, Rayon, Cross, Fabric-ASM, MixinExtras, Caffeine, Inter (OFL-1.1), Open Sans (OFL-1.1).

Переводы: IcedDog (китайский), JustFoxxo (польский).

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

25w45a26.2.x26.1.x1.21.x1.20.x1.19.x1.18.x

Платформы

Поддерживаемые окружения

Клиент

Зависимости

Ссылки


Создатели

Детали

Лицензия:
Опубликован:3 года назад
Обновлён:13 часов назад
Главная