XXXXXXXX@XXXXXXXX wrote:
zint QRコードに漢字を指定すると化けるようですので、
パッチを作成してみました。
ex. zint -b 58 -d '本日は晴天なり'
zint-2.4.0-qr-kanji.patch
diff -r 7f939ac02156 zint-2.4.0/backend/qr.c
--- a/zint-2.4.0/backend/qr.c Sun Oct 31 18:59:11 2010 +0900
+++ b/zint-2.4.0/backend/qr.c Mon Nov 01 11:03:55 2010 +0900
@@ -221,14 +221,15 @@
/* Character representation */
for(i = 0; i < short_data_block_length; i++) {
- int jis = jisdata[position + i];
- int msb, lsb, prod;
-
- if(jis > 0x9fff) { jis -= 0xc140; }
- msb = (jis & 0xff00) >> 4;
+ unsigned int jis = jisdata[position + i];
+ unsigned int msb, lsb, prod;
+
+ msb = (jis & 0xff00) >> 8;
lsb = (jis & 0xff);
+
+ if (msb >= 0x81 && msb <= 0x9f) { msb -= 0x81; } else if (msb >= 0xe0 && msb <= 0xea) { msb -= 0xc1; }
+ if (lsb >= 0x40 && lsb <= 0xfc) { lsb -= 0x40; }
prod = (msb * 0xc0) + lsb;
-
qr_bscan(binary, prod, 0x1000);
if(debug) { printf("0x%4X ", prod); }
@@ -1204,14 +1205,15 @@
/* Character representation */
for(i = 0; i < short_data_block_length; i++) {
- int jis = jisdata[position + i];
- int msb, lsb, prod;
-
- if(jis > 0x9fff) { jis -= 0xc140; }
- msb = (jis & 0xff00) >> 4;
+ unsigned int jis = jisdata[position + i];
+ unsigned int msb, lsb, prod;
+
+ msb = (jis & 0xff00) >> 8;
lsb = (jis & 0xff);
+
+ if (msb >= 0x81 && msb <= 0x9f) { msb -= 0x81; } else if (msb >= 0xe0 && msb <= 0xea) { msb -= 0xc1; }
+ if (lsb >= 0x40 && lsb <= 0xfc) { lsb -= 0x40; }
prod = (msb * 0xc0) + lsb;
-
qr_bscan(binary, prod, 0x1000);
if(debug) { printf("0x%4X ", prod); }
== このレポートの詳細は以下の通りです ==
レポート ID : 1062
レポート URL : http://bts.vinelinux.org/guest.cgi?project=VineLinux&action=view_report&id=1062
分類 : バグ
バージョン : VineSeed
関連パッケージ : zint-2.4.0-1vl6
状態 : 新規
優先度 : 中
重大度 : 普通
担当者 : 未定
# あなたが、このようなメッセージに無関係である場合には、
# 管理者 <Vine@xxxxxxxxxxxxx> までご連絡ください。
--
Bug Tracking System 影舞 0.8.8.
http://www.daifukuya.com/kagemai/