Yazılım Notlarım etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Yazılım Notlarım etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

15 Aralık 2020 Salı

KökTörük Yazısınıŋ Evrensel Kodlarınıŋ Standardlaştırılması

Her hakkı saklıdır.

Unikod Kurultayı KökTörük üsügleri için özel bir kod aralığı olmasını 2008'de kabul ėtti. Kod aralığı: 10C00-10C48. Bu aralıktaki harfler "sağdan sola" yazılacak şekilde Unikod Kurultayı tarafından belirlendi.
Unikod konsorsiyumu Orhun ve Yenisey üsüglerine toplam 73 kod tanımlarken sözcük ayracı (:) için bir kod tanımlamamıştır; halbuki sözcük ayracı bu yazı için olmazsa olmazdır. Buna ilâveten, bu yazıyı bizim gibi günümüzde kullanmak isteyenler için nokta, ters soru işareti, ünlem vs de yoktur.

KökTörükçeyle ilgili klavye ve çevirici yazılımlarını geliştirirken bu noktalama işâretlerine ihtiyaç duyduğumuzdan dolayı bunları mevcûd karakterlerden tamamlamaya çalıştık. Tamamlarken ilk baştaki ölçütümüz Android ve IOS sistem fontlarında estetik görünmesiydi. Ama sonrasında sorunlar yaşamağa başladık.

Ters soru işareti (⸮) için öŋce U+061F soŋra U+2E2E kullandık.

Sözcük ayracı için bilinen (:) kullanmak istemedik çünkü aşağıda kalıyor, üsügleri ortalamıyordu. Aynı şekilde nokta için bilinen (.) istemedik çünkü yine zeminde bir nokta bu yazı için uygun değildi, harfleri ortalamalıydı. Geçen altı yıl boyunca çok sayıda karakter seçenekleri deŋedik ve türlü türlü sorunlarla karşılaştık.

Özellikle sözcük ayracı ve nokta bizi çok yordu. Yaşadığımız sorunlardan ėdindiğimiz tecrübelerle aday karakterleri aşağıdaki testlerden geçirdik:
1 - Windows sistem fontunda KökTörük üsügleriniŋ ve sözcükleriniŋ doğru sırada görünmesini bozmaması
2 - Android sistem fontunda KökTörük üsügleriniŋ ve sözcükleriniŋ doğru sırada görünmesini bozmaması
3 - Microsoft Office Word'de, sağdan sola ilerleyen yazı sisteminde noktalama işâretinden soŋra gelen, sola yazılması gereken sözcüğü sağa atmaması
4 - Android'de, sağdan sola ilerleyen yazı sisteminde noktalama işâretinden soŋra gelen, sola yazılması gereken sözcüğü sağa atmaması
5 - Microsoft Office Word'de, pdf'e çevirirken noktalama işaretleriniŋ fontunuŋ değişmemesi
6 - Microsoft Office Word'de, sözcükleri yok ėtmemesi
7 - Geliştirdiğim özel bir fontla noktalama işaretleriniŋ Android'de test ėdilmesi

Buna göre sözcük ayracı seçeneklerinde şu sorunları yaşadık:
“∶” U+2236 (Ratio) : Word'de pdf'e çevirince ayracıŋ fontu değişiyor. Madde# 5.
“⁚” U+205A (Two Dot Punctuation) : Word'de pdf'e çevirince ayracıŋ fontu değişiyor. Madde# 5.
“׃” U+05C3 (Hebrew Punctuation Sof Pasuq) : Word'de sözcüğü sağa atıyor. Madde# 3.
“։” U+0589 (Armenian Full Stop) : Word'de sözcüğü sağa atıyor. Madde# 3.
“꞉” U+A789 (Modifier Letter Colon) : Word'de sözcüğü sağa atıyor. Madde# 3.
“᠄” U+1804 (Mongolian Colon) : Word'de sözcüğü sağa atıyor. Madde# 3.
“︰” U+FE30 (Presentation Form For Vertical Two Dot Leader) : Word'de sözcüğü sağa atıyor. Madde# 3.
“﹕” U+FE55 (Small Colon) : Word'de sözcüğü sağa atıyor. Madde# 3.
“˸” U+02F8 (Modifier Letter Raised Colon) : Yüksek konumlu.
“:” U+003A (Colon) : Kullanmağa karar vėrdik.

Nokta seçeneklerinde şu sorunları yaşadık:
“・” U+FF65 (Halfwidth Katakana Middle Dot) : Android'de sözcüğü sağa atıyor. Madde# 4.
“ꞏ” U+A78F (Latin Letter Sinological Dot) : Word'de sözcüğü sağa atıyor. Madde# 3.
“﹒” U+FE52 (Small Full Stop) : Word'de sözcüğü sağa atıyor. Madde# 3.
“∙” U+2219 (Bullet Operator) : Word'de sözcükleri yok ėdiyor. Madde# 6.
“·” U+0387 (Greek Ano Teleia) : Word'de sözcükleri yok ėdiyor. Madde# 6.
“·” U+00B7 (Middle Dot) : Word'de sözcükleri yok ėdiyor. Madde# 6.
“⋅” U+22C5 (Dot Operator) : Android'de güzel duruyor ama Word'de sözcükleri yok ėdiyor. Madde# 6.
“‧” U+2027 (Hyphenation Point) : Word'de nokta+enter gibi davranıyor.
“⸱” U+2E31 (Word Separator Middle Dot) : Kullanmağa karar vėrdik.

