IE9 में Adobe फोंट CSS3 @ फॉन्ट-फेस के साथ काम करें


132

मैं एक छोटे इंट्रानेट एप्लिकेशन के निर्माण की प्रक्रिया में हूं और कोशिश करता हूं , बिना किसी भाग्य के, एडोब फ़ॉन्ट का उपयोग करने के लिए जो मैंने हाल ही में खरीदा था। जैसा कि मुझे सूचित किया गया था, हमारे मामले में यह लाइसेंस उल्लंघन नहीं है।

मैंने फ़ॉन्ट के .ttf / .otf संस्करणों को .woff, .eot और .svg में रूपांतरित किया, इसलिए अन्य प्रमुख ब्राउज़रों को लक्षित करने के लिए। मैंने जो फॉन्ट-फेस सिंटैक्स इस्तेमाल किया है, वह मूल रूप से फॉन्ट स्प्रिंग का बुलेटप्रूफ है :

@font-face {
    font-family: 'MyFontFamily';
    src: url('myfont-webfont.eot');
    src: url('myfont-webfont.eot?#iehack') format('eot'), 
         url('myfont-webfont.woff') format('woff'), 
         url('myfont-webfont.ttf')  format('truetype'),
         url('myfont-webfont.svg#svgFontName') format('svg');
    }

मैंने क्रॉस-डोमेन संदर्भों की अनुमति देने के लिए HTTP हेडर (अतिरिक्त एक्सेस-कंट्रोल-अनुमति-उत्पत्ति = "*") को संशोधित किया। FF और Chrome में यह पूरी तरह से काम करता है, लेकिन IE9 में मुझे मिलता है:

CSS3111: @font-face encountered unknown error.  
myfont-webfont.woff
CSS3114: @font-face failed OpenType embedding permission check. Permission must be Installable. 
myfont-webfont.ttf

मैंने देखा कि जब .ttf / .otf से .woff से फ़ॉन्ट परिवर्तित किया जाता है, तो मुझे एक .afm फ़ाइल भी मिलती है , लेकिन मेरे पास कोई सुराग नहीं है कि यह महत्वपूर्ण है या नहीं ...

किसी भी विचार यह कैसे काम करने के लिए?

[संपादित करें] - आईआईएस IIS.५ के तहत मैं अपनी वेबसाइटों (फॉन्ट भी, लेकिन अलग-अलग निर्देशिका और स्थैतिक सामग्री के लिए उपडोमेन) की मेजबानी करता हूं


16
सभी किए गए सभी होमवर्क के साथ एक अच्छा, बुद्धिमान, अच्छी तरह से लिखित प्रश्न के लिए +1। हम इन दिनों बहुत कम मिलते हैं!
Pekka

वास्तव में यह एक अच्छा सवाल है, लेकिन दुख की बात है कि एक डुप्लिकेट है।
जोसेफ अर्ल

1
नहीं, यह निश्चित रूप से एक डुप्लिकेट नहीं है, क्योंकि गैर-एडोब फोंट में मैंने जो समाधान पाया वह पूरी तरह से काम करता है। क्या अंतर है कि यह क्रॉस-डोमेन फ़ॉन्ट के संदर्भ में ऐसा नहीं है जो मुझे लगता है - मुझे "@ फॉन्ट-फेस फेस एरर" मिल गया है। "फॉंट-फेस फेल-क्रॉस रिक्वेस्ट अनुरोध" के विपरीत अन्य उल्लेख में मामलों।
पियोट स्ज़मिड

एम्बेडिंग विकल्पों को बदलने के बाद मुझे इस लाइन के साथ समस्या थी: url('myfont-webfont.eot?#iehack') format('eot'), इसे हटाने से अंतिम त्रुटि (अज्ञात त्रुटि) हल हो गई।
जोनाथन डीमार्क्स

जवाबों:


95

मैं केवल आपको समझा सकता हूं कि "CSS3114" त्रुटि को कैसे ठीक किया जाए।
आपको अपनी TTF फ़ाइल के एम्बेडिंग स्तर को बदलना होगा।

उचित उपयोग करना उपकरण आप के लिए सेट कर सकते हैं स्थापित करने योग्य एम्बेडिंग की अनुमति दी
64-बिट संस्करण के लिए, @ user22600 के उत्तर की जांच करें ।


