26.06.2026 09:52

Moonlight Animate: panel Glify i warianty OpenType per-glif

⏱️ 2 min czytania
Udostępnij:

Typografia w Moonlight Animate dostaje narzędzie, którego brakowało osobom pracującym z ozdobnymi i kaligraficznymi krojami: panel Glify z dostępem do wariantów OpenType konkretnego glifu. To funkcja znana z profesjonalnych edytorów grafiki — teraz w pełni działa w naszym edytorze.

Co to daje

Wiele krojów (zwłaszcza skryptowych, ozdobnych, kaligraficznych) zawiera dla pojedynczej litery kilka alternatywnych form — swashe, warianty stylistyczne, formy początkowe i końcowe. Dotąd mogliśmy włączać całe grupy cech OpenType (zestawy stylistyczne ss01–ss20, ligatury, swashe) dla całego runu. Teraz można wybrać konkretny wariant pojedynczego glifu.

Jak to działa

  • Marker wariantów. W siatce panelu Glify każdy glif, który ma alternatywne formy, oznaczony jest małym trójkątem w rogu komórki. Krój bez wariantów po prostu ich nie pokazuje — żadnych pustych przycisków.
  • Pop-up alternatyw. Alt-klik (lub prawy klik) na takim glifie rozwija małe okienko z wszystkimi jego wariantami, narysowanymi bezpośrednio z kroju.
  • Warianty zaznaczenia. Zaznacz znak w tekście, przełącz kategorię na „Warianty zaznaczenia", a siatka pokaże jego formę bazową i wszystkie alternatywy. Dwuklik na wariancie zamienia zaznaczony glif na tę formę; dwuklik na bazowym wraca do domyślnej. Każda zmiana to jeden krok cofania, a wybór zapisuje się w projekcie.

Pod maską

Wariant stosowany jest jako cecha OpenType aalt (Access All Alternates) na poziomie pojedynczego glifu — nie jako podmiana znaku, bo alternatywne formy często nie mają własnego kodu Unicode i są osiągalne wyłącznie przez warstwę typografii kroju. Do wyliczenia, które formy istnieją, dołożyliśmy silnik HarfBuzz czytający tablicę GSUB kroju. Co ważne: listę wariantów budujemy przez realne złożenie tekstu — dla każdej alternatywy składamy znak tak, jak zrobi to silnik renderujący, i zapisujemy dokładnie ten glif, który zobaczysz w dokumencie. Panel pokazuje więc to, co naprawdę się wyrenderuje, niezależnie od tego, jak dany krój ułożył swoje tablice.

Format projektu pozostaje wstecznie zgodny — starsze pliki otwierają się bez zmian, a wybór wariantu to dodatkowe, opcjonalne pole zapisywane per-fragment tekstu.

📚 Powiązane posty

14.07.2026 22:19

Silnik gier: od szablonu do grywalnej gry RPG top-down

Startowy szablon silnika gier to teraz kompletny, grywalny wycinek gry RPG top-down: chodzenie po siatce, rozmowy z postaciami, przeciwnik goniący gdy...
Czytaj dalej →
14.07.2026 19:16

Moonlight Animate — system dialogów w grach

Silnik gier 2D w Moonlight Animate ma teraz kompletny system dialogów: kwestie z efektem maszyny do pisania, wybory z warunkami, zmienne fabularne i g...
Czytaj dalej →
14.07.2026 18:40

Moonlight Animate: ruchoma panorama dźwięku także w wyeksportowanym wideo

Dźwięk przejeżdżający z lewego do prawego głośnika brzmiał dobrze w podglądzie, ale eksport przez serwer zamrażał go w miejscu. Ostatnia luka parytetu...
Czytaj dalej →

📧 Bądź na bieżąco!

Zapisz się na listę oczekujących, aby otrzymywać powiadomienia o nowych postach na Dev Blog oraz informacje o starcie platformy Moonlight.