我正试图了解这是如何运作的。我想更改故障单中特定单词的字体大小。
在手册中,它表示使用以下命令更改字符大小:
ASCI: GS ! n
HEX: 1D 21 n
其中n代表高度和宽度扩展。位0到2设置字符宽度。位4到6设置字符高度。
所以我尝试了这些不同的代码变体:
[commands appendBytes:"\x1d\x21\x00"
length:sizeof("\x1d\x21\x00") - 1];
[commands appendData:[@"ABCD1\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x02"
length:sizeof("\x1d\x21\x02") - 1];
[commands appendData:[@"ABCD2\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x04"
length:sizeof("\x1d\x21\x04") - 1];
[commands appendData:[@"ABCD3\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x06"
length:sizeof("\x1d\x21\x06") - 1];
[commands appendData:[@"ABCD4\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x08"
length:sizeof("\x1d\x21\x08") - 1];
[commands appendData:[@"ABCD5\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x10"
length:sizeof("\x1d\x21\x10") - 1];
[commands appendData:[@"ABCD6\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x12"
length:sizeof("\x1d\x21\x12") - 1];
[commands appendData:[@"ABCD7\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x14"
length:sizeof("\x1d\x21\x14") - 1];
[commands appendData:[@"ABCD8\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x16"
length:sizeof("\x1d\x21\x16") - 1];
[commands appendData:[@"ABCD9\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x18"
length:sizeof("\x1d\x21\x18") - 1];
[commands appendData:[@"ABCD10\n" dataUsingEncoding:NSASCIIStringEncoding]];
[commands appendBytes:"\x1d\x21\x19"
length:sizeof("\x1d\x21\x19") - 1];
[commands appendData:[@"ABCD11\n" dataUsingEncoding:NSASCIIStringEncoding]];
这给了我这个结果:
至少对我来说,这是完全出乎意料的。任何人都可以帮我理解这是如何工作的? 我想要的最终输出是获得ABCD9的高度但是具有成比例的宽度。
谢谢
答案 0 :(得分:2)
我不知道那台打印机,但从你的示例输出看来,0-2位似乎是定义的
高度,和4-6位角色的宽度(只是相反的方式)
你描述过)。所以n
的位是
0www0hhh
字符串“ABCD9”打印有n = \x16 = 00010110
,对应
to height = 6(二进制110
)和width = 1(二进制001
)。
要获得打印宽度=高度= 6的字符串,您需要
n = 01100110 = 0x66
因此
[commands appendBytes:"\x1d\x21\x66" length:3];