この記事では、PHP を使用して漢字のドット マトリックス データを読み取る方法と例を詳しく説明します。非常に実用的で、必要な友人は参照できます。
プロジェクトで発生した問題:
PHPで漢字の格子データを読み取るには? テキストを入力したい場合、そのテキストのすべての格子コードを取得できます。
解決策:
簡体字中国語国家標準フォントライブラリには、第1水準漢字3755字、第2水準漢字3008字を含む6773字を含む7445字が収録されている。 2 バイト (16 ビット バイナリ) エンコードを使用します。
場所コード: 国家標準 GB2312 では、すべての国家標準の漢字と記号が 94×94 のマトリックスを形成することが規定されています。この正方行列では、各行を「エリア」、各列を「ビット」と呼びます。したがって、この正方行列は実際には 94 個のエリア(エリア番号は 0 ~ 1 ~ 94)を構成します。エリア内の漢字セットの数字(桁番号は01~94)。漢字の市外局番と位置番号を単純に組み合わせると、漢字の「位置コード」が形成されます。漢字の市外局番は、上2桁が市外局番、下2桁が位置番号です。位置コードと漢字または記号の間には 1 対 1 の対応関係があることがわかります。
内部コード:漢字の内部コードとは、コンピュータにおける漢字のエンコーディングを指します。マシンコードとロケーションコードの間にはわずかな違いがあります。現在、中国のほとんどのコンピュータ システムでは、漢字の内部コードは 2 バイトを占めており、それぞれ上位バイトおよび下位バイトと呼ばれ、これら 2 バイトと市外局番の関係は次のとおりです。コード上位 = 地域コード + A0H (H は 16 進数を表します) 内コードの下位 = ビットコード + A0H たとえば、漢字「あ」の地域コードは「1601」、地域コードとビットコードはそれぞれ16進数で表され、「1001H」となり、内部コードは「B0A1H」となります。このうち、B0H が内部コードの上位バイト、A1H が内部コードの下位バイトです。
0と1から構成される文字列を返します
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
/** * 漢字ドットマトリクスデータを読み込みます * */
$str = "中華人民共和国";
$font_file_name = "simsun12.fon" // ドットマトリクスフォントファイル名 ;$font_width = 12 // 1 文字の幅 ;$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++; } その他 { $offset = (ord($str{$i}) + 156 - 1) * $offset_size; } //格子データを読み取ります fseek($fp, $start_offset + $offset, SEEK_SET); $bindot = fread($fp, $offset_size); for ($j = 0; $j
{ //バイナリ格子データを文字列に変換します $dot_string .= sprintf("%08b", ord($bindot{$j})); } } fclose($fp); $dot_string をエコーする; ?> |
以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。