معلومات إضافية: حساب ارتفاع المنطقية وحجم الخط بالنقاط

ملخص

لإنشاء خط في بيئة رسومية Microsoft Windows نظراً لحجم النقطة المطلوبة، يجب تطبيق حساب ارتفاع الخط المنطقي نظراً لاستخدام الدالتين CreateFont() و CreateFontIndirect() الوحدات المنطقية لتحديد الارتفاع.


لوصف خط للمستخدم، تطبيق حساب حجم النقطة للخط، نظراً للارتفاع. توفر هذه المقالة الصيغ المطلوبة لتنفيذ هذه الحسابات لوضع مخطط MM_TEXT. يجب اشتقاق معادلة جديدة لحساب حجم الخط في وضع مخطط آخر.

مزيد من المعلومات

لحساب ارتفاع منطقية، استخدم الصيغة التالية:

                                Point Size * LOGPIXELSY
height = Internal Leading + -------------------------
72

لوجبيكسيلسي هو عدد وحدات البكسل الموجودة في بوصة منطقية على الجهاز. يتم الحصول على هذه القيمة بواسطة استدعاء الدالة getdevicecaps () برقم لوجبيكسيلسي. قيمة 72 أهميته بوصة واحدة تحتوي على 72 نقطة.


المشكلة مع هذا الحساب أنه لا توجد طريقة لتحديد الداخلية المؤدية للخط لأنه لم يتم إنشاؤها بعد. للتغلب على هذه الصعوبة، استخدم اختلاف الصيغة التالية:

            -(Point Size * LOGPIXELSY)
height = --------------------------
72

يمكن أيضا كتابة هذه الصيغة كما يلي:

   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
عند تطبيق استدعاء دالة CreateFont() أو CreateFontIndirect() وتحدد قيمة سالبة للمعلمة الارتفاع، يوفر مخطط الخط الأقرب لارتفاع الأحرف بدلاً من ارتفاع الخلية. الفرق بين ارتفاع الخلية وارتفاع الحرف هو المسافة بين السطور الداخلية، كما يتضح من الرسم البياني التالي:

   ----------  <------------------------------
| | |- Internal Leading |
| | | | <--------- |
| | | | | |- Cell Height
| |---| | |- Character Height |
| | | | | |
| | | | | |
---------- <------------------------------

الصيغة التالية بحساب حجم الخط بالنقاط:

                (Height - Internal Leading) * 72
Point Size = --------------------------------
LOGPIXELSY

يتم الحصول على قيم الارتفاع وقيادة الداخلية من
بنية بيانات TEXTMETRIC . يتم الحصول على القيمة لوجبيكسيلسي من
دالة GetDeviceCaps كما هو مبين أعلاه.


جولة المحسوب أشر الحجم إلى أقرب عدد صحيح. الإطارات
دالة MulDiv() تقريب ناتجها واختيارا ممتازا لإجراء الحساب السابق.
خصائص

رقم الموضوع: 74299 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات