আইডি 9-এ অ্যাডোব ফন্টগুলি 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 শিরোনামগুলি (অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন = "*" সংশোধন করেছি)। এফএফ এবং ক্রোমে এটি পুরোপুরি কার্যকর হয় তবে আই 9 এ আমি পেয়েছি:

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 থেকে .foff এ ফন্ট রূপান্তর করার সময় আমি একটি .afm ফাইলও পাই , তবে এটি গুরুত্বপূর্ণ কিনা সে সম্পর্কে আমার কোনও ধারণা নেই ...

কোনও ধারণা কীভাবে এটি কাজ করবে?

[সম্পাদনা] - আমি আমার ওয়েবসাইটগুলি হোস্ট করি (ফন্টগুলি খুব বেশি, তবে স্ট্যাটিক সামগ্রীর জন্য পৃথক ডিরেক্টরি এবং সাবডোমেনের অধীনে) আইআইএস 7.5 এর অধীনে


16
সমস্ত গৃহকর্ম সম্পন্ন সূক্ষ্ম, বুদ্ধিমান, ভাল কথার প্রশ্নের জন্য +1 আমরা আজকাল এগুলি খুব কমই পাই!
পেক্কা

আসলে এটি একটি ভাল প্রশ্ন, কিন্তু দুঃখের বিষয়, একটি সদৃশ।
জোসেফ আর্ল

1
না, এটি অবশ্যই কোনও সদৃশ নয়, যেমন অ-অ্যাডোব ফন্টগুলিতে আমি যে সমাধানগুলি পুরোপুরিভাবে কাজ পেয়েছি তা সমাধান করে। পার্থক্যটি হ'ল ক্রস-ডোমেন ফন্টের রেফারেন্সিংয়ের ক্ষেত্রে এটি ঘটেনি - আমি অনুমান করি - অন্য @ উল্লিখিত "@ ফন্ট-ফেস ব্যর্থ ক্রস-অরিজিন অনুরোধ" এর বিপরীতে আমি "@ ফন্ট-ফেস অজানা ত্রুটির মুখোমুখি" পেয়েছি get মামলা।
পাইটর জিজিমেড

এম্বেডিং বিকল্পগুলি পরিবর্তন করার পরে আমার এই লাইনটিতে সমস্যা ছিল: url('myfont-webfont.eot?#iehack') format('eot'), এটিকে সরিয়ে দেওয়ার ফলে সর্বশেষ ত্রুটি (অজানা ত্রুটি) সমাধান হয়েছে।
জোনাথন ডিমার্কস

উত্তর:


95

"CSS3114" ত্রুটি কীভাবে ঠিক করবেন তা আমি কেবল আপনাকে ব্যাখ্যা করতে পারি।
আপনাকে আপনার টিটিএফ ফাইলের এম্বেডিং স্তরটি পরিবর্তন করতে হবে।

উপযুক্ত সরঞ্জাম ব্যবহার করে আপনি এটিকে এম্বেডিং অনুমোদিত অনুমোদিত করতে সেট করতে পারেন ।
64-বিট সংস্করণের জন্য, @ user22600 এর পরীক্ষা উত্তর


11
Ttfpatch এর জন্য একটি নোট হিসাবে, fsType = 0 ব্যবহার করুন।
কলিন দাম

11
ttfpatch আমার জন্য কাজ করে না। ত্রুটি: টেবিলভারশনটি 0, 1 বা হেক্স: 003 হতে হবে
ডন রোলিং

11
এম্বেড ঠিক আছে কাজ করে। কেবল উত্সটি ডাউনলোড করুন এবং সংকলন করুন ... এটি স্ট্যাকওভারফ্লো, তাই না? এটি কেবল একটি ফাইল। :-) ভিএস 2010 এর জন্য আপনাকে যুক্ত করতে হবে:#include <string.h>
জোনাথন ডিমার্ক

3
@ জোনাথনডেমার্কস: উত্সাহের জন্য ধন্যবাদ - টিটিফপ্যাচ আমার পক্ষেও কার্যকর হয়নি, তবে mbed৪ বিটের জন্য এম্বেড.সি.এম. পুনর্নির্মাণ অবশ্যই কৌশলটি করেছে।
পিটার মাজেদ 27'14

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. সব শেষ! আপনার ফন্ট এখন কাজ করা উচিত।


প্রতিবেদনের জন্য ধন্যবাদ। সংশোধন করা হয়েছে।
ব্যবহারকারী 22600

