Scalable Vector Graphics
حوّل رسوميات SVG المتجهية إلى PNG أو JPG أو WebP مباشرةً في متصفحك — بدون رفع ملفات، بدون خوادم. FileDex يُحوّل ملف SVG محلياً باستخدام Canvas API، مع الحفاظ على كل مسار وتدرج لوني وطبقة شفافية بالدقة التي تختارها.
أسئلة شائعة
كيف أحوّل SVG إلى PNG؟
اسحب ملف SVG إلى محوّل FileDex واختر PNG كصيغة الإخراج. التحويل يعرض الرسم المتجهي كصورة نقطية بالدقة التي تختارها بالكامل في متصفحك — لا يُرفع أي ملف إلى خادم، والشفافية تُحفظ افتراضياً.
هل يمكنني تحرير SVG في محرر نصوص؟
نعم. ملفات SVG هي مستندات XML نصية عادية. افتح أي ملف SVG في VS Code أو المفكرة أو vim أو أي محرر نصوص لعرض وتعديل الأشكال والألوان والأبعاد والنصوص مباشرةً. عنصر دائرة يبدو هكذا: `<circle cx="50" cy="50" r="40" fill="blue"/>` — قابل للقراءة والتحرير بالكامل بدون برامج متخصصة.
ما الفرق بين SVG وPNG؟
SVG يُخزّن الرسوميات كوصف رياضي للأشكال يتوسع لأي حجم بدون فقدان الجودة. PNG يُخزّن شبكة ثابتة من البكسلات تتشوّه عند التكبير. استخدم SVG للشعارات والأيقونات والرسوم التوضيحية؛ واستخدم PNG للقطات الشاشة والصور الفوتوغرافية والأعمال النقطية المعقدة.
هل من الآمن رفع ملفات SVG إلى موقعي؟
ملفات SVG يمكنها احتواء JavaScript مُضمّن ومراجع كيانات خارجية، مما يجعلها مصدر خطر كبير لهجمات XSS. لا تعرض ملفات SVG المرفوعة من المستخدمين من نطاقك الرئيسي بدون تنقية. استخدم مكتبة مثل DOMPurify لإزالة البرمجة، أو حوّلها إلى PNG عند الرفع.
كيف أُقلّل حجم ملف SVG؟
تحسين SVG يُقلّل حجم الملف بإزالة البيانات الوصفية غير الضرورية والمجموعات الفارغة والتعريفات غير المُستخدمة والسمات المكررة التي تُدرجها محررات الرسوميات تلقائياً. سير العمل القياسي يُحقق عادةً تقليصاً بنسبة 30 إلى 60 بالمئة بدون أي تغيير مرئي. لتوفير إضافي، بسّط المسارات المعقدة بتقليل عدد نقاط الارتكاز في محرر متجهي.
لماذا يبدو ملف SVG مختلفاً في متصفحات مختلفة؟
عارضات SVG في المتصفحات تختلف في تعاملها مع حركات SMIL وتأثيرات المرشحات وبعض خصائص CSS. Chrome وFirefox لديهما أكمل دعم لـ SVG 2. اختبر رسوميات SVG التفاعلية عبر المتصفحات المستهدفة وفضّل حركات CSS على SMIL للتوافق الأوسع.
هل يمكن لملفات SVG أن تحتوي حركات؟
SVG يدعم ثلاث طرق للحركة تخدم استخدامات مختلفة. حركات CSS والانتقالات توفر أوسع توافق مع المتصفحات وتعمل جيداً لتأثيرات التمرير والحركة البسيطة. عناصر الترميز التصريحي تتعامل مع تتبع المسارات والتحويلات المعقدة بدون برمجة. مكتبات JavaScript للحركة توفر التحكم بالجدول الزمني والتسلسلات التفاعلية للرسوميات المتحركة الغنية.
كيف أجعل SVG متجاوباً على صفحة ويب؟
أزل سمتي width وheight الثابتتين من عنصر SVG الجذر وأبقِ فقط سمة viewBox. سيتوسع SVG مرناً ليملأ حاويته CSS. طبّق max-width وheight auto في CSS لسلوك متجاوب متناسب عبر جميع أحجام الشاشات.
ما يميز .SVG
لغة XML للرسوميات المتجهية
تحت كل ملف SVG يكمن مستند XML مُحكم البنية، حيث تُعبَّر الأشكال والنصوص والمؤثرات البصرية كعناصر موسومة بسمات — نفس القواعد البنيوية التي تُشغّل HTML وRSS وXHTML. هذا الأساس XML هو ما يجعل SVG مختلفاً جذرياً عن كل صيغة صور نقطية: فهو في آنٍ واحد صورة ومستند، قابل للقراءة من البشر والآلات على حدٍّ سواء.
اكتشف التفاصيل التقنية
نظام إحداثيات viewBox
يُصرّح العنصر الجذر <svg> عن سمة viewBox تُنشئ مستوى إحداثيات مجرد. مثلاً viewBox بقيمة "0 0 100 100" يُنشئ لوحة بمئة وحدة في مئة وحدة بغض النظر عن أبعاد البكسل الفعلية على الشاشة. يُسقط المتصفح هذا الفضاء المجرد على أي حجم فيزيائي يُعيّنه CSS أو HTML، مُجرياً القياس رياضياً. هذا هو السبب في أن صور SVG تبقى حادة عند أي مستوى تكبير — لا توجد بكسلات للاستيفاء بينها، فقط إحداثيات تُعاد حسابها.
تتحكم سمة viewBox أيضاً في سلوك نسبة العرض إلى الارتفاع من خلال سمة preserveAspectRatio. القيمة الافتراضية "xMidYMid meet" تُوسّط الرسم وتُقيّسه بشكل منتظم ليناسب الحاوية. يمكن للمصممين تجاوز هذا لقص المحتوى أو تمديده أو محاذاته — مستوى من التحكم في التخطيط لا توفره أي صيغة نقطية.
بيانات المسار وسمة d
عنصر <path> هو العمود الفقري لـ SVG. سمته d تقبل قواعد رسم مُكثّفة: M (انتقال)، L (خط مستقيم)، H (خط أفقي)، V (خط عمودي)، C (منحنى بيزيه تكعيبي)، S (تكعيبي أملس)، Q (بيزيه تربيعي)، A (قوس بيضاوي)، وZ (إغلاق المسار). مسار واحد يمكن أن يصف أيقونة كاملة أو مخطط رسم توضيحي معقد أو شكل حرف.
هذه الكثافة هي سبب صغر حجم أيقونات SVG. أيقونة 24x24 مُصدّرة من Figma قد تحتوي مسار <path> واحداً بـ 80-120 حرفاً من بيانات d — الملف بأكمله يزن أقل من 500 بايت. قارن ذلك بنسخة PNG من نفس الأيقونة بدقة 2x: من 4 إلى 12 كيلوبايت حسب التعقيد. اضرب ذلك في نظام تصميم يضم 400 أيقونة، وSVG يوفر مئات الكيلوبايتات.
تنسيق CSS داخل SVG
عناصر SVG تقبل خصائص CSS عبر ثلاث آليات: سمات النمط المباشرة، كتل <style> المُضمّنة، وأوراق أنماط خارجية. سمات العرض مثل fill وstroke وopacity وfont-size يمكن تعيينها كسمات XML أو خصائص CSS، مع أسبقية CSS عند وجود كليهما.
هذا التكامل مع CSS يُمكّن التخصيص المرئي. أيقونة SVG واحدة تتغير لونها بناءً على صنف CSS للعنصر الأب — تبديل الوضع الداكن وحالات التمرير وتخصيص ألوان العلامة التجارية كلها تعمل بدون تكرار الرسم. متغيرات CSS المخصصة (custom properties) تخترق إلى SVG المُضمّن، فيمكن لنظام تصميم أن يُعرّف --icon-color مرة واحدة وتُورثه كل أيقونة SVG.
الحركة: SMIL وCSS
يدعم SVG الحركة التصريحية عبر عناصر SMIL (لغة تكامل الوسائط المتعددة المتزامنة): <animate> و<animateTransform> و<animateMotion> و<set>. هذه العناصر تُعرّف حركات الإطارات المفتاحية مباشرةً في الترميز بدون JavaScript. أعلنت Chrome إيقاف SMIL عام 2015 لكنها تراجعت بعد ضغط المجتمع — يظل SMIL فعّالاً في جميع المتصفحات الرئيسية حتى 2025.
حركات CSS والانتقالات تعمل أيضاً على عناصر SVG. خصائص مثل transform وopacity وstroke-dashoffset وfill يمكن تحريكها بقواعد @keyframes المعيارية. تقنية stroke-dashoffset شائعة بشكل خاص لتأثيرات الرسم التلقائي: بتحريك إزاحة الشرطة لمسار مُخطط من طوله الإجمالي إلى صفر، يظهر المسار كأنه يرسم نفسه على الشاشة.
إمكانية الوصول: title وdesc وARIA
SVG هي صيغة الصور الوحيدة التي تملك ترميز وصول مُدمج. عنصر <title> يوفر اسماً قصيراً للوصول (مكافئ لنص alt)، بينما <desc> يُقدّم وصفاً أطول. قارئات الشاشة مثل NVDA وVoiceOver تقرأ هذه العناصر عند تركيز الـ SVG. إضافة role="img" وaria-labelledby على عنصر <svg> الجذر يضمن سلوكاً متسقاً عبر التقنيات المساعدة.
لرسوميات SVG المعقدة كالمخططات البيانية، يمكن تطبيق سمات ARIA على العناصر الفردية — عمود في مخطط بياني يحمل aria-label="الإيرادات: 4.2 مليون ريال" بحيث يحصل مستخدمو قارئات الشاشة على نفس البيانات التي يراها المبصرون. لا توفر أي صيغة نقطية هذا المستوى من الدقة الدلالية.
SVGO: المُحسّن القياسي
ملفات SVG المُصدّرة من أدوات التصميم تحمل عبئاً كبيراً: بيانات وصفية للمحرر، كتل <defs> فارغة، إعلانات فضاء أسماء مكررة، معرّفات غير مُستخدمة، قيم سمات افتراضية، ودقة عشرية مفرطة في إحداثيات المسارات. أداة SVGO (مُحسّن SVG)، أداة Node.js بأكثر من 5,000 نجمة على GitHub، تُزيل هذا العبء بشكل منهجي.
تصدير نموذجي من Illustrator يكون أكبر بنسبة 30-60% من اللازم. مجموعة إضافات SVGO الافتراضية تُزيل التعليقات والبيانات الوصفية والمجموعات الفارغة والعناصر المخفية وسمات المحرر الخاصة مع تقريب إحداثيات المسارات لدقة قابلة للضبط (3 خانات عشرية افتراضياً). الفرق البصري لا يُدرك؛ فرق الحجم كبير. لنشر الويب الإنتاجي، تشغيل SVGO معيار كتصغير JavaScript.
نقطة تحوّل Font Awesome
أصدرت Font Awesome الإصدار 5 في أواخر 2017، واستبدلت توزيع خطوط الأيقونات بـ SVG مُضمّن. لم يكن هذا قراراً منعزلاً — GitHub كانت قد اتخذت نفس الخطوة مُستشهدةً بإمكانية الوصول والأداء وجودة العرض. أثبت هذا التحوّل أن SVG هو معيار الأيقونات في الصناعة وكشف قصور خطوط الأيقونات: لا دعم متعدد الألوان، وتشوهات عرض البكسل الفرعي، ووميض النص غير المُنسّق (FOUT) أثناء تحميل الخط، وسلوك ضعيف مع قارئات الشاشة.
أيقونات SVG حلّت المشاكل الأربع. كل أيقونة تُحمّل مستقلةً (بدون تحميل خط كامل)، وتدعم ألواناً متعددة وتدرجات لونية، وتُعرض عند حدود بكسل دقيقة بدون تلميحات البكسل الفرعي، ويمكنها حمل <title> وaria-label لإمكانية الوصول. تحوّل Font Awesome سرّع الاعتماد عبر صناعة الويب.
SVG المتجاوب وطرق التضمين
يمكن تضمين SVG في HTML بخمس طرق، لكل منها قدرات مختلفة. SVG مُضمّن <svg> في HTML يُعطي وصولاً كاملاً لـ CSS وJavaScript. وسم <img> يُعامل SVG كصورة ثابتة — بدون برمجة ولا وصول لأوراق أنماط خارجية، لكن قابل للتخزين المؤقت. CSS background-image يتصرف كـ <img>. وسم <object> يسمح بالبرمجة داخل سياق SVG الخاص. وdata URIs تُضمّن SVG مباشرةً في CSS أو سمات HTML.
للسلوك المتجاوب، حذف سمتي width وheight من عنصر <svg> الجذر والاعتماد فقط على viewBox يجعل الرسم يتمدد ليملأ حاويته. مع CSS max-width: 100% وheight: auto، يُنتج هذا SVG مرناً يتكيف مع أي تخطيط بدون استعلامات وسائط.
الخط العربي في SVG
تبرز SVG كصيغة مثالية للخط العربي الرقمي بفضل دعمها للمنحنيات الرياضية الدقيقة. حروف النسخ والثلث والديواني تتطلب منحنيات بيزيه معقدة يُعبّر عنها بأمر C في سمة d بكل أمانة. التشكيل والوصل بين الحروف يُحافظ عليهما كمسارات متجهية تتوسع بلا حدود — من شاشة هاتف 320 بكسل إلى لافتة مبنى وزارة بعرض عشرة أمتار — بدون أي فقدان في الجودة.
تتبنّى الهوية البصرية لرؤية السعودية 2030 شعارات SVG في منصاتها الرقمية لضمان وضوح الخط العربي المزخرف عبر جميع الأجهزة والقياسات. كذلك تشترط هويات الشركات السعودية الكبرى — من أرامكو إلى مصرف الراجحي — شعارات SVG في أدلتها التقنية لضمان التوحيد البصري عبر التطبيقات والمواقع والطباعة.
مكتبات SVG Sprite لأنظمة الأيقونات
مكتبات SVG sprite تُدمج أيقونات متعددة في ملف واحد باستخدام عناصر <symbol> داخل كتلة <svg> مخفية. كل رمز يملك معرّفاً فريداً وviewBox خاصاً به. تُستدعى الأيقونات في أي مكان بالصفحة عبر <svg>``<use href="#icon-id"/>``</svg>. يُعرض المتصفح الرمز المُشار إليه عند نقطة الاستخدام.
هذا النمط يُقلل طلبات HTTP (ملف واحد بدلاً من عشرات)، ويُمكّن تنسيق CSS للأيقونات الفردية، ويُحافظ على نظافة DOM. أدوات البناء مثل svg-sprite وsvgstore تُؤتمت توليد المكتبات من ملفات SVG فردية أثناء خطوة البناء.
مقارنة .SVG مع البدائل
| المقارنة | المعيار | الفائز |
|---|---|---|
| .SVG vs .PNG | Scalability SVG يُعرض بأي دقة بدون تشويه لأن الأشكال مُعرّفة رياضياً. PNG مُقيّد بشبكة البكسلات المُرمّزة — التكبير يُنتج تشوهات استيفاء ضبابية. | SVG أفضل |
| .SVG vs .PNG | File size for icons and logos أيقونة نموذجية 24 بكسل بصيغة SVG تزن 300-500 بايت من XML. نفس الأيقونة بصيغة PNG بدقة 2x (48x48) تتراوح بين 4 و12 كيلوبايت. حجم SVG يعتمد على تعقيد المسار، لا دقة الإخراج. | SVG أفضل |
| .SVG vs .EPS | Web compatibility SVG يُعرض أصلاً في كل متصفح حديث ويتكامل مع CSS وJavaScript. EPS يتطلب تحويلاً للعرض على الويب — المتصفحات لا تستطيع عرض PostScript. | SVG أفضل |
حوّل .SVG إلى...
المرجع التقني
- نوع MIME
image/svg+xml- المطوّر
- World Wide Web Consortium (W3C)
- سنة التقديم
- 2001
- معيار مفتوح
- نعم — عرض المواصفات
البنية الثنائية
SVG صيغة نص عادي بتنسيق XML بدون بنية ثنائية. تبدأ الملفات بإعلان XML اختياري (<?xml version="1.0" encoding="UTF-8"?>) يتبعه عنصر `<svg>` الجذر الذي يُصرّح عن فضاء الأسماء xmlns="http://www.w3.org/2000/svg". شجرة المستند تحتوي كتل تعريفات (`<defs>` للتدرجات والمرشحات ومسارات القص والرموز)، وبدائيات رسومية (`<path>` و`<rect>` و`<circle>` و`<ellipse>` و`<line>` و`<polyline>` و`<polygon>`)، وعُقد نصية (`<text>` و`<tspan>`)، وحاويات تجميع (`<g>`)، وأوراق أنماط مُضمّنة اختيارية (`<style>`). عناصر المسار تستخدم قواعد سمة d المُكثّفة (أوامر M وL وC وQ وA وZ) لوصف منحنيات بيزيه العشوائية. لأن SVG نصي، لا توجد إزاحات بايت ثابتة أو بايتات سحرية ثنائية — التعرّف على الملف يعتمد على كشف وسم <svg الجذر أو تحليل إعلان فضاء أسماء XML.
نقاط الضعف
- تنفيذ JavaScript مُضمّن
- استغلال foreignObject
- حقن XXE (كيان XML خارجي)
الحماية: FileDex يُعالج ملفات SVG بالكامل في المتصفح باستخدام Canvas API للتحويل النقطي. لا يُرفع أي محتوى SVG إلى خادم. خط أنابيب التحويل يُعرض SVG كصورة نقطية، مما يُزيل تلقائياً جميع وسوم البرمجة ومعالجات الأحداث ومراجع الكيانات الخارجية من المخرجات.
- مواصفات Scalable Vector Graphics (SVG) 2 — W3C Candidate Recommendation
- مواصفات Scalable Vector Graphics (SVG) 1.1 (Second Edition) — W3C Recommendation
- سجل Scalable Vector Graphics — Library of Congress Format Description (fdd000020)
- سجل image/svg+xml — IANA Media Types
- Tool SVGO — SVG Optimizer (GitHub repository)
- تاريخ Scalable Vector Graphics — Wikipedia