@@ -190,6 +190,14 @@ int mbfl_filt_conv_wchar_2022kr(int c, mbfl_convert_filter *filter)
190
190
{
191
191
int c1 , c2 , s = 0 ;
192
192
193
+ if ((filter -> status & 0x100 ) == 0 ) {
194
+ CK ((* filter -> output_function )(0x1b , filter -> data )); /* ESC */
195
+ CK ((* filter -> output_function )('$' , filter -> data ));
196
+ CK ((* filter -> output_function )(')' , filter -> data ));
197
+ CK ((* filter -> output_function )('C' , filter -> data ));
198
+ filter -> status |= 0x100 ;
199
+ }
200
+
193
201
if (c >= ucs_a1_uhc_table_min && c < ucs_a1_uhc_table_max ) {
194
202
s = ucs_a1_uhc_table [c - ucs_a1_uhc_table_min ];
195
203
} else if (c >= ucs_a2_uhc_table_min && c < ucs_a2_uhc_table_max ) {
@@ -211,9 +219,7 @@ int mbfl_filt_conv_wchar_2022kr(int c, mbfl_convert_filter *filter)
211
219
/* exclude UHC extension area */
212
220
if (c1 < 0xa1 || c2 < 0xa1 ) {
213
221
s = c ;
214
- }
215
-
216
- if (s & 0x8000 ) {
222
+ } else if (s & 0x8000 ) {
217
223
s -= 0x8080 ;
218
224
}
219
225
@@ -235,13 +241,6 @@ int mbfl_filt_conv_wchar_2022kr(int c, mbfl_convert_filter *filter)
235
241
}
236
242
CK ((* filter -> output_function )(s , filter -> data ));
237
243
} else {
238
- if ((filter -> status & 0x100 ) == 0 ) {
239
- CK ((* filter -> output_function )(0x1b , filter -> data )); /* ESC */
240
- CK ((* filter -> output_function )('$' , filter -> data ));
241
- CK ((* filter -> output_function )(')' , filter -> data ));
242
- CK ((* filter -> output_function )('C' , filter -> data ));
243
- filter -> status |= 0x100 ;
244
- }
245
244
if ((filter -> status & 0x10 ) == 0 ) {
246
245
CK ((* filter -> output_function )(0x0e , filter -> data )); /* shift out */
247
246
filter -> status |= 0x10 ;
@@ -259,7 +258,7 @@ int mbfl_filt_conv_wchar_2022kr(int c, mbfl_convert_filter *filter)
259
258
static int mbfl_filt_conv_any_2022kr_flush (mbfl_convert_filter * filter )
260
259
{
261
260
/* back to ascii */
262
- if (filter -> status & 0xff00 ) {
261
+ if (filter -> status & 0x10 ) {
263
262
CK ((* filter -> output_function )(0x0f , filter -> data )); /* shift in */
264
263
}
265
264
0 commit comments