সত্যিই আমাকে অনেক সাহায্য করুন। উইন 64 বিট এক্সপি ব্যবহার করে।
immadhusen

আমার godশ্বর আশ্চর্যজনক। সবার পক্ষে নয়: উইন্ডোজ কমান্ড লাইন ব্যবহার করুন এবং জিআইটি ব্যাশের মতো প্রতিস্থাপন নয়, আমি সাধারণত বাশ পছন্দ করি, এখানে কাজ করে না।
Halter

ভাল খবর! উজ্জ্বল !!
ওল্ডবয় 21

33

আপনি যেমন ই-এম্বেড-ওপেনটাইপ এবং না 'eot' এ ফন্ট ফর্ম্যাট সেট করা উচিত। উদাহরণ স্বরূপ:

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

ধন্যবাদ, কিন্তু এটি ছিল না। এটি হ'ল ফন্টের অনুমতি এম্বেডিং সম্পর্কে।
পাইটর জাজমিড

এটি ফায়ারফক্স এবং ক্রোমের জন্য কাজ করেছে (আইই যাইহোক কাজ করছে)। ধন্যবাদ!
দিমিত্রি মোগিলিভস্কি

12

আমি নিম্নলিখিত ত্রুটি পেয়েছিলাম:

CSS3114: @ ফন্ট-মুখ ব্যর্থ ওপেনটাইপ এম্বেডিং অনুমতি চেক। অনুমতি অবশ্যই ইনস্টলযোগ্য হবে।
fontname.ttf

নীচের কোডটি ব্যবহার করার পরে আমার সমস্যাটি সমাধান হয়ে গেছে ...

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

আপনাকে সাহায্য করার জন্য আপনাকে ধন্যবাদ!
চিয়ার্স,
রেনজিথ


আমি মনে করি আপনার সমাধান কিছু ফন্ট পরিবারের জন্য কাজ করে তবে অন্যদের জন্য নয়। এটি ফন্টের এমবেডিং অনুমতি স্তরের উপর নির্ভর করে। উদাহরণস্বরূপ, এটি আবাদি ফন্টের জন্য কাজ করবে না
ফিলিপ 007

হ্যাঁ, এটি আমার .tf ফাইলগুলির সাথে একেবারেই কোনও পার্থক্য তৈরি করে নি, আমি এখনও "অনুমতি অবশ্যই ইনস্টলযোগ্য হতে হবে" "পাচ্ছিলাম। ত্রুটি. এই সমস্যাটি কী সমাধান করেছিল তা .ttf ফাইলগুলি সংশোধন করতে খ্রিস্টানের .exe (এই পৃষ্ঠায় অন্য কোথাও) চলছে। এই কাজ করার পর, IE11 হবে আমার ওয়েব পেজ .ttf ফন্ট সঠিকভাবে প্রদর্শন।
মাইক গ্লেডহিল

9

এটি চেষ্টা করুন, ওয়েবকনফাইগে এই লাইনগুলি যুক্ত করুন।

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

আমি মনে করি না যে সে একই রকম ত্রুটি জানিয়েছে তবে এটির প্রয়োজন হবে যদি আপনি পরিবেশন করেন I আইআইএস-এর অফস, হ্যাঁ। বিকল্পভাবে আপনি এইচকেএলএম \ সফ্টওয়্যার \ শ্রেণীর অধীনে .ওফফের জন্য একটি রেজিস্ট্রি কী যুক্ত করতে পারেন এবং এতে "সামগ্রীর ধরণ" মান সেট করতে পারেন। তবে উইকিপিডিয়া বলেছে সঠিক ধরণটিapplication/font-woff
রুপ

আসলে এটি আলাদা জিনিস। আমার এই এন্ট্রিটি ছিল - সমস্যাটি ইতিমধ্যে ডাউনলোড করা ফন্টের সাথে ছিল যা এম্বেড থাকা অনুমতিগুলির কারণে আইইতে খুলতে পারে না।
পাইওটর জাজমিড

আমি অ্যাপাচি পরিবেশে উন্নয়ন করছিলাম এবং যখন আমি আমার ফন্ট ফাইলগুলি একটি উইন্ডোজ আইআইএস সার্ভারে স্থানান্তরিত করি তখন এটি আমার সমস্যাটি স্থির করে দেয়।
স্যামুয়েল কুক

8

একটি পৃথক উত্তর: আইনি সমস্যা।

