• 泰山OFFICE技术讲座:JDK字体支持编码的研究1


      JDK的字体支持编码。是怎样支持的?支持情况如何?为此专门研究了一下。

      只研究TrueType字体格式。代码文件是sun.font.TrueTypeFont。

    • 字段defaultCodePage

    是JDK默认编码?

    • 字段ulUnicodeRange1/ulUnicodeRange2/ulUnicodeRange3/ulUnicodeRange4

    应该是字体支持的unicode范围?

    • 字段ulCodePageRange1/ulCodePageRange2

    编码集?

    • 字段supportsCJK

    CJK是中日韩的缩写

    • 字段supportsJA

    JA是日文的意思?

    • 字段encoding_mapping
    1. static final String encoding_mapping[] = {
    2. "cp1252", /* 0:Latin 1 */
    3. "cp1250", /* 1:Latin 2 */
    4. "cp1251", /* 2:Cyrillic */
    5. "cp1253", /* 3:Greek */
    6. "cp1254", /* 4:Turkish/Latin 5 */
    7. "cp1255", /* 5:Hebrew */
    8. "cp1256", /* 6:Arabic */
    9. "cp1257", /* 7:Windows Baltic */
    10. "", /* 8:reserved for alternate ANSI */
    11. "", /* 9:reserved for alternate ANSI */
    12. "", /* 10:reserved for alternate ANSI */
    13. "", /* 11:reserved for alternate ANSI */
    14. "", /* 12:reserved for alternate ANSI */
    15. "", /* 13:reserved for alternate ANSI */
    16. "", /* 14:reserved for alternate ANSI */
    17. "", /* 15:reserved for alternate ANSI */
    18. "ms874", /* 16:Thai */
    19. "ms932", /* 17:JIS/Japanese */
    20. "gbk", /* 18:PRC GBK Cp950 */
    21. "ms949", /* 19:Korean Extended Wansung */
    22. "ms950", /* 20:Chinese (Taiwan, Hongkong, Macau) */
    23. "ms1361", /* 21:Korean Johab */
    24. "", /* 22 */
    25. "", /* 23 */
    26. "", /* 24 */
    27. "", /* 25 */
    28. "", /* 26 */
    29. "", /* 27 */
    30. "", /* 28 */
    31. "", /* 29 */
    32. "", /* 30 */
    33. "", /* 31 */
    34. };

    东亚字体:日文ms932,中文gbk/ms950,韩文ms949/ms1361。如果是18030会改名为gbk,简化判断。

    • 字段language
    1. private static final String languages[][] = {
    2. /* cp1252/Latin 1 */
    3. { "en", "ca", "da", "de", "es", "fi", "fr", "is", "it",
    4. "nl", "no", "pt", "sq", "sv", },
    5. /* cp1250/Latin2 */
    6. { "cs", "cz", "et", "hr", "hu", "nr", "pl", "ro", "sk",
    7. "sl", "sq", "sr", },
    8. /* cp1251/Cyrillic */
    9. { "bg", "mk", "ru", "sh", "uk" },
    10. /* cp1253/Greek*/
    11. { "el" },
    12. /* cp1254/Turkish,Latin 5 */
    13. { "tr" },
    14. /* cp1255/Hebrew */
    15. { "he" },
    16. /* cp1256/Arabic */
    17. { "ar" },
    18. /* cp1257/Windows Baltic */
    19. { "et", "lt", "lv" },
    20. /* ms874/Thai */
    21. { "th" },
    22. /* ms932/Japanese */
    23. { "ja" },
    24. /* gbk/Chinese (PRC GBK Cp950) */
    25. { "zh", "zh_CN", },
    26. /* ms949/Korean Extended Wansung */
    27. { "ko" },
    28. /* ms950/Chinese (Taiwan, Hongkong, Macau) */
    29. { "zh_HK", "zh_TW", },
    30. /* ms1361/Korean Johab */
    31. { "ko" },
    32. };

    与东亚相关:

             /* 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" },

    • 字段codePages
    1. private static final String codePages[] = {
    2. "cp1252",
    3. "cp1250",
    4. "cp1251",
    5. "cp1253",
    6. "cp1254",
    7. "cp1255",
    8. "cp1256",
    9. "cp1257",
    10. "ms874",
    11. "ms932",
    12. "gbk",
    13. "ms949",
    14. "ms950",
    15. "ms1361",
    16. };

    现在看看产生字体时,如何处理编码信息的。

  • 相关阅读:
    面向对象编程的六大原则
    windows下Redis多实例部署
    AI在工业机器人系统中的应用
    docker系列(9) - docker-compose
    前端面试 算法与数据结构篇
    1、广告-互联网展示广告发展史
    分布式是什么?
    6.824 lab2
    如何在树莓派上安装cpolar内网穿透
    【C++--类和对象】开篇
  • 原文地址:https://blog.csdn.net/quantum7/article/details/127846877