11
Ttfpatch के लिए एक नोट के रूप में, fsType = 0 का उपयोग करें।
कोलिन मूल्य

11
ttfpatch ने मेरे लिए काम नहीं किया। त्रुटि: टेबलवर्सन 0 होना चाहिए, 1 या हेक्स है: 003
डॉन रोलिंग

11
एम्बेड ठीक काम करता है। बस स्रोत डाउनलोड करें और संकलित करें ... यह StackOverflow है, है ना? यह केवल एक फ़ाइल है। :-) VS2010 के लिए आपको जोड़ने की आवश्यकता है:#include <string.h>
जोनाथन DeMarks

3
@JonathanDeMarks: प्रोत्साहन के लिए धन्यवाद - ttfpatch मेरे लिए भी काम नहीं किया, लेकिन 64 बिट के लिए एम्बेड एम्बेड recompiling निश्चित रूप से किया था।
पीटर माजिद

4
विंडोज पर सी कार्यक्रमों को संकलित करने वाले ऑ फिट के लिए नहीं, यह बहुत सीधा है। Microsoft के इस गाइड का पालन करें: msdn.microsoft.com/en-us/library/bb384838.aspx
lee_mcmullen

36

जैसा कि नू ने कहा, आप इस उपकरण का उपयोग कर सकते हैं , हालांकि यह केवल एमएस-डॉस के लिए संकलित है। मैंने इसे Win64 के लिए संकलित किया। डाउनलोड करें

उपयोग:

  1. .Exe को उसी फ़ोल्डर में रखें जिस फ़ॉन्ट को आपको संशोधित करने की आवश्यकता है

  2. कमांड लाइन में उस निर्देशिका पर नेविगेट करें

  3. प्रकार embed fontname.fonttype, एक्सटेंशन के साथ फाइलनेम और फोंटाइप के साथ फॉन्टनेम की जगहembed brokenFont.ttf

  4. सब कुछ कर दिया! आपका फ़ॉन्ट अब काम करना चाहिए।


रिपोर्ट के लिए धन्यवाद। फिक्स्ड।
user22600

सच में मेरी बहुत मदद करो। Win64 बिट exe का उपयोग करके।
imdadhusen

मेरा भगवान अद्भुत है। सभी के लिए नहीं: विंडोज़ कमांड लाइन का उपयोग करें और जीआईटी बैश की तरह प्रतिस्थापन नहीं, मैं आमतौर पर बैश पसंद करता हूं, यहां काम नहीं करता है।
हाल्टर

देखा! प्रतिभाशाली!!
ओल्डबॉय

33

आपको to फॉन्ट ’के प्रारूप को set एंबेडेड-ओपेंथाइप’ पर सेट करना चाहिए, न कि 'ईओट ’पर। उदाहरण के लिए:

src: url('fontname.eot?#iefix') format('embedded-opentype')

धन्यवाद, लेकिन ऐसा नहीं था। यह फ़ॉन्ट में अनुमतियों को एम्बेड करने के बारे में था।
पियोट स्ज़मड

यह फ़ायरफ़ॉक्स और क्रोम के लिए काम करता था (IE वैसे भी काम कर रहा था)। धन्यवाद!
दिमित्री मोगिलेव्स्की

12

मुझे निम्न त्रुटि मिल रही थी:

CSS3114: @ फॉन्ट-फेस असफल ओपनटाइप एम्बेडिंग अनुमति जांच। अनुमति स्थापित करने योग्य होनी चाहिए।
fontname.ttf

नीचे दिए गए कोड का उपयोग करने के बाद मेरा मुद्दा हल हो गया ...।

src: url('fontname.ttf') format('embedded-opentype')

मेरी मदद करने के लिए धन्यवाद दोस्तों!
चीयर्स,
रेनजिथ।


मुझे लगता है कि आपका समाधान कुछ फ़ॉन्ट परिवारों के लिए काम करता है, लेकिन दूसरों के लिए नहीं। यह फ़ॉन्ट के एम्बेडिंग अनुमति स्तर पर निर्भर करता है। उदाहरण के लिए, यह अबादी फ़ॉन्ट के लिए काम नहीं करेगा
Philip007

