# Turkish translation of fontconfig.
# This file is distributed under the same license as the fontconfig package.
# Gürkan Aslan <gurkan@iaslan.com>, 2004. 
# 
msgid ""
msgstr ""
"Project-Id-Version: fontconfig\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-03-29 13:33-0800\n"
"PO-Revision-Date: 2004-10-23 16:23+0300\n"
"Last-Translator: Gürkan Aslan <gurkan@iaslan.com>\n"
"Language-Team: Turkish <debian-l10n-turkish@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms:  nplurals=1; plural=0;\n"

#. Type: select
#. Choices
#: ../fontconfig.templates:3
msgid "Native, Autohinter, None"
msgstr ""

#. Type: select
#. Description
#: ../fontconfig.templates:5
msgid "How should fonts be tuned for the screen?"
msgstr ""

#. Type: select
#. Description
#: ../fontconfig.templates:5
msgid ""
"Select Native if you mostly use Bitstream Vera (the default in Debian) or "
"any of the Microsoft fonts.  Select Autohinter if you mostly use other "
"TrueType fonts.  Select None if you want blurry text."
msgstr ""

#. Type: select
#. Choices
#: ../fontconfig.templates:12
msgid "Automatic, Always, Never"
msgstr ""

#. Type: select
#. Description
#: ../fontconfig.templates:14
msgid "Enable subpixel rendering of text?"
msgstr ""

#. Type: select
#. Description
#: ../fontconfig.templates:14
msgid ""
"Rendering text at a subpixel level generally makes it look a bit better on "
"flat (LCD) screens, but can show color artifacts on CRT screens. The "
"\"Automatic\" choice will enable it only if a LCD screen is detected."
msgstr ""

#. Type: boolean
#. Description
#: ../fontconfig.templates:22
msgid "Enable bitmapped fonts by default?"
msgstr "Biteşlemli yazıtipleri öntanımlı olarak etkinleştirilsin mi?"

#. Type: boolean
#. Description
#: ../fontconfig.templates:22
msgid ""
"By default, only outline fonts are used by applications which support "
"fontconfig.  Outline fonts are fonts which scale well to various sizes.  In "
"contrast, bitmapped fonts are often lower quality. Enabling this option will "
"affect the systemwide default; this and many other fontconfig options may be "
"enabled or disabled on a per-user basis."
msgstr ""
"Fontconfig'i destekleyen uygulamalarda ön tanımlı olarak sadece "
"ölçeklenebilir yazıtipleri kullanılır.  Ölçeklenebilir yazıtipleri "
"kalitesinden birşey kaybetmeden çeşitli boyutlara ölçeklendirilebilir.  Buna "
"karşılık, biteşlemli yazıtipleri çoğunlukla düşük kalitelidir.  Bu seçeneği "
"etkinleştirmek sistem genelinde geçerli öntanımlı ayarları etkileyecektir; "
"alternatif olarak bu ve diğer birçok fontconfig seçeneğinin kullanıcı "
"bazında etkinleştirilmesi de tercih edilebilir."

#, fuzzy
#~ msgid "With what method should fonts be hinted?"
#~ msgstr "Metinler hangi yöntemle kaplansın?"

#~ msgid ""
#~ "Bytecode interpreter (CRT screens), Autohinter, Subpixel rendering (LCD "
#~ "screens)"
#~ msgstr ""
#~ "Bytecode yorumlayıcı (CRT ekranlar), Otomatik sezinleyici (Autohinter), "
#~ "Piksel-altı kaplama (LCD ekranlar)"

#~ msgid ""
#~ "The Freetype font library is able to render fonts with different methods. "
#~ "Depending on your hardware and the fonts you generally use, some will "
#~ "give better results."
#~ msgstr ""
#~ "Freetype yazıtipi kitaplığı yazıtiplerini farklı yöntemler kullanarak "
#~ "kaplayabilmektedir.  Kullandığınız donanım ve yazıtiplerine bağlı olarak "
#~ "bu yöntemlerden bazıları diğerlerine nispetle daha iyi sonuçlar "
#~ "verecektir."

#~ msgid ""
#~ "The autohinter module is the default; it gives correct results on most "
#~ "configurations. The bytecode interpreter renders fonts very sharply, and "
#~ "is often a better choice if you are using a cathode-ray screen. On the "
#~ "other hand, the subpixel rendering method is optimized for high-quality "
#~ "rendering on most liquid crystal displays."
#~ msgstr ""
#~ "Öntanımlı seçenek otomatik sezinleyici modülüdür; çoğu yapılandırmada "
#~ "doğru sonuçlar verir.  \"Bytecode\" yorumlayıcı, yazıtiplerini çok keskin "
#~ "hatlarla kaplar ve katod-ışınlı bir ekran (CRT) kullanıyorsunuz "
#~ "genellikle daha iyi bir seçimdir.  Öte yandan, piksel-altı (subpixel) "
#~ "metin kaplama yöntemi çoğu sıvı kristal ekranda (LCD) yüksek kaplama "
#~ "kalitesi sağlamaya yönelik olarak iyileştirilmiştir."