Yaklaşık bir haftadır tüm yazılımlarımızı kullanmağa karar vėrdiğimiz kodlara göre güncellemeğe çalışıyoruz...

31 Temmuz 2019 Çarşamba

Bitişik Yazı Sistemlerinde Fontlar

Her hakkı saklıdır.

1996'dan bu yana font yapıyorum. Latin, KökTürük, İbrani, Kiril gibi harfleriŋ ayrık olduğu fontlarıŋ yapımı çok kolay. Arab ve Moŋgol gibi harfleriŋ birleşik olduğu fontlarda birleşme kurallarınıŋ tanımlanması gerekiyor. Buna ilâveten, Arab yazısında hat sanatı gereği, bir harfiŋ başta yazılışınıŋ farklı çeşidleri de olabiliyor (veya ortada ve soŋda). Aşağıdaki resimde ن harfiniŋ başta yazılışınıŋ bėş farklı çeşidini görüyorsuŋuz. Hangi harften öŋce hangi tarzıŋ basılacağını OpenType Glif (Glyph) Yėr Değiştirme Tablosunda tanımlanması gerekiyor. Bundan dolayı Arabca, Moŋgolca gibi bitişik yazı sistemleri için font içerisinde bu tanımlamalarıŋ kod hâlinde yazılması gerekiyor.

Bazı birleşik Arab glif örnekleri

Bazı birleşik Moŋgol glif örnekleri


Fontuŋ kod kısmından bir bölüm

