往JRE里增加字体

                      Adding Fonts to the Java Runtime
要加一种亚洲字体进JRE,请按以下步骤进行:
1.装入字体
首先,你必须装载中文、日文、韩文或传统的中文字体(楷书、宋体等)到你的系统里面
2.复制字体进font.properties
装好了字体后,复制你感兴趣字体的descriptio到font.properties,最简捷的方法是把
font.properties.<locale>直接改名为font.properties

例如:要使用中文字体,你可以复制或者改名font.properties.zh为font.properties.
现行的WIN32 JDK提供如下font properties 文件
./lib/font.properties
./lib/font.properties.ja
./lib/font.properties.ko
./lib/font.properties.zh
./lib/font.properties.zh_TW
     
并且你可以在JRE里使用多于一种的亚洲字体,所必须做的就是编辑font.properties
文件。
例如你要加三种SERIF字体;
serif.0=Times New Roman,ANSI_CHARSET
serif.1=WingDings,SYMBOL_CHARSET,NEED_CONVERTED
serif.2=Symbol,SYMBOL_CHARSET,NEED_CONVERTED
<virtual font name>.<index number> = <platform font name>, attributes

后面有三个参数,如Times New Roman、WingDings就是字体名
第二个参数(SYMBOL_CHARSET)是相应字符集的处理接口
第三个参数是表明相应字符集不能直接同过UNICODE编码处理,需要与UNICODE间的转换器
通过以下语句设不同FONTS的转换器
fontcharset.serif.1=sun.awt.windows.CharToByteWingDings
fontcharset.serif.2=sun.awt.CharToByteSymbol

用户也可以定制自己的字体、字符集与自定义的UNICODE转换器

例如说你想增加你自己定制的字体到JAVA的serif    系列字体里去,
假设你的字体共有256个,从0到0Xff.正对应于UNICODE里的OXE000-0XEOFF。
首先你要设计你的转换类
package mypkg.converter;

import sun.io.CharToByteISO8859_1;
import sun.io.CharToByteConverter;
import sun.io.ConversionBufferFullException;

public class CharToByteMyFont extends sun.io.CharToByteISO8859_1 {

   /*
    * This method indicates the range this font covers.
    */
   public boolean canConvert(char ch) {
      if (ch >= 0xe000 && ch <= 0xe0ff) {
         return true;
      }
      return false;
   }

   /*
    * This method converts the unicode to this font index.
    */
   public int convert(char[] input, int inStart, int inEnd,
                      byte[] output, int outStart, int outEnd)
                      throws ConversionBufferFullException {
      int outIndex = outStart;
      for (int i = inStart; i < inEnd; i++) {
         char ch = input[i];
         if (ch >= 0xe000 && ch <= 0xe0ff) {
            if (outIndex >= outEnd)
            throw new ConversionBufferFullException();
            output[outIndex++] = (byte)(ch - 0xe000);
         }
      }
      return outIndex - outStart;
   }
第二步,加你自己的字体和转换器进Properties文件
你先要增加你的字体的名子进文件里,

serif.3=<your own font name>
然后定义相应的converter
fontcharset.serif.3=mypkg.converter.CharToByteMyfont

为了确定JRE能够找到你的转换器,你的application classpath 必须包含转换器的路径

以上是我看了sun里的相关文章后觉得很不错而粗略整理出来的,目的只在于把相关内容大概介绍一下,请不要见笑,最好参考英文原文
http://java.sun.com/products/jdk/1.1/docs/guide/intl/fontprop.html
或到http://java.sun.com/products/jdk/1.1/docs/guide/intl/index.html看更多的Internationalization相关资料以及samples
本人正在做多国语的网版词典,所以有在找相关资料,这是我看到的比较有用的叙述JAVA中字符集处理的文章,如果各位看到更好的java对unicode支持的资料请告知我,谢谢

时间: 2024-12-23 18:29:06

往JRE里增加字体的相关文章

UI实战指南之留在电脑里的字体(一)