हाँ, यह मेरी .ttf फ़ाइलों के साथ बिल्कुल कोई फर्क नहीं पड़ा, मुझे अभी भी "अनुमति स्थापित करने योग्य होनी चाहिए।" त्रुटि। इस समस्या को ठीक करने के लिए .ttf फ़ाइलों को संशोधित करने के लिए .exe (इस पृष्ठ पर कहीं और) चल रहा था। ऐसा करने के बाद, IE11 मेरे वेबपेज पर सही ढंग से .ttf फोंट प्रदर्शित करेगा
माइक गिल्डहिल

9

इसे आज़माएं, इस पंक्तियों को web.config में जोड़ें।

<system.webServer>
  <staticContent>
     <mimeMap fileExtension=".woff" mimeType="application/octet-stream" />
  </staticContent>
</system.webServer>

मुझे नहीं लगता कि वह वही त्रुटि है जिसकी रिपोर्ट की गई है, लेकिन यदि आप सेवारत हैं तो इसकी आवश्यकता होगी। IIS से हां। हां। वैकल्पिक रूप से आप HKLM \ Software \ Classes के तहत .woff के लिए एक रजिस्ट्री कुंजी जोड़ सकते हैं और उसमें "सामग्री प्रकार" मान सेट कर सकते हैं। हालाँकि विकिपीडिया का कहना है कि सही प्रकार हैapplication/font-woff
रूप

वाकई, यह अलग बात है। मेरे पास यह प्रविष्टि थी - समस्या पहले से डाउनलोड किए गए फ़ॉन्ट के साथ थी जो एम्बेडेड अनुमतियों के कारण IE में खोला नहीं जा सकता था।
पायोटर स्ज़मड

मैं एक अपाचे वातावरण में विकास कर रहा था, और जब मैंने अपनी फ़ॉन्ट फ़ाइलों को विंडोज आईआईएस सर्वर में स्थानांतरित किया, तो इसने मेरी समस्या को ठीक कर दिया।
सैमुअल कुक

8

एक अलग जवाब: कानूनी मुद्दे।

ऐसा करने से पहले आपको कुछ बातों पर ध्यान देना होगा। सबसे पहले, इस त्रुटि को प्राप्त करने के लिए, IE में, तत्व का निरीक्षण करें, अपने टैब को स्विच करें, और त्रुटियों की तलाश करें, मेरा मानना ​​है कि "CSS3114" कंसोल में दिखाई देता है।

आपको यह समझने की आवश्यकता है कि यह एक लाइसेंसिंग मुद्दा है। IE (आप का इरादा) यदि आप एक फ़ॉन्ट लोड करने की कोशिश कर रहे हैं जो इस त्रुटि का कारण बनता है, तो आपके पास फ़ाइल का उपयोग करने के लिए फ़ॉन्ट की अनुमति नहीं है, और यदि आपके पास अनुमति नहीं है, तो यह अत्यधिक संभावना है कि आप खो सकते हैं जब तक आप लाइसेंस नहीं ले रहे हैं, तब तक इस फ़ॉन्ट का उपयोग करने पर कानूनी लड़ाई (जो स्वयं अत्यधिक संभावना नहीं है)। इसलिए, आप पहली बार, IE को "नहीं" बताने के लिए एकमात्र ब्राउज़र होने के लिए धन्यवाद कर सकते हैं, क्योंकि यह कम से कम आपको यह बताने देता है कि आप कुछ संदिग्ध कर रहे हैं।

उस ने कहा, यहाँ तुम्हारा जवाब है:

पहले सुनिश्चित करें कि आप .css में सर्वश्रेष्ठ कोड का उपयोग कर रहे हैं, उसके लिए कुछ अन्य सीएसएस उत्तर देखें।
IE 11 सीएसएस उदाहरण (IE9 के लिए सभी आधुनिक ब्राउज़रों में काम करना आवश्यक है):

@font-face {
font-family: "QuestionableLegalFont";
font-weight: bold;
src: url('../fonts/QuestionableLegalFont.ttf') format('truetype');
}

