日本語縦書きの実現

633 views
Skip to first unread message

Magic

unread,
Apr 7, 2010, 1:46:03 AM4/7/10
to 日本Androidの会
始めまして、Good afternoon

日本語の縦書きはどのように実現するか?

サンプルコードなどご提示いただければ幸いです。Thanks!

Keiji Ariyama

unread,
Apr 7, 2010, 2:54:34 AM4/7/10
to android-g...@googlegroups.com
有山@大阪です。

 Androidは、標準では縦書き表示に対応していません。Canvasを使って
独自に実装する必要があります。

thanks,
Keiji

Magic

unread,
Apr 7, 2010, 6:10:30 AM4/7/10
to 日本Androidの会
有山さん、

サンキュー! Magic@東京です。

とりあえず、今日の試したソースを展開致します。
本物の日本語縦書きではないですが、、、


import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class TateMoji extends Activity {
class MySurfaceView extends SurfaceView implements
SurfaceHolder.Callback {
public MySurfaceView(Context context) {
super(context);
getHolder().addCallback(this);
}


public void surfaceChanged(SurfaceHolder holder, int format, int
width, int height) {
Log.d("TEST", "surfaceChanged");
}


public void surfaceCreated(SurfaceHolder holder) {
Log.d("TEST", "surfaceCreated");
doDraw();
}


public void surfaceDestroyed(SurfaceHolder holder) {
Log.d("TEST", "surfaceDestroyed");
}

void doDraw() {
Canvas canvas = getHolder().lockCanvas();
canvas.save(); // ★ここで状態を保存
canvas.rotate(90.0f);
Paint paint = new Paint();
canvas.drawColor(Color.WHITE);
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setTextSize(24);
canvas.drawText("Hello, SurfaceView!", paint.getTextSize(), 0,
paint);
canvas.restore(); // ★ここで状態を復元
getHolder().unlockCanvasAndPost(canvas);
}

}


protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MySurfaceView(this));
}
}

以上、よろしくお願いいたします。

pie

unread,
Apr 8, 2010, 4:08:54 AM4/8/10
to 日本Androidの会
ブラウザは縦書きに対応してますね。ルビまで表示できるようです。
WebKit貼っちゃう手はどうですか。

pie

unread,
Apr 8, 2010, 5:28:13 AM4/8/10
to 日本Androidの会
ごめんなさい勘違いのようです
Javascriptとcssを駆使して縦書き表示したページを
Androidでも表示できたので勘違いしました。

On 4月8日, 午後5:08, pie <piecros...@gmail.com> wrote:
> ブラウザは縦書きに対応してますね。ルビまで表示できるようです。
> WebKit貼っちゃう手はどうですか。

米辻

unread,
May 14, 2015, 12:58:32 AM5/14/15
to android-g...@googlegroups.com
今更かもしれませんが、githubに日本語縦書き用のライブラリを公開しました。
canvasで実現し、伸ばし棒や句点については設定を作ってシフトしています。

 
 

Jun Shiozawa

unread,
May 16, 2015, 8:45:59 AM5/16/15
to android-g...@googlegroups.com, xuan...@gmail.com
Android4.1からはWebViewで
-webkit-writing-mode:vertical-rl
で縦書き表示できた気がしますけど

参考Webサイト

http://css3.sophia-it.com/reference/%E7%B8%A6%E6%9B%B8%E3%81%8D%E3%83%BB%E6%A8%AA%E6%9B%B8%E3%81%8D%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F

2010年4月7日水曜日 14時46分03秒 UTC+9 Magic:
Reply all
Reply to author
Forward
0 new messages