  进阶学习最实用教材!这一由@牛MO王涵 (BigDesign创始人/设计总监)编写的系列文章,从字体选择到提升设计感的技巧等都有涉猎,话题虽广,但全是实战过程中最关键的要素,而且是新手最关心的操作部分,学完直接上手工作 >>> 前言:我来了,这是U1系列新开篇章实战篇,不仅仅是适用于UI设计,甚至包含网页设计.平面设计.在文章中会更多的介绍一些操作上的教学,希望对新人们有帮助. 推荐字体 很多小伙伴在做设计的时候,无论是排版还是展示,都不太注重字体,或者有些太过于注重以至于用了很多种

下载并同步 Google Fonts 里的字体到你的电脑

原文:http://www.fonts.com/web-fonts/google Google Fonts里可以找到超多的开源字体,任何人都可以使用,而且他们都存储在Google的服务器上,随时都方便网络开发者调用.目前最热门的Open Sans居然在上周一周里就有超过20亿次的浏览量! 现在Google也提供字体下载了,儿不只是可以在线引用.利用Windows和OS X上免费的SkyFonts软件即可下载到所有的Google Fonts字体,并可自动与云端的Google Fonts同步,当Go

IE浏览器设置栏里的字体变成了英文该怎么办?

  最近好多网友反映在使用IE浏览器的时候,发现设置栏里的字体变成了英文,使用起来非常不方便,下面小编就为大家分享下,碰到此种情况具体的解决办法,希望对大家有所帮助. 浏览器语言设置; 1.打开电脑IE浏览器,进入主界面,点击右上角[工具]选项,在弹出的菜单栏点击[internet选项] 2.在弹出的internet选项对话框中,进入[常规]界面,点击下方[语言]选项 3.进入语言设置界面,点击[设置语言首选项] 4.此时进入语言选择界面,我们在语言列表中找到[中文简体]将其启用即可 IE更新设

怎么在word2007中表格里增加插入行列

  在word中插入表格大家都会,那么如何在word表格中插入增加行列呢?其实也非常简单,下面一起来看看操作方法吧. 怎么在word2007中表格里增加插入行列 1.打开文档中的表格原件,用鼠标选中插入行的相邻的行,这里我们选择第二行,然后单击鼠标右键,在弹出的菜单中,选择"插入"选项卡,例如我们选择"在上方插入行"; 2.用鼠标选中需要插入列的相邻的列,例如,选择第二列,点击鼠标右键,在弹出的菜单中,选择"插入"选项,在其出现的从下拉菜单中选择

html 中 title 标签里的字体可以设置吗

问题描述 html 中 title 标签里的字体可以设置吗 head title 字体设置应该如何设置,好像一般字体的那种设置没有效果 解决方案 不可以..这个是浏览器自己显示的 解决方案二: 这个依赖于浏览器,一般也没人会设置标签的字体大小吧 解决方案三: 楼上正解,我就是来打酱油的. 路过! 解决方案四: html中的title是不能是设置的,它是系统默认的字体,是唯一的,所以不能修改.

textview-Android方面的问题,不使用TextView,怎样直接在string.xml里修改字体颜色?

问题描述 Android方面的问题,不使用TextView,怎样直接在string.xml里修改字体颜色? 就像这样,加粗没问题,但是颜色不知道格式是怎样的,请问大家能实现吗? 解决方案 在string.xml中定义,是作为html方式来应用的,所以android中的color定义应该是不识别的,font color用16进制颜色表示,font color="#xxxxxx" 解决方案二: string,xml里面可以使用html标签. <string name="te

extjs 点击jsp页面超链接在tab选项卡里增加

问题描述 extjs 点击jsp页面超链接在tab选项卡里增加 function renderTopic(value, p, record) { var c = record.get('TASK_ID'); return '<a href="jsp/Auditpage.jsp?task_id='+c+'" target="_blank">'+value+'</a>'; } 就如这段代码,我想在Tab选项卡里打开而不是打开新页面 解决方案 新建

php-PHP如何给这个数组里增加内容

问题描述 PHP如何给这个数组里增加内容 $brandData = array( array('id'=> 1,'value'=> 388, "name"=> "品牌1","type"=>"brand"), array("id"=> 2,"value"=> 205, "name"=> "品牌2","

php实现在限定区域里自动调整字体大小的类实例_php技巧

本文实例讲述了php实现在限定区域里自动调整字体大小的类.分享给大家供大家参考.具体如下: 这里的php类imagefittext.class.php实现在限定的区域里自动调整字体大小的功能. <?php // Image Fit Text Class 0.1 by ming0070913 CLASS ImageFitText{ public $font, $fontsize, $width, $height; public $step_wrap, $step_fontsize; public