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

PHPが漢字の格子データを読み取る_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:49:13932ブラウズ

PHP は漢字のドット マトリックス データを読み取ります

この記事では、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 をエコーする;

?>

以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1020277.html技術記事この記事では、PHP を使用して漢字のドット マトリックス データを読み取る方法と例を詳しく説明します。非常に実用的で、困っている人は参考にしてください。 プロジェクト...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。