المعرفة الأساسية:
الخط القياسي الوطني الصيني المبسط (صدر عام 1981، البر الرئيسي للصين). يوجد 7445 حرفًا، منها 6773 حرفًا صينيًا، منها 3755 حرفًا صينيًا من المستوى الأول و3008 حرفًا صينيًا من المستوى الثاني. استخدام ترميز ثنائي بايت (16 بت ثنائي).
رمز الموقع: ينص المعيار الوطني GB2312 على أن جميع الأحرف والرموز الصينية القياسية الوطنية تشكل مصفوفة 94 × 94. في هذه المصفوفة المربعة، يُسمى كل صف "منطقة" ويسمى كل عمود "بت". لذلك، تشكل هذه المصفوفة المربعة في الواقع منطقة مكونة من 94 منطقة (أرقام المناطق هي 0 1 إلى 94 على التوالي)، كل منها 94. أرقام (أرقام الأرقام من 01 إلى 94) من مجموعات الأحرف الصينية في المنطقة. يتم ببساطة دمج رمز المنطقة ورقم الموقع للحرف الصيني لتشكيل "رمز الموقع" للحرف الصيني. في رمز المنطقة المكون من أحرف صينية، الرقمان العلويان هما رمز المنطقة والرقمان السفليان هما رقم الموقع. ويمكن ملاحظة أن هناك مراسلات فردية بين رموز الموقع والأحرف أو الرموز الصينية.
الكود الداخلي: يشير الكود الداخلي للأحرف الصينية إلى تشفير الحروف الصينية في أجهزة الكمبيوتر. هناك فرق بسيط بين رمز الجهاز ورمز الموقع. لماذا لا تستخدم رمز المنطقة مباشرة كرمز داخلي في الكمبيوتر، وذلك لأن رمز المنطقة ورمز البت للأحرف الصينية يتراوح من 1 إلى 94. إذا تم استخدام رمز المنطقة مباشرة كرمز داخلي، فسوف يتعارض مع رمز المنطقة. رمز ASCII الأساسي. عادةً ما يرتبط الرمز الداخلي للأحرف الصينية بنظام الكمبيوتر المستخدم. حاليًا، بالنسبة لمعظم أنظمة الكمبيوتر في الصين، يشغل الرمز الداخلي للحرف الصيني بايتين، يُطلق عليهما البايت عالي الترتيب والبايت ذو الترتيب المنخفض على التوالي، وتكون العلاقة بين هاتين البايتتين ورمز المنطقة كما يلي: داخلي الكود ذو الترتيب العالي = رمز المنطقة + A0H (يمثل H الرقم السداسي العشري) الرقم المنخفض للرمز الداخلي = رمز البت + A0H على سبيل المثال، رمز المنطقة للحرف الصيني "ah" هو "1601"، ورمز المنطقة و يتم التعبير عن رمز البت بالنظام الست عشري على التوالي، وهو "1001H"، ثم رمزه الداخلي هو "B0A1H". من بينها، B0H هو البايت ذو الترتيب العالي للكود الداخلي، و A1H هو البايت ذو الترتيب المنخفض للكود الداخلي.
كود PHP: يقوم بإرجاع سلسلة مكونة من 0 و1.
<?php
/**
* قراءة بيانات مصفوفة نقطية للأحرف الصينية
*
* @author legend < [email protected] >
* @ الرابط http://www.ugia.cn/?p=82
* @ حقوق الطبع والنشر www.ugia.cn
*/
$str = "جمهورية الصين الشعبية" ;
$font_file_name = "simsun12.fon" ; // اسم ملف الخط النقطي
$font_width = 12; // عرض الكلمة المفردة
$font_height = 12; // ارتفاع الخط الفردي
$start_offset = 0 ; // الإزاحة
$
fp = fopen ( $font_file_name , "rb" );
$string_size = $font_width * $font_height;
$dot_string = "" ؛
لـ ( $i = 0 ; $i < strlen ( $str ); $i ++)
{
إذا (أورد ( $str { $i }) > 160 )
{
// ابحث أولاً عن رمز الموقع، ثم احسب موضعه في الجدول ثنائي الأبعاد لرموز الموقع، ثم احصل على إزاحة هذا الحرف في الملف $offset = ((ord ( $str { $i }) - 0xa1 ) * 94 + ord ( $str { $i + 1 }) - 0xa1 ) * $offset_size ;
$i++;
}
آخر
{
$offset = ( ord ( $str { $i }) + 156 - 1 ) * $offset_size ;
}
// اقرأ بيانات الشبكة fseek ( $fp , $start_offset + $offset , SEEK_SET );
$bindot = fread ( $fp , $offset_size );
لـ ( $j = 0 ; $j < $offset_size ; $j ++)
{
// تحويل بيانات المصفوفة النقطية الثنائية إلى سلسلة $dot_string .= sprintf ("%08b" , ord ( $bindot { $j }));
}
}
فكلوز ($fp)؛
صدى $dot_string؛
?>
يتضمن ملفين بخط نقطي: أحدهما 16×16 chs16.fon، والآخر 12×12 simsun12.fon، والإزاحة صفر.