ホームページ  >  記事  >  バックエンド開発  >  PHP が漢字のドット マトリックス データを読み取る_PHP チュートリアル

PHP が漢字のドット マトリックス データを読み取る_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:05:45882ブラウズ

背景知識:

簡体字中国語国家標準フォント(1981年発行、中国本土)。 7,445 文字があり、そのうち 6,773 文字は第 1 水準漢字 3,755 字、第 2 水準漢字 3,008 字です。 2 バイト (16 ビット バイナリ) エンコーディングを使用します。

場所コード: 国家標準 GB2312 は、すべての国家標準の漢字と記号が 94×94 のマトリックスを形成することを規定しています。この正方行列では、各行を「エリア」、各列を「ビット」と呼びます。したがって、この正方行列は実際には 94 個のエリア(エリア番号は 0 ~ 1 ~ 94)を構成し、それぞれ 94 個あります。エリア内の漢字セットの数字(桁番号は01~94)。漢字の市外局番と位置番号を単純に組み合わせると、漢字の「位置コード」が形成されます。漢字の市外局番は、上2桁が市外局番、下2桁が位置番号です。位置コードと漢字または記号の間には 1 対 1 の対応関係があることがわかります。

内部コード:漢字の内部コードとは、コンピュータにおける漢字のエンコーディングを指します。マシンコードとロケーションコードの間にはわずかな違いがあります。市外局番をそのままコンピュータの内部コードとして使用しないのは、市外局番と漢字のビットコードが1から94まであるためです。市外局番をそのまま内部コードとして使用すると、市外局番と競合してしまいます。基本的な ASCII コード。 漢字の内部コードは通常、使用されるコンピュータ システムに関連しています。現在、中国のほとんどのコンピュータ システムでは、漢字の内部コードは 2 バイトを占めており、それぞれ上位バイトおよび下位バイトと呼ばれ、これら 2 バイトと市外局番の関係は次のとおりです。コード上位 = 地域コード A0H (H は 16 進数を表します) 内符号の下位 = ビットコード A0H 例えば、漢字「あ」の地域コードは「1601」となり、地域コードとビットコードが一致します。それぞれを16進数で表すと「1001H」となり、内部コードは「B0A1H」となります。このうち、B0H が内部コードの上位バイト、A1H が内部コードの下位バイトです。

PHPコード:0と1から構成される文字列を返します。
/**
* 漢字ドットマトリクスデータを読み込みます
*/

$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 {
if (ord($ str{ $i}) >160)
{
// まず位置コードを見つけ、次に位置コードの 2 次元テーブル内での位置を計算し、ファイル内のこの文字のオフセットを取得します
$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 )
{
// バイナリドット行列データを string に変換
$dot_string .= sprintf(" b", ord($bindot { $j}));
}
}

fclose($fp);

echo $dot_string;
?>


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445106.html技術記事背景知識: 簡体字中国語国家標準フォント (1981 年発行、中国本土)。 7,445 文字があり、そのうち 6,773 文字は第 1 水準漢字 3,755 字、第 2 水準漢字 3,008 字です。 2バイト(16ビット)を使用しています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。