JDK的字体支持编码。是怎样支持的?支持情况如何?为此专门研究了一下。
只研究TrueType字体格式。代码文件是sun.font.TrueTypeFont。
是JDK默认编码?
应该是字体支持的unicode范围?
编码集?
CJK是中日韩的缩写
JA是日文的意思?
- static final String encoding_mapping[] = {
- "cp1252", /* 0:Latin 1 */
- "cp1250", /* 1:Latin 2 */
- "cp1251", /* 2:Cyrillic */
- "cp1253", /* 3:Greek */
- "cp1254", /* 4:Turkish/Latin 5 */
- "cp1255", /* 5:Hebrew */
- "cp1256", /* 6:Arabic */
- "cp1257", /* 7:Windows Baltic */
- "", /* 8:reserved for alternate ANSI */
- "", /* 9:reserved for alternate ANSI */
- "", /* 10:reserved for alternate ANSI */
- "", /* 11:reserved for alternate ANSI */
- "", /* 12:reserved for alternate ANSI */
- "", /* 13:reserved for alternate ANSI */
- "", /* 14:reserved for alternate ANSI */
- "", /* 15:reserved for alternate ANSI */
- "ms874", /* 16:Thai */
- "ms932", /* 17:JIS/Japanese */
- "gbk", /* 18:PRC GBK Cp950 */
- "ms949", /* 19:Korean Extended Wansung */
- "ms950", /* 20:Chinese (Taiwan, Hongkong, Macau) */
- "ms1361", /* 21:Korean Johab */
- "", /* 22 */
- "", /* 23 */
- "", /* 24 */
- "", /* 25 */
- "", /* 26 */
- "", /* 27 */
- "", /* 28 */
- "", /* 29 */
- "", /* 30 */
- "", /* 31 */
- };
东亚字体:日文ms932,中文gbk/ms950,韩文ms949/ms1361。如果是18030会改名为gbk,简化判断。
- private static final String languages[][] = {
-
- /* cp1252/Latin 1 */
- { "en", "ca", "da", "de", "es", "fi", "fr", "is", "it",
- "nl", "no", "pt", "sq", "sv", },
-
- /* cp1250/Latin2 */
- { "cs", "cz", "et", "hr", "hu", "nr", "pl", "ro", "sk",
- "sl", "sq", "sr", },
-
- /* cp1251/Cyrillic */
- { "bg", "mk", "ru", "sh", "uk" },
-
- /* cp1253/Greek*/
- { "el" },
-
- /* cp1254/Turkish,Latin 5 */
- { "tr" },
-
- /* cp1255/Hebrew */
- { "he" },
-
- /* cp1256/Arabic */
- { "ar" },
-
- /* cp1257/Windows Baltic */
- { "et", "lt", "lv" },
-
- /* ms874/Thai */
- { "th" },
-
- /* ms932/Japanese */
- { "ja" },
-
- /* gbk/Chinese (PRC GBK Cp950) */
- { "zh", "zh_CN", },
-
- /* ms949/Korean Extended Wansung */
- { "ko" },
-
- /* ms950/Chinese (Taiwan, Hongkong, Macau) */
- { "zh_HK", "zh_TW", },
-
- /* ms1361/Korean Johab */
- { "ko" },
- };
与东亚相关:
/* ms932/Japanese */
{ "ja" },
/* gbk/Chinese (PRC GBK Cp950) */
{ "zh", "zh_CN", },
/* ms949/Korean Extended Wansung */
{ "ko" },
/* ms950/Chinese (Taiwan, Hongkong, Macau) */
{ "zh_HK", "zh_TW", },
/* ms1361/Korean Johab */
{ "ko" },
- private static final String codePages[] = {
- "cp1252",
- "cp1250",
- "cp1251",
- "cp1253",
- "cp1254",
- "cp1255",
- "cp1256",
- "cp1257",
- "ms874",
- "ms932",
- "gbk",
- "ms949",
- "ms950",
- "ms1361",
- };
现在看看产生字体时,如何处理编码信息的。