Базовые знания:
Упрощенный китайский национальный стандартный шрифт (выпущен в 1981 году, материковый Китай). Всего 7445 символов, в том числе 6773 китайских иероглифа, в том числе 3755 китайских иероглифов первого уровня и 3008 китайских иероглифов второго уровня. Использование 2-байтовой (16-битной двоичной) кодировки.
Код местоположения: Национальный стандарт GB2312 предусматривает, что все китайские иероглифы и символы национального стандарта образуют матрицу 94×94. В этой квадратной матрице каждая строка называется «областью», а каждый столбец — «битом». Таким образом, эта квадратная матрица фактически образует область из 94 областей (номера областей от 0 до 94 соответственно), каждая из которых имеет 94 области. цифры (номера цифр от 01 до 94) наборов китайских символов в этой области. Код города и номер местоположения китайского иероглифа просто объединяются, образуя «код местоположения» китайского иероглифа. В коде города, состоящем из китайских иероглифов, две верхние цифры — это код города, а две нижние цифры — номер позиции. Видно, что существует взаимно однозначное соответствие между кодами местоположения и китайскими иероглифами или символами.
Внутренний код: Внутренний код китайских иероглифов относится к кодировке китайских иероглифов в компьютерах. Существует небольшая разница между машинным кодом и кодом местоположения. Почему бы не использовать код города напрямую в качестве внутреннего кода компьютера? Это связано с тем, что код города и битовый код китайских иероглифов находятся в диапазоне от 1 до 94. Если код города напрямую используется в качестве внутреннего кода, он будет конфликтовать с кодом города. базовый код ASCII. Внутренний код китайских иероглифов обычно связан с используемой компьютерной системой. В настоящее время для большинства компьютерных систем в Китае внутренний код китайского иероглифа занимает два байта, которые называются старшим байтом и младшим байтом соответственно, и связь между этими двумя байтами и кодом города следующая: Внутренний код высокого порядка = код региона + A0H (H представляет шестнадцатеричный код). Младшая цифра внутреннего кода = битовый код + A0H. Например, код города китайского иероглифа «ах» — «1601», а код города и. битовый код выражается в шестнадцатеричном формате соответственно, то есть «1001H», тогда его внутренний код — «B0A1H». Среди них B0H — старший байт внутреннего кода, а A1H — младший байт внутреннего кода.
PHP-код: возвращает строку, состоящую из 0 и 1.
<?php
/**
* Чтение данных точечной матрицы китайских иероглифов
*
* @author Legend < [email protected] >
* @link 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");
$offset_size = $font_width * $font_height/8;
$string_size = $font_width * $font_height;
$dot_string = "";
for ($i = 0; $i <strlen ($str); $i++)
{
если ( ord ( $str { $i }) > 160 )
{
// Сначала находим код локации, затем вычисляем его позицию в двумерной таблице кодов локации, а затем получаем смещение этого символа в файле $offset = (( ord ( $str { $i }) - 0xa1 ) * 94 + ord ( $str { $i + 1 }) - 0xa1 ) * $offset_size ;
$я++;
}
еще
{
$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 }));
}
}
fclose ($fp);
эхо $dot_string;
?>
Он включает в себя два файла растровых шрифтов: один — 16×16 chs16.fon, другой — 12×12 simsun12.fon, смещение равно нулю.