Satır kaydırma ve sözcük kaydırma - Line wrap and word wrap

Sözcük kaydırma olarak da bilinen satır kesme , metnin bir bölümünü, bir sayfanın, pencerenin veya başka bir görüntüleme alanının mevcut genişliğine sığması için satırlara bölmektir. Metin ekranında, satır dolduğunda satır kaydırma yeni bir satırda devam eder, böylece her satır görüntülenebilir pencereye sığar ve metnin yatay kaydırma olmadan yukarıdan aşağıya okunmasına izin verir . Sözcük kaydırma , çoğu metin düzenleyicisinin , sözcük işlemcisinin ve web tarayıcısının , mümkün olduğunda sözcüklerin içinden değil sözcüklerin arasına satırları ayırma ek özelliğidir . Sözcük kaydırma, paragraflar içinde yeni satır sınırlayıcılarının sabit kodlanmasını gereksiz kılar ve metin görüntüsünün farklı boyutlardaki görüntülere esnek ve dinamik bir şekilde uyum sağlamasına olanak tanır.

Yumuşak ve sert dönüşler

Yumuşak dönüş veya yumuşak kaydırma, satır kaydırma veya sözcük kaydırmadan (otomatik veya manuel) kaynaklanan kesintidir, oysa kesin dönüş veya kesin kaydırma, yeni bir paragraf oluşturan kasıtlı bir kesmedir. Sabit bir dönüşle, paragraf sonu biçimlendirmesi uygulanabilir (ve uygulanmalıdır) ( girinti veya dikey boşluk). Yumuşak sarma, satır uzunluklarının, kullanıcının pencere genişliği veya kenar boşluğu ayarlarındaki ayarlamalarla otomatik olarak ayarlanmasına olanak tanır ve tüm modern metin düzenleyicilerin, kelime işlemcilerin ve e-posta istemcilerinin standart bir özelliğidir . Sözcük kaydırma otomatik olarak yapıldığında manuel yumuşak aralar gereksizdir, bu nedenle "Enter" tuşuna basmak genellikle kesin bir dönüş sağlar.

Alternatif olarak, "yumuşak dönüş", paragraf sonu olmayan kasıtlı, depolanmış bir satır sonu anlamına gelebilir. Örneğin, posta adreslerini çok satırlı biçimde yazdırmak yaygındır, ancak birkaç satırın tek bir paragraf olduğu anlaşılır. Adresin sözcüklerini uygun uzunluktaki satırlara bölmek için satır sonları gerekir.

Çağdaş grafik kelime işlemcileri Microsoft Word ve OpenOffice.org'da , kullanıcıların her paragraf arasında bir satır başı ( ) yazması beklenir . Birinci satır girintisi veya paragraflar arasındaki boşluk gibi biçimlendirme ayarları, satırbaşının kesmeyi işaretlediği yerde etkili olur. Yumuşak bir dönüş olan paragraf dışı satır sonu, + veya menüler aracılığıyla eklenir ve metnin yeni bir satırdan başlaması gerektiği ancak yeni bir paragraf başlatmanın diğer yan etkilerinden hiçbirinin istenmediği durumlar için sağlanır. . EnterShiftEnter

Metin yönelimli biçimlendirme dillerinde, tipik olarak bir biçimlendirme etiketi olarak yumuşak bir dönüş sunulur. Örneğin, HTML'de , yukarıda açıklanan kelime işlemcilerdeki yumuşak dönüşle aynı amaca sahip bir <br> etiketi vardır.

tek kod

Unicode Satır Bölme Algoritması olarak bilinen pozisyonları, bir dizi belirleyen kesme olanağı yeni bir satır başlatmak için uygun yerlerdir. Gerçek satır kesme konumları, algoritmanın kendisi tarafından değil, algoritmayı çağıran üst düzey yazılım tarafından kesme fırsatları arasından seçilir, çünkü metnin görüntülendiği ekranın genişliğini ve genişliğini yalnızca üst düzey yazılım bilir. görüntülenen metni oluşturan glifler.

