Metin İşlemcinin İç Yapısı

Kerem Aydın·7 Temmuz 2026·⏱5 dk

Bir metin işlemci dört temel katmandan oluşur: veri modeli (metin ve yapının depolanması), iş mantığı (giriş işleme, biçimlendirme, işlem geri alma), render katmanı (ekranda çizim) ve giriş/çıkış modülleri (dosya içe/dışa aktarma). Bu yapıyı anlamak, neden bazı editörlerin büyük dosyalarda "takıldığı", diğerlerinin ise anında çalıştığı ve DOCX veya PDF gibi formatların uyumluluğunun nasıl sağlandığı konusunda farkındalık yaratır.

Aşağıda sistemin her bir bileşeni detaylıca incelenecektir.

İçindekiler

Veri Modeli: Metin Nerede Saklanır?

Herhangi bir metin işlemcinin kalbi, kullanıcı tarafından görülen metin değil, bellekteki veri yapısıdır. Karmaşık biçimlendirme için basit bir karakter dizisi yeterli değildir.

Depolama Yaklaşımları

  1. Gap Buffer (Boşluklu Arabellek) Çoğu basit editörde (örneğin Emacs, Notepad++) kullanılır. İmlecin bulunduğu yerde bir "boşluk" içeren bir dizi olarak temsil edilir. Metin ekleme işlemi, tüm dizinin kaydırılmasını gerektirmediği için hızlı gerçekleşir; ancak belgede imlecin sık sık hareket ettirilmesi durumunda yavaşlar.

  2. Piece Table (Parça Tablosu) Karmaşık işlemciler için modern standarttır (Microsoft Word, VS Code'da kullanılır). Orijinal metin değiştirilemez bir arabellekte saklanır ve tüm değişiklikler ayrı bir ekleme arabelleğine yazılır. Belge yapısı, bu arabelleklere yönelik referanslardan ("parçalar") oluşan bir liste ile tanımlanır. Avantaj: Hızlı "Geri Al" işlemi (son parçaya olan referansı silmek yeterlidir) ve düşük bellek tüketimi.

  3. Belge Ağacı (DOM / AST) Karmaşık yapıya sahip belgeler (başlıklar, tablolar, resimler) için metin, düğüm ağacı şeklinde temsil edilir. Her düğüm içerik ve meta verileri (stil, öğe türü) barındırır. Bu sayede stillerin tüm paragraflara veya bölümlere kolayca uygulanması mümkün olur.

Düzenleme Motoru: Değişiklik Mantığı

Bu modül, kullanıcının eylemlerine tepki vermekten sorumludur. Arayüzü veri modeli ile bağlantılandırır.

Temel İşlevler

  • Giriş İşleme: Tuş vuruşlarının düzenleme komutlarına (karakter ekleme, satır atlama, silme) dönüştürülmesi.
  • İmleç ve Seçim Yönetimi: Karetle (caret) konumunun ve seçili metin aralığının takibi. Karmaşık belgelerde imleç tabloların içinde veya kayan nesnelerin arasında bulunabilir; bu durum özel gezinme mantığı gerektirir.
  • Eylem Geçmişi (Geri Al/Yinele): "Komut" deseni üzerinden uygulanır. Her eylem (kelime ekleme, kalın yazı tipi uygulama) bir nesne olarak kaydedilir. Optimizasyon amacıyla, küçük eylemler (metin yazma) genellikle tek bir geçmiş olayı altında birleştirilir.

Performans İpucu: Her tuş vuruşunun geçmişini ayrı ayrı saklamayın. Metin girişini zamana göre paketler halinde gruplayın (örneğin, duraksamadan 500 ms'den daha hızlı yazılan her şey, geri alma işlemi için tek bir eylem olarak kabul edilir).

Stil ve Biçimlendirme Sistemi

Stiller, görsel temsili içerikten ayırarak metnin nasıl görüneceğini belirler.

Stil Uygulama Düzeyleri

  1. Karakter Stilleri: Kalın, italik, yazı tipi rengi. Belirli karakter aralıklarına uygulanır.
  2. Paragraf Stilleri: Hizalama, girintiler, satır aralığı. Metin bloklarına uygulanır.
  3. Sayfa Stilleri: Kenar boşlukları, yön, üstbilgi ve altbilgiler.

Stil Tablosu

Profesyonel işlemcilerde merkezi bir stil tablosu kullanılır (CSS veya Word'teki gibi). Her kelime için "bu metin kalın" bilgisini saklamak yerine, belge "Başlık 1" stiline bir referans saklar ve bu stilin özellikleri küresel olarak tanımlanır. Bu sayede belgedeki tüm başlıkların görünümü tek bir komutla değiştirilebilir.

Render Etme: Koddan Piksele

En fazla kaynak tüketen kısımdır. Render motorunun görevi, soyut veri modelini ekrandaki bir görüntüye dönüştürmektir.

Çizim Aşamaları

  1. Yerleşim (Layout): Geometrinin hesaplanması. Her satır nerede başlar ve biter? Kelimeler nasıl taşınır? Resimler nereye yerleştirilir? Bu aşamada yazı tipleri, kerning (harf çiftleri arasındaki mesafe) ve sayfa kenar boşlukları dikkate alınır.
  2. Rasterizasyon: Yazı tipi ve grafiklerin vektörel konturlarının piksellere dönüştürülmesi.
  3. Kompozisyon: Katmanların (metin, alt çizgiler, arka plan, vurgular) nihai görüntü üzerinde üst üste bindirilmesi.

"Titreme" Sorunu: Büyük belgelerde hızlı kaydırma yapılırken, her karede tüm içeriğin render edilmesi mümkün değildir. Modern motorlar sanallaştırma kullanır: yalnızca ekranda görünen metin parçasını ve bunun üzerindeki/altındaki küçük bir payı çizer.

Giriş/Çıkış Modülleri ve Uyumluluk

Dosyaların kaydedilmesi ve yüklenmesinden sorumludur. Bu katman, dahili modeli harici standartlara adapte eder.

Temel Formatlar ve Zorluklar

  • DOCX (Office Open XML): Bir dizi XML dosyasından oluşan ZIP arşivi. Microsoft standartlarına sıkı uyum gerektirdiği için karmaşıktır. Doğrulama hataları, dosyanın Word tarafından okunamaz hale gelmesine neden olabilir.
  • ODT (OpenDocument): Benzer bir XML yapısına sahiptir ancak farklı bir standarda dayanır.
  • PDF: Sabit düzenli bir formattır. PDF'e dışa aktarma, yerleşimin "dondurulmasını" gerektirir: kullanıcının ekranda gördüğü şey, koordinatlarda kesin olarak sabitlenmelidir.
  • Markdown/HTML: İşaretleme metin formatları. Bunlara dönüştürme işlemi genellikle karmaşık biçimlendirmenin (örneğin hassas girintilerin veya resim konumlarının) kaybolmasına yol açar.

Mimariye İlişkin Sık Yapılan Hatalar

  1. Biçimlendirmenin Metin İçinde Saklanması (Saf Rich Text): Biçimlendirme etiketlerinin doğrudan metin dizisi içinde saklanmaya çalışılması (eski RTF editörlerinde olduğu gibi), düzenleme sırasında karmaşıklığın katlanarak artmasına neden olur. İçerik ve stiller için ayrı yapılar kullanın.

  2. Kaydetme Sırasında Kullanıcı Arayüzünün Bloklanması: Büyük bir belgenin DOCX formatında kaydedilmesi saniyeler sürebilir. Eğer bu işlem ana akışta yapılırsa, arayüz "donar". Serileştirme için eşzamansız kuyruklar ve arka plan iş parçacıkları kullanın.

  3. Unicode'un Görmezden Gelinenmesi: Emoji'lerin, Çince karakterlerin ve sağdan sola yazılan dillerin (Arapça, İbranice) işlenmesi, karmaşık Unicode algoritmalarının (çift yönlü algoritma) desteklenmesini gerektirir. Burada basit karakter bazlı döngüler işe yaramaz.

SSS

Metin editörü ile metin işlemcisi arasındaki fark nedir? Metin editörü (Notepad, Vim) bir karakter akışıyla ve minimal biçimlendirmeyle çalışır. Metin işlemcisi (Word, Google Docs) sayfa düzenini, karmaşık stilleri ve grafikleri yönetir ve belgelerin basılmaya veya yayımlanmaya hazırlanması amacıyla tasarlanmıştır.

Neden büyük belgeler yavaşlar? Sorun çoğunlukla render etme ve yerleşim yeniden hesaplamasından kaynaklanır. Program her değişiklikte tüm sayfalardaki tüm öğelerin konumunu yeniden hesaplıyorsa hız düşer. Optimizasyon, yalnızca görünür alanın yeniden hesaplanması ve blok boyutlarının önbelleğe alınması ile sağlanır.

Ortak düzenleme (Google Docs'taki gibi) nasıl uygulanır? CRDT (Çatışmasız Çoğaltılmış Veri Türleri) veya Operasyonel Dönüşüm (OT) algoritmaları kullanılır. Bu algoritmalar, farklı kullanıcıların değişikliklerini, tüm katılımcılardaki nihai belgenin aynı olmasını sağlayacak şekilde uygulamaya olanak tanır; hatta düzenlemeler aynı anda aynı yere yapılsa bile.