SDLPainter 1.4.0
SDL3 + OpenGL/Vulkan 2D çizim kütüphanesi
Yüklüyor...
Arıyor...
Eşleşme Yok
sdl_painter::Font Sınıf Referans

Font sarmalayıcı — SDL_ttf üzerinden. Ayrıntılar...

#include <font.h>

Public Üye Fonksiyonlar

 Font (const std::string &file_path, int32_t point_size)
 TTF dosyasından font yükle.
bool IsValid () const noexcept
 Font başarıyla yüklendi mi?
int32_t PointSize () const noexcept
 Punto boyutunu döndür.
int32_t Ascent () const
 Font ascent (baseline'dan yukariya olan maksimum piksel) degerini dondur.
int32_t LineHeight () const
 İki satır arasındaki önerilen dikey mesafe (piksel).
void * Handle () const noexcept
 SDL_ttf font handle'ı döndür (opak pointer).
bool MeasureText (const std::string &text, int32_t &out_width, int32_t &out_height) const
 Verilen metnin piksel boyutunu ölç.
int32_t Kerning (char32_t previous, char32_t current) const
 İki ardışık karakter arasındaki kerning düzeltmesi (piksel).
const Glyph * GetGlyph (IRenderer &renderer, char32_t codepoint) const
 Karakter için Glyph al; yoksa oluşturur.
std::size_t AtlasPageCount () const
 Glyph atlasının açtığı sayfa sayısı (teşhis/test).

Ayrıntılı tanımlama

Font sarmalayıcı — SDL_ttf üzerinden.

Uyarı
Font, glyph önbelleğindeki texture'ları yükleyen Painter (ve dolayısıyla IRenderer) yaşıyorken yıkılmalıdır. Painter yok olduktan sonra Font yıkılırsa, glyph önbelleğindeki her Texture raw IRenderer pointer'ı dangling olur ve davranış tanımsızdır. Painter std::shared_ptr<Font> ile tuttuğu için genelde sözleşme kendiliğinden sağlanır; ancak kullanıcı font'u Painter'dan bağımsız olarak static veya global tutarsa bu garanti kaybolur.
Bir Font tek bir Painter'a aittir. İlk GetGlyph çağrısı fontu o çağrının renderer'ına bağlar; glyph atlası o renderer'ın texture'larından oluşur ve texture tanımlayıcıları renderer'a yereldir. Aynı Font ikinci bir Painter ile kullanılırsa GetGlyph nullptr döner ve hata loglanır — birincinin texture handle'ını ikinciye vermek sessizce yanlış (veya hiç) çizerdi. Çok pencereli uygulamalar Painter başına ayrı bir Font açmalıdır.

Constructor & Destructor Dokümantasyonu

◆ Font()

sdl_painter::Font::Font ( const std::string & file_path,
int32_t point_size )

TTF dosyasından font yükle.

Parametreler
file_pathFont dosyasının yolu.
point_sizePunto boyutu.

Üye Fonksiyon Dokümantasyonu

◆ GetGlyph()

const Glyph * sdl_painter::Font::GetGlyph ( IRenderer & renderer,
char32_t codepoint ) const

Karakter için Glyph al; yoksa oluşturur.

İlk çağrı fontu renderer'a bağlar. Sonraki çağrılar başka bir renderer ile gelirse nullptr döner (bkz. sınıf belgesindeki uyarı).

◆ Kerning()

int32_t sdl_painter::Font::Kerning ( char32_t previous,
char32_t current ) const
nodiscard

İki ardışık karakter arasındaki kerning düzeltmesi (piksel).

Fontun kern tablosundan okunur. Kerning'i yalnızca GPOS tablosunda tanımlayan fontlarda 0 döner; o fontlar kerning'siz çizilir ve ölçülür.

◆ LineHeight()

int32_t sdl_painter::Font::LineHeight ( ) const
nodiscard

İki satır arasındaki önerilen dikey mesafe (piksel).

Fontun kendi metriğidir; PointSize() ile aynı şey değildir ve ondan büyük olması normaldir (çıkıntılar ve satır arası boşluk dahil). Çok satırlı metinde satır başına bu kadar ilerlenir.

◆ MeasureText()

bool sdl_painter::Font::MeasureText ( const std::string & text,
int32_t & out_width,
int32_t & out_height ) const

Verilen metnin piksel boyutunu ölç.

Ölçüm, çizimle aynı glyph konumlarını kullanır (advance + Kerning); genişlik, glyph'lerin görünen kısmı ile kalem sonunun birleşimidir. Hizalama ve sözcük kaydırma bu değerle yapılır.

Metin soldan sağa, glyph glyph yerleştirilir: sağdan sola yazım, ligatür ve karmaşık yazım biçimlendirmesi (shaping) desteklenmez. Tek satır içindir; \n satır ayırıcı olarak işlenmez.

Parametreler
textÖlçülecek metin.
out_widthÇıkış: genişlik (piksel).
out_heightÇıkış: yükseklik (piksel).
Döndürdüğü değer
Ölçüm başarılıysa true.

Bu sınıf için dokümantasyon aşağıdaki dosyadan üretilmiştir: