>  기사  >  백엔드 개발  >  PHP에서 한자의 도트 매트릭스 데이터를 읽는 방법

PHP에서 한자의 도트 매트릭스 데이터를 읽는 방법

墨辰丷
墨辰丷원래의
2018-06-09 14:20:041732검색

이 글은 주로 PHP에서 한자의 격자 데이터를 읽는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

해결책:

중국어 간체 국가 표준 글꼴 라이브러리에는 1급 한자 3755개와 2급 한자 3008자를 포함하여 6773개의 한자를 포함하여 7445개의 문자가 있습니다. 2바이트(16비트 바이너리) 인코딩을 사용합니다.

지역 코드: 국가 표준 GB2312는 모든 국가 표준 한자와 기호가 94×94 행렬을 구성하도록 규정합니다. 이 정사각 행렬에서는 각 행을 "영역", 각 열을 "비트"라고 합니다. 따라서 이 정사각 행렬은 실제로 94개 영역(영역 번호는 각각 0 1 ~ 94)을 구성하며, 각 행은 94개입니다. 해당 영역에 있는 한자 집합의 자릿수(숫자는 01~94)입니다. 한자의 지역번호와 위치번호를 간단히 조합하면 한자의 "위치번호"가 됩니다. 한자의 지역번호 중 위쪽 두 자리는 지역번호, 아래쪽 두 자리는 위치번호를 나타냅니다. 위치코드와 한자나 기호가 일대일 대응임을 알 수 있다.

내부 코드: 한자의 내부 코드는 컴퓨터에서 한자를 인코딩하는 것을 의미합니다. 기계코드와 위치코드는 약간의 차이가 있습니다. 현재 중국의 대부분의 컴퓨터 시스템에서 한자의 내부 코드는 각각 상위 바이트와 하위 바이트라고 불리는 2바이트를 차지하며, 이 두 바이트와 지역 코드 사이의 관계는 다음과 같습니다. code 상위 = 지역 코드 + A0H (H는 16진수를 나타냄) 내부 코드의 하위 자리 = 비트 코드 + A0H 예를 들어 한자 "ah"의 지역 코드는 "1601"이고, 지역 코드와 비트 코드는 각각 16진수로 표현되며 "1001H" 이고 내부 코드는 "B0A1H"입니다. 그 중 B0H는 내부 코드의 상위 바이트이고, A1H는 내부 코드의 하위 바이트입니다.

0과 1로 구성된 문자열을 반환합니다.

<?php
/**
* 读取汉字点阵数据
*
*/
$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 ++)
{
if (ord($str{$i}) > 160)
{
// 先求区位码,然后再计算其在区位码二维表中的位置,进而得出此字符在文件中的偏移
$offset = ((ord($str{$i}) - 0xa1) * 94 + ord($str{$i + 1}) - 0xa1) * $offset_size;
$i ++;
}
else
{
$offset = (ord($str{$i}) + 156 - 1) * $offset_size;
}
// 读取其点阵数据
fseek($fp, $start_offset + $offset, SEEK_SET);
$bindot = fread($fp, $offset_size);
for ($j = 0; $j < $offset_size; $j ++)
{
// 将二进制点阵数据转化为字符串
$dot_string .= sprintf("%08b", ord($bindot{$j}));
}
}
fclose($fp);
echo $dot_string;
?>

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

관련 권장사항:

php 무한 분류를 위한 재귀 순회

php는 이미지 크기 수정, 워터마킹, 인증 코드 생성, 출력 및 저장 작업을 수행합니다.

Memcache 기반 링 큐를 구현하는 PHP 방법

위 내용은 PHP에서 한자의 도트 매트릭스 데이터를 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.