Günümüzde işletim sistemleri (PClerde Windows, Linux, Mac'larda MacOS, telefonlarda Android, IOS) farklı yazı sistemlerini göstermek için içinde birden fazla font bulundurur. Örneğin Android https://fonts.google.com/ daki fontları kullanır; Hindce yazıyı göstermek için Hindce fontu, Tibetçe yazıyı göstermek için Tibetçe fontu, kezâ Arab, İbrani, KökTörük, Moŋgol, Çin, Kore, Bengal, Tay vs metinlerini göstermek için onların fontunu kullanır. Örneğin MS Word'de Arial veya Times New Roman ile yazı yazarken metne Tibetçe bir yazı kopyalarsaŋız yazınıŋ fontu otomatik Himalayan.ttf olur, çünkü Tibet harfleri bu fontta vardır. Android telefonumdaki Latin, Arab, Moŋgol, KökTörük, İbrani, Çin/Japon, Kore yazı tipleri bir hattat olarak hoşuma gitmeyince sayısal hattatlığa soyundum ve farklı yazı sistemleriniŋ eŋ çok sevdiğim fontlarını tek bir font içinde dėrleyip telefonuma sistem fontu olarak yükledim (sadece telefonu köklemeden fontunu değiştirme işlemi iki yıla yakın zaman aldı; güvenlikten dolayı Android bunu engelliyor). Tek sorun Arabca ile Moŋgolca harfleri aynı font içine başarılı şekilde gömemiyordum. Fontuŋ içine bitişik yazı sisteminde harfleriŋ birleşme kurallarını tanımlayan kod gömülmesi gerektiğinden dolayı (bitişik olmayan harfli Latin, Kiril, KökTörük, Çin/Japon, Kore, İbrani, Tay gibi yazı sistemlerinde bu sorun yoktur) bitişik yazı sistemlerinden (Arabca, Moŋgolca, Süryanice) birden fazlasını bulunduran bir font dünya üzerinde tahminimce yapılmamıştır. Bunuŋ sebebi sanıyorum ki bu yazı sistemleriniŋ hepsine hâkim tek bir teknik eleman olmayışıdır. Ama bu da telefonumuzda istemediğimiz estetikte fontları kullanmak zorunda bırakıyor bizi. Siz Latin harfleriŋizden memnun olabilirsiŋiz ama Bir Arab, Çinli, Koreli, Moŋgol, Tibetli telefonunda kendi yazısınıŋ fontunu sevmeyebilir. 8/5/2020 itibariyle yaklaşık 15 aydır çözmeye çalıştığım sorunu çözdüm ve iki farklı bitişik yazı sistemi olan Arabca/Osmanlıca harfleri ile Moŋgol/Eski Uygur harflerini aynı font içinde dėrleyebildim ve telefonuma yükleyebildim. Bu yazı sistemleriniŋ hepsini bildiğim ve kullandığım için bu ihtiyacı hiss ėdiyordum; siz ėtmeyebilirsiŋiz. Kendim geliştirdiğim KökTürük, Latin/Kiril, Çin/Japon, Kore, Arab/Yeŋi Uygur/Peştu/Urdu, Kore, İbrânî, Hind, Moŋgol/Mançu yazı sistemleriniŋ eŋ sevdiğim hatlarını içeren tek bir fontuŋ görünümü aşağıdaki gibidir:

6 Mayıs 2019 Pazartesi

Araba Bilgisayarında KökTörükçe

Her hakkı saklıdır.

Arabamıŋ bilgisayarı doğal olarak KökTürük harflerini göstermiyordu, yėrine kutucuklar basıyordu. Uzun uğraşlar soŋucu kendi KökTürükçe 2004 fontumu arabamıŋ bilgisayarına yükleyebildim.

2 Ekim 2018 Salı

Sayısal Ortamda İlk KökTörükçe Yazışma

KökTürkçeniŋ Unicode.org tarafından desteklenmesiyle, artık Orhun ve Yenisey üsüklerini bilgisayarda, telefonda kullanabiliyoruz. Aşağıdaki yazışma, herhalde sayısal ortamdaki ilk KökTürkçe yazışmadır (2018), hem de eŋ doğru yazım kurallarıyla. Berkant Parlak arkadaşımız Türk Yazısı kitabınıŋ yazarıdır ve KökTürk üsükleriniŋ imlâsını eŋ doğru şekilde bilen az sayıda kişilerden biridir.

20 Eylül 2017 Çarşamba

Android 8 (Oreo) ve KökTörükçe

Nihayet Android 8.0 (Oreo)'dan itibaren KökTürkçeyi görebileceğiz.

Türkolog arkadaşlar "Tuğrul iyi ki Türkolog değil Bilgisayar Mühendisi olmuşsuŋ, yoksa KökTürkçeyi bilgisayar dünyasına kim taşıyacaktı?" diyorlar.

Dünyanıŋ ilk KökTürkçe fontunu 1996'da yapmıştım ve daha soŋrasında yėdi font daha (2004, 2007, 2015, 2016, 2017, 2019, 2021) yaptım: https://kok-turk.blogspot.com/2014/12/kokturukce-fontlarm.html.

1995'de KökTürkçeyi yazılımla ilk kez gerçekleyerek yüksek lisans tezimde kullanmamı (https://kok-turk.blogspot.com/2014/12/tonyukuk-robot-kolu.html) saymazsak 2010'dan bu yana öğrencilerimle beraber KökTürkçeyle ilgili 17 yazılım yaptık: https://kok-turk.blogspot.com/2017/01/gokturkce-laboratuvar.html

Geliştirdiğim Unicode tabanlı KökTürkçe fontları, sistem fontunu değiştirmeğe izin vėren Android 4 (Kit Kat) ve 5 (Lollipop) 'e HiFont, iFont gibi yazılımlarla uygulayarak Android'de KökTürkçeyi kullanan ilk kişi olmuştum (https://kok-turk.blogspot.com/2015/03/tamgadroid.html). KökTürkçeyi sürekli yanımda olan telefonumda görebilmek baŋa büyük bir haz vėrmişti. Ama maalesef bu mutluluğum çok uzun sürmedi. Zira Android 6 (Marshmallow) ve 7 (Nougat) sistem fontunu değiştirmeye izin vėrmiyordu ve artık KökTürkçeyi Android'iŋ bu sürümlerinde göremiyorduk.

Apple, IOS 9.0 sürümünden itibaren; Microsoft, Windows 8.0 sürümünden itibaren KökTürk üsüklerini sistem fontlarında göstermeğe başlamasına rağmen, Android'de görememek beni deli ėdiyordu ve yaklaşık 1.5 yıldır hem Android'iŋ üreticisi Google'a hem de Samsung'a defalarca e-posta yazdım: https://kok-turk.blogspot.com/2016/06/androidde-gokturkce-destegi-icin.html

Herhalde baskılarım netice vėrdi ki Android 8 (Oreo)’iŋ sistem fontu KökTürkçeyi destekliyor. Aşağıda Android 7 (Nougat) ve 8 (Oreo)'den ekran görüntülerini görebilirsiŋiz:

Android 6 (Marshmallow) ve 7 (Nougat):

Android 8 (Oreo):

15 Şubat 2017 Çarşamba

İlk KökTörükçe Programımı Yazdığım Bilgisayar (1990)

Göktürkçeyle ilgili ilk programımı Casio fx-8500'de 1990'da yazmıştım. 1990'da bir evde bilgisayar olması büyük bir lükstü. Düşünüŋ 1994'te Trabzon'da bilgisayar satan sadece 3 yér vardı (tabi hantal masaüstü bilgisayarlar) ve fiyatlar $2500 dı; 1990'ı siz hayâl édiŋ artık. 1990'da satın aldığım bu yarı hesap makinesi, yari mini bilgisayar benim için büyük bir nimetti. Programlanabiliyordu ve grafik ekranında Göktürkçe görebilmek için ilk programımı bu makinede yazmıştım. Baktım, programı silmişim :-( Arka kapağını açtıktan soŋra iç kısma, ta o zamanlar Göktürkçe bir not bile koymuşum :-)

6 Eylül 2016 Salı

Bilgisayarda KökTörükçe Yazmak

Her hakkı saklıdır.

Yaptığım dünyanıŋ ilk KökTürkçe fontu (1996) ile artık MS Office uygulamalarıyla bilgisayarda KökTürkçe yazabiliyordum. İkinci font 1999’da Erk Yurtsever tarafından yaptırıldı. Soŋra 2004’te ben ikinci fontumu yaptım. Böylelikle KökTürkçe, font kullanan bilgisayar yazılımlarında kullanılmağa başlanmış, belgelerde ve resmlerde görmeğe başlamıştık. Ama bu KökTürkçe fontlar Latin tabanlı fontlardı, yani Latin harfleriniŋ kodlarını kullanıyorlardı.

Bilgisayar fontlarında soldan sağa veya sağdan sola yazmak fonta aid değil, fonttaki harfe aid olan özelliktir. Mesela Times New Roman fontu kullanırken Latin harfleri soldan sağa gider; aynı fontuŋ Arab harfleri sağdan sola gider.

İnternette bulacağıŋız çoğu KökTürkçe font Latin tabanlı KökTürkçe fontlardır. Yani Latin harfleriniŋ karşılığına KökTürk üsükleriniŋ şekli karşılık düşürülmüştür ki siz klavyeden kolayca KökTürkçe yazabilesiŋiz. Siz klavyede K harfine bastığıŋızda, klavye Latin K harfiniŋ kodunu gönderir; bilgisayar siziŋ Latin K harfine bastığıŋızı zann ėder; font içinde Latin K’ya karşılık KökTürk üsüğü grafiğini basar. Burada olay Latin harfleriniŋ kod aralığında gerçekleşir.

Unikod konsorsiyumu KökTürk (Old Turkic) üsükleri için özel bir kod aralığı olmasını 2008'de kabul etti: 
http://unicode.org/charts/PDF/U10C00.pdf

Unikod konsorsiyumunuŋ KökTürk (Old Turkic) üsüklerine atadığı kodlar:

Yani artık KökTürk üsükleriniŋ kendi kod aralığı var: 10C00 – 10C48. Bu aralıktaki üsükler sağdan sola yazılacak şekilde Unikod konsorsiyumu tarafından belirlenmiştir. Ben de artık bu avantajı kullanmak için 2014’ten itibaren Unikod tabanlı KökTürkçe fontlar yapmaya başladım.

Kısaca, Word gibi bir kelime işlemcide KökTürkçe yazabilmek için iki seçenek var:

1 - Başta anlattığım gibi Latin harfleriniŋ kodlarına KökTürk üsükleri karşılık düşürülmüş fontları (yani Latin tabanlı KökTürkçe fontları) kullanmak ki bu şekilde sekiz font yapmıştım: 
https://kok-turk.blogspot.com/2014/12/kokturukce-fontlarm.html

Bu yolla KökTürkçe yazabilmek için normal klavyeŋizi kullanabilirsiŋiz. Ama kelime işlemci, siziŋ Latin harfi girdiğiŋizi zann ėdeceği için metin soldan sağa ilerleyecek; bunu siziŋ düzeltmeŋiz gerekecek. Yani bu yöŋtemiŋ tek faydası: mevcud klavyeŋizden bu tür fontlarla KökTürkçe yazabilmeŋiz.

2 - Unikodda KökTürkçe'ye ayrılmış kod aralığına KökTürk üsüklerini karşılık düşüren bir font kullanmak ki ben bu fontlara Unikod Tabanlı KökTürkçe font diyorum; bu durumda yazı sağdan sola ilerler ve herhangi bir düzenleme yapmaŋıza gerek kalmaz. Bu şekilde yaptığım sekiz fontu: 
https://kok-turk.blogspot.com/2014/12/kokturukce-fontlarm.html adresinden indirebilirsiŋiz. Windows 10 ile beraber gelen Segoe UI Historic, Google'uŋ ücretsiz dağıttığı Noto Sans Old Turkic, internetten bulabileceğiŋiz Quivira, Turik fontları da Unikod tabanlı KökTürkçe fontlardır. Bu durumda üsükleriŋ kodlarını mevcut klavyeden giremezsiŋiz, bizleriŋ hazırladığı sanal klavye yazılımlarına ihtiyaç duyarsıŋız. Bu klavye yazılımlarla 10C00-10C48 aralığında kod girebilirsiŋiz.

Android Tabanlı KökTürkçe Klavye (Android 7 ve öŋcesi): 
https://kok-turk.blogspot.com/2015/06/android-tabanl-gokturkce-klavye-old.html

Android Tabanlı KökTürkçe Ekran-üstü (OnScreen) Klavye (Android 8 ve soŋrası): 
https://kok-turk.blogspot.com/2018/05/android-tabanl-ekran-ustu-on-screen.html

Web Tabanlı KökTürkçe Klavye: 
https://kok-turk.blogspot.com/2016/12/web-gokturkce-klavye.html

Windows Tabanlı KökTürkçe Klavye: 
https://kok-turk.blogspot.com/2016/01/windows-tabanl-gokturkce-klavye-old.html

KökTürk yazısınıŋ yazım kurallarını bilmiyorsaŋız çeviriciler işiŋize daha çok yarayacaktır:

Web Tabanlı KökTürkçe Çevirici ĖŊ: 
https://kok-turk.blogspot.com/2016/01/web-tabanl-gokturkce-cevirici-e.html

Android Tabanlı KökTürkçe Çevirici ĖŊ: 
https://kok-turk.blogspot.com/2015/11/android-tabanl-gokturk-yaz-cevirici-20.html

IOS kullanıcıları Unikod tabanlı KökTürkçe yazmak için web tabanlı uygulamaları kullanabilirler.

12 Haziran 2016 Pazar

Android'de KökTörükçe Desteği için Google'a ve Samsung'a Yazdığım E-posta

Apple'ıŋ IOS 9.0 sürümünden sonra IPhone ve IPad kullanıcıları Göktürk harflerini görebilirken Android kullanıcıları hâlâ göremiyor (ve ben görebilmek için birçok entrika üretmek zorunda kalıyorum). Ben de Google'uŋ ve Samsung'uŋ font bölümüne defalarca aşağıdaki e-postayı yazdım:

Subject: Old Turkic support (10C00 - 10C48)

Dear Google, Dear Samsung,

Starting with Unicode 5.2, Old Turkic script is included in Unicode standard: http://unicode.org/charts/PDF/U10C00.pdf. Windows 10's Segoe UI Historic, Google's Noto Sans Old Turkic (https://www.google.com/get/noto/#sans-orkh) and many other fonts support Old Turkic. The Old Turkic font from Noto (NotoSansOldTurkic-Regular.ttf) has been available in AOSP since Marshmallow: https://android.googlesource.com/platform/external/noto-fonts/+/64b067c2f441336f3796d37603d9880a1bfadfd8. Even though Old Turkic has been in the AOSP distribution, but it has not been included in the default configuration actually shipping on devices. So Old Turkic characters cannot be shown unless vendors explicitly opt-in.

I was using my custom Unicode Old Turkic font in KitKat, but I can no longer change the system font with a custom font in both Marshmallow and Nougat.

Noto Sans Old Turkic is free by Google and Samsung can add it to system font.

While Iphone and IPad show Old Turkic characters after IOS 9 update, Samsung and other Android phones still have not being able to show.

So, please fix this problem by adding Old Turkic characters to Samsung system font or Samsung Sans font as soon as possible (in Firmware updates or Samsung Sans font in Samsung market)

Thank you,
Best Regards,

Tuğrul Çavdar, Ph. D.
Asistant Professor
Department of Computer Engineering
Faculty of Engineering
Karadeŋiz Technical University
Trabzon 61080 Türkiye

The following script was written with Old Turkic:

𐱃𐰆𐰍𐰺𐰞:𐰲𐰉𐰑𐰺
𐰑𐰆𐰲𐰦:𐰑𐰸𐱃𐰆𐰺
𐰋𐰃𐰠𐰏𐰃:𐰽𐰖𐰺:𐰢𐰜𐰦𐰾𐰠𐰏𐰃:𐰋𐰇𐰠𐰢𐰇
𐰢𐰜𐰦𐰾𐰠𐰚:𐰯𐰴𐰇𐰡𐰀𐰾𐰃
𐰴𐰺𐰀:𐰓𐰭𐰔:𐱅𐰚𐰤𐰚:𐰇𐰤𐰃𐰋𐰼𐰾𐱅𐰀𐰾𐰃
𐱃𐰺𐰉𐰔𐰆𐰣:𐱅𐰇𐰼𐰜𐰃𐰘𐰀

CV : http://ceng2.ktu.edu.tr/~ulduz : 𐰇𐰔𐰏𐰲𐰢𐱁
Personal Blog : https://kok-turk.blogspot.com : 𐰚𐰃𐱁𐰃𐰾𐰠:𐰉𐰞𐰆𐰍

3 Haziran 2016 Cuma

KökTörükçesini Göremeyen Var mı?

Taŋrı güç vėrdiği için babam kaganıŋ ordusu kurt gibiymiş, düşmanı koyun gibiymiş.


Taŋrı buyurduğu için ülkelileri ülkesiz komuş, kaganlıları kagansız komuş, düşmanları itaatkâr kılmış, dizlilere diz çöktürmüş, başlılara baş ėğdirmiş.


Türk, Oğuz beyleri, milleti işidiŋ! Üstte gök basmasa, altta yėr delinmese, Türk milleti, ülkeŋi, töreŋi kim bozabilecekti? Türk milleti vazgeç, pişman ol!


Babamızıŋ, amcamızıŋ kazandığı milletiŋ adı yok olmasın diye Türk milleti için gėce uyumadım, gündüz oturmadım.

21 Ocak 2016 Perşembe

KökTörükçeyi Desteklemeyen Bilgisayarlarda/Telefonlarda Bile Zorla Gösteriyoruz Artık :-)

Buyuruŋ!

Geliştirdiğimiz yeŋi bir yöŋtemle artık bilgisayarıŋız veya telefonuŋuz Göktürkçeyi destekleyen bir font içermese bile Göktürkçeyi web sitelerinde görebileceksiŋiz.
Tuğrul Çavdar ve Salih Topçu

4 Şubat 2015 Çarşamba

Bilgisayarda Hazırlanmış İlk KökTörükçe Yazılarım (1996)

1996'da dünyanıŋ ilk Göktürkçe fontunu bir aylık uğraşı soŋucunda yaptığımda artık bilgisayarda da Göktürkçe yazabilmeniŋ hazzını tadmaya başlamıştım. Odamıŋ duvarında olan bu yazıyı ta o zamanlar yazmıştım. Tüm dünya lisanları arasında Göktürkçe de bilgisayarda yazılabiliyordu artık. Bu, o dönemde harika bir duyguydu. Bu font şu aŋda insanlar tarafından eŋ çok kullanılan Göktürkçe fonttur.

Bugün eski belgelerimi karıştırırken nostaljik bir tablo buldum. Dünyadaki ilk GökTürkçe fontu 1996'da hazırlayınca öylesine sevinmiştim ki. O zamana dek GökTürkçe herşeyi elle yazıyordum. 1996'daki bilgisayar imkânları bugüne göre çok ilkeldi. Windows95 yeŋi çıkmıştı. 1996'da bir Font Editörü bulabilmiş, ve bir ayda KokTuruk1.ttf fontunu yapabilmiştim. Fontu yapar yapmaz hangi tuşa basıldığında hangi harfiŋ çıktığını gösterir aşağıdaki tabloyu hazırlamıştım:
Daha soŋraları KokTuruk1.ttf fontunda güncellemeler yaptığım için bu karşılıklarıŋ bazıları değişti. Şu aŋ blogda olan KokTuruk1 fontu diğer 3 fontla aynı harf koduna sahib olacak şekilde yeŋiden güncellendi. Yeŋi karşılıkları https://kok-turk.blogspot.com.tr/2014/12/kokturukce-fontlarm.html bölümünde bulabilirsiŋiz.
1996 öŋcesinde beŋzer tablolar hazırlıyor ama GökTürkçe harfleriŋ yerlerini boş bırakıyor, çıktı aldıktan soŋra GökTürkçe harfleri elle yazıyordum:)
Yakın zamana kadar (2000leriŋ soŋu) Türk Dili Bölümü akademisyenleri Göktürkçe ile ilgili makale, tez hazırlayacakları zaman yerlerini boş bırakıyor, soŋra elle dolduruyorlardı. Kendi üniversitemdeki bazı akademisyenlere fontlarımı vererek onları bu dertten kurtarmıştım:)

