package com.rendernode.test.view; import android.content.Context; import android.graphics.Color; import android.text.TextPaint; import android.util.Log; import com.glview.hwui.GLCanvas; import com.glview.hwui.GLPaint; import com.glview.text.Layout; import com.glview.text.StaticLayout; import com.glview.widget.FrameLayout; import com.glview.widget.TextView; public class FreeTypeView extends FrameLayout { String s = "哎呦我去,这 是怎么个情\n 况 Helloeverybody 1234567890, thisislijingspeaking, whoareyoune"; // String s = "我"; GLPaint mPaint = new GLPaint(); TextPaint mAndroidPaint = new TextPaint(); Layout mLayout; public FreeTypeView(Context context) { super(context); setBackgroundColor(Color.WHITE); mPaint.setColor(Color.BLACK); mPaint.setTextSize(150); mPaint.setShadowLayer(5, 3, 3, Color.RED); TextView tv = new TextView(context); tv.setTextSize(50); tv.setText(s); // addView(tv); mAndroidPaint.setTextSize(60); // BoringLayout.Metrics metrics = BoringLayout.isBoring(s, mPaint); // if (metrics != null) { // mLayout = BoringLayout.make(s, mPaint, 1000, Layout.Alignment.ALIGN_NORMAL, 1, 0, metrics, false, TextUtils.TruncateAt.END, 1000, true); // } mLayout = new StaticLayout(s, mPaint, 900, Layout.Alignment.ALIGN_NORMAL, 1f, 0, false, true); } @Override protected void dispatchDraw(GLCanvas canvas) { super.dispatchDraw(canvas); Log.d("lijing", "glview=" + mPaint.measureText(s)); Log.d("lijing", "glview=" + mPaint.getFontMetricsInt()); Log.d("lijing", "android=" + mAndroidPaint.measureText(s)); Log.d("lijing", "android=" + mAndroidPaint.getFontMetricsInt()); // canvas.drawText(s, 0, 0, mPaint); // canvas.scale(1.4f, 1.4f, 1); if (mLayout != null) { mLayout.draw(canvas); } // mPaint.setTextSize(50); // canvas.drawText(s, 0, 200, mPaint); // GLPaint paint = mPaint; // Typeface typeface = paint.getTypeface(); // Face face = typeface.face(); // int textSize = paint.getTextSize(); // if (textSize < 5) return; // face.setPixelSizes(0, textSize); // for (int i = 0; i < s.length(); i ++) { // char c = s.charAt(i); // if (!face.loadChar(c, FreeType.FT_LOAD_DEFAULT)) { // continue; // } // FreeType.GlyphSlot slot = face.getGlyph(); // FreeType.Glyph mainGlyph = slot.getGlyph(); // // Log.d("lijing", "---c=" + c); // Log.d("lijing", "---xAdvance=" + FreeType.toInt(slot.getAdvanceX())); // Log.d("lijing", "---HAdvance=" + slot.getMetrics().getHoriAdvance()); // mainGlyph.toBitmap(FreeType.FT_RENDER_MODE_NORMAL); // Log.d("lijing", "---width=" + mainGlyph.getBitmap().getWidth()); // } } }