Postscript

 

Postscript (PS), Adobe tarafından geliştirilmiş vektörel çizim dilidir. PS dosyalar jpg, tiff gibi bir çok piksel bazlı formatda olduğu gibi kullanıcılar tarafından içi okunamayan binary dosyalar değildir. Çizimler ascii (text) olarak yazılan komutlar ile gerçekleştirilir. PS yorumlayıcı denilen programlar bu komutları okuyarak ekrana veya yazıcıya resmi yönlendirirler. ASCII bir dosya olması nedeniyle boyutları çok büyük olabilir. Örneğin GMT ile çizdiğiniz basit bir kıyı çizgisi haritası küçük bir dosya boyu oluştururken. Aynı bölgeyi SRTM veri kullanarak çizdiğinizde dosya bazen yüzlerce Mb olabilir. Bunun nedeni SRTM de çizimde kullanılacak çok daha fazla veri olmasıdır. Eğer bu iki harita aynı büyüklükte çizilmiş ise (örneğin 10 cm x 5 cm) her ikisininde jpg dosyaları yaklaşık aynı boyutta olacaktır.

PS dosyaların çok yer kaplaması nedeniyle Encapsulated Postscript (EPS) formatı günümüz çizim programlarında daha çok tercih edilir. Ancak her iki formatdaki dosyaların temel giriş kısımları aynı öelliklere sahiptir. Çizim komutlarını değiştirmeden PS veya EPS içinde değişiklikler yaparak çizimle oynamak mümkündür. Ancak bunu acil durumlarda ve GMT komutlarını tekrar işleyemeyeceğimiz zamanlarda yapmak daha doğrudur.

Burada GMT ile oluşturulmuş bazı PS/EPS dosyalar içinden parçalar gösterilerek ne gibi değişikliler yapabileceğimize örnekler vereceğiz. İleri uygulamalar için internetten çok falza sayıda PS/EPS dökümantasyonu bulabilirsiniz.

Örnekler kısmında verilen XY grafiği için üretilmiş EPS dosyası (XYgraf.ps.txt) üzerinde çalışalım:

Dosyanın en başında açıklamalar kısmı bulunur. %% ile başlayan tüm satırlar açıklama ve bilgi amaçlı satırlardır. Çizim üzerinde etkisi yoktur. Buradaki önemli noktalardan biri  %%BoundingBox:  (kısaca BB olarakda isimlendirilir. olarak belirtilen ve çizimin kağıt üzerinde hangi noktalar arasında kaldığını (sınırları) gösteren kısımdır. Bu değerler pisel değil, point (pt) cinsindendir (1cm=28.35pt). Genelde GMT çıkışlarında (aşağıdaki gibi) bu kısım boştur. Ancak LaTeX gibi bazı programları kullanacaklar için BB çok önemlidir. Çizim sınırı BB ile tanımlandığından LaTeX döküman içine şekli bu bilgiye göre koyar.

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: (atend)
%%Title: GMT v3.4 Document from psxy
%%Creator: GMT
%%For: onur
%%DocumentNeededResources: font Helvetica
%%CreationDate: Fri Apr 15 15:24:26 2005
%%LanguageLevel: 1
%%DocumentData: Clean7Bit
%%EndComments

 Sınırları belli bir çizim için örnek bir BB satırı şöyle olabilir:                %%BoundingBox: 50 391 552 709

Çizimin sol alt köşesi X ve Y değerleri 50 ve 391, sağ üst köşe X ve Y değerleri 552 ve 709'dur. Point değerleri gv (linux), GSview (win) gibi programlarda farenin şekil üzerinde dolaştırılmasıyla gösterilir.

Eğer dosyada BB değeri tanımlanmış ise Corel gibi bazı çizim programları bunu algılayamamakta ve hata oluşturmaktadırlar. Örneğin bir PS/EPS dosyasını Corel'a çağırdığınızda çizim gri bir alan olarak yerleştiriliyorsa, dosya içindeki BB satırının silinmesi gerekir.

Daha sonraki kısımda çeşitli kısaltmalar görülür. Her program bu kısımda kendisine özgü kısaltmalar yapar, bunun bir standartı yokur. Burada amaç uzun PS komutlarının çizim sırasında çok daha kısa olarak kullanılmasıdır. Böylece dosya hacminde önemli bir küçülme sağlanır. Aşağıda  setgray load def   komutu A olarak kısaltılmıştır. Bundan soraki tüm A komutu karşılığındaki gerçek PS komutu anlamına gelir.

/A /setgray load def
/B /setdash load def
/C /setrgbcolor load def
....
/F0 {/Helvetica Y} bind def
/F1 {/Helvetica-Bold Y} bind def
....

Aynı şekilde F0 ve F1 ifadeleri Helvetica ve Helvetica-Bold font tanımlamalarını yapar. Eğer dosya içindeki tüm F0 kelimeleri F1 ile değiştirilirse (yada bu kısaltma satırında F0 ile F1 yer değiştirilirse) normal Helvetica fontlar kalın (bold) olarak düzenlenir.

Örnekler için  XY grafiği örneğinin ilk kısmını kullanalım. Burada eksen isimleri normal Helvetica ile yazılmıştır.  XYgraf.ps.txt dosyasının 1358. satırında bulunan

900 337 M 100 F0 (Derinlik \(km\)) E -2 div 0 G Z

komutu "Derinklik (km)" kelimesini yazar (sol resim). Satırı aşağıdaki gibi değiştirirsek ve dosyayı saklarsak sağdaki görüntü oluşur.

900 337 M 100 F1 (h \(km\)) E -2 div 0 G Z

           

 

Her bir GMT çizim komutu PS/EPS dosyasına kendi çıkışını yazarken öncelikle hangi komut ile alt satırlarda kalan kodun oluşturulduğunu belirten bir açıklama ilave eder. Örneğin yukarıda verilen grafik PS dosyada  272. satırdan başlayıp 1572. satıra kadar uzanan bir komut dizi ile çizilir. Bu parçanın başında aşağıdaki açıklama bilgisi yer alır.
 

%
% PostScript produced by:
%
%% psxy -JX3/-3 -R4/9/0/400 -H1 -B1f0.1:B@!\310uy@!\310ukl@!\310uk:/50f10:Derinlik (km):NW 
%% -Sc0.1 -W1 -G0/190/255 -P -X1 -Y7.5 -K 

1573. satırdan mavi daireler içine yerleştirilen + sembollerinin çizimi başlar. Bu çizimler dosyanın baş kısmındaki /X tanımlaması ile yapılır. + işaretlerinin çizgi kalınlığı en başta genel tanımlaması yapılan /W yardımı ile oluşturulur. + işaretleri için çizgi kalınlığı tanımı 1577. satırdaki    S 1 W   ile yapılır. Buradaki çizgi kalınlığı 1'dir. Bu değeri 10 yaparsak şekil aşağıdaki gibi oluşur.

% PostScript produced by:
%
%% psxy -JX3/-3 -R4/9/0/400 -H1 -Sx0.05 -W1 -O -K
....
....
S 1 W
....

 

Son olarak grafik içindeki "= 291" sayısının yanlış olduğunu ve bunun "= 300" olduğunu düşünelim. PS dosya içinde bu değerin 2512. satırda çizildiğini görürüz.

100 F1 ( = 291 ) Z

291 değerini 300 olarak değiştirip dosyayı saklarsak aşağıdaki şekli elde ederiz.