PPLA言語を使用してラベルをArgox OS-214に直接印刷します。Argox OS214-PPLAのテキストの折り返し
どのようにして長いテキストを折り返すことができますか?
計算をしなくてはなりませんか、それとも私のための機能はありますか?
私が計算しなければならない場合、それを行う方法に関するヒントはありますか?
PPLA言語を使用してラベルをArgox OS-214に直接印刷します。Argox OS214-PPLAのテキストの折り返し
どのようにして長いテキストを折り返すことができますか?
計算をしなくてはなりませんか、それとも私のための機能はありますか?
私が計算しなければならない場合、それを行う方法に関するヒントはありますか?
PPLA language manualには長いテキスト行を折り返す機能がないため、コマンドをプリンタに送信する前に改行を挿入する場所を自分で計算する必要があります。
どのようにするかは、使用しているプログラミング言語によって異なります。たとえば、PHP言語では、あなたのためにそれを行うことができるがあります(wordwrap関数のCソースコードはhere、803行目です)。ワードラップアルゴリズムの
簡単な説明がwikipediaで見つけることができます:
SpaceLeft := LineWidth
for each Word in Text
if (Width(Word) + SpaceWidth) > SpaceLeft
insert line break before Word in Text
SpaceLeft := LineWidth - Width(Word)
else
SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth)
まず第一に、そう、あなたは言葉でテキストを分割する必要がありますが、私はこれがあなたのための問題ではありませんと仮定私はさらに詳しく説明しません。
LineWidth
は、ラベルの幅から左右の余白の幅を差し引いたものとして計算する必要があります。
固定幅フォント(非比例)を1つ使用しているテキストの場合、LineWidth
を文字幅で単純に分割するか(単に長いテキスト行を印刷するだけで)印刷される文字の数を数えます)。このようにして各単語の長さはその文字の数に対応します。
それ以外の場合は、比例フォントを使用している場合は、各文字幅がわからない限り、各単語幅を計算するのが難しくなります。
印刷をシミュレートし、改行を挿入する場所を計算するためだけに、ラベルのピクセルサイズが同じイメージを使用することが考えられますが、これには各ワードのピクセル幅を計算する関数が必要ですPHPの例ではimagettfbbox functionです)、プリンタとPCで全く同じフォントを使用することができます。
ラベルの幅よりも長い単語も処理する必要があることに注意してください。この場合、単語を単にLineWidth
に分割し、次の行に進む必要があります。