OCRフォントの文字化け

解決


へなちょこ  2005-05-31 11:49:29  No: 90169  IP: [192.*.*.*]

VB6で開発しています。
OCRフォントが文字化けしてしまいます。
verdana,ocrbです。
最初にMS 明朝をしていして印字して、
次の行をverdanaで印字、
そと次はMS 明朝とすると、verdana以降のMS 明朝が文字化けを起こします。
一回目の印刷はverdana以降のMS 明朝が文字化けを起こしますが、
一回文字化けが起こると、どこかに何かかが残っているみたいで
2回目からは先頭のMS 明朝も文字化けを起こします。
多分、Fontの指定の切り替えが上手くいっていないのかな?
とも思いますが原因がさっぱりわかりません。
どうかご教示ねがいます。

編集 削除
へなちょこ  2005-05-31 11:54:17  No: 90170  IP: [192.*.*.*]

コードを乗せます。
            'ヘッダ項目印字
            Printer.Font.Name = "MS 明朝"
            Printer.Font.Size = 11
            Printer.Font.Bold = False
            
            Prt "あいうえお", 5, 69, 0, False, 11, 198, True

            Printer.Font.Name = "verdana"
            Printer.Font.Size = 11
            Printer.Font.Bold = False
            
            Prt "123456",5, 54  

            Printer.Font.Name = "MS 明朝"
            Printer.Font.Size = 11
            Printer.Font.Bold = False
            
            Prt "かきくけこ", 7, 69, 0, False, 11, 198, True



'***********************************************************************
'処理説明 : 印刷処理
'
'引数     : 1 sTxt     : 印字する文字列
'           2 nRow     : 印字位置(行)
'           3 nCol     : 印字位置(桁)
'           4 nLen     : 数値右詰めの際の印字文字数(省略時は0…文字列とみなす)
'           8 bFstrike : 取消線有りか? (省略時はFalse)
'           6 nFsize   : フォントサイズ      (省略時は11)
'           9 nFpitch  : ピッチ          (twips,省略時は144)
'           4 bKanji   : 日本語か?     (省略時はFalse)
'           5 sFname   : フォント名        (省略時は"MS 明朝")
'           7 bFbold   : 太字か?       (省略時はFalse)
'***********************************************************************
Private Sub Prt(sTxt, nRow, nCol, Optional nLen = 0, Optional bFstrike = False, Optional nFsize = 11, Optional nFpitch = 144, Optional bKanji = False, Optional sFname = "MS 明朝", Optional bFbold = False)
    Dim nCIdx
    Dim nStartX
    Dim nStartY
    Dim nStartLY
    Dim sPrtTxt As String
    Dim nComma  As Integer
    
    If Trim$(sTxt) = "" Then
        Exit Sub
    End If
     
    '印字開始位置
    nStartX = (nCol * U_Tpc) - (U_Tpc / 3)
    nStartY = (nRow * U_Tpr) + (U_Tpr / 2)
     
    Printer.CurrentY = nStartY
    Printer.CurrentX = nStartX
    
    If nLen > 0 Then
        '数値は右詰め
        If bKanji = False Then
            '"."(カンマ)を削除
            nComma = InStr(sTxt, ".")
            If nComma > 0 Then
                sTxt = Mid(sTxt, 1, nComma - 1) + Mid(sTxt, nComma + 1, Len(sTxt) - nComma)
            End If
            '先頭にスペースを付加
            While Len(sTxt) < nLen
                sTxt = " " + sTxt
            Wend
        Else
            '先頭にスペースを付加
            While Len(sTxt) / 2 < nLen
                sTxt = "  " + sTxt
            Wend
        End If
    End If
        
    '1文字ずつ印字
    For nCIdx = 1 To Len(sTxt)
'        Printer.Font.Name = sFname 'フォント名
'        Printer.Font.Size = nFsize 'フォントサイズ
'        Printer.Font.Bold = bFbold '太字
        
        Printer.Print Mid(sTxt, nCIdx, 1)
        
        If bFstrike = True Then
            '取消線
            If Mid(sTxt, nCIdx, 1) <> " " Then
                nStartLY = nStartY + ((U_Tpr / 5) * 2)
                Printer.DrawWidth = 1
                Printer.DrawMode = vbBlackness
                Printer.DrawStyle = vbSolid
                Printer.Line (nStartX, nStartLY)-(nStartX + nFpitch, nStartLY)
                nStartLY = nStartLY + (U_Tpr / 5)
                Printer.DrawWidth = 1
                Printer.DrawMode = vbBlackness
                Printer.DrawStyle = vbSolid
                Printer.Line (nStartX, nStartLY)-(nStartX + nFpitch, nStartLY)
            End If
        End If
        
        nStartX = nStartX + nFpitch '指定されたピッチ分横へ移動
        Printer.CurrentX = nStartX
        Printer.CurrentY = nStartY
    Next nCIdx
End Sub

編集 削除
魔界の仮面弁士  2005-05-31 14:18:31  No: 90171  IP: [192.*.*.*]

Charsetプロパティの切り替えも行ってみてください。

編集 削除
へなちょこ  2005-05-31 16:12:54  No: 90172  IP: [192.*.*.*]

返答ありがとうございます。
Charsetプロパティとは何ですか?
Printer.Charsetというわけでも無さそうでしたし。
Helpでも使い方が分からないです。
どう使えばいいのでしょうか?

編集 削除
ぶぶ  2005-05-31 16:51:38  No: 90173  IP: [192.*.*.*]

CharsetプロパティでHelpを見ましたら、
対象はFontオブジェクトになっていましたが、
試してみられましたか?

編集 削除
へなちょこ  2005-05-31 17:07:35  No: 90174  IP: [192.*.*.*]

数値
Printer.Font.Charset = 0
日本語
Printer.Font.Charset = 128
で上手くいきました。
色々調べてみたら、上記で解決いたしました。
ありがとうございました。

編集 削除