“Küçük harfler” nasıl oluşturulur (yani metin figürleri)?


12

Metin şekillerini simüle etmek için font gliflerini ayarlamanın kabul edilen bir yolu var mı ?

resim açıklamasını buraya girin

Arka fon

Metin rakamları "küçük harf" rakamlarıdır. Normalde küçük harfli metin kullandığınız yerlerde küçük harfler kullanırsınız (örneğin, bir cümlenin ortasında).

Klavyeler asla büyük ve küçük rakamlarla oluşturulmadı; ve Unicode bunları özel olarak kodlamamaktadır, çünkü "bunlar astar rakamlarından ayrı karakterler olarak değil, aynı karakterleri yazmanın farklı bir yoludur."

Bu da beni soruma getiriyor; bir yazı tipinin standart "büyük harflerinden küçük harfler oluşturmanın kabul edilen yolu nedir?

Vikipedi normalde şöyle diyor :

  • 012Hangi x-height
  • 68 yükselmek
  • 34579 soyundan gelmek

resim açıklamasını buraya girin

İlk denemem (photoshop'ta):

  • ezmek 012
  • dürtmek 34579 aşağı
  • 68'i oldukları yerde bırakın :

resim açıklamasını buraya girin

resim açıklamasını buraya girin

Ama çarpık figürler (0, 1, 2) oldukça hoş görünmüyor.

Unicode konsorsiyumu "küçük harflerin" basitçe "büyük harf" olanlardan oluşturulabileceğini önerirse ne yapmamı önerirler?

İdeal olarak HTML'de

Son hedefim, tarayıcıda küçük harfli metin görüntülemek. bazı yazı tipleri (örneğin Georgia) zaten tüm rakamlarını küçük harfli olarak biliyorum :

resim açıklamasını buraya girin

Ama Gürcistan'ı nasıl kullanacağımı sormuyorum ; i nasıl soruyorum inşa olmayan astar olanlar dışında astar rakamlar.

Ve bu web'de görüntülemek için olduğundan, muhtemelen karakter başına biçimlendirme uygulamak zorunda kalacağını anlıyorum:

<!doctype html">
<html>
<head>
    <style type="text/css">
        body {
            font-family: "Segoe UI", "Calibri", sans-serif;
            font-size: larger;
        }

        .xheight {
            font-size: 1.5ex;
        }

        .descender {
            position: relative;
            bottom: -0.4ex;
        }
    </style>
</head>
<body>
    <p>In the year <span class="xheight">21</span><span class="descender">5</span><span>6</span> the Romulan war...
</body>
</html>

Oluşturma şekli:

resim açıklamasını buraya girin

Hangi, yine, düşündüğüm kadar hoş görünmüyor.

Hey bak, bir kuruş!

resim açıklamasını buraya girin

Yanıtlar:


11

Çok kısa cevap "Hayır".

Eski stil figürleri ("küçük harf") özellikle bu şekilde çizilir. Eski Postscript ve TrueType yazı tipleri, çoğunlukla, yazı tipinin tasarlanma şekline göre astar veya eski stil olan sekmeli şekiller içerir.

Unicode Konsorsiyumu, astar rakamlarının eski stil rakamlarına dönüştürülebileceğini öne sürmemektedir, sadece her basamak için birden fazla glif olup olmadığına bakılmaksızın, 0-9 arasındaki rakamlar için yalnızca bir Unicode değeri kümesi olduğunu.

Birçok OpenType yazı tipi, hem tablo hem de oransal genişliklerde hem astar hem de eski stil şekilleri içerir ve tablolu astar şekilleri normal varsayılan değerdir. Bunların tümü, tipik olarak bir karakter veya paragraf stilindeki bir tercih ayarıyla OpenType uyumlu uygulamalar tarafından kullanılabilir. Unicode değerlerini paylaşırlar, ancak yazı tipi yazılımında ana hatlar olarak var olan veya olmayan alternatif glifler ayrı olarak çizilirler. (CSS'nizdeki font ailelerinden Calibri'nin eski stil figürleri vardır, ancak Segoe UI'de yoktur.)

Tipografik bir bakış açısından, sadece sorduğunuz şeyi yapmanın kabul edilmiş bir yolu yoktur, aynı zamanda kabul edilebilir bir yol olmadığını da söyleyebilirim . Keşfettiğiniz gibi, taban çizgilerini kaydırarak ve astar figürlerini çarpıtarak oraya ulaşmaya çalışmak korkunç görünüyor.


İyi cevap, ancak bir yazı tipinin her ikisini de içerdiğinde CSS'de hangi sayı stilini kullanacağını belirleyebildiği ölçüde, tarayıcıların tam olarak OpenType-farkında olacağı sorusuna yalvarıyor gibi görünüyor.
e100

1
Ayrıca, "Segoe UI", "Calibri" ve hatta sans-serif'in görüntülenen gerçek yazı tipi olduğunu garanti etmenin bir yolu olmadığı da önemli bir nokta. Kullanılan tam taban çizgisi ve x yükseklik değerleri, kullanıcının yüklediği Keyfi Olde Stili'nde daha da korkunç görünebilir.
horatio

Unicode Konsorsiyumu harfe ve küçük rakamlar için ayrı gliflere kodlamak ama niye üzerindeki herhangi bir fikir mi harfe için kodlamak ayrı gliflere A( U+0041,) küçük harf a( U+0061) ve hatta sᴍᴀʟʟ cᴀᴘɪᴛᴀʟ ( U+1D00)? Yani ayrı büyük ve küçük harfleri hariç tutan ancak ayrı büyük ve küçük harfleri içeren mantık ne olabilir?
Ian Boyd

Ve son olarak, hem de içerir OpenType font adlandırabilirsiniz "büyük harf" ve "küçük" rakamını?
Ian Boyd

1
@IanBoyd: Düzenli büyük ve küçük harf karakterleri anlam bakımından farklıdır ve bu nedenle bunlar arasında geçiş yapmak stilistik bir seçimden çok daha fazlasıdır. Bununla birlikte, büyük harf ve küçük harf sayıları aynıdır ve bu nedenle Unicode'un kodlamak istediği hiçbir şey yoktur - aynı nedenden dolayı italik, küçük harf, küçük harf ve benzeri için özel kodlamalar yoktur. Bulduğunuz küçük harfli karakterler yalnızca kodlanır, çünkü fonetikte farklı bir anlama sahiptirler ve vurgu için kullanılmamalıdırlar (bunun için OpenType özelliklerini veya benzerlerini kullanmalısınız).
Wrzlprmft

5

Küçük harf / sayı veya "Eski stil figürleri" oluşturmanın doğru yolu, uygun bir yazı tipi özelliği seçmek için CSS kullanmaktır. Açıkçası, kullanılan yazı tipi ilk olarak bu yazı tipi özelliğini desteklemelidir. Web fontları ile gerçek dünya desteği çok güçlü görünmüyor.

Aradığınız CSS ayarı

font-feature-settings: "onum";

ve belgeler:

OpenType özelliklerinin ve onumözellikle özelliğin belgeleri Microsoft'un OpenType Layout etiketi kayıt defterinde bulunabilir .

Font özellikleri hakkında alternatif belgeler , CSS'de OpenType özelliklerini kodlama makalesinde bulunabilir .

Resmi olarak, kullanmanız gerekiyor

font-variant-numeric: oldstyle-nums;

ancak Mozilla Tarayıcı Uyumluluğu referansına göre bunun için destek daha da zayıf görünüyor .

Teoride bu daha iyidir çünkü doğrudan OpenType özelliklerine başvurmaz, bu nedenle OpenType olmayan fontlarla da çalışması gerekir. Aynı şekilde şunları kullanmalısınız:

font-variant: small-caps; 

küçük harfleri etkinleştirmek için . Do not gibi ayar OpenType özelliği kullanmak

font-feature-settings: "smcp";

Bu etkiyi elde etmek için font-variant, çünkü mülk zaten iyi desteklenmektedir.


Hayır, asla kullanmak istemezsiniz font-variant: small-caps;çünkü bu FAKE küçük başlıklar oluşturur. Her zaman diğerini kullanın ve her zaman OpenType yazı tiplerini kullanın. Basit ve çözüldü.
tchrist

Tanıma göre ( w3.org/TR/CSS21/fonts.html#propdef-font-variant ) acceptable, small-capsözellik sahte ise. Bu bir gereklilik değildir ve yüksek kaliteli kullanıcı aracısı doğru şeyi yapar (OpenType özelliğiyle eşleştirin). Taklit küçük kapaklar yerine değişiklik yapmayı tercih etmiyorsanız, kullanmanız gerektiğini kabul ediyorum font-feature-settings. Genellikle sahte küçük kapaklar, hiçbir etkiye sahip olmaktan daha iyidir.
Mikko Rantalainen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.