আপনি এটি করার আগে কয়েকটি বিষয় লক্ষণীয়। প্রথমে, এই ত্রুটিটি পেতে, আইই তে, উপাদানটি পরীক্ষা করুন, আপনার ট্যাবগুলি স্যুইচ করুন এবং ত্রুটিগুলি সন্ধান করুন, আমি বিশ্বাস করি যে "CSS3114" কনসোলে উপস্থিত হয়েছে।

আপনার যা বোঝার দরকার তা হ'ল এটি একটি লাইসেন্সিং ইস্যু। আইই (শঙ্কিত উদ্দেশ্য) আপনি যদি কোনও ত্রুটিযুক্ত এই ফন্টটি লোড করার চেষ্টা করছেন, ফন্টটি ব্যবহার করার জন্য আপনার কাছে ফাইলের অনুমতি নেই এবং যদি আপনার অনুমতি নাও থাকে তবে সম্ভবত আপনি কোনও ক্ষতি হারাতে পারেন আপনি যদি লাইসেন্স ধরে না রাখেন তবে এইভাবে এই ফন্টটি ব্যবহার করার জন্য আইনি লড়াই (যা নিজেই অত্যন্ত সম্ভাব্য নয়) সুতরাং, আপনি প্রথমবারের মতো আপনাকে "না" বলার একমাত্র ব্রাউজার হওয়ার জন্য আইই কে ধন্যবাদ জানাতে পারেন, কারণ এটি কমপক্ষে আপনাকে জানতে দেয় যে আপনি প্রশ্নবিদ্ধ কিছু করছেন।

এটি বলেছিল, এখানে আপনার উত্তর:

প্রথমে আপনি .css- এ সেরা কোডটি ব্যবহার করছেন তা নিশ্চিত করুন, এর জন্য কয়েকটি সিএসএস উত্তর দেখুন।
আইই 11 সিএসএস উদাহরণ (সমস্ত আধুনিক ব্রাউজারগুলিতে আইই 9-এর জন্য টুইট করা প্রয়োজন হতে পারে):

@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

এটি সত্য যে এম 9 এ এম্বেডিং বিট ইনস্টলযোগ্যতে সেট করতে আই 9 এর টিটিএফ ফন্টের প্রয়োজন। জেনারেটর এটি স্বয়ংক্রিয়ভাবে করে তবে আমরা বর্তমানে অন্যান্য কারণে অ্যাডোব ফন্টগুলি অবরুদ্ধ করছি। অদূর ভবিষ্যতে আমরা এই সীমাবদ্ধতা তুলতে পারি।


7

এই সমস্যাটির কারণে আমি অনেক সময় নষ্ট করেছি। শেষ পর্যন্ত আমি নিজেই দুর্দান্ত সমাধান খুঁজে পেলাম। আমি শুধুমাত্র .ttf ফন্ট ব্যবহার করার আগে। তবে আমি একটি অতিরিক্ত ফন্ট ফর্ম্যাট যোগ করেছি .eot যা আইইতে কাজ শুরু করে।

আমি নিম্নলিখিত কোডগুলি ব্যবহার করেছি এবং এটি সমস্ত ব্রাউজারে কব্জির মতো কাজ করে।

@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

ম্যাক ব্যবহারকারী হিসাবে, আমি এমএস-ডস এবং উইন্ডোজ কমান্ড লাইন সরঞ্জামগুলি ব্যবহার করতে পারিনি যা ফন্ট এম্বেডিংয়ের অনুমতিটি ঠিক করার জন্য উল্লেখ করা হয়েছিল। যাইহোক, আমি খুঁজে পেয়েছি যে আপনি 'সমস্ত কিছু অনুমোদিত' এর অনুমতি সেট করতে ফন্টল্যাব ব্যবহার করে এটি ঠিক করতে পারেন। আমি আশা করি যে ম্যাক ওএস এক্সে ইনস্টলযোগ্য ফন্টের অনুমতিটি কীভাবে সেট করবেন সে সম্পর্কে এই রেসিপিটি অন্যদের জন্যও কার্যকর।


"আমি এমএস-ডস এবং উইন্ডোজ কমান্ড লাইন সরঞ্জামগুলি ব্যবহার করতে অক্ষম ছিলাম": উত্স কোডটি যদিও দেওয়া হয়েছে - আমি আশা করি এটি কেবল ম্যাকের উপর সংকলন করত?
রুপ

দুঃখিত, আমি বলতে চাইছিলাম: একজন ক্ষতিগ্রস্থ ওএস এক্স ফাইন্ডার ব্যবহারকারী হওয়া।
বুজ করেছে

4

