プチコンまとめArchive

投稿プログラム : プチコン漢字ライブラリ

パンくずリスト

このページの最終更新 : 2019/06/27 (木) 10:28:09

2019年6月26日投稿 / 投稿者 : ほしけん / タグ : 投稿プログラム 漢字 フォント ライブラリ

概要

プチコンでグラフィック画面に漢字を表示するためのライブラリです。(これはプチコン4用です。プチコン3号/BIG版はこちらPi STARTER版はこちら)

プチコン4では何の用意もなくかんたんに綺麗な文字が表示できますが、このライブラリは6x8~32x32ピクセルサイズまでの、多彩なドットフォントを利用できることが最大の特徴です。

  • 自家製ドットフォントシリーズKHドットフォントシリーズ「美咲フォント」の作者の方が作られたフォント、そしてプチコンBIG用の16ドットフォントから、思い切って47書体をまとめてプチコン用にコンバートしたので、お好みに応じていろいろなフォントを表示することができます。プチコンBIG用以外のどのフォントもJIS第1水準漢字JIS第2水準漢字まで入っています。
  • フォントデータは実質的に1ビットのデータになるように長い文字列に詰め込んだので、折り返し表示さえしなければわずかな行数しかありません。これにより、プログラムの中にフォントデータをコピペして埋め込んだりすることがとても簡単にできます。
  • 使いたい文字だけを抜き出して、ものすごく小さくしたフォントデータを作る「サブセット化」ができます。
  • フォントデータの半分近くを占めているJIS第2水準漢字のデータがいらない場合でも、フォントデータのうちの1行 (GKNJDEF 3. ~ で始まる行) を消すだけで簡単に省く事ができます。
  • フォントデータが大きくてもメモリ (FREEMEM) を消費しすぎない作りになっています。

使い方

サンプルプログラムやデモが入っているので、まずは実行してみてください。

  • KNJLIB_DEMO.PRG … RPG風のコマンド選択ウインドウと会話ウインドウのデモ
  • KNJLIB_FONTLIST.PRG … 全フォントをプレビューできます
  • KNJLIB_SAMPLE.PRG … 文字表示の基本的な使い方に絞ったサンプルプログラム
  • KNJLIB_MOD1.PRG … えいださんによる高速版

ライブラリの初期化

KNJLIB.PRG というファイルがライブラリの本体です。これを自分のプログラムのプロジェクトにコピーするか、自分のプログラムの末尾にコピペしてください。

PRG1 (または 2, 3) スロットにライブラリを読み込んで初期化する
  1. EXEC ”KNJLIB.PRG”,1

または

  1. LOAD ”KNJLIB.PRG”,1:EXEC 1
自分のプログラムにコピペする

自分のプログラムの末尾にコピペしても動きます。PRGファイルいっこで済ませたい場合や、スロットを節約したい場合はこの方法を使ってみてください。この場合は最初に1回初期化が必要です。

  1. GOSUB @KNJLIB_INIT

文字を描画する

初期化すれば、以降 GKNJ で始まる拡張命令を使うことができるようになります。たとえば、以下で左上に「こんにちは!」と表示します。

  1. GKNJPRINT 0,0,”こんにちは!”

フォントデータは別の巨大な PRG ファイルとしてありますが、ライブラリ本体にも、6つのフォントのJIS第1水準漢字までが内蔵されています。GKNJFONT という命令を使えば、この内蔵のフォントを使うことができます。内蔵フォントはそれなりの大きさです。必要ない場合は、KNJLIB.PRG の DEF GKNJFONT の中身から削ってください。

  • GKNJFONT 0: k8x12 - 8×12ドットでスーファミ風味
  • GKNJFONT 1: k8x12L - 漢字以外がより大きい
  • GKNJFONT 2: k8x12S - 漢字以外がより小さい
  • GKNJFONT 3: k6x8 - 美咲フォントよりも小さい6×8ドットフォント
  • GKNJFONT 4: M+ BITMAP FONTS 10 - 10×11ドットで小ささと読みやすさのバランスがいい
  • GKNJFONT 5: M+ BITMAP FONTS 12 - 12×13ドットで非常に読みやすい
  1. GKNJFONT 5:GKNJPRINT 0,0,”こんにちは!”

その他、文字の色を変えたり、別のファイルからフォントを読み込んだりできます。詳しくは、サンプルプログラム「KNJLIB_SAMPLE.PRG」を見てみるか、ライブラリ本体「KNJLIB.PRG」の各ユーザー定義命令の前についたコメントを読んでみてください。

ライブラリによって追加される命令、関数

GKNJZENKAKU SET%
  • 入力した内容を全角に変換するかを設定する
  • #TRUEで全角
GKNJTABLEINIT
  • フォントデータ文字テーブルの初期化
GKNJTABLE BANK%, TBL$
  • フォントデータ文字テーブルの設定
  • サブセット化したフォントデータを設定したい時に使う
  • BANK%:種別。(0=半角, 1=全角非漢字, 2=JIS第1水準漢字, 3=JIS第2水準漢字)
  • TBL$:文字の並び文字列