फिर, सुनिश्चित करें कि आपके पास एक कार्यशील वेब-फ़ॉन्ट है (आप शायद पहले से ही अन्य ब्राउज़रों में अपना फ़ॉन्ट देखकर यह जानते हैं)। यदि आपको एक ऑनलाइन फ़ॉन्ट कनवर्टर की आवश्यकता है, तो यहां देखें: https://onlinefontconverter.com/

अंत में, "CSS3114" त्रुटि से छुटकारा पाने के लिए। ऑनलाइन टूल के लिए, यहां क्लिक करें: https://www.andrebacklund.com/fontfixer.html


ऑनलाइन टूल ने इसे मेरे लिए तय किया। धन्यवाद!
जेम्स हिबर्ड

7

यह सच है कि IE9 को टीटीएफ फोंट की आवश्यकता है ताकि इंस्टॉल करने योग्य बिट्स को इंस्टाल करने के लिए सेट किया जा सके। जनरेटर स्वचालित रूप से ऐसा करता है, लेकिन हम वर्तमान में अन्य कारणों से एडोब फोंट को रोक रहे हैं। हम निकट भविष्य में इस प्रतिबंध को उठा सकते हैं।


7

मैंने इस मुद्दे के कारण बहुत समय बर्बाद किया। अंत में मुझे खुद ही बड़ा हल मिला। इससे पहले कि मैं .ttf फ़ॉन्ट का उपयोग कर रहा था। लेकिन मैंने एक अतिरिक्त फॉन्ट फॉर्मेट जोड़ा। जो कि IE में काम करना शुरू करता है।

मैंने निम्नलिखित कोड का उपयोग किया और यह सभी ब्राउज़रों में आकर्षण की तरह काम किया।

@font-face {
font-family: OpenSans;
src: url(assets/fonts/OpenSans/OpenSans-Regular.ttf), 
url(assets/fonts/OpenSans/OpenSans-Regular.eot);
}

@font-face {
font-family: OpenSans Bold;
src: url(assets/fonts/OpenSans/OpenSans-Bold.ttf),
url(assets/fonts/OpenSans/OpenSans-Bold.eot);
}

मुझे उम्मीद है कि यह किसी की मदद करेगा।


4

एक मैक उपयोगकर्ता के रूप में, मैं फ़ॉन्ट-एम्बेडिंग अनुमति को ठीक करने के लिए उल्लेखित MS-DOS और Windows कमांड लाइन टूल का उपयोग करने में असमर्थ था। हालांकि, मुझे पता चला कि आप 'सब कुछ अनुमति है' की अनुमति निर्धारित करने के लिए FontLab का उपयोग करके इसे ठीक कर सकते हैं। मुझे उम्मीद है कि मैक ओएस एक्स पर इंस्टाल करने के लिए फ़ॉन्ट की अनुमति कैसे सेट की जाए यह नुस्खा दूसरों के लिए भी उपयोगी है।


"मैं एमएस-डॉस और विंडोज कमांड लाइन टूल्स का उपयोग करने में असमर्थ था": स्रोत कोड हालांकि प्रदान किया गया है - मुझे उम्मीद है कि यह सिर्फ मैक पर संकलन करेगा?
रूप

क्षमा करें, मेरा कहने का मतलब है: एक खराब ओएस एक्स खोजक उपयोगकर्ता होना।
buijs

4

यदि आप नोडज / npm से परिचित हैं, तो ttembed-js एक टीटीएफ फ़ॉन्ट पर "इंस्टॉल करने योग्य एम्बेडिंग अनुमति" ध्वज को सेट करने का एक आसान तरीका है। यह निर्दिष्ट .ttf फ़ाइल को संशोधित करेगा:

npm install -g ttembed-js

ttembed-js somefont.ttf

धन्यवाद - यह .otf फोंट के लिए बहुत अच्छा काम करता है जो मुझे IE11 में समस्या पैदा कर रहा था।
जे स्प्रैग

3

समस्या आपके सर्वर कॉन्फ़िगरेशन के साथ हो सकती है - यह फ़ॉन्ट फ़ाइलों के लिए सही हेडर नहीं भेज रही हो सकती है। IE9 ब्लॉक क्रॉस-ऑरिजिनल वेब फॉन्ट के डाउनलोड के लिए दिए गए उत्तर पर एक नज़र डालें ।

