更新

下面的解决方案的问题是镜像字体中未包含的任何字符(特别是中文)将显示在后面.

老答案

蒙古语字体都是以字形的方向与英语相同的方向制作的,即从左到右.这允许将蒙古语单词添加到英语,中文或西里尔文本中(唯一的问题是单词是“放下”而不是“站起来”应该如此).

顺时针旋转TextView 90度将使其垂直,但换行方向错误(旋转后从右到左而不是从左到右).可以通过水平翻转或镜像TextView来解决换行方向问题,但然后镜像所有字形.最后一个问题可以通过从垂直镜像字体开始来解决(可以通过使用开源软件(如FontForge)编辑现有字体来实现).下图说明了该过程:

旋转和翻转可以通过扩展TextView并覆盖onDraw()和onMeasure()方法来完成:

public class MongolTextView extends TextView {

private TextPaint textPaint;

// Constructors

public MongolTextView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init();

}

public MongolTextView(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

public MongolTextView(Context context) {

super(context);

init();

}

// This class requires the mirrored Mongolian font to be in the assets/fonts folder

private void init() {

Typeface tf = Typeface.createFromAsset(getContext().getAssets(),

"fonts/MongolFontMirrored.ttf");

setTypeface(tf);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

// swap the height and width

super.onMeasure(heightMeasureSpec, widthMeasureSpec);

setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());

}

@Override

protected void onDraw(Canvas canvas) {

textPaint = getPaint();

textPaint.setColor(getCurrentTextColor());

textPaint.drawableState = getDrawableState();

canvas.save();

// flip and rotate the canvas

canvas.translate(getWidth(), 0);

canvas.rotate(90);

canvas.translate(0, getWidth());

canvas.scale(1, -1);

canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());

getLayout().draw(canvas);

canvas.restore();

}

}

在xml布局中,使用扩展TextView的全名:

android:id="@+id/title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="10dp"

android:text="@string/title_string" />

已知的问题:

>如果你记住旋转,layout_margin和layout_gravity工作正常,但填充和重力行为奇怪.所以似乎最好使用wrap_content并避免使用填充和重力.将MongolTextView放在FrameLayout中并使用layout_margin和layout_gravity可以实现相同的效果.

>此解决方案不涉及呈现Unicode文本.您需要使用非Unicode文本(不鼓励),或者需要在应用程序中包含渲染引擎. (Android目前不支持OpenType smartfont渲染.希望将来会有所改变.相比之下,iOS支持复杂的文本渲染字体.)请参阅this link获取Unicode蒙古语渲染引擎示例.