আপনি যদি নোডেজ / এনপিএমের সাথে পরিচিত হন তবে টিটিএফ-ফন্টে "ইনস্টলযোগ্য এম্বেডিং অনুমোদিত" পতাকাটি সেট করার সহজ উপায় টিটেম্বেড-জেএস । এটি নির্দিষ্ট করা .ttf ফাইলটি সংশোধন করবে:

npm install -g ttembed-js

ttembed-js somefont.ttf

ধন্যবাদ - এটি .otf ফন্টগুলির জন্য দুর্দান্ত কাজ করেছে যা আইই 11-এ আমার সমস্যার কারণ হয়ে দাঁড়িয়েছে।
জে স্প্রেগ

3

সমস্যাটি হতে পারে আপনার সার্ভার কনফিগারেশনের ক্ষেত্রে - এটি হরফ ফাইলগুলির জন্য সঠিক শিরোনাম প্রেরণ করবে না। আইস 9 ক্রস-অরিজিন ওয়েব ফন্ট ডাউনলোডের জন্য দেওয়া প্রশ্নের উত্তরটি একবার দেখুন ।

এরিকলও আপনার অ্যাপাচি কনফিগারেশনে নিম্নলিখিতটি যুক্ত করার পরামর্শ দেয়

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

তবে এটি যদিও একই ঘটনা নয়। আমি সেই পোস্টটি পড়েছি এবং আপনার সরবরাহিত সমাধানটি ইতিমধ্যে চেষ্টা করেছি। সমস্যাটি বিশেষত অ্যাডোব ফন্টগুলির সাথে। আমি ফন্ট কাঠবিড়ালি থেকে ফন্ট কিটগুলি ব্যবহার করার চেষ্টা করেছি এবং সমস্ত ব্রাউজারগুলিতে এটি পুরোপুরি সূক্ষ্মভাবে কাজ করে (আই 99)। যখন আমি একইভাবে অ্যাডোব ফন্টগুলি (উপযুক্ত ফর্ম্যাটগুলিতে রূপান্তরিত) ব্যবহার করার চেষ্টা করি
আইই

এবং - আমি যা বলতে ভুলে গেছি (আমি আমার প্রশ্নটি সম্পাদনা করব) - আমি আইআইএস 7.5 এর অধীনে আমার ওয়েবসাইটগুলি চালাচ্ছি।
পাইটর জিজমিড

তারা কি কোনও সুযোগে 1 টি ফন্ট টাইপ করে?
জোসেফ আর্ল

এগুলি হ'ল একক-ফাইল .ttf (ট্রু টাইপ) ফন্ট। তবে অনলাইনফন্টকনভার্টার ডটকমের মাধ্যমে .ওফ ফর্ম্যাটে রূপান্তর করার সময় কোনওভাবে আমি একটি .afm (অ্যাডোব ফন্ট মেট্রিক্স) ফাইল পাই। আমার কোন ক্লু নেই তার সাথে কী করব?
পাইোটার জাজিমড

2

ত্রুটিটি পাবে এমন প্রত্যেকের জন্য: "টেবিলফেরাকশনটি 0, 1 বা hex: 003 হওয়া আবশ্যক" ttfpatch ব্যবহার করার সময়, আমি 64 বিটের জন্য এম্বেডটি কম্পাইল করেছি। আমি কোনও কিছু পরিবর্তন করি নি, কেবল প্রয়োজন লিবস যুক্ত করে সংকলিত। নিজের ঝুঁকিতে ব্যবহার করুন।

ব্যবহার: কনসোল অ্যাপ্লিকেশন 1 font.ttf

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


2

আপনি যদি সি কোড চালানোর পরিবর্তে পিএইচপি স্ক্রিপ্ট দিয়ে এটি করতে চান (বা আপনি আমার মতো ম্যাকের উপরে আছেন এবং এটি খোলার জন্য কেবলমাত্র এক বছর অপেক্ষা করার জন্য আপনাকে এক্সকোডের সাথে সংকলন আর্স করা যায় না), এখানে একটি পিএইচপি ফাংশন যা আপনি ফন্ট থেকে এম্বেডিং অনুমতিগুলি সরাতে ব্যবহার করতে পারেন:

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 নম্বর উত্তর হওয়া উচিত। পুরানো উত্তরগুলি ছাড়িয়ে যাওয়ার পক্ষে এখন পর্যন্ত চলা লজ্জাজনক।
গোস

