🔤 EK BÖLÜM

Tipografi & Fontlar

Bilgisayar Grafiğinde Font Teknolojisi, Rendering ve Oyun Tipografisi

📜 1968'den Günümüze
🔡 Bitmap → Vektör → Variable
🎮 Oyun UI Tipografisi

1. Bilgisayarda Font / Tipografi Tarihi

Xerox Alto
Xerox Alto (1973) — İlk bitmap fontlu PC
Apple Macintosh 128K
Apple Macintosh (1984) — Susan Kare fontları

Bilgisayarlarda tipografi, donanım sınırlamalarından doğmuştur. İlk bilgisayarlarda metin, sabit boyutlu piksel ızgaralarında temsil edilirdi. Bugün kullandığımız vektörel fontlara giden yol, onlarca yıllık teknolojik evrimle şekillenmiştir.

Zaman Çizelgesi: Bitmap Fontlardan Variable Fonts'a

1968 — Douglas Engelbart, "The Mother of All Demos"da ekranda metin düzenlemeyi gösterdi.
1970 — Xerox PARC kuruldu. İlk bitmap fontlar burada geliştirildi.
1973Xerox Alto — İlk kişisel bilgisayar prototipi. Bitmap fontlar, 72 DPI ekran.
1975 — Charles Simonyi, Bravo WYSIWYG editörünü yazdı (Xerox PARC).
1978 — Donald Knuth METAFONT'u tanıttı — parametrik, matematiksel font sistemi. TeX ile birlikte kullanıldı.
1983Apple Lisa — İlk ticari GUI bilgisayar. Bitmap fontlar.
1984Apple Macintosh — Susan Kare'nin ikonik bitmap fontları: Chicago, Geneva, Monaco, New York. Her biri elle piksel piksel tasarlandı.
1984Adobe PostScript ve Type 1 fontlar — kübik Bézier eğrileriyle tanımlanan vektörel fontlar. Herhangi bir boyuta ölçeklenebilir! Adobe formatı başlangıçta kapalı tuttu → "Font Savaşları" başladı.
1985Apple LaserWriter — PostScript destekli ilk lazer yazıcı. 300 DPI. Masaüstü yayıncılık (DTP) devriminin başlangıcı.
1991Apple TrueType — Adobe'nin pahalı lisanslarına tepki. Kuadratik Bézier eğrileri. Ücretsiz olarak Microsoft'a lisanslandı.
1991 — Adobe, TrueType tehdidi karşısında Type 1 spesifikasyonunu herkese açtı.
1992Windows 3.1 + TrueType — Times New Roman, Arial, Courier New. Font hinting teknolojisi.
1996OpenType duyuruldu — Microsoft + Adobe. TrueType + PostScript birleşimi. 65.536 glyph, Unicode desteği.
2009WOFF — Web fontları için sıkıştırılmış konteyner formatı.
2010Google Fonts lansmanı — web tipografisinde devrim.
2016OpenType 1.8 — Variable Fonts — Tek dosya, sürekli ağırlık/genişlik/eğiklik aralığı.
2018WOFF2 yaygın destek — Brotli sıkıştırma ile %30+ daha küçük.

Xerox PARC ve Font Tarihindeki Rolü

Xerox PARC (Palo Alto Research Center, 1970), bilgisayar tipografisinin doğduğu yerdir:

📌 Steve Jobs ve Xerox PARC

Steve Jobs'un 1979'daki meşhur Xerox PARC ziyareti, Apple'da grafik arayüz devrimini başlattı. Susan Kare'nin ikonik Macintosh fontları (Chicago, Geneva, Monaco, New York) elle piksel piksel tasarlanmıştı. Jobs'un Reed College'da aldığı kaligrafik dersin etkisi doğrudan burada görülür.

Font Savaşları: Adobe vs Apple vs Microsoft

1984'te Adobe, PostScript ve Type 1 fontlarla vektörel font devrimi başlattı. Ancak formatı kapalı tutup lisans ücreti istemesi "Font Savaşları"nı ateşledi:

  1. 1984: Adobe Type 1 — kübik Bézier, kapalı format, pahalı lisans
  2. 1991: Apple TrueType — kuadratik Bézier, ücretsiz, Microsoft'a lisanslandı
  3. 1991: Adobe geri adım attı — Type 1 spesifikasyonu herkese açıldı
  4. 1996: Barış — Microsoft + Adobe birlikte OpenType'ı duyurdu