android怎么实现文字制作,如何在Android中制作传统的蒙古文字TextView相关推荐

  1. 我ps制作的html文件alt标记文字,如何在PS中制作我的2016宣言的字体?

    如何在PS中制作我的2016宣言的字体? 这篇教程是向路饭的朋友分享用PS制作"我的2016宣言字体,教程很不错,推荐到路饭,来看看吧! 这个教程主要是通过对文字进行加工,配合图案素材的修饰 ...

  2. 我们经常会用遇到一些文件需要网签,如何在word中制作手写签名?

    我们经常会用遇到一些文件需要网签,如何在word中制作手写签名? 目录 我们经常会用遇到一些文件需要网签,如何在word中制作手写签名? 1.在纸上写手好签名,用手机拍照上传至电脑上 2.打开word ...

  3. 如何在word中制作流程图_在Word 2007中创建流程图

    如何在word中制作流程图 Flowcharts are a very good way to get a new idea explained in a presentation.  Office ...

  4. 如何在 3dMax 中制作游戏中的战斧模型?

    继续给大家分享3dMax教程:如何在3dsMax中制作战斧教程. 介绍 大家好!今天想和大家分享的是用3ds Max制作一把战斧,分享一下制作过程中用到的一些技巧和技巧.这是一个比较基础的教程,包括建 ...

  5. 如何在unity中制作塔防游戏

       塔防游戏非常流行,毫无疑问--没有什么比看着自己的防御消灭讨厌的侵略者更让人满足!在这两部分教程中,用unity来制作一个塔防游戏! 将会学习怎样...... 创建一波敌人 让它们跟随线路点 ...

  6. 如何在ppt中生成柱状图_如何在ppt中制作柱形图和曲线图

    如何在 ppt 中制作柱形图和曲线图 篇一: ppt 柱状图与线状同在的操作 用 excel2010 制作双轴柱线复合图表 就是要用 excel2010 做一个这样的图表: excel2010 中,左 ...

  7. xd怎么做页面滑动_XD教程 | 如何在XD中制作拖拽手势”

    原标题:XD教程 | 如何在XD中制作"拖拽手势" 今日主题:设计一个滑动交互 使用工具:Adobe XD 预计时长:1-2分钟 实用指数:★★★★★ 难度系数:★ 本期教程,我们 ...

  8. 如何在CDR中制作半透明倒影

    很多人不知道如何在coreldraw中制作半透明倒影效果,今天小编就来给大家闹补一下如何制作. 打开原图 单击图像,按下CTRL键不放,向下拖拽,单击鼠标右键,复制对象(将其垂直翻转复制). 绘制一个 ...

  9. ppt制作之如何在ppt中制作双色渐变效果

    参考文章:如何在ppt中制作双色渐变效果-百度经验 操作步骤: 1.打开PowerPoint,然后执行"插入-形状",插入完之后选中形状右键"设置对象格式",在 ...

  10. 【板栗糖GIS】twinmotion—如何在twinmotion中制作会飘动的各国国旗

    [板栗糖GIS]twinmotion-如何在twinmotion中制作会飘动的各国国旗 在左侧的材质球面板上搜索"banner" 获得旗帜之后放入到场景中,用吸管吸取可以发现下面有 ...

最新文章

  1. 安卓收取费用_作为自由职业者应收取的费用:以价值为基础的定价是否能达到炒作的目的?...
  2. Netty结合Protostuff传输对象案例,单机压测秒级接收35万个对象
  3. circRNA研究相关数据库,riboCIRC使用指南
  4. McGill微软将卷积操作加入到ViT中,捕获更详细的局部信息!准确率达87.7%!代码已开源!...
  5. 27. Spring Boot 部署与服务配置
  6. 剑指offer面试题[9-3]-矩形覆盖
  7. 挑战练习14.8 删除crime 记录
  8. css table 合并单元格
  9. hive(一)hive的安装与基本配置
  10. Python_首字母大写
  11. 榆熙电商:拼多多商家怎样开通电子面单服务?有何优势?
  12. 【CC】| 创建三维模型教程
  13. android图片美化开源,GitHub - xingxing-yan/BLImage: Android中美化图片的库。功能包括滤镜,贴纸,标签,裁剪,涂鸦,亮度,饱和度,对比度,马赛克等功能...
  14. “大蟒蛇”的养殖教程---“字符串”
  15. 5g服务器优势特点详解
  16. vue 省市区三级联动 antd 级联组件 Cascader
  17. 2022-02-14 U3D全栈班 005-Unity引擎视图
  18. 名义小组、焦点小组、引导式研讨会、头脑风暴
  19. python毕业设计作品基于django框架 校园运动场地预约系统毕设成品(7)中期检查报告
  20. 报告!这群阿里工程师在偷偷养猪

热门文章

  1. 徐耀赐:交叉路口的安全风险因素有哪些?安全风险改善的基本策略是什么?...
  2. 想要小黄过软考—小小的树(软件设计师篇)
  3. GBK、UTF-8、UTF-32、乱码原因
  4. 基于海思Hi3559A或者Atlas_200模块,Hi3559A(主)+Atlas_200(从)开发AI加速边缘计算主板的三种模式
  5. python文件去重软件_Python实现的txt文件去重功能示例
  6. docker desktop
  7. 阿里云EDAS满分通过可信云微服务先进级认证,助力企业低成本轻松上云
  8. 3D沙盘地图的拖动与缩放
  9. 高效好用的目标管理软件,助你提升管理水平
  10. uxtheme.h内容