অনেক ধন্যবাদ @ গুজ! আমি মূলত এটি আমার কাজের জন্য লিখেছিলাম, তবে কোডটি ফেলে দেওয়া এবং প্রতিস্থাপন করা হয়েছে, তাই এটি স্ট্যাক ওভারফ্লোতে বাস করে। ওয়েব অ্যাপ্লিকেশন সমস্যার জন্য সি কোড সরবরাহ করা অবশ্যই আদর্শ নয়।
NobleUplift

@ গুজ আই সি পারফর্ম করুন সর্বদা. সুতরাং এটি স্বাদের বিষয় এবং এ কারণেই এই উত্তরটি উত্তরের সমতুল্য। এফওয়াইআই আপনি নিজের ওয়েবসাইটে সি কোড প্রয়োগ করতে সিজিআই ব্যবহার করতে পারেন।
71GA

0

কোডটি অনুসরণ করে আপনি এটি সমাধান করতে পারেন

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

না, এটি কাজ করবে না। আমার কেসটি হ'ল ফন্টগুলি সম্পর্কে ছিল যা ডিজাইনে এম্বেড করার অনুমতি দেয় না (তবে লাইসেন্সের সাহায্যে এটি অনুমতি দেয়)। সুতরাং এটি আমি কীভাবে এম্বেড করব তা নয়। এটি একটি টিটিএফ ফন্টের সাথে পরীক্ষা করুন যা স্পষ্টভাবে ওয়েব-এম্বেডিং নিষিদ্ধ করে এবং আপনি আমার সমস্যাটি বুঝতে পারবেন।
পাইটর জাজমিড

0

আমি খুঁজে পেয়েছি eotফাইলের বাইরে রাখা উচিত ttf। যদি এটির অধীনে থাকে ttf, ভেবে ফন্টটি সঠিকভাবে দেখায়, আই 9 এখনও ত্রুটি ছুঁড়ে দেবে।

সুপারিশ:

@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 এখনও অভিযোগ করেছে।

আমি এই চমৎকার গিট গিস্টটি পেয়েছি এবং এটি আমার সমস্যাগুলি সমাধান করেছে। https://gist.github.com/stefanmaric/a5043c0998d9fc35483d

আপনার সিএসএসে কোডটি অনুলিপি করুন এবং পেস্ট করুন।


0

আমি সম্প্রতি লোড করার সময় কনসোলটিতে CSS3114 এবং CSS3111 ত্রুটি উত্পাদন করে .ot এবং .otf ফন্টগুলির সাথে এই সমস্যাটির মুখোমুখি হয়েছি। আমার জন্য যে সমাধানটি কাজ করেছিল তা হ'ল কেবল। ওফ এবং .ওফ 2 ফর্ম্যাটগুলিতে একটি .ttf ফর্ম্যাট ফ্যালব্যাক ব্যবহার করা। .Woff ফর্ম্যাটগুলি বেশিরভাগ ব্রাউজারগুলিতে .ttf এর আগে ব্যবহৃত হবে এবং ফন্ট এম্বেডিং অনুমতি ইস্যু (css3114) এবং ফন্ট নামকরণ ভুল ফর্ম্যাট ইস্যু (css3111) ট্রিগার করবে বলে মনে হয় না। CSS3111 এবং CSS3114 ইস্যু সম্পর্কে এই অত্যন্ত সহায়ক নিবন্ধটিতে আমি আমার সমাধানটি খুঁজে পেয়েছি এবং @ ফন্ট-ফেস ব্যবহার করে এই নিবন্ধটি পড়েছি

দ্রষ্টব্য: এই সমাধানটির জন্য কোনও হরফ ফাইল পুনরায় সংকলন, রূপান্তর বা সম্পাদনা করার দরকার নেই। এটি একটি CSS- সমাধান মাত্র solution আমি যে ফন্টটি দিয়ে পরীক্ষা করেছিলাম তার জন্য .eot, .otf, .woff, .woff2 এবং .svg সংস্করণ তৈরি হয়েছিল, সম্ভবত মূল .ttf উত্স থেকে যা আমি চেষ্টা করার পরে 3114 ত্রুটি তৈরি করেছি, তবে .ওফ এবং। woff2 ফাইলগুলি এই ইস্যু থেকে প্রতিরোধী বলে মনে হয়েছে।

এটিই হ'ল @ ফন্ট-ফেস দিয়ে আমার জন্য কাজ করেছে:

@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');
}

আইই-তে @ ফন্ট-ফেস দিয়ে ত্রুটিগুলি ট্রিগার করেছিল এটি:

@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');
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.