GKNJDEFINIT W%, H%
  • フォントデータの幅と高さを設定する
GKNJDEF BANK%, PAT$
  • フォントデータを直接設定
  • BANK%:種別。数値はGKNJZENKAKUを参照
  • PAT$:すごく長い文字列
GKNJEFF EFF%
  • 文字のエフェクト設定
  • 1=影付き, 2=しっかりとした影付き, 4=縁取り, 8=しっかりとした縁取り
  • 上記の数値は足し合わせることが可能
GKNJCOLOR COL%
  • 文字色をRGB()で指定
GKNJEFFCOLOR COL%
  • 文字のエフェクトの色をRGB()で指定
GKNJBGCOLOR COL%
  • 文字の背景色をRGB()で指定
GKNJSCALE SCX%, SCY
  • 文字の拡大率をXYそれぞれに指定
  • 文字を拡大すると、文字エフェクトは影付きしか使えなくなる
GKNJMGN CHARMGN%, LINEMGN%
  • 行間と文字間隔をピクセル単位で設定する
GKNJCMGN CHARMGN%GKNJLMGN LINEMGN%
  • 行間と文字間隔をピクセル単位で設定する。単体設定
GKNJPRINT X%, Y%, S$
  • 文字列を描画
  • 座標はピクセル単位
GKNJPUT(X%, Y%, C$)
  • 文字を描画、1文字専用
  • 描画した文字を返す
GKNJPRINTAA X%, Y%, S$
  • アンチエイリアスをかけて文字列を描画する
  • 低速 & エフェクト使用不可
GKNJPUTAA(X%, Y%, C$)
  • アンチエイリアスをかけて文字を描画、1文字専用
  • 描画した文字を返す
GKNJW()GKNJH()
  • 1文字の幅・高さを取得
CHKKNJ(K$)
  • K$ の文字がフォントデータに含まれている場合、全角文字は 2、半角文字は 1 を返す。ない場合は、0 を返す。

サブセット化ツールについて

フォントデータはこのままではとても大きいので、フォントをサブセット化するツール「KNJLIB_SUBTOOL.PRG」が含まれています。サブセット化とは、フォントデータから自分のプログラムで使いたい文字だけを選んで抽出することです。決まったメッセージしか表示しない場合は、これにより大幅にサイズを小さくできます。

「KNJLIB_SUBTOOL.PRG」を開き、フォントデータおよび抽出する文字の指定をプログラムを直接書き換えておこないます。重複した文字は自動で省くので、ゲーム中で使用する文章を全部連結してそのまま指定として渡しても構いません。実行すると、漢字ライブラリの命令にデータをセットするプログラムの形式で、サブセット化されたフォントデータが生成されます。

フォントデータのライセンスについて

ライブラリに添付されているフォントデータ (KNJLIB_FONTS1~5) はさまざまな方の手によって作られたもので、それぞれにライセンス (使用条件) があります。

ナガ10」というフォントは、非営利 (つまり通常のプチコン作品など) での利用には「何の制限もありません」が、営利目的の場合は作者のかたに相談 (連絡) する必要があります。しかも、このフォントを配布しているサイトの最終更新は20年前であり、現在は連絡先が無効となっており、連絡できません。したがって、もし作品が商品化される機会がある場合は、ライブラリ内蔵の「M+ BITMAP FONTS 10」(GKNJFONT 4 で使える) に置き換えるなどしてください。

その他のフォントデータのライセンスは、以下のいずれかに該当します。どれに該当するかは、フォントデータの前にコメントで記載しています。

  • パブリックドメイン … 制作者により著作権の放棄、および一切の権利を行使しないことが宣言されているため、無条件で自由に使えます。
  • M+ FONTS LICENSE … 著作権は制作者が保持していますが、制約なしに自由に使って OK とされています。
  • SIL Open Font License 1.1 … ライセンス本文ではいくつかの条件が挙げられていますが、プチコンのプログラムに組み込んで使う分には特に気にすることはなく、自由に使えます。ライセンスを厳密に解釈すると、使用の際、フォントデータの前にある著作権表示と「SILオープンライセンス」と書かれたコメントを、フォントデータとセットでプログラムにコピーしておくとより好ましいと思われます。
  • 「jiskan16」「jiskan24」の半角文字 … ソニーに著作権がありますが、自由に使えます。フォントデータをコピーする際は、データの前にある「Copyright 1989 by Sony ~」で始まるコメント1行も一緒にコピーしておいたほうが良いようです。

また、自家製ドットフォントシリーズのうち、「ぱうフォント」と「恵梨沙フォント」は使用条件的に扱いづらいため含んでいません。それ以外は全部プチコン向けにコンバートしたデータがプロジェクト内に入っています。

スクリーンショット・動画

動作しているところを撮影した写真や動画があれば貼り付けてください。

公開キー

プチコン4用の公開キーです。トップメニューの「作品を見る」から公開キーを入力すると、作品をダウンロードできます。

プチコン4 公開キー
4443DXEQD

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)