💡 Bézier eğrileri burada da!

Inkscape'te öğrendiğiniz Bézier eğrileri, fontların temelini oluşturur. TrueType kuadratik (2. derece), PostScript kübik (3. derece) Bézier kullanır. Fark: kuadratik'te 1 kontrol noktası, kübik'te 2 kontrol noktası vardır.

2. Bitmap Fontlar vs Vektör Fontlar

2.1 Bitmap (Piksel) Fontlar

Bitmap font örneği

AmigaOS bitmap fontları — her karakter piksel piksel tanımlanır

Her glyph (karakter şekli), piksel piksel bir ızgara (matris) olarak saklanır. Metin çizimi = karakter bitmap'lerinin art arda ekrana kopyalanması.

✅ Avantajlar

  • Render çok hızlı — doğrudan piksel kopyalama
  • Aynı ekranda her zaman aynı çıktı (deterministik)
  • Düşük çözünürlükte elle optimize edilmiş görünüm
  • Retro / pixel art oyunlar için mükemmel

❌ Dezavantajlar

  • Ölçeklendiğinde kalite kaybı
  • Her boyut için ayrı bitmap = yüksek bellek
  • Döndürme, eğme kötü sonuç verir
  • Yazıcıda farklı görünür (WYSIWYG bozulur)

Hâlâ kullanıldığı yerler: Linux konsol, gömülü sistemler, nokta vuruşlu yazıcılar, pixel art oyunlar, retro emülatörler.

2.2 Vektör (Outline) Fontlar

Her glyph, Bézier eğrileri ve düz çizgi segmentleriyle matematiksel olarak tanımlanır. İstenilen boyuta ölçeklenip rasterize edilir.

ÖzellikTrueType (Kuadratik)PostScript/CFF (Kübik)
Bézier derecesi2. derece3. derece
Kontrol noktaları2 uç + 1 kontrol2 uç + 2 kontrol
EsneklikDaha az — daha fazla nokta gerekirDaha fazla — az noktayla karmaşık eğriler
İşlem hızıDaha hızlıBiraz daha yavaş
Kullanan formatlarTrueType, OpenType (.ttf)PostScript Type 1, OpenType CFF (.otf)

2.3 Karşılaştırma Özeti

ÖzellikBitmap FontVektör Font
Veri yapısıPiksel dizisi (matris)Bézier eğrileri + komutlar
Ölçekleme❌ Pikselleşme✅ Kayıpsız, sonsuz
Bellekte boyutBoyut başına ayrı setTek dosya, tüm boyutlar
İşlem hızı⚡ Çok hızlı🔄 Rasterizasyon gerekli
Düşük çözünürlük✅ Elle optimize edilebilir⚠️ Hinting gerekir
Kullanım alanıRetro, gömülü sistemlerModern OS, web, baskı

3. Font Rendering (İşleme / Çizim)

3.1 Rasterizasyon: Vektörden Piksele

Font rasterizasyonu, vektörel font outline'ını ekrandaki piksel ızgarasına dönüştürme işlemidir:

  1. Glyph seçimi: Karakter kodu → font tablosundan glyph outline alınır
  2. Ölçekleme: İstenen punto boyutuna göre matematiksel ölçekleme (em birimi → piksel)
  3. Hinting uygulaması: Piksel ızgarasına hizalama ipuçları işlenir
  4. Rasterizasyon: Eğriler → piksel haritasına dönüştürülür (scanline fill)
  5. Anti-aliasing: Kenar piksellere gri tonları uygulanır (isteğe bağlı)

3.2 Hinting (Font İpuçları)

Font hinting örneği

Hinting: Üst — hinting olmadan, Alt — hinting ile piksel ızgarasına hizalanmış glyph'ler

Hinting, font outline'ının düşük çözünürlüklü piksel ızgarasına en iyi şekilde hizalanması için gömülen talimatlardır.

⚠️ Sorun

12pt metin, 96 DPI ekranda sadece ~16 piksel yüksekliğinde. Serbest ölçeklenmiş eğriler piksel sınırlarına denk gelmeyebilir → bulanık veya düzensiz çizgiler.

