ميدياويكي:Gadget-Check-Fonts.js
ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.
- فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
- جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
- إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
- أوبرا: اضغط Ctrl-F5.
/* هذه الإضافة معممة لأنها تضيف الخطوط التي ليست عند المستخدم تلقائيًّا
كتبها: حبيشان
*/
(function($,mw) {
const Qfonts = {
//خط قراءة حفص من المجمع
Hafs: {name:"KFGQPC HAFS Uthmanic Script", query: '.quran-KFGQPC', dur: 177},
Warsh: {name:"KFGQPC Warsh Uthmanic Script", query: '.quran-Warsh', dur: 177},
Qaloun: {name:"KFGQPC Qaloun Uthmanic Script", query: '.quran-Qaloun', dur: 177},
Shuba: {name:"KFGQPC Shuba Uthmanic Script", query: '.quran-Shuba', dur: 177},
Douri: {name:"KFGQPC Douri Uthmanic Script", query: '.quran-Douri', dur: 177},
Sousi: {name:"KFGQPC Sousi Uthmanic Script", query: '.quran-Sousi', dur: 177},
Bazzi: {name:"KFGQPC Bazzi Uthmanic Script", query: '.quran-Bazzi', dur: 177},
Qunbul: {name:"KFGQPC Qunbul Uthmanic Script", query: '.quran-Qunbul', dur: 177},
DKhatt: {name:"DigitalKhatt", query: '.quran-DKhatt', dur: 1},
};
var FontDetector = function() {
var baseFonts = ['monospace', 'sans-serif', 'serif'];
var testString = "فأسقيناكموه";
var testSize = '72px';
var h = document.getElementsByTagName("body")[0];
var s = document.createElement("span");
s.style.fontSize = testSize;
s.innerHTML = testString;
var defaultWidth = {};
var defaultHeight = {};
for (var index in baseFonts) {
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;
};
function addfont(font_name, font_data){
const thefont = new FontFace(font_name, 'url(data:application/font-woff2;base64,' + font_data + ')');
document.fonts.add(thefont);
thefont.load();
}
//var mwstore = require( 'mediawiki.storage' ).local;
var f = new FontDetector();
$.each( Qfonts, function( k, v ) {
if ($(v.query).length > 0 && !f.detect(v.name)) {
var fontdata = mw.storage.get('mw-font-' + k);
if (fontdata) {
addfont(v.name,fontdata);
} else {
$.getJSON('/w/index.php?title=MediaWiki:Font-' + k + '.json&action=raw&ctype=application/json',
function (jdata) {
addfont(v.name,jdata.data );
mw.storage.set('mw-font-' + k, jdata.data, (v.dur * 86400))
});
}
}
});
})(jQuery, mediaWiki);