Unicode karakter seti, bir satır ayırıcı karakterin yanı sıra, yumuşak dönüş ve kesin dönüşün anlamlarını temsil etmek için bir paragraf ayırıcı sağlar.

0x2028 HAT AYIRICI
* bu semantiği açık bir şekilde temsil etmek için kullanılabilir
0x2029 PARAGRAF AYIRICI
* bu semantiği açık bir şekilde temsil etmek için kullanılabilir

Kelime sınırları, tireleme ve sabit boşluklar

Yumuşak dönüşler genellikle tam sözcüklerin sonlarından sonra veya tam sözcükleri izleyen noktalama işaretlerinden sonra yerleştirilir. Bununla birlikte, sözcük kaydırma , bir sözcüğün içinde bir tire işaretinin ardından da oluşabilir . Bu bazen istenmez ve normal bir kısa çizgi yerine bölünmeyen kısa çizgi veya sert kısa çizgi kullanılarak engellenebilir .

Kısa çizgi içermeyen bir sözcük, içinde yumuşak kısa çizgiler bulunarak sarılabilir hale getirilebilir . Sözcük sarılmadığında (yani satırlar arasında bölünmediğinde), yumuşak kısa çizgi görünmez. Ancak sözcük satırlar arasında sarılırsa, bu yumuşak kısa çizgide yapılır ve bu noktada sözcüğün kesildiği üst satırda görünür bir kısa çizgi olarak gösterilir. (Hatları üzerinden kırılma değil, wrappable çıkartılacaktır bir kelime nadir durumlarda olmayan bir tire hiç bir görünür hale sıfır genişlik boşluğu kelime kırılma noktası (ler) izin verilen en konur.)

Bazen bitişik sözcükler arasında sözcük kaydırma istenmez. Bu gibi durumlarda, kelime sarma genellikle kullanılarak bloke edilebilir sabit bir alan ya da olmayan boşluk yerine normal mekanların, kelimeler arasında.

Çince, Japonca ve Korece içeren metinde sözcük kaydırma

In Çince , Japonca ve Korece , sözcük kaydırma genellikle önce ve herhangi sonrasında oluşabilecek Han karakteri , ancak belirli noktalama karakterleri yeni bir satır başlatmak için izin verilmez. Japon alfabesinin harfleri olan Japonca kana , uzantı olarak Han Karakterleri ( Kanji ) ile aynı şekilde ele alınır , yani kelimelerin kırılabileceği ve bunun gerçekleştiğine dair herhangi bir kısa çizgi veya başka bir belirti olmadan kırılma eğilimi vardır.

Ancak belirli koşullar altında sözcük kaydırma istenmez. Örneğin,

  • kişisel adlarda sözcük kaydırma istenmeyebilir ve
  • herhangi bir bileşik sözcük içinde sözcük kaydırma istenmeyebilir (metin sola yaslandığında, ancak yalnızca bazı stillerde).

Mevcut kelime işlemcilerin ve dizgi yazılımlarının çoğu, yukarıdaki senaryolardan herhangi birini işleyemez.

CJK noktalama işaretleri, yukarıda belirtilen özel durumlara benzer kurallara uyabilir veya uymayabilir. Bu kalmıştır CJK line kırma kuralları .

Bununla birlikte, CJK'da özel bir satır kesme kuralı durumu her zaman geçerlidir: CJK tire ve üç nokta içinde satır kaydırma asla gerçekleşmemelidir. Bu noktalama işaretleri her nedeniyle tüm mevcut bir sınırlama iki karakter tarafından temsil edilmesi gerektiği halde karakter kodlamaları , bunların her biri özünde iki tek bir noktalama işareti vardır ems , geniş iki tane bir em çapında noktalama işaretleri değil.

algoritma

Kelime kaydırma bir optimizasyon problemidir . Ne için optimize edilmesi gerektiğine bağlı olarak, farklı algoritmalar kullanılır.

Minimum satır sayısı