30 Aralık 2014 Salı

Tunyukuk Robot Kolu

Her hakkı saklıdır.

Yüksek lisans tezimde robot kolu yapmıştım (1994-1997). Çalışmanıŋ mekanik, elektronik ve yazılım ayağı vardı. O zamanlar nesneye yöŋelik programlama dilleri yoktu. MS-DOS altında çalışan ilkel derleyicilerde kod yazıyorduk. Mekanik ve elektronik yapısını tasarlayıp gerçekledikten soŋra, robotuŋ bilgisayardaki arayüzünde tüm ikonları, bevelleri, panelleri, gölgelendirmeleri  kendim tasarlamıştım. Arayüzde KökTörükçe de kullanmak istedim ve herbir KökTörük üsüğünü piksel piksel bir başlık (header) dosyasında tasarladım ve robot kolunuŋ kumanda arayüzünde kullandım. Üsükleriŋ tasarımı iki haftamı almıştı. Artık Turbo C'de KökTörükçe yazabiliyordum (1995). Tüm koduŋ sadece KökTörük üsüklerinden sorumlu kısmı KOKTURK.H başlık dosyasınıŋ içeriğini resmiŋ altında vėriyorum.


KOKTURK.H (1995)
/* This header file was prepared by Ulduz Tu§rul €AVDAR to use the Alphabet of K”ktrk in C or C++ applications.  May 2, 1996

     CHARACTER TABLE
  ---------------------------------------------------------------------
  a =   a,e      i =   ,i      o =   o,u      F =   ”,      Y =  (a)y
  y =  (e)y      B =  (a)b      b =  (e)b      c =   ‡,c      f = i‡,ic
  D =  (a)d      d =  (e)d      G =  (a)g      g =  (e)g      k =  (e)k
  q = ”k,k      K =  (a)k      w =    k      W = ok,uk      L =  (a)l
  l =  (e)l      x = lt,ld      m =     m      N =  (a)n      n =  (e)n
  ¤ =    ng      X =    ny      Q = n‡,nc      h = nd,nt      p =     p
  R =  (a)r      r =  (e)r      S =  (a)s      s =  (e)s      v =     Ÿ
  T =  (a)t      t =  (e)t      z =     z      V =     :
  1 =     1      2 =     2      3 =     3      4 =     4      5 =     5
  6 =     6      7 =     7      8 =     8      9 =     9      0 =     0
  ! =     !      + =     +      / =     /      = =     =      - =     -
  . =     .      % =     %      { =     }      } =     {      * =     *
  ( =     )      ) =     (      : =     :      @ =     @      ? =(inv)?
  ; =(inv);      , =(inv),      \"=     "

*/