TrueType hinting: Kendi sanal makinesi var — font içindeki programları çalıştırır. IF ifadeleri, döngüler, değişkenler, fonksiyonlar içerir. Tam bir programlama dili! İyi bir TrueType font'u hint'lemek önemli miktarda iş gerektirir.

Apple vs Microsoft yaklaşımı:

3.3 Anti-Aliasing (Kenar Yumuşatma)

Sorun: Bir eğri, bir pikselin %50'sini kaplıyorsa piksel açık mı kapalı mı? İkili renderlama = testere dişi kenarlar.

Çözüm: Her kenar pikseli için kaplama oranına göre ara tonluk (gri) değer atanır.

TürAçıklamaAvantajDezavantaj
Yok (Bi-level)Piksel ya açık ya kapalıHızlı, keskinTestere dişi kenarlar
Grayscale AAGri tonlar ile kenar yumuşatmaPürüzsüzBiraz bulanık olabilir
Subpixel renderingLCD alt piksellerini kullanır (RGB)3× yatay çözünürlük artışıRenk saçılması (color fringing)

3.4 Subpixel Rendering ve ClearType

Subpixel rendering

Subpixel rendering: Her pikselin R, G, B alt pikselleri ayrı ayrı kontrol edilerek yatay çözünürlük 3 katına çıkarılır

LCD ekranlarda her piksel 3 alt pikselden (R, G, B) oluşur. Bu alt pikselleri ayrı ayrı kontrol ederek yatay çözünürlüğü teorik olarak 3 katına çıkarabilirsiniz.

📌 ClearType (Microsoft)
  • 1998'de duyuruldu, 2000'de ilk kullanım (Microsoft Reader)
  • Windows XP'de opsiyonel, Vista'dan itibaren varsayılan
  • ClearType Font Collection (Vista): Calibri, Cambria, Candara, Consolas, Constantia, Corbel — ClearType için optimize
  • Calibri, Office 2007'den bu yana Microsoft'un varsayılan fontu
  • Araştırmalar: Kelime tanıma doğruluğunda %17 iyileşme, okuma hızında %5 artış

Modern yaklaşım (DirectWrite): HiDPI ekranların yaygınlaşmasıyla subpixel rendering ihtiyacı azaldı. macOS Mojave'den beri subpixel rendering kaldırıldı. Windows 10+'da da grayscale AA tercih ediliyor.

3.5 Neden Metin Farklı Ekranlarda Farklı Görünür?

FaktörEtki
Ekran DPI72 vs 96 vs 220+ DPI → aynı punto, farklı piksel sayısı
RasterizerWindows (GDI/DirectWrite), macOS (Quartz), Linux (FreeType)
HintingWindows hintlere güvenir, macOS çoğunlukla yok sayar
AA yöntemiGrayscale, ClearType, subpixel veya yok
Alt piksel düzeniRGB, BGR, dikey çizgili, PenTile
Font hinting kalitesiİyi hinted fontlar (Arial, Verdana) vs otomatik hinting

4. Oyunlar İçin Tipografi Temelleri

4.1 Harf Anatomisi

┌─────── Ascender Line (Yükselen Çizgi) │ b d f h k l ← Ascender (Yükselen bölüm) │ Cap H.──┤ H E L T B ← Cap Height (Büyük Harf Yüksekliği) │ x-h. ──┤ a c e o x ← x-height (Küçük x Yüksekliği) │ Baseline┤─────────────── ← Baseline — harflerin "oturduğu" çizgi │ │ g j p q y ← Descender (İnen bölüm) └─────── Descender Line (İnen Çizgi)
TerimTürkçeAçıklama
BaselineTaban ÇizgisiHarflerin "oturduğu" hayali yatay çizgi
x-heightx-yüksekliğiKüçük "x"in yüksekliği. Büyük x-height = daha okunabilir
Cap HeightBüyük Harf YüksekliğiBüyük harflerin tepe noktası
AscenderYükselen Kısımb, d, f, h, k, l — cap height üstüne çıkan bölüm
Descenderİnen Kısımg, j, p, q, y — baseline altına inen bölüm
KerningKarakter Çifti Aralığıİki belirli karakter arası mesafe (AV, To, WA)
LeadingSatır Aralığıİki satırın baseline'ları arası mesafe. CSS'te line-height
TrackingHarf AralığıTüm karakterler arası genel mesafe. CSS'te letter-spacing
EmEm BirimiFont boyutuna eşit kare birim. 12pt fontta 1 em = 12pt

