2012年5月22日投稿 / 投稿者 : Sunny Clouds / タグ : 投稿プログラム 実用ツール フォント サブルーチン QRコード
昔MSXでよくやっていたフォントの加工をプチコンでやってみました。 ゲーム等に組み込んで使っていただければと思い、投稿することにしました。 いくつかのサブルーチンでできていますので、必要なものを組み合わせて使用してください。
- DIM B(256,8)
- DIM W(16)
- ST=32 ’Start code num
- ED=125 ’End code num
プチコンmkII 向けの QR コードです。
- ’============================
- ’FONT ARRANGE
- ’============================
- CLEAR
- DIM B(256,8)
- DIM W(16)
- ST=32 ’Start code num
- ED=125 ’End code num
- ’−−−−−−−−−−−−−−−−−−−−−−−−−−−−
- DIM A$(7)
- A$(0)=”BOLD”
- A$(1)=”HEAVY”
- A$(2)=”OBLIQUE”
- A$(3)=”OBLIQUE_BOLD”
- A$(4)=”STENCIL”
- A$(5)=”HUSK”
- A$(6)=”HUSK_BOLD”
- @START
- CLS
- FOR I=0 TO 6
- PRINT (I+1);”.”;A$(I)
- NEXT
- PRINT
- INPUT ”SELECT(1−7)”;A
- IF A<1 OR A>7 GOTO @START
- A=A−1
- GOSUB @INIT
- GOSUB @FONT2BIN
- GOSUB ”@”+A$(A)
- GOSUB @BIN2FONT
- ?
- ? ”<”;A$(A);”>”
- ?
- ? ”use these routines...”
- ?
- ? ” @FONT2BIN,@”;A$(A);”,”;
- ? ”@BIN2FONT”
- ?
- END
- ’−−−−−−−−−−−−−−−−− INITIALIZE
- @INIT
- ACLS
- CHRINIT ”BGF0”
- GCLS 4
- ?
- ?
- FOR N=ST TO ED
- PRINT CHR$(N);
- NEXT
- ?
- RETURN
- ’−−−−−−−−−−− CONVERT BIN DATA
- @FONT2BIN
- FOR N=ST TO ED
- CHRREAD(”BGF0”,N),BF$
- FOR I=0 TO 15
- H$=”&H”+(MID$(BF$,I*4,4))
- X=VAL(H$)/15
- W(I)=VAL(”&B”+HEX$(X,4))
- NEXT
- FOR I=0 TO 7
- X=W(I*2)*16
- B(N,I)=X+W(I*2+1)
- NEXT
- NEXT
- RETURN
- ’−−−−−−−−−−−−−− SET FONT DATA
- @BIN2FONT
- FOR N=ST TO ED
- W$=””
- FOR I=0 TO 7
- X=B(N,I)
- X$=””
- FOR J=0 TO 7
- X$=MID$(”0F”,X%2,1)+X$
- X=FLOOR(X/2)
- NEXT
- W$=W$+X$
- NEXT
- CHRSET ”BGF0”,N,W$
- NEXT
- RETURN
- ’−−−−−−−−−−−−−−−−−−−−−−− BOLD
- @BOLD
- FOR N=ST TO ED
- FOR I=0 TO 7
- X=B(N,I)
- B(N,I)=X OR FLOOR(X/2)
- NEXT
- NEXT
- RETURN
- ’−−−−−−−−−−−−−−−−−−−−−− HEAVY
- @HEAVY
- FOR N=ST TO ED
- FOR I=0 TO 7
- X=B(N,I)
- Y=X OR FLOOR(X/2)
- B(N,I)=Y OR FLOOR(X/4)
- NEXT
- NEXT
- RETURN
- ’−−−−−−−−−−−−−−−−−−−− OBLIQUE
- @OBLIQUE
- FOR N=ST TO ED
- FOR I=0 TO 7
- X=B(N,I)
- Y=X
- IF I<5 THEN Y=FLOOR(X/2)
- IF I<2 THEN Y=FLOOR(X/4)
- B(N,I)=Y
- NEXT
- NEXT
- RETURN
- ’−−−−−−−−−−−−−−− OBLIQUE BOLD
- @OBLIQUE_BOLD
- FOR N=ST TO ED
- FOR I=0 TO 7
- X=B(N,I)*2
- Y=X
- IF I<5 THEN Y=FLOOR(X/2)
- IF I<2 THEN Y=FLOOR(X/4)
- B(N,I)=Y OR FLOOR(Y/2)
- NEXT
- NEXT
- RETURN
- ’−−−−−−−−−−−−−−−−−−−− STENCIL
- @STENCIL
- FOR N=ST TO ED
- FOR I=0 TO 7
- X=B(N,I)
- Y=X OR FLOOR(X/2)
- Y=Y OR FLOOR(X/4)
- ’ B(N,I)=Y AND &HEF
- B(N,I)=Y AND &HF7
- ’ B(N,I)=Y AND &HFB
- NEXT
- NEXT
- RETURN
- ’−−−−−−−−−−−−−−−−−−−−−−− HUSK
- @HUSK
- FOR N=ST TO ED
- FOR I=0 TO 7
- IF I>6 THEN J=7 ELSE J=I+1
- X=B(N,I)
- Y=X OR FLOOR(X/2)
- B(N,I)=Y AND NOT(B(N,J))
- NEXT
- NEXT
- RETURN
- ’−−−−−−−−−−−−−−−−−− HUSK BOLD
- @HUSK_BOLD
- FOR N=ST TO ED
- FOR I=0 TO 7
- IF I>6 THEN J=7 ELSE J=I+1
- X=B(N,I)
- Y=X OR FLOOR(X/2)
- Y=Y OR FLOOR(X/4)
- B(N,I)=Y AND NOT(B(N,J))
- NEXT
- NEXT
- RETURN
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.112 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:13 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30