Unicode 编码和生僻字
unicode 编码最新版本是 2009 年 9 月出版的 5.2 版,对汉字又进行了扩充。以往常说的 20902 个汉字,在 unicode 中从 0x4e00-0x9fa5,但这不是全部的 unicode 汉字。最新版的 unicode 汉字块如下:
- 0x4e00-0x9fff cjk 统一字型 常用字 共 20992 个(实际只定义到 0x9fc3)
- 0x3400-0x4dff cjk 统一字型扩展表 a 少用字 共 6656 个
- 0x20000-0x2a6df cjk 统一字型扩展表 b 少用字,历史上使用 共 42720 个
- 0xf900-0xfaff cjk 兼容字型 重复字,可统一变体,共同字 共 512 个
- 0x2f800-0x2fa1f cjk 兼容字型补遗 可统一变体 共 544 个
一共定义大陆,台湾,香港,新加坡,马来西亚汉字,日语和韩语汉字或偏旁部首 71424 个。
如何识别生僻汉字,特别是 0x20000-0x2a6df 这种超过两个字节编码范围的生僻汉字,是次博客的重点。如果想看答案,可直接挑战到博客末尾。
AWT Font.Display 的返回问题
如果在 Java 中 Font.canDisplay
方法不生效,可能有以下几个可能的问题:
- 字体未被正确加载:确保您正在使用的字体已经被正确加载。可以使用
GraphicsEnvironment.getAllFonts()
方法来获取系统中可用的字体列表,然后检查您要使用的字体是否包含在其中。 - 字符编码问题:
Font.canDisplay
方法使用 Unicode 字符编码来确定字体是否能够显示给定的字符。请确保您传递给canDisplay
方法的字符是以正确的 Unicode 编码进行处理的。如果字符编码不正确,canDisplay
方法可能无法正确地检查字体是否支持该字符。 - 字体样式不匹配:
Font.canDisplay
方法是根据指定字体的样式(例如粗体、斜体等)来检查字符的显示能力的。如果字体样式与要显示的字符不匹配,可能导致canDisplay
返回false
。确保字体的样式与要显示的字符的要求匹配。 - 平台限制:某些平台或环境可能对字体显示的能力有一些限制。例如,操作系统可能不支持某些特定字体或字符集。在这种情况下,
Font.canDisplay
方法可能无法提供准确的结果。
如果您仍然遇到问题,建议提供更多的代码和上下文信息,以便更好地理解问题,并给出更具体的帮助和建议。