एरिकलाव अपने अपाचे विन्यास में निम्नलिखित को जोड़ने का सुझाव देता है

<FilesMatch "\.(ttf|otf|eot|woff)$">
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "http://mydomain.com"
    </IfModule>
</FilesMatch>

लेकिन यह वही मामला नहीं है। मैंने वह पोस्ट पढ़ी है और पहले से ही आपके द्वारा दिए गए समाधान की कोशिश कर रहा हूं। समस्या विशेष रूप से एडोब फोंट के साथ है। मैंने फ़ॉन्ट गिलहरी से फ़ॉन्ट किट का उपयोग करने की कोशिश की और वे सभी ब्राउज़रों (आईई 9) में भी पूरी तरह से ठीक हैं। जब मैं एडोब फोंट (उपयुक्त प्रारूपों में परिवर्तित) का उपयोग करने का प्रयास करता हूं - IE9 त्रुटियों के साथ चिल्लाता है ...
Piotr Szmyd

और - मैं क्या कहना भूल गया (मैं अपने प्रश्न को संपादित करूंगा) - मैं अपनी वेबसाइटें IIS 7.5 के तहत चला रहा हूं।
पियोट स्ज़मिड

क्या वे किसी भी तरह से 1 फोंट टाइप कर रहे हैं?
जोसेफ अर्ल

ये सभी सिंगल-फाइल .ttf (ट्रू टाइप) फोंट हैं। लेकिन किसी तरह मुझे .foff (Adobe फ़ॉन्ट मेट्रिक्स) फ़ाइल मिल जाती है, जब ऑनलाइन .fontconverter.com के माध्यम से .woff प्रारूप में परिवर्तित किया जाता है। मेरे पास कोई सुराग नहीं है कि इसके साथ क्या करना है?
पियोट स्ज़मिड

2

त्रुटि प्राप्त करने वाले सभी के लिए: "ttfpatch का उपयोग करते समय" मेज़पोश 0 होना चाहिए, या हेक्स: 003 "है, मैंने 64 बिट के लिए एम्बेड संकलित किया है। मैं कुछ भी नहीं बदला है, बस जरूरत है और संकलित जरूरत जोड़ा गया है। अपने जोखिम पर उपयोग करें।

उपयोग: ConsoleApplication1 font.ttf

http://www.mediafire.com/download/8x1px8aqq18lcx8/ConsoleApplication1.exe


2

यदि आप सी कोड को चलाने के बजाय PHP स्क्रिप्ट के साथ ऐसा करना चाहते हैं (या आप मेरी तरह मैक पर हैं और आपको इसे खोलने के लिए केवल एक वर्ष इंतजार करने के लिए Xcode के साथ संकलन करने के लिए तैयार नहीं किया जा सकता है), यहाँ है PHP फ़ंक्शन जिसे आप फ़ॉन्ट से एम्बेडिंग अनुमतियों को हटाने के लिए उपयोग कर सकते हैं:

