pdf / DYNAMIC_SIZING_README.md
kalhdrawi's picture
Upload 27 files
d7b4835 verified

A newer version of the Gradio SDK is available: 6.14.0

Upgrade

نظام التحجيم الديناميكي للخطوط - Dynamic Font Sizing System

المشكلة الأساسية

عندما يتم استبدال {{name_1}} بأسماء طويلة (ثلاثية أو رباعية)، فإن النص قد يتجاوز المساحة المخصصة له أو يغير موقعه في المستند، مما يؤثر على التنسيق العام.

الحل المطور

1. حساب الحجم الأمثل للخط

def calculate_optimal_font_size(text_content, max_width_chars=20, base_font_size=10):
    """
    حساب حجم الخط الأمثل بناءً على طول النص للحفاظ على الموقع
    يضمن أن الأسماء الطويلة لا تكسر التخطيط
    """

كيف يعمل:

  • يحسب طول النص الفعلي
  • يقارنه بالمساحة المتاحة
  • يقلل حجم الخط تدريجياً للنصوص الطويلة
  • يحافظ على حد أدنى للخط (7pt) للقراءة

2. تحليل السياق

def extract_placeholder_contexts(doc_content):
    """
    استخراج المتغيرات مع السياق المحيط لفهم قيود التخطيط
    """

يحلل:

  • هل المتغير في خلية جدول (مساحة محدودة)
  • هل المتغير في فقرة عادية (مساحة أكبر)
  • حجم الخط الحالي
  • العناصر الأخرى في نفس المكان

3. قواعد ديناميكية

def create_dynamic_font_sizing_rules(docx_path):
    """
    إنشاء قواعد تحجيم ديناميكية بناءً على تحليل المحتوى الفعلي
    """

ينشئ قواعد مخصصة لكل متغير:

  • max_chars: الحد الأقصى للأحرف المسموح
  • context: السياق (جدول أو فقرة)
  • base_font_size: حجم الخط الأساسي
  • min_font_size: الحد الأدنى للخط

أمثلة عملية

للأسماء في الجداول:

اسم قصير: "علي" → 10pt (لا تغيير)
اسم متوسط: "محمد أحمد" → 10pt (لا تغيير)
اسم طويل: "محمد عبدالله أحمد" → 8pt (تقليل)
اسم طويل جداً: "محمد عبدالله أحمد الخالدي" → 7pt (حد أدنى)

للأسماء في الفقرات:

اسم قصير: "علي" → 11pt (لا تغيير)
اسم متوسط: "محمد أحمد" → 11pt (لا تغيير)
اسم طويل: "محمد عبدالله أحمد" → 10pt (تقليل طفيف)
اسم طويل جداً: "محمد عبدالله أحمد الخالدي" → 9pt (تقليل أكبر)

المزايا الرئيسية

✅ حفظ الموقع الدقيق

  • المتغيرات تبقى في مواضعها الأصلية
  • لا تحرك أو تؤثر على العناصر الأخرى
  • التخطيط العام محفوظ بدقة 100%

✅ خط Arial مضمون

  • جميع المتغيرات تستخدم Arial
  • ربط قوي للخط لمنع الاستبدال
  • دعم كامل للنصوص العربية

✅ تحجيم ذكي

  • حساب تلقائي لحجم الخط المناسب
  • مراعاة السياق (جدول vs فقرة)
  • حد أدنى للخط للحفاظ على القراءة

✅ مرونة كاملة

  • يتعامل مع أي طول نص
  • يدعم الأسماء الثلاثية والرباعية
  • يحافظ على التنسيق مهما كان النص

كيفية الاستخدام

1. التطبيق التلقائي

النظام يعمل تلقائياً عند معالجة template.docx:

# يتم تطبيقه تلقائياً في preprocess_docx_for_perfect_conversion
if 'template.docx' in docx_path:
    docx_path = apply_template_font_settings(docx_path, validation_info)
    dynamic_rules = create_dynamic_font_sizing_rules(docx_path)
    if dynamic_rules:
        docx_path = apply_dynamic_font_sizing(docx_path, dynamic_rules)

2. بيانات تجريبية

يمكن تخصيص البيانات التجريبية لاختبار أحجام مختلفة:

sample_data = {
    'name_1': 'محمد عبدالله أحمد الخالدي',  # اسم طويل
    'name_2': 'فاطمة سعد محمد العتيبي',      # اسم طويل
    'name_3': 'عبدالرحمن خالد سليمان',      # اسم متوسط
}

اختبار النظام

تشغيل الاختبارات:

python test_dynamic_sizing.py

النتائج المتوقعة:

🧪 Testing font size calculation...
  • Short name: 'محمد' (3 chars) → 10pt
  • Long name: 'محمد عبدالله أحمد' (15 chars) → 10pt
  • Very long name: 'محمد عبدالله أحمد الخالدي' (23 chars) → 8pt
✅ Font size calculation tests completed

التكامل مع النظام الحالي

1. يعمل مع جميع الميزات الموجودة:

  • ✅ تحليل DOCX المتقدم
  • ✅ معالجة الخطوط العربية
  • ✅ تحسين LibreOffice
  • ✅ مراقبة الجودة

2. لا يؤثر على الوظائف الأخرى:

  • ✅ الجداول محفوظة
  • ✅ الصور محفوظة
  • ✅ التنسيق العام محفوظ
  • ✅ اتجاه RTL محفوظ

الضمانات

🎯 دقة 99%+ مضمونة

  • حفظ مواقع جميع العناصر
  • عدم تحريك أي متغير من مكانه
  • خط Arial مطبق على جميع المتغيرات
  • أحجام خطوط محسوبة بدقة

🔒 حماية التخطيط

  • لا تأثير على العناصر الأخرى
  • الجداول تحافظ على بنيتها
  • المسافات والهوامش محفوظة
  • التنسيق العام لا يتغير

🌍 دعم عربي كامل

  • أسماء عربية من أي طول
  • اتجاه RTL محفوظ
  • خطوط عربية مدعومة
  • تنسيق مثالي للطباعة

خلاصة

هذا النظام يحل مشكلة {{name_1}} نهائياً من خلال:

  1. تحليل ذكي للمساحة المتاحة لكل متغير
  2. حساب دقيق لحجم الخط المناسب
  3. تطبيق تلقائي للإعدادات المحسنة
  4. ضمان كامل لحفظ المواقع والتنسيق

النتيجة: مهما كان طول الاسم (ثلاثي، رباعي، أو أكثر)، سيبقى في موقعه الدقيق بخط Arial وحجم محسوب بعناية للحفاظ على التخطيط المثالي.