int x,y,b;

void kharf(char code)
  {
  switch (code)
    {
    case 'a':line(x,y+3,x-3,y);                    //  a,e
     line(x-3,y,x-3,y+10);
     line(x-3,y+10,x-6,y+7);
     x-=9;
     break;
    case 'i':line(x,y+3,x-3,y);                    //  ,i
     line(x-3,y,x-3,y+10);
     x-=6;
     break;
    case 'o':line(x-5,y,x,y+5);                    //  o,u
     line(x,y+5,x-5,y+10);
     x-=8;
     break;
    case 'F':line(x,y,x,y+5);                      //  ”,
     line(x,y+5,x-5,y);
     line(x-5,y,x-5,y+10);
     x-=8;
     break;
    case 'Y':line(x-5,y,x-5,y+10);                 //  (a)y
     arc(x-5,y+5,270,90,5);
     x-=8;
     break;
    case 'y':circle(x-3,y+3,3);                    //  (e)y
     arc(x-5,y+5,270,0,5);
     x-=8;
     break;
    case 'B':arc(x-3,y+7,135,90,3);                //  (a)b
     arc(x,y+1,160,230,4);
     x-=9;
     break;
    case 'b':line(x-6,y+10,x,y+3);                 //  (e)b
     line(x,y+3,x-3,y);
     line(x-3,y,x-6,y+3);
     line(x-6,y+3,x,y+10);
     x-=9;
     break;
    case 'c':line(x,y+10,x-3,y+6);                 //  ‡,c
     line(x-3,y+6,x-6,y+10);
     line(x-3,y+6,x-3,y);
     x-=9;
     break;
    case 'f':line(x-3,y+10,x-3,y);                 //  i‡,ic
     line(x-3,y+5,x,y);
     line(x-3,y+5,x-6,y);
     x-=9;
     break;
    case 'D':line(x-3,y,x,y+3);                    //  (a)d
     line(x,y+3,x-2,y+5);
     line(x-2,y+5,x,y+7);
     line(x,y+7,x-3,y+10);
     line(x-6,y,x-3,y+3);
     line(x-3,y+3,x-5,y+5);
     line(x-5,y+5,x-3,y+7);
     line(x-3,y+7,x-6,y+10);
     x-=9;
     break;
    case 'd':line(x,y,x-6,y+10);                   //  (e)d
     line(x-6,y,x,y+10);
     x-=9;
     break;
    case 'G':line(x-3,y+6,x-3,y+10);               //  (a)g
     arc(x,y+2,90,270,2);
     arc(x-6,y+2,270,90,2);
     x-=9;
     break;
    case 'g':line(x-4,y,x-6,y+6);                  //  (e)g
     line(x-4,y,x,y+3);
     line(x-4,y+4,x,y+7);
     arc(x-1,y+5,180,270,5);
     x-=9;
     break;
    case 'k':line(x-4,y,x,y+2);                    //  (e)k
     line(x,y+2,x,y+10);
     line(x-4,y+3,x,y+5);
     x-=7;
     break;
    case 'q':line(x-5,y,x-5,y+10);                 //  ”k,k
     line(x-5,y,x,y);
     line(x,y,x-1,y+3);
     line(x-5,y+6,x,y+6);
//      line(x,y+6,x,y+10);
     arc(x+2,y+8,135,240,3);
     x-=8;
     break;
    case 'K':line(x,y,x,y+10);                     //  (a)k
     line(x,y+6,x-4,y+4);
     arc(x-14,y+5,330,0,10);
     x-=8;
     break;
    case 'w':line(x,y,x,y+10);                     //  k
     line(x,y,x-5,y+5);
     line(x-5,y+5,x,y+10);
     x-=8;
     break;
    case 'W':line(x-3,y,x-3,y+10);                 //  ok,uk
     line(x-3,y+10,x,y+6);
     line(x-3,y+10,x-6,y+6);
     x-=9;
     break;
    case 'L':line(x,y,x,y+10);                     //  (a)l
     line(x,y+10,x-4,y+6);
     x-=7;
     break;
    case 'l':line(x,y,x-3,y+5);                    //  (e)l
     line(x-3,y+5,x-6,y);
     line(x-3,y+5,x-3,y+10);
     x-=9;
     break;
    case 'x':line(x,y,x,y+10);                     //  lt,ld
     line(x-8,y,x-8,y+10);
     line(x,y,x-4,y+5);
     line(x-4,y+5,x-8,y);
     x-=11;
     break;
    case 'm':line(x-5,y,x,y+5);                    //  m
     line(x,y+5,x-5,y+10);
     line(x-8,y+3,x-3,y+8);
     line(x-8,y+7,x-3,y+2);
     x-=11;
     break;
    case 'N':arc(x-5,y+5,290,80,5);                //  (a)n
     x-=8;
     break;
    case 'n':line(x,y,x,y+6);                      //  (e)n
     line(x,y+6,x-4,y+3);
     line(x-4,y,x-4,y+10);
     line(x-4,y+7,x-8,y+4);
     line(x-8,y+4,x-8,y+10);
     x-=11;
     break;
    case '¤':line(x,y,x,y+10);                     //  ¤
     line(x,y+6,x-4,y+2);
     x-=7;
     break;
    case 'X':arc(x-3,y+3,270,90,3);                //  ny
     arc(x-3,y+7,270,90,3);
     x-=6;
     break;
    case 'Q':line(x-3,y,x,y+3);                    //  n‡,nc
     line(x,y+3,x-2,y+5);
     line(x-2,y+5,x,y+7);
     line(x,y+7,x-3,y+10);
     x-=6;
     break;
    case 'h':arc(x-5,y+5,125,55,5);                //  nd,nt
     putpixel(x-3,y+4,getcolor());
     putpixel(x-7,y+4,getcolor());
     putpixel(x-5,y+6,getcolor());
     x-=13;
     break;
    case 'p':line(x,y,x,y+10);                     //  p
     line(x,y,x-3,y+3);
     x-=6;
     break;
    case 'R':line(x,y,x,y+10);                     //  (a)r
     line(x,y+4,x-5,y+6);
     arc(x-12,y+2,330,10,8);
     x-=8;
     break;
    case 'r':line(x,y+3,x-2,y);                    //  (e)r
     line(x-2,y,x-4,y+3);
     line(x-4,y+3,x-6,y);
     line(x-6,y,x-8,y+3);
     line(x-4,y+3,x-4,y+10);
     x-=11;
     break;
    case 'S':arc(x,y+2,90,250,2);                  //  (a)s
     arc(x-3,y+7,270,60,3);
     arc(x,y+1,160,270,5);
     x-=8;
     break;
    case 's':line(x,y,x,y+10);                     //  (e)s
     x-=3;
     break;
    case 'v':line(x,y+4,x-6,y+4);                  //  Ÿ
     line(x-3,y+4,x-1,y);
     line(x-5,y,x-3,y+4);
     line(x-3,y+4,x-3,y+10);
     x-=9;
     break;
    case 'T':line(x-3,y,x,y+3);                    //  (a)t
     line(x-3,y,x-6,y+3);
     line(x-3,y,x-3,y+4);
     line(x-3,y+4,x,y+7);
     line(x-3,y+4,x-6,y+7);
     line(x-6,y+7,x-3,y+10);
     line(x,y+7,x-3,y+10);
     x-=9;
     break;
    case 't':line(x-5,y,x-5,y+10);                 //  (e)t
     line(x-5,y+6,x-1,y+4);
     arc(x+9,y+5,180,210,10);
     x-=8;
     break;
    case 'z':line(x-4,y,x-4,y+10);                 //  z
     line(x,y,x,y+5);
     line(x,y+5,x-8,y+5);
     line(x-8,y+5,x-8,y+10);
     x-=11;
     break;
    case 'V':putpixel(x-1,y+2,getcolor());         //  word separator
     putpixel(x-1,y+8,getcolor());
     x-=5;
     break;
    case '!':line(x-3,y,x-3,y+7);                  //  interjection
     putpixel(x-3,y+10,getcolor());
     line(x-2,y,x-2,y+7);
     putpixel(x-2,y+10,getcolor());
     x-=12;
     break;
    case '+':line(x-1,y+5,x-7,y+5);                //  plus
     line(x-4,y+2,x-4,y+8);
     x-=11;
     break;
    case '/':line(x-1,y,x-6,y+10);                 //  slash
     x-=11;
     break;
    case '=':line(x-1,y+4,x-6,y+4);                //  sign of equality
     line(x-1,y+6,x-6,y+6);
     x-=10;
     break;
    case '-':line(x-1,y+5,x-7,y+5);                //  minus
     x-=11;
     break;
    case '"':line(x-1,y,x-1,y+3);                  //  double quotation mark
     line(x-3,y,x-3,y+3);
     x-=7;
     break;
    case '?':arc(x-2,y+3,30,250,3);                //  inverse question mark
     arc(x-3,y+3,30,250,3);
     line(x-3,y+6,x-3,y+7);
     line(x-2,y+6,x-2,y+7);
     putpixel(x-3,y+10,getcolor());
     putpixel(x-2,y+10,getcolor());
     x-=12;
     break;
    case ';':outtextxy(x,y-5,":");                 //  inverse semicolon
     line(x-3,y+3,x-2,y+1);
     x-=12;
     break;
    case ',':line(x-3,y+6,x-2,y+6);                //  inverse comma
     line(x-3,y+5,x-2,y+3);
     x-=12;
     break;
    case '0':outtextxy(x-2,y-5,"0");               //  zero
     x-=9;
     break;
    case '1':outtextxy(x-2,y-5,"1");               //  one
     x-=9;
     break;
    case '2':outtextxy(x-2,y-5,"2");               //  two
     x-=9;
     break;
    case '3':outtextxy(x-2,y-5,"3");               //  three
     x-=9;
     break;
    case '4':outtextxy(x-2,y-5,"4");               //  four
     x-=9;
     break;
    case '5':outtextxy(x-2,y-5,"5");               //  five
     x-=9;
     break;
    case '6':outtextxy(x-2,y-5,"6");               //  six
     x-=9;
     break;
    case '7':outtextxy(x-2,y-5,"7");               //  seven
     x-=9;
     break;
    case '8':outtextxy(x-2,y-5,"8");               //  eight
     x-=9;
     break;
    case '9':outtextxy(x-2,y-5,"9");               //  nine
     x-=9;
     break;
    case '.':outtextxy(x-3,y-5,".");               //  full stop
     x-=12;
     break;
    case '%':outtextxy(x-6,y-5,"%");               //  per cent
     x-=15;
     break;
    case '}':outtextxy(x-7,y-5,"{");               //  close curly bracket
     x-=13;
     break;
    case ')':outtextxy(x-5,y-5,"(");               //  close parenthesis
     x-=11;
     break;
    case '(':outtextxy(x-6,y-5,")");               //  open parenthesis
     x-=11;
     break;
    case '{':outtextxy(x-8,y-5,"}");               //  open curly bracket
     x-=13;
     break;
    case '*':outtextxy(x-7,y-5,"*");               //  star
     x-=11;
     break;
    case ':':outtextxy(x,y-5,":");                 //  colon
     x-=12;
     break;
    case ' ':outtextxy(x-9,y-5," ");               //  space
     x-=12;
     break;
    case '@':outtextxy(x-2,y-5,"@");               //  at
     x-=9;
     break;
    }
  }

void ulduz(char text[80],int xx,int yy,int color)
  {
  struct textsettingstype textinfo;

  gettextsettings(&textinfo);
  setcolor(color);
  settextstyle(2,0,6);
  settextjustify(1,2);
  x=xx;
  y=yy;
  b=0;
  do
    {
    kharf(text[b]);
    b++;
    }
  while (b<strlen(text));
  settextstyle(textinfo.font,textinfo.direction,textinfo.charsize);
  settextjustify(textinfo.horiz,textinfo.vert);
  }