목차
웹 브라우저의 렌더링 엔진에서 사용할 수 있는 글꼴 열거
웹 프론트엔드 CSS 튜토리얼 JavaScript를 사용하여 웹 브라우저의 렌더링 엔진에서 사용할 수 있는 글꼴을 열거하는 방법은 무엇입니까?

JavaScript를 사용하여 웹 브라우저의 렌더링 엔진에서 사용할 수 있는 글꼴을 열거하는 방법은 무엇입니까?

Oct 23, 2024 pm 01:44 PM

How to Enumerate Fonts Available to a Web Browser's Rendering Engine using JavaScript?

웹 브라우저의 렌더링 엔진에서 사용할 수 있는 글꼴 열거

웹 개발에서는 사용자에게 사용자 정의 가능한 탐색 환경을 제공하는 것이 바람직한 경우가 많습니다. 여기에는 브라우저가 렌더링할 수 있는 글꼴 목록에서 원하는 글꼴을 선택하도록 허용하는 것이 포함될 수 있습니다. 이를 용이하게 하려면 사용 가능한 모든 글꼴 목록을 프로그래밍 방식으로 얻을 수 있는 방법이 필요합니다.

이 문제를 해결하는 한 가지 접근 방식은 글꼴 목록을 하드코딩하거나 서버에서 검색하는 것입니다. 그러나 이 접근 방식은 번거로울 수 있으며 사용자가 브라우저에 추가 글꼴을 설치한 상황에는 적합하지 않을 수 있습니다.

다행히도 JavaScript를 사용하는 더 우아하고 동적인 솔루션이 있습니다. 다음 스니펫은 글꼴 감지라는 기술을 활용합니다.

<code class="js">/**
 * 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 = &quot;mmmmmmmmmmlli&quot;;

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

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

    // create a SPAN in the document to get the width of the text we use to test
    var s = document.createElement(&quot;span&quot;);
    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;
};</code>
로그인 후 복사

이 코드는 'Detector' 메소드를 사용하여 'Detector' 개체를 생성합니다. 'Detect' 메소드는 글꼴 이름을 인수로 사용하고 브라우저에서 글꼴을 렌더링할 수 있는지 여부를 나타내는 부울 값을 반환합니다.

코드는 요소 및 해당 글꼴 모음을 지정된 글꼴로 설정합니다. 그러면 이 요소가 문서 본문에 추가됩니다. 그런 다음 요소의 너비와 높이를 측정하고 세 가지 'monospace', 'sans-serif' 및 'serif' 글꼴의 기본값과 비교합니다. 측정된 값이 기본값과 다른 경우 지정된 글꼴을 사용할 수 있음을 나타냅니다.

사용 가능한 모든 글꼴을 열거하려면 글꼴 이름 배열을 반복하고 각 글꼴에 대해 '감지' 메소드를 호출하면 됩니다. . 결과는 브라우저가 렌더링할 수 있는 모든 글꼴 목록이 됩니다.

위 내용은 JavaScript를 사용하여 웹 브라우저의 렌더링 엔진에서 사용할 수 있는 글꼴을 열거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Smart Forms 프레임 워크로 JavaScript 연락처 양식 작성 Smart Forms 프레임 워크로 JavaScript 연락처 양식 작성 Mar 07, 2025 am 11:33 AM

Smart Forms 프레임 워크로 JavaScript 연락처 양식 작성

WordPress 블록 및 요소에 상자 그림자를 추가합니다 WordPress 블록 및 요소에 상자 그림자를 추가합니다 Mar 09, 2025 pm 12:53 PM

WordPress 블록 및 요소에 상자 그림자를 추가합니다

스크린 독자를 탈취시킵니다. 액세스 가능한 양식 및 모범 사례 스크린 독자를 탈취시킵니다. 액세스 가능한 양식 및 모범 사례 Mar 08, 2025 am 09:45 AM

스크린 독자를 탈취시킵니다. 액세스 가능한 양식 및 모범 사례

내용 부호 ​​속성으로 인라인 텍스트 편집기를 만듭니다 내용 부호 ​​속성으로 인라인 텍스트 편집기를 만듭니다 Mar 02, 2025 am 09:03 AM

내용 부호 ​​속성으로 인라인 텍스트 편집기를 만듭니다

GraphQL 캐싱 작업 GraphQL 캐싱 작업 Mar 19, 2025 am 09:36 AM

GraphQL 캐싱 작업

첫 번째 맞춤형 전환을 만듭니다 첫 번째 맞춤형 전환을 만듭니다 Mar 15, 2025 am 11:08 AM

첫 번째 맞춤형 전환을 만듭니다

5 개의 최고의 PHP 양식 빌더 (및 3 개의 무료 스크립트) 비교 5 개의 최고의 PHP 양식 빌더 (및 3 개의 무료 스크립트) 비교 Mar 04, 2025 am 10:22 AM

5 개의 최고의 PHP 양식 빌더 (및 3 개의 무료 스크립트) 비교

node.js 및 Express의 Multer와 함께 파일 업로드 node.js 및 Express의 Multer와 함께 파일 업로드 Mar 02, 2025 am 09:15 AM

node.js 및 Express의 Multer와 함께 파일 업로드

See all articles