function convertRestrictedFont($filename) {
    $font = fopen($filename,'r+');
    if ($font === false) {
        throw new Exception('Could not open font file.');
    }

    fseek($font, 12, 0);

    while (!feof($font)) {
        $type = '';
        for ($i = 0; $i < 4; $i++) {
            $type .= fgetc($font);
            if (feof($font)) {
                fclose($font);
                throw new Exception('Could not read the table definitions of the font.');
            }
        }
        if ($type == 'OS/2') {
            // Save the location of the table definition
            // containing the checksum and pointer to the data
            $os2TableDefinition = ftell($font);
            $checksum = 0;

            for ($i = 0; $i < 4; $i++) {
                fgetc($font);
                if (feof($font)) {
                    fclose($font);
                    throw new Exception('Could not read the OS/2 table header of the font.');
                }
            }

            // Get the pointer to the OS/2 table data
            $os2TablePointer = ord(fgetc($font)) << 24;
            $os2TablePointer |= ord(fgetc($font)) << 16;
            $os2TablePointer |= ord(fgetc($font)) << 8;
            $os2TablePointer |= ord(fgetc($font));

            $length = ord(fgetc($font)) << 24;
            $length |= ord(fgetc($font)) << 16;
            $length |= ord(fgetc($font)) << 8;
            $length |= ord(fgetc($font));

            if (fseek($font, $os2TablePointer + 8, 0) !== 0) {
                fclose($font);
                throw new Exception('Could not read the embeddable type of the font.');
            }

            // Read the fsType before overriding it
            $fsType = ord(fgetc($font)) << 8;
            $fsType |= ord(fgetc($font));

            error_log('Installable Embedding: ' . ($fsType == 0));
            error_log('Reserved: ' . ($fsType & 1));
            error_log('Restricted License: ' . ($fsType & 2));
            error_log('Preview & Print: ' . ($fsType & 4));
            error_log('Editable Embedding: ' . ($fsType & 8));
            error_log('Reserved: ' . ($fsType & 16)); 
            error_log('Reserved: ' . ($fsType & 32));
            error_log('Reserved: ' . ($fsType & 64));
            error_log('Reserved: ' . ($fsType & 128));
            error_log('No subsetting: ' . ($fsType & 256));
            error_log('Bitmap embedding only: ' . ($fsType & 512));                         
            error_log('Reserved: ' . ($fsType & 1024));
            error_log('Reserved: ' . ($fsType & 2048));
            error_log('Reserved: ' . ($fsType & 4096));
            error_log('Reserved: ' . ($fsType & 8192));
            error_log('Reserved: ' . ($fsType & 16384));
            error_log('Reserved: ' . ($fsType & 32768));

            fseek($font, ftell($font) - 2);

            // Set the two bytes of fsType to 0
            fputs($font, chr(0), 1);
            fputs($font, chr(0), 1);

            // Go to the beginning of the OS/2 table data
            fseek($font, $os2TablePointer, 0);

            // Generate a new checksum based on the changed 
            for ($i = 0; $i < $length; $i++) {
                $checksum += ord(fgetc($font));
            }
            fseek($font, $os2TableDefinition, 0);
            fputs($font, chr($checksum >> 24), 1);
            fputs($font, chr(255 & ($checksum >> 16)), 1);
            fputs($font, chr(255 & ($checksum >> 8)), 1);
            fputs($font, chr(255 & $checksum), 1);

            fclose($font);

            return true;
        }
        for ($i = 0; $i < 12; $i++) {
            fgetc($font);
            if (feof($font)) {
                fclose($font);
                throw new Exception('Could not skip a table definition of the font.');
            }
        }
    }

    fclose($font);

    return false;
}

इस कोड को चलाने से पहले अपनी फ़ॉन्ट फ़ाइल का बैकअप लेना सुनिश्चित करें और यदि यह दूषित हो जाती है तो मुझे दोष न दें।

सी में मूल स्रोत यहां पाया जा सकता है


यह काम करता है और अब नंबर 1 का उत्तर होना चाहिए। यह एक शर्म की बात है कि यह अब तक पुराने जवाबों से आगे निकलने के लिए चढ़ाई करने के लिए है।
हंस

बहुत बहुत धन्यवाद @Goose! मैंने मूल रूप से अपनी नौकरी के लिए यह लिखा था, लेकिन कोड को फेंक दिया गया और बदल दिया गया, इसलिए यह स्टैक ओवरफ्लो में रहता है। वेब एप्लिकेशन समस्या के लिए सी कोड प्रदान करना निश्चित रूप से आदर्श नहीं है।
नोबल अपलिफ्ट

@ मैं सी कोड को सुधारता हूं। हमेशा। तो यह स्वाद का मामला है और यही कारण है कि यह जवाब जवाब के बराबर है। FYI करें आप अपनी वेबसाइट में C कोड को लागू करने के लिए CGI का उपयोग कर सकते हैं।
71GA

0

आप इसे कोड का पालन करके हल कर सकते हैं

@font-face {
  font-family: 'Font-Name';
  src: url('../fonts/Font-Name.ttf');
  src: url('../fonts/Font-Name.eot?#iefix') format('embedded-opentype');
}

नहीं, यह काम नहीं करेगा। मेरा मामला सख्ती से फोंट के बारे में था जो डिजाइन द्वारा एम्बेड करने की अनुमति नहीं देता था (लेकिन लाइसेंस के साथ जो इसे अनुमति देता है)। तो यह कैसे मैं इसे एम्बेड के बारे में नहीं है। TTF फ़ॉन्ट के साथ इसे जांचें जो स्पष्ट रूप से वेब-एम्बेडिंग को प्रतिबंधित करता है और आप मेरे मुद्दे को समझेंगे।
पायोटर स्ज़मिड

