SORU
30 Temmuz 2010, Cuma


'un tarayıcı bir kullanıcı görüntüleyebilir her yazı tipi listesi

Javascript bir şekilde tarayıcı olduğu tüm fontların isimlerini (veya yazı tipi-aile) elde etmek için var mı? (Kullanıcının tüm kullanılabilir yazı tiplerinin bir listesini içeren bir açılır vermek, ve kullanıcı bir yazı tipi seçmek için izin istiyorum.) Bu liste önceden koda veya sunucudan indirmeye olmamasını tercih ederdim. (Sezgisel, tarayıcı ne biliyor gibi görünüyor ve bu şekilde javascript açık olmalıdır.)

CEVAP
30 Temmuz 2010, Cuma


Evet var! Ben şimdi bunu da kullanmak istiyorum, çünkü bu soruyu sorduğunuza çok sevindim.

Soru ve cevap burda:) 1

http://www.lalit.org/lab/javascript-css-font-detect

Kodhttp://www.lalit.org/wordpress/wp-content/uploads/2008/05/fontdetect.js?ver=0.3

/**
 * JavaScript code to detect available availability of a
 * particular font in a browser using JavaScript and CSS.
 *
 * Author : Lalit Patel
 * Website: http://www.lalit.org/lab/javascript-css-font-detect/
 * License: Apache Software License 2.0
 *          http://www.apache.org/licenses/LICENSE-2.0
 * Version: 0.15 (21 Sep 2009)
 *          Changed comparision font to default from sans-default-default,
 *          as in FF3.0 font of child element didn't fallback
 *          to parent element if the font is missing.
 * Version: 0.2 (04 Mar 2012)
 *          Comparing font against all the 3 generic font families ie,
 *          'monospace', 'sans-serif' and 'sans'. If it doesn't match all 3
 *          then that font is 100% not available in the system
 * Version: 0.3 (24 Mar 2012)
 *          Replaced sans with serif in the list of baseFonts
 */

/**
 * Usage: d = new Detector();
 *        d.detect('font name');
 */
var Detector = function() {
    // a font will be compared against all the three default fonts.
    // and if it doesn't match all 3 then that font is not available.
    var baseFonts = ['monospace', 'sans-serif', 'serif'];

    //we use m or w because these two characters take up the maximum width.
    // And we use a LLi so that the same matching fonts can get separated
    var testString = "mmmmmmmmmmlli";

    //we test using 72px font size, we may use any size. I guess larger the better.
    var testSize = '72px';

    var h = document.getElementsByTagName("body")[0];

    // create a SPAN in the document to get the width of the text we use to test
    var s = document.createElement("span");
    s.style.fontSize = testSize;
    s.innerHTML = testString;
    var defaultWidth = {};
    var defaultHeight = {};
    for (var index in baseFonts) {
        //get the default width for the three base fonts
        s.style.fontFamily = baseFonts[index];
        h.appendChild(s);
        defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font
        defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font
        h.removeChild(s);
    }

    function detect(font) {
        var detected = false;
        for (var index in baseFonts) {
            s.style.fontFamily = font   ','   baseFonts[index]; // name of the font along with the base font for fallback.
            h.appendChild(s);
            var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);
            h.removeChild(s);
            detected = detected || matched;
        }
        return detected;
    }

    this.detect = detect;
};

Özet

Nasıl çalışır?

Bu kodu her karakter görünen basit bir prensip üzerine çalışır farklı farklı yazı tiplerini. Farklı yazı tipleri farklı alacak yazı tipi boyutu aynı karakterler, aynı dize için genişlik ve yükseklik.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joanna Okrajni

    Joanna Okraj

    4 EYLÜL 2010
  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006