4.2 Serif vs Sans-Serif

Serif vs Sans-Serif karşılaştırması

Serif (tırnaklı) ve Sans-Serif (tırnaksız) karşılaştırması — kırmızı bölgeler serif tırnaklara işaret eder

Serif (Tırnaklı) 📰

Harf çizgilerinin uçlarında küçük tırnaklar. 1. yüzyıl Roma yazıtlarından türemiş.

  • Uzun metinlerde okunabilirlik yüksek
  • Baskıda güçlü
  • Oyunlarda: hikâye, diyalog, RPG
  • Örnekler: Times New Roman, Georgia, Garamond

Sans-Serif (Tırnaksız) 🖥️

Harf uçlarında tırnak yok. 19. yüzyılda ortaya çıktı ("Grotesk").

  • Ekranda daha net, küçük boyutlarda okunabilir
  • Modern, temiz görünüm
  • Oyunlarda: UI, HUD, menü, skor
  • Örnekler: Arial, Helvetica, Inter, Roboto

4.3 Monospace Fontlar

Her karakter aynı yatay alanı kaplar (W = i = m = aynı genişlik). Terminal, kod editörü, skor tabloları, zamanlayıcılar ve retro terminaller için ideal. Örnekler: Consolas, JetBrains Mono, Fira Code.

4.4 Oyun Türüne Göre Font Seçim Rehberi

Oyun TürüFont StiliÖrnekler
RPG / FanteziSerif veya el yazısı, antik hisGaramond, Cinzel, IM Fell, MedievalSharp
Sci-FiGeometrik sans-serif, monospaceOrbitron, Rajdhani, Share Tech Mono
HorrorBozulmuş, düzensiz, el yazısıCreepster, Nosifer, Special Elite
Casual / MobilYuvarlatılmış sans-serifNunito, Quicksand, Fredoka
Pixel Art / RetroPiksel fontPress Start 2P, PixelMplus, Silkscreen
Yarış / SporItalik, kalın, dinamikRusso One, Black Ops One
Simülasyon / StratejiTemiz sans-serifInter, Source Sans Pro, Noto Sans

4.5 UI Kullanım Alanına Göre Font Seçimi

Kullanım AlanıÖnerilen TürDikkat Edilecekler
Ana menü / başlıkDisplay / dekoratifOyunun temasıyla uyum, büyük boyutlarda etkileyici
Diyalog / hikâyeSerif veya sans-serif, yüksek x-heightUzun okuma konforu, geniş satır aralığı
HUD (sağlık, cephane)Sans-serif, kalınHızlı okunabilirlik, arka plana karşı kontrast
Zamanlayıcı / skorMonospaceRakamlar kaymamalı (tabular figures)
Piksel art oyunPiksel fontOyun çözünürlüğüne uygun boyut
Hata ayıklamaMonospaceFPS sayacı, koordinat bilgisi

5. Piksel Fontlar

Bitmap ve vektör font karşılaştırması

Bitmap (sol) vs Vektör (sağ) font karşılaştırması — büyütüldüğünde fark belirginleşir

Piksel fontlar, piksel art estetiğiyle tasarlanmış, her pikselin kasıtlı olarak yerleştirildiği bitmap fontlardır. Anti-aliasing kullanılmaz — her piksel ya var ya yok.

📌 Genel bitmap fontlardan farkı

Geleneksel bitmap fontlar sınırlama nedeniyle pikselliydi; piksel fontlar ise kasıtlı estetik seçimdir.

5.1 Yaygın Piksel Font Boyutları

BoyutKullanımAçıklama
3×5Minimum okunabilirÇok küçük etiketler, gömülü sistemler
5×7MikrodenetleyiciArduino LCD, LED matris
6×8Yaygın piksel artCommodore 64 karakter seti
8×8En yaygın retro boyutNES, Game Boy, ZX Spectrum. Karakter başına 8 byte
8×16PC/DOS metin moduIBM PC BIOS fontu. CGA/EGA/VGA
16×16Büyük piksel artKanji/CJK karakterler, büyük başlıklar