0

मैंने पाया कि eotफ़ाइल को परे रखा जाना चाहिए ttf। यदि यह नीचे है ttf, तो सोचा कि फ़ॉन्ट सही ढंग से दिखाता है, IE9 अभी भी एक त्रुटि फेंक देगा।

सिफारिश:

@font-face {
  font-family: 'Font-Name';
  src: url('../fonts/Font-Name.eot?#iefix') format('embedded-opentype');
  src: url('../fonts/Font-Name.ttf')  format('truetype');
}

अनुशंसा नहीं :

@font-face {
  font-family: 'Font-Name';
  src: url('../fonts/Font-Name.ttf')  format('truetype');
  src: url('../fonts/Font-Name.eot?#iefix') format('embedded-opentype');
  }

0

मैंने ttfpatch टूल की कोशिश की और यह मेरे काम नहीं आया। इंटरनेट एक्सप्लोडर 9 और 10 ने अभी भी शिकायत की है।

मुझे यह अच्छा Git मिला और इसने मेरे मुद्दों को हल किया। https://gist.github.com/stefanmaric/a5043c0998d9fc35483d

बस अपने सीएसएस में कोड को कॉपी और पेस्ट करें।


0

मुझे हाल ही में इस मुद्दे का सामना करना पड़ा। लोड होने पर कंसोल में CSS3114 और CSS3111 त्रुटियों का उत्पादन करने वाले .ot और .otf फोंट। मेरे लिए काम करने वाला समाधान केवल .woff और .woff2 प्रारूपों का उपयोग करने के लिए था। .Woff प्रारूपों का उपयोग अधिकांश ब्राउज़रों में .ttf से पहले किया जाएगा और फ़ॉन्ट एम्बेडिंग अनुमतियाँ समस्या (css3114) और फ़ॉन्ट नामकरण गलत स्वरूप समस्या (css3111) को ट्रिगर करने के लिए प्रतीत नहीं होता है। मैंने CSS3111 और CSS3114 मुद्दे के बारे में इस अत्यंत उपयोगी लेख में अपना समाधान पाया , और इस लेख को @ फ़ॉन्ट-फेस का उपयोग करने पर भी पढ़ा ।

नोट: इस समाधान के लिए किसी भी फ़ॉन्ट फ़ाइलों को फिर से संकलित करने, परिवर्तित करने या संपादित करने की आवश्यकता नहीं है। यह एक css- केवल समाधान है। मैंने जिस फ़ॉन्ट के साथ परीक्षण किया है, उसमें। woff2 फाइलें इस मुद्दे के लिए प्रतिरक्षा प्रतीत हुईं।

यह मेरे लिए फॉन्ट-फेस के साथ DID का काम है:

@font-face {
  font-family: "Your Font Name";
  font-weight: normal;
  src: url('your-font-name.woff2') format('woff2'),
       url('your-font-name.woff') format('woff'),
       url('your-font-name.ttf')  format('truetype');
}

इसने IE में @ फॉन्ट-फेस के साथ त्रुटियों को ट्रिगर किया:

@font-face {
  font-family: 'Your Font Name';
  src: url('your-font-name.eot');
  src: url('your-font-name.eot?#iefix') format('embedded-opentype'),
       url('your-font-name.woff2') format('woff2'),
       url('your-font-name.woff') format('woff'),
       url('your-font-name.ttf')  format('truetype'),
       url('your-font-name.svg#svgFontName') format('svg');
}

0

यह मेरे लिए काम करता है:

@font-face {
  font-family: FontName;
  src: url('@{path-fonts}/FontName.eot?akitpd');
  src: url('@{path-fonts}/FontName.eot?akitpd#iefix') format('embedded-opentype'),
    url('@{path-fonts}/FontName.ttf?akitpd') format('truetype'),
    url('@{path-fonts}/FontName.woff?akitpd') format('woff'),
    url('@{path-fonts}/FontName.svg?akitpd#salvage') format('svg');
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.