الخلاصة أولًا: يمكن لدمج الخطوط الفرعية في PDF تقليل الحجم بنسبة 90%، والسبب الجذري أن خطوط اللغة الصينية يتراوح حجمها بين 15 و20 ميجابايت، بينما لا تستخدم الوثيقة الفعلية سوى ألف إلى ألفي حرف. يقوم مبدأ الدمج الفرعي على ثلاث خطوات: مسح مجموعة الأحرف المستخدمة فعليًا في الوثيقة، وإعادة بناء جدول CMap، وإعادة ترتيب فهرس الأشكال الحروفية والتخلص من الأشكال غير المستخدمة. ملف خط Source Han Serif الكامل حجمه 18 ميجابايت، وبعد الدمج الفرعي لا يتجاوز 0.4 ميجابايت، أي انخفاض بنسبة 97.7%. فيما يلي شرح تفصيلي لهيكل ملفات الخطوط، مع بيانات مقارنة فعلية لثلاثة خطوط.
إذا لم تكن ملمًا بعد بطرق ضغط PDF الشاملة، فننصح بقراءة شرح شامل لمبادئ وطرق ضغط PDF أولًا.
أولًا: هيكل ملف الخط، لماذا يكون الخط الصيني المدمج بهذا الحجم
لفهم لماذا يكون الدمج الفرعي فعالًا، لا بد من فهم محتويات ملف الخط. تتكون ملفات TrueType (.ttf) وOpenType (.otf) من جداول بيانات متعددة، ولكل جدول وظيفة مختلفة. عند دمج الخط في PDF، يتم تضمين هذه الجداول كاملة في الملف، بصرف النظر عن عدد الأحرف المستخدمة في الوثيقة.
| جدول البيانات | الوظيفة | النسبة النموذجية | هل يمكن قصه في الدمج الفرعي؟ |
|---|---|---|---|
| cmap | تعيين ترميز الأحرف إلى فهرس الأشكال الحروفية | 1%–3% | يحتاج إعادة بناء |
| glyf | بيانات ملامح الأشكال الحروفية لـ TrueType | 70%–85% | قابل للقص بدرجة كبيرة |
| CFF | ملامح الأشكال الحروفية لـ OpenType CFF (PostScript) | 60%–80% | قابل للقص بدرجة كبيرة |
| loca | فهرس مواقع بيانات الأشكال الحروفية | 1%–2% | يحتاج إعادة بناء |
| hmtx | القياس الأفقي (عرض الحرف/مقدار التقدم) | 2%–5% | يحتاج إعادة بناء |
| name | اسم الخط ومعلومات حقوق الطبع والنشر | 0.5%–1% | محفوظ |
| post | تعيين أسماء PostScript | 1%–3% | قابل للقص الجزئي |
يتبين من الجدول أعلاه أن بيانات ملامح الأشكال الحروفية (جدول glyf أو CFF) تشكّل 60% إلى 85% من حجم ملف الخط. يحتوي الخط الصيني الواحد على 20 إلى 70 ألف شكل حروفي، ويتراوح متوسط حجم بيانات ملامح كل حرف صيني بين 300 و600 بايت، فيكون الإجمالي 10 إلى 20 ميجابايت. في المقابل، لا تستخدم وثيقة PDF المكونة من 50 صفحة سوى 800 إلى 2000 حرف مختلف، أي أن أكثر من 95% من بيانات الأشكال الحروفية هدر، وهذه هي المساحة القابلة للضغط في الدمج الفرعي.
ثانيًا: مبدأ الدمج الفرعي، ثلاث خطوات لقص الأشكال غير المستخدمة
الفكرة الأساسية للدمج الفرعي للخطوط هي: الاحتفاظ فقط بالأشكال الحروفية المستخدمة فعليًا في الوثيقة، والتخلص من الباقي. تنقسم عملية التنفيذ إلى ثلاث خطوات أساسية، وتتطلب كل خطوة عمليات دقيقة على بنية جدول الخط.
| الخطوة | العملية | المبدأ | جداول البيانات المعالجة |
|---|---|---|---|
| 1. مسح استخدام الأحرف | اجتياز كل مجرى محتوى صفحات PDF، واستخراج ترميز الأحرف المعروضة | جمع نقاط Unicode عبر تحليل عوامل تشغيل النص (Tj/TJ) | لا شيء (توليد مجموعة الأحرف) |
| 2. إعادة بناء جدول CMap | إعادة بناء تعيين الترميز إلى فهرس الأشكال الحروفية بناء على الأحرف المستخدمة | الاحتفاظ فقط بمدخلات تعيين الأحرف المستخدمة، وحذف الباقي | cmap |
| 3. إعادة تعيين فهرس الأشكال الحروفية | إعادة ترتيب الأشكال الحروفية المستخدمة بشكل متتابع، وتحديث كل فهارس الإشارة | الفهرس الأصلي قد لا يكون متتابعًا، وبعد إعادة الترتيب يكون من 0 إلى N | glyf/CFF, loca, hmtx |
1. مسح استخدام الأحرف
الخطوة الأولى هي مسح وثيقة PDF وإيجاد كل الأحرف المعروضة فعليًا. تُكتب نصوص PDF في مجرى المحتوى عبر عوامل تشغيل النص (Tj لعرض السلسلة، TJ لعرض المصفوفة)، ولكل حرف ترميز محدد. تتعامل أداة الدمج الفرعي مع كل صفحة، وتستخرج هذه الترميزات، ثم تحولها عبر جدول CMap الحالي للخط إلى نقاط Unicode، فتنتج في النهاية «مجموعة الأحرف المستخدمة».
أثناء المسح، يجب معالجة حالات خاصة: جدول ToUnicode CMap (التعيين العكسي)، والترميز متعدد البايتات (شائع في خطوط CJK)، وبادئة الدمج الفرعي للخطوط المدمجة (تنسيق علامة + سداسي الأحرف). وثيقة PDF صينية مكونة من 50 صفحة تستخدم عادة بين 800 و2000 حرف Unicode مختلف، وبإضافة علامات الترقيم والأرقام، يصل إجمالي الأشكال الحروفية التي يلزم الاحتفاظ بها إلى 1000–2500 شكل.
2. إعادة بناء جدول CMap
جدول CMap هو «فهرس» الخط، يسجل فهرس الشكل الحروفي (glyph ID) المقابل لكل ترميز حرف. يحتوي جدول CMap لخط صيني أصلي على 20 إلى 70 ألف مدخل تعيين، ولا يبقى بعد الدمج الفرعي سوى المدخلات المقابلة للأحرف المستخدمة. يجب أيضًا أثناء إعادة البناء التعامل مع عدة صيغ للجداول الفرعية للترميز.
| صيغة الجدول الفرعي لـ CMap | نطاق الترميز | الاستخدام | معالجة الدمج الفرعي |
|---|---|---|---|
| Format 0 | 0–255 | أحادي البايت لـ ASCII/Latin | قص المدخلات غير المستخدمة |
| Format 4 | المستوى الأساسي BMP | أحرف صينية ويابانية وكورية شائعة | إعادة بناء جدول القطاعات |
| Format 12 | كل Unicode | تغطية جميع الأحرف | قص القطاعات غير المستخدمة |
3. إعادة تعيين فهرس الأشكال الحروفية
هذه هي الخطوة الأكثر أهمية وتعقيدًا. في الخط الأصلي، تُرتب فهارس الأشكال الحروفية (GID) من 0 إلى N بشكل متتابع، لكن الأشكال المطلوب الاحتفاظ بها قد تكون متفرقة في عدة أماكن. إعادة التعيين هي إعادة ترتيب الأشكال المحتفظ بها بشكل متتابع وفق الترتيب الجديد: يبقى GID 0 الأصلي (.notdef) كما هو، وقد يصبح GID 1523 الأصلي هو GID 1 الجديد، وقد يصبح GID 8944 الأصلي هو GID 2 الجديد، وهكذا.
بعد إعادة التعيين، يجب تحديث جميع الجداول التي تشير إلى GID في وقت واحد: جدول glyf (أو CFF) يحتفظ فقط ببيانات الأشكال الحروفية المقابلة ويرتبها وفق الفهرس الجديد، وجدول loca يعيد بناء فهرس المواقع، وجدول hmtx يعيد بناء بيانات القياس الأفقي، وجدول post يحدّث تعيين أسماء PostScript. أي خطأ في هذه الخطوة قد يُتلف الخط، لذلك يجب الالتزام الصارم بمواصفات OpenType.
ثالثًا: بيانات اختبار فعلية، مقارنة ثلاث خطوط قبل وبعد الدمج الفرعي
اخترنا ثلاثة خطوط شائعة لإجراء اختبار الدمج الفرعي، وهي تمثل الخطوط الصينية (Source Han Serif وMicrosoft YaHei) والخطوط الإنجليزية (Arial). الوثيقة الاختبارية عبارة عن عرض أسعار صيني مكون من 50 صفحة، بعدد أحرف مستخدمة 1342 حرفًا.
| الخط | الملف الأصلي | عدد الأشكال الحروفية (أصلي) | عدد الأشكال الحروفية (فرعي) | بعد الدمج الفرعي | نسبة الانخفاض |
|---|---|---|---|---|---|
| Source Han Serif Regular | 18.2 ميجابايت | 65535 | 1342 | 0.42 ميجابايت | 97.7% |
| Microsoft YaHei Regular | 15.6 ميجابايت | 28622 | 1342 | 0.35 ميجابايت | 97.8% |
| Arial Regular | 0.82 ميجابايت | 3257 | 96 | 0.06 ميجابايت | 92.7% |
تظهر بيانات الاختبار أن تأثير الدمج الفرعي في الخطوط الصينية هو الأكثر وضوحًا، إذ ينخفض خط Source Han Serif من 18.2 ميجابايت إلى 0.42 ميجابايت، بنسبة 97.7%. والسبب أن الخطوط الصينية تحوي أشكالًا حروفية كثيرة (+60 ألفًا) بينما الوثيقة تستخدم القليل منها (+1000)، فتكون مساحة القص هائلة. أما الخط الإنجليزي Arial فحجمه الأصلي 0.82 ميجابايت فقط، وبعد الدمج الفرعي يصبح 0.06 ميجابايت، بنسبة 92.7%، فالحجم المطلق صغير لكن النسبة لا تزال ملموسة.
لننظر إلى تأثير الدمج الفرعي عند استخدام كميات مختلفة من الأحرف، مع أخذ خط Source Han Serif كمثال:
| نوع الوثيقة | عدد الأحرف المستخدمة | الحجم بعد الدمج الفرعي | نسبة الانخفاض | الشرح |
|---|---|---|---|---|
| إشعار قصير (صفحة واحدة) | نحو 200 | 0.08 ميجابايت | 99.6% | أحرف قليلة جدًا، مجموعة فرعية صغيرة جدًا |
| محضر اجتماع (10 صفحات) | نحو 600 | 0.19 ميجابايت | 99.0% | وثيقة مكتبية يومية |
| عرض أسعار (50 صفحة) | نحو 1342 | 0.42 ميجابايت | 97.7% | وثيقة مهنية بتغطية أحرف واسعة |
| دليل تقني (200 صفحة) | نحو 2800 | 0.85 ميجابايت | 95.3% | استخدام أحرف كبير |
| موسوعة (1000 صفحة) | نحو 6500 | 1.92 ميجابايت | 89.5% | تغطية أحرف قريبة من الحد الأقصى |
رابعًا: مقارنة أدوات الدمج الفرعي وتوصيات حسب السيناريو
تتوفر عدة أدوات للدمج الفرعي للخطوط، من أدوات سطر الأوامر مفتوحة المصدر إلى محركات الضغط التجارية، ولكل منها مزايا وعيوب. يقارن الجدول التالي الحلول الرئيسية.
| الأداة | قدرة الدمج الفرعي | دعم CFF | المعالجة الدفعية | صعوبة الدمج |
|---|---|---|---|---|
| SmartSlim | ★★★★★ | نعم | مدعومة | SDK/API/سطح المكتب |
| fonttools (Python) | ★★★★☆ | نعم | تحتاج سكربت | متوسطة |
| Adobe Acrobat | ★★★★☆ | نعم | محدودة | عبر واجهة رسومية |
| Ghostscript | ★★★☆☆ | جزئي | مدعومة | سطر الأوامر |
| أدوات أونلاين | ★★☆☆☆ | جزئي | غير مدعومة | منخفضة (مع مخاطر تتعلق بالخصوصية) |
تعتمد أداة SmartSlim على محرك ضغط Rust مطوّر ذاتيًا، وتتعامل تلقائيًا أثناء الدمج الفرعي مع تنسيقي ملامح الأشكال الحروفية TrueType وOpenType CFF، وتدعم المعالجة الدفعية عبر السحب والإفلات لمئات ملفات PDF. والأهم أن عملية الدمج الفرعي بأكملها تتم محليًا، فلا تمر بيانات الخطوط ولا محتوى الوثيقة بأي خادم خارجي، وهو أمر بالغ الأهمية للوثائق السرية والملفات الحساسة في الشركات.
إليك توصيات استراتيجية الدمج الفرعي وفق السيناريوهات المختلفة:
| السيناريو | هل يُنصح بالدمج الفرعي؟ | ملاحظات | الأداة الموصى بها |
|---|---|---|---|
| أرشفة وتوزيع النسخة النهائية | موصى به بشدة | بعد الدمج الفرعي لا يمكن إضافة أحرف جديدة | SmartSlim |
| أرشفة دفعية في الشركات | موصى به بشدة | أتمتة المعالجة عبر API | إصدار الخادم من SmartSlim |
| النشر/المعاينة عبر الإنترنت | موصى به | تقليل حجم التنزيل لتسريع التحميل | سكربت fonttools |
| مسودة لا تزال قيد التحرير | غير موصى به | الاحتفاظ بالخط الكامل لإتاحة التحرير | تجنّب الدمج الفرعي مؤقتًا |
| وثائق سرية/محظورة النشر | موصى به | يجب المعالجة محليًا، وحظر الأدوات الأونلاين | SmartSlim |
لمزيد من تقنيات تحسين PDF، يمكنك الرجوع إلى دليل تحسين Linearization في PDF وطرق ضغط مستندات Word.
خامسًا: الأسئلة الشائعة FAQ
س1: هل يؤثر الدمج الفرعي للخطوط في PDF على جودة العرض؟
لا يؤثر. يتخلص الدمج الفرعي فقط من الأحرف وبيانات الأشكال الحروفية غير المستخدمة في الوثيقة، وتبقى الأحرف المحتفظ بها مطابقة تمامًا للخط الأصلي، فلا يكون هناك أي تأثير على جودة العرض. يبقى الخط بعد الدمج الفرعي ملامح متجهة (vector)، فلا يفقد الدقة عند التكبير أو التصغير، وتظل خصائص اللون والسمك كما هي. القيد الوحيد أن الخط بعد الدمج الفرعي يصلح لهذه الوثيقة فقط، ولا يمكن إعادة استخدامه في وثائق أخرى.
س2: ما مقدار الحجم الذي يمكن تقليله عبر الدمج الفرعي؟
يعتمد ذلك على نسبة عدد الأحرف المستخدمة إلى حجم الخط الأصلي. الخطوط الصينية (مثل Source Han Serif بحجم 18 ميجابايت) لا تستخدم عادة سوى 1000–2000 حرف، فينخفض حجمها بعد الدمج الفرعي إلى 0.3–0.8 ميجابايت، بنسبة تتجاوز 95%. أما الخطوط الإنجليزية (مثل Arial بحجم 0.8 ميجابايت) فتستخدم أحرفًا أقل، فينخفض حجمها بعد الدمج الفرعي إلى 0.05–0.1 ميجابايت، بنسبة نحو 90%. كلما كان الخط أكبر وعدد الأحرف المستخدمة أقل، كان تأثير الدمج الفرعي أوضح.
س3: هل يمكن تحرير النصوص في PDF بعد الدمج الفرعي؟
هناك قيود. يحتفظ الدمج الفرعي فقط بالأحرف المستخدمة في الوثيقة، فإذا أُدخل أثناء التحرير حرف جديد (غير موجود في الوثيقة الأصلية) فلن يظهر، وستظهر بدلًا منه مربعات أو فراغات. لذلك يناسب الدمج الفرعي أرشفة وتوزيع النسخ النهائية، ولا يناسب الوثائق التي تحتاج تحريرًا مكثفًا. إذا كنت بحاجة إلى التحرير، فمن الأفضل الاحتفاظ بالخط الكامل أو إعادة تضمين مجموعة فرعية جديدة.
س4: كيف أتحقق مما إذا كان ملف PDF قد خضع للدمج الفرعي للخطوط؟
افتح ملف PDF عبر Adobe Acrobat، ثم انقر فوق ملف ← خصائص ← خطوط، واعرض قائمة الخطوط المدمجة. إذا كان اسم الخط يحمل بادئة من ستة أحرف (مثل ABCDEO+Source Han Serif)، فهذا يعني أن الدمج الفرعي قد تم. يمكنك أيضًا فتح ملف PDF عبر SmartSlim، حيث يحلّل المحرك تلقائيًا حالة دمج الخطوط ويطالبك بإمكانية الدمج الفرعي مع تقديم تقدير لحجم الضغط.
الخلاصة
يعد الدمج الفرعي للخطوط في PDF من أكثر الأساليب فعالية لتقليل حجم ملفات PDF، لا سيما في الوثائق التي تحوي خطوطًا صينية مدمجة. يقوم المبدأ الأساسي على ثلاث خطوات: مسح الأحرف المستخدمة، وإعادة بناء جدول CMap، وإعادة ترتيب فهرس الأشكال الحروفية والتخلص من غير المستخدم. تُظهر بيانات الاختبار أن خط Source Han Serif بحجم 18 ميجابايت ينخفض بعد الدمج الفرعي إلى 0.4 ميجابايت فقط، بنسبة 97.7%، ودون أي تأثير على جودة العرض.
توصيات عملية: احرص على إجراء الدمج الفرعي للخطوط قبل توزيع النسخ النهائية، واستخدم الأدوات المحلية للوثائق السرية. إذا كنت بحاجة إلى معالجة دفعية لملفات PDF، فإن SmartSlim يدعم أكثر من 40 صيغة في 10 فئات رئيسية تشمل PDF والصور والفيديو وOffice وOFD، ويعتمد على محرك ضغط Rust مطوّر ذاتيًا لإكمال الدمج الفرعي للخطوط تلقائيًا، مع بقاء البيانات داخل المؤسسة.
توصيات ذات صلة
هل تحتاج إلى ضغط الملفات؟ جرّب SmartSlim
مدعوم بمحرك ضغط Rust مطوّر ذاتيًا، يدعم أكثر من 40 صيغة في 10 فئات رئيسية تشمل PDF والصور والفيديو وOffice وOFD، مع ضغط محلي لا تغادر فيه البيانات نطاق المؤسسة.