5.2 Piksel Font Nasıl Oluşturulur?

  1. Izgara boyutu seç: Oyunun çözünürlüğüne göre (ör. 8×8)
  2. Temel harfleri tasarla: A-Z, a-z, 0-9, temel noktalama
  3. Tutarlı stil kur: x-height, ascender/descender oranları, çizgi kalınlığı (genellikle 1px)
  4. Kerning ayarla: Gerekirse karakter çiftleri arası boşluk
  5. Özel karakterler: Türkçe ç, ğ, ı, ö, ş, ü, İ desteği!
  6. Test: Oyun içi çözünürlükte, hedef arka plan üzerinde
⚠️ Temel kurallar
  • Anti-aliasing kullanma — keskin piksel sınırları korunmalı
  • 1 piksel çizgi kalınlığı genellikle yeterli (8×8'de)
  • Tüm harflerin baseline'ı aynı hizada olmalı
  • Okunabilirlik > estetik

5.3 Piksel Font Araçları & Kaynakları

AraçTürAçıklama
BitFontMaker2Web (ücretsiz)Tarayıcıda piksel font tasarla, TTF olarak indir. Çok basit ve hızlı. 8×8–16×16.
FontForgeMasaüstü (ücretsiz)Profesyonel font editörü. Bitmap fontlar da desteklenir. Python scripting.
Glyphr StudioWeb (ücretsiz)Modern web tabanlı font editörü. Başlangıç için ideal.
Aseprite / LibreSpriteMasaüstüFont sprite sheet oluşturma.
PiskelWeb (ücretsiz)Piksel art editörü, font sprite sheet yapılabilir.

Ücretsiz Piksel Font Kaynakları

6. Web Tipografisi

6.1 CSS @font-face

Web'de uzun süre yalnızca "web-safe fontlar" (Arial, Verdana, Georgia, Times New Roman) kullanılabildi. @font-face kuralı bunu değiştirdi:

@font-face {
  font-family: 'OyunFontu';
  src: url('fonts/oyun-fontu.woff2') format('woff2'),
       url('fonts/oyun-fontu.woff') format('woff');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

body {
  font-family: 'OyunFontu', sans-serif;
}

Font Formatları

FormatSıkıştırmaDestek
WOFF2 (.woff2)Brotli (~%30 daha küçük)Tüm modern tarayıcılar (2018+) ✅
WOFF (.woff)zlibIE9+, tüm modern tarayıcılar
TTF/OTFYokÇoğu tarayıcı
EOT (.eot)LZSadece IE (artık gereksiz) ❌
💡 Modern Öneri

Sadece WOFF2 yeterli. Bu ders sitesi de Google Fonts üzerinden Inter ve JetBrains Mono kullanıyor!

6.2 Google Fonts

Google Fonts (2010): 1.600+ açık kaynak font ailesi, tamamen ücretsiz, CDN üzerinden hızlı erişim.

<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">

Popüler Google Fonts (oyun/web):

6.3 Font Yükleme Stratejileri

Web fontları ağ üzerinden indirilir → gecikme. Bu sırada metin nasıl gösterilir?

FOIT — Flash of Invisible Text

Web fontu indirilene kadar metin gizlenir. Font gelince aniden belirir. Sayfa saniye(ler)ce okunamaz.

FOUT — Flash of Unstyled Text

Web fontu indirene kadar yedek font gösterilir. Font gelince metin "zıplar". Genellikle daha iyi UX.

font-display DeğeriDavranışKullanım
swapHemen fallback göster, font gelince değiştirÇoğu zaman en iyisi
block~3s gizle, sonra fallbackİkon fontları
fallback~100ms gizle, ~3s içinde gelmezse fallback kalırDenge
optional~100ms gizle, gelmezse fallback, sonraki ziyarette cachePerformans öncelikli

Optimizasyon İpuçları

  1. font-display: swap kullan — metin her zaman okunabilir
  2. <link rel="preload"> ile fontu erken yüklemeye başla
  3. WOFF2 kullan — en küçük dosya boyutu
  4. Subset — Türkçe karakterler: unicode-range: U+0000-00FF, U+00C7, U+00E7, U+011E-011F, U+0130-0131, U+00D6, U+00F6, U+015E-015F, U+00DC, U+00FC;
  5. Local font kontrolü: src: local('Inter'), url(...) → zaten yüklüyse indirme

7. Farklı Çözünürlüklerde Okunabilirlik

ÇözünürlükPlatformFont Boyutu Önerisi
320×240 (QVGA)Retro, Game Boy8×8 piksel font zorunlu
640×480 (VGA)Retro PC8-16px bitmap veya küçük vektör
1280×720 (720p)Mobil, SwitchMin 18px body, 14px minimum
1920×1080 (1080p)PC, konsol20-24px body, 16px minimum
3840×2160 (4K)PC, yeni konsol2× ölçekleme veya yüksek DPI
⚠️ Genel Kurallar
  • Minimum font: 1080p'de asla 12px altında. TV konsollar için 16px+.
  • Kontrast: WCAG 2.1 → normal metin için en az 4.5:1 kontrast oranı
  • Satır uzunluğu: İdeal 45-75 karakter/satır
  • Satır aralığı: Font boyutunun 1.3-1.6 katı

8. Yerelleştirme Zorlukları

ZorlukAçıklamaÇözüm
Karakter setiTürkçe: ç, ğ, ı, ö, ş, ü, İ. Japonca: ~6.000 kanjiUnicode kapsamlı fontlar (Noto, Source Sans)
Metin uzunluğuAlmanca metin İngilizceden %30-40 daha uzunEsnek UI kutuları, metin taşma kontrolü
Yazı yönüArapça, İbranice: sağdan sola (RTL)BiDi text rendering desteği
CJK fontlarBinlerce glyph → büyük dosyalar (5-20 MB)Font subsetting
Özel kurallarTürkçe: I→ı, İ→i dönüşümüLocale-aware string işlemleri
📌 Noto Fonts (Google + Adobe)

"No Tofu" — hiçbir karakter için □ (tofu / boş kare) gösterilmesin hedefi. 1.000'den fazla dil ve yazı sistemi desteği. Noto Sans CJK ile Pan-CJK desteği.

9. Font Tasarım Araçları

AraçTürFiyatAçıklama
FontForgeMasaüstüÜcretsiz (GPL)Profesyonel font editörü. TrueType, OpenType, WOFF oluşturma. Python scripting. Öğrenme eğrisi yüksek.
Glyphr StudioWebÜcretsizModern arayüz, sezgisel Bézier editörü. Başlangıç için ideal.
BitFontMaker2WebÜcretsizPiksel font oluşturma. TTF export. Çok basit ve hızlı.
CalligraphrWebÜcretsiz/ProEl yazısı → font dönüşümü. Kağıda yaz, tara, font yap.
FontLab 8Masaüstü~$499Profesyonel endüstri standardı. Variable font desteği.
Glyphs 3macOS~€299Profesyonel, modern arayüz. Mini versiyonu ~€49.
Hiero / BMFontMasaüstüÜcretsizOyun motorları için bitmap font atlas oluşturucular.

10. Tipografi Terimler Sözlüğü

İngilizceTürkçeAçıklama
FontYazı TipiBelirli ağırlık, boyut ve stildeki set
TypefaceYazı Tipi AilesiFont ailesinin genel tasarımı (ör. "Helvetica")
GlyphGlif / Karakter ŞekliBir karakterin görsel temsili
SerifTırnakHarflerin uçlarındaki küçük çizgiler
Sans-SerifTırnaksızSerif olmayan (sans = "olmadan")
KerningKarakter Çifti Aralığıİki karakter arası özel boşluk ayarı
LeadingSatır AralığıSatırlar arası dikey mesafe
HintingİpuçlamaPiksel ızgarasına hizalama talimatları
RasterizationRasterizasyonVektör → piksel dönüşümü
Anti-aliasingKenar YumuşatmaTestere dişlerini azaltma
SubpixelAlt Piksel İşlemeLCD alt piksellerini kullanarak çözünürlük artırma
LigatureBitişik Harfİki harfin birleşik glyph'i (fi, fl)
Variable FontDeğişken FontTek dosyada sürekli ağırlık/genişlik aralığı
WOFF2Web Açık Font FormatıBrotli sıkıştırmalı web font konteyner formatı

11. Kaynaklar & Bağlantılar

Tipografi Temelleri

Font Editörleri

Ücretsiz Font Kütüphaneleri

Teknik Referanslar