Kelime kaydırma yapmanın basit bir yolu , bir satıra mümkün olduğu kadar çok kelime koyan açgözlü bir algoritma kullanmak ve ardından yerleştirilecek başka kelime kalmayana kadar aynısını yapmak için bir sonraki satıra geçmektir. Bu yöntem, OpenOffice.org Writer ve Microsoft Word gibi birçok modern kelime işlemci tarafından kullanılmaktadır . Bu algoritma her zaman mümkün olan en az sayıda satır kullanır, ancak çok çeşitli uzunluklarda satırlara yol açabilir. Aşağıdaki sözde kod bu algoritmayı uygular:

SpaceLeft := LineWidth
for each Word in Text
    if (Width(Word) + SpaceWidth) > SpaceLeft
        insert line break before Word in Text
        SpaceLeft := LineWidth - Width(Word)
    else
        SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)

LineWidthBir satırın genişliği nerede , SpaceLeftsatırda doldurulacak kalan boşluk SpaceWidthgenişliği, tek bir boşluk karakterinin genişliği, Textyinelenecek giriş metni ve Wordbu metinde bir kelimedir.

Minimum düzensizlik

TeX'te kullanılan farklı bir algoritma, daha estetik bir sonuç elde etmek için satırların sonundaki boşlukların uzunluklarının karelerinin toplamını en aza indirir. Aşağıdaki örnek, bu yöntemi her zaman kare alanını en aza indirmeyen açgözlü algoritma ile karşılaştırır.

Giriş metni için

AAA BB CC DDDDD

çizgi genişliği 6 ile açgözlü algoritma şunları üretecektir:

------    Line width: 6
AAA BB    Remaining space: 0
CC        Remaining space: 4
DDDDD     Remaining space: 1

Bu yöntemle arta kalan alanın karesi toplamı . Bununla birlikte, optimal çözüm daha küçük toplamı elde eder :

------    Line width: 6
AAA       Remaining space: 3
BB CC     Remaining space: 1
DDDDD     Remaining space: 1

Buradaki fark, ilk satırın BBondan sonra değil, öncesinde kesilmesi ve böylece daha iyi bir doğru marj ve daha düşük bir maliyet sağlamasıdır 11.

Bir kullanarak dinamik programlama hattını kırmak için hangi pozisyonları tercih algoritması yerine açgözlülükle sonlarını seçerek asgari raggedness ile çözüm zamanında bulunabilir , burada giriş metninde kelimelerin sayısıdır. Tipik olarak, bu tekniğin maliyet işlevi, paragrafın son satırında kalan boşluğu saymayacak şekilde değiştirilmelidir; bu değişiklik, bir paragrafın cezasız bir satırın ortasında bitmesine izin verir. Satır sayısı veya uzun sözcükleri tireleme maliyetleri gibi diğer faktörleri birleştiren daha karmaşık maliyet işlevlerini en aza indirmek için aynı dinamik programlama tekniğini uygulamak da mümkündür. SMAWK algoritmasını temel alan daha hızlı fakat daha karmaşık doğrusal zaman algoritmaları , minimum düzensizlik sorunu ve benzer özelliklere sahip diğer bazı maliyet fonksiyonları için de bilinir.

Tarih

1955'te Western Union tarafından geliştirilen bir "sayfa yazıcı kontrol ünitesinde" ilkel bir satır kesme özelliği kullanıldı . Bu sistem programlanabilir dijital bilgisayarlar yerine röleler kullanıyordu ve bu nedenle veri arabellekleri olmadan uygulanabilecek basit bir algoritmaya ihtiyaç duyuyordu . Western Union sisteminde, her satır 58. karakterden sonra gelen ilk boşluk karakterinde veya boşluk karakteri bulunamazsa 70. karakterde kesildi.

Satır kırma için açgözlü algoritma, Donald Knuth tarafından TeX dizgi sistemini açıklayan ve daha sonra Knuth & Plass (1981) tarafından daha ayrıntılı olarak yayınlanan 1977 tarihli yayınlanmamış bir notta ana hatlarıyla belirtilen dinamik programlama yönteminden önce gelir .

Ayrıca bakınız

Referanslar

Dış bağlantılar

Knuth'un algoritması

Diğer sözcük kaydırma bağlantıları