gpt4 book ai didi

Java API 获取特定脚本的代码点列表?

转载 作者:行者123 更新时间:2023-11-30 03:16:04 26 4
gpt4 key购买 nike

我正在尝试生成一个文档(电子表格),它显示特定机器上的哪些字体支持特定脚本中的特定字形:这样我就可以机器检查特定字体是否适合渲染特定脚本或不是。

是否有一个 Java API 可以在给定特定“脚本”的情况下返回完整的字符列表?说“拉丁语”、“希腊语”、“平假名”等?

以下代码将输出特定脚本的已定义字符的完整列表。

例如希腊语。

import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;

public class CharacterTest {

public static List<char[]> getListofCharacters(String StartCode, String EndCode) {
List<char[]> characters = new ArrayList<>();
int start = Integer.parseInt(StartCode, 16);
int end = Integer.parseInt(EndCode, 16);

for (int i = start; i <= end; i++) {
if (java.lang.Character.isDefined(i)) {
char[] c = java.lang.Character.toChars(i);
characters.add(c);
}
}
return characters;
}

public static void main(String[] args) throws IOException {
List<char[]> GreekCharacters = getListofCharacters("0370", "03FF");
try (PrintStream out = new PrintStream("C:\\GREEK.TXT", "UTF-8")) {
for (char[] ch : GreekCharacters) {
out.println(String.valueOf(ch));
}
out.flush();
}
}
}

我从 Unicode 图表站点获取了开始/结束代码点: http://www.unicode.org/charts/

特别是来自此 PDF:http://www.unicode.org/charts/PDF/U0370.pdf

[顺便说一句,我不确定为什么 API 提供了 'getChars' 而不是 'getChar' - 我对 UTF-8 的理解显然缺乏:我本以为一个 'char' 会是用于表示一个符号? (它本身当然可以由多个字节组成)...]

最佳答案

脚本不是连续的范围,并且您的代码错过了 several hundred希腊字符。如果需要查询特定字符的脚本,可以使用 Character.UnicodeScript类 - 但如果您确实需要完整的列表,则需要阅读 UCD data files或枚举所有代码点:

import java.lang.Character;
import java.util.ArrayList;
import java.util.List;

List<Integer> code_points = new ArrayList<Integer>();
for (int cp = Character.MIN_CODE_POINT; cp < Character.MAX_CODE_POINT; ++cp) {
if (Character.UnicodeScript.of(cp) == Character.UnicodeScript.GREEK) {
code_points.add(cp);
}
}

关于Java API 获取特